Files
BusinessMgr-2019/SaBusMgrStandardDbas/Dbas/Bus/SbmVehicleClass_Dbas.cs
T

142 lines
4.8 KiB
C#

using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.CodeTypes;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Interfaces;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Bus
{
//=======================================================================
class SbmVehicleClass_Dbas : SbmVehicleClass
{
//-------------------------------------------------------------------
// Data members.
private readonly SbmInternals internals;
//-------------------------------------------------------------------
// Construction.
public SbmVehicleClass_Dbas(SbmInternals internals, SysId id, ushort flags) :
base(internals.UserContext, id)
{
this.internals = internals;
Flags = flags;
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
// NB Do not dispose the Internals - owned by manager.
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Properties.
//-------------------------------------------------------------------
// ToDo SbmVehicleClass ~ ConstructionCaption on GtDescForCode
public override String ConstructCaption(String makeCode, String model, String derivative)
{
String make = "";
SbmSystem system = SbmGlobals.System;
SaCodeTypeConsole codeTypeConsole = internals.CodeTypeConsole;
// Identify make:
if (system == null && codeTypeConsole == null)
{
//make = codeTypeConsole.GetDescForCode(SbmSystem.GetCodeTypeCode(Sbm.ApplCodeType.VehicleMake), makeCode);
}
if (StringUtil.IsEmpty(make)) make = makeCode;
// Build class description:
String caption = derivative;
if (caption.IndexOf(make, 0) < 0 && caption.IndexOf(model, 0) < 0)
{
// Prefix the make and model if neither is found in the caption:
caption = make + " " + model + " " + derivative;
}
return caption.Trim();
}
//-------------------------------------------------------------------
// Associated data.
public override long GetVehicleCount()
{
ClearErrorState();
if (!SysId.IsValid(Id)) return 0;
ISacsDatabase db = internals.BusMgrDatabase;
if (db != null)
{
String tableVehicle = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaVehicle);
if (db.TableExists(tableVehicle))
{
List<String> filter = new List<String>();
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaVehicleFeature_VehicleId) + "=" + Id.ToString());
db.GetRowCount(tableVehicle, filter.Concat(" AND ", "(", ")"));
}
}
return 0;
}
public override bool HasVehicles()
{
return GetVehicleCount() > 0;
}
public override bool ClearVehicleClassDependentData(DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
if (this == null || !SysId.IsValid(Id)) return false;
ISacsDatabase db = internals.BusMgrDatabase;
if (db != null && !HasErrorState())
{
if (!HasErrorState())
{
/* ToDo SaItemDocConsole for Remove document references:
SaItemDocConsole itemDocConsole = SbmGlobals.Application.GetItemDocConsole(userContext.SessionContext);
if (itemDocConsole != null)
{
if (!itemDocConsole.ClearItemDocs(Sbm.ItemType.AssetCategory, Id))
SetErrorState(itemDocConsole.Exception());
}
else SetErrorState("Failed to retrieve item document console");
itemDocConsole = null;*/ // Do not delete this global object.
}
if (!HasErrorState())
{
/* ToDo SaItemDataConsole for Remove Item Data:
SaItemDataConsole itemDataConsole = SbmGlobals.Application.GetItemDataConsole(userContext.SessionContext);
if (itemDataConsole != null)
{
if (!itemDataConsole.ClearItemData(Sbm.ItemType.AssetCategory, Id, ""))
SetErrorState(itemDataConsole.Exception());
}
else SetErrorState("Failed to retrieve item Dataument console");
itemDataConsole = null;*/ // Do not delete this global object.
}
if (!HasErrorState())
{
// Remove interface data items:
SaInterfaceConsole interfaceConsole = internals.InterfaceConsole;
//DbUpdateInfo dbUpdateInfo = userContext.DbUpdateInfo;
if (interfaceConsole != null)
{
if (!interfaceConsole.ClearInterfaceDataItems(new SbmItemId(Sbm.ItemType.AssetCategory, Id), dbUpdateInfo))
SetErrorState(interfaceConsole.ErrorStateMessage);
}
else SetErrorState("Failed to retrieve interface console");
interfaceConsole = null; // Do not delete this global object.
}
}
else SetErrorState("database is unavailable");
return OK;
}
//-------------------------------------------------------------------
}
//=======================================================================
}