Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/Mgr/SbmAssetMgr_VehicleClass.cs
T
2021-05-05 21:00:33 +01:00

210 lines
8.8 KiB
C#

using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
{
//=======================================================================
partial class SbmAssetMgr
{
//*******************************************************************
// V e h i c l e C l a s s
//*******************************************************************
//-------------------------------------------------------------------
// Utilities.
public abstract List<SysIdString> GetVehicleClasses_IdName(SbmVehicleClass.Params prm);
public abstract List<String> GetModelsForMake(String makeCode);
public abstract List<String> GetDerivativesForModel(String makeCode, String model);
public abstract List<SysIdString> GetClassesForModel(String makeCode, String model);
public abstract String GetVehicleClassDescBrief(SysId id);
//-------------------------------------------------------------------
// Retrieve individual vehiclesClasses.
//-------------------------------------------------------------------
// VehicleClass exists.
public bool VehicleClassExistsById(SysId id)
{
ClearErrorState();
if (!SysId.IsValid(id)) return false;
SbmVehicleClass.Params prm = new SbmVehicleClass.Params();
prm.IncludedIds.Add(id);
prm.StatusCat = SbmVehicleClass.StatusCat.Any;
return GetVehicleClassCount(prm) == 1;
}
public bool VehicleClassExistsByDescBrief(String descBrief, bool activeOnly)
{
ClearErrorState();
if (!StringUtil.IsEmpty(descBrief) && !activeOnly) return false;
SbmVehicleClass.Params prm = new SbmVehicleClass.Params
{
DescBrief = descBrief,
StatusCat = SbmVehicleClass.StatusCat.ActiveOnly
};
return GetVehicleClassCount(prm) == 1;
}
//-------------------------------------------------------------------
// Get vehicleClasses.
public abstract SbmVehicleClass GetVehicleClass(SbmVehicleClass.Params prm);
public SbmVehicleClass GetVehicleClassById(SysId id)
{
ClearErrorState();
if (!SysId.IsValid(id)) return null;
SbmVehicleClass.Params prm = new SbmVehicleClass.Params();
prm.IncludedIds.Add(id);
prm.StatusCat = SbmVehicleClass.StatusCat.Any;
return GetVehicleClass(prm);
}
public SbmVehicleClass GetVehicleClassByDerivative(String makeCode, String model, String derivative)
{
ClearErrorState();
if (!StringUtil.IsEmpty(makeCode) || !StringUtil.IsEmpty(makeCode) || !StringUtil.IsEmpty(derivative)) return null;
SbmVehicleClass.Params prm = new SbmVehicleClass.Params
{
MakeCode = makeCode,
Model = model,
Derivative = derivative,
StatusCat = SbmVehicleClass.StatusCat.Any
};
return GetVehicleClass(prm);
}
public SbmVehicleClass GetActiveVehicleClassByDescBrief(String descBrief)
{
SbmVehicleClass.Params prm = new SbmVehicleClass.Params();
prm.DescBrief = descBrief;
return GetVehicleClass(prm);
}
//-------------------------------------------------------------------
// Create vehicleClass.
public abstract SbmVehicleClass CreateVehicleClass();
//-------------------------------------------------------------------
// Validate vehicleClass data.
public bool IsValidVehicleClass(SbmVehicleClass vehicleClass)
{
ClearErrorState();
if (vehicleClass == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidVehicleClassData(vehicleClass.GetData(), new SbmVehicleClass.ErrField());
}
public virtual bool IsValidVehicleClassData(SbmVehicleClass.Data data, SbmVehicleClass.ErrField errField)
{
ClearErrorState();
// VehicleClass properties.
if (errField.MakeCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MakeCode, "make", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_MakeCode), true))
{
errField.MakeCode = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Model != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Model, "model", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Model), true))
{
errField.Model = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Derivative != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MakeCode, "derivative", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Derivative), true))
{
errField.Derivative = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "desctiption brief", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_DescBrief), true))
{
errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.VehicleCategoryCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.VehicleCategoryCode, "vehicle category code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_VehicleCategoryCode), true))
{
errField.VehicleCategoryCode = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.InsuranceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.InsuranceCode, "insurance code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_InsuranceCode), true))
{
errField.InsuranceCode = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Common properties.
if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Notes)))
{
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (errField.Status != SacsHierarchyItem.ValidValue.Ignore)
{
if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Status), true, true))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!SbmVehicleClass.VehicleClassStatuses.Contains(data.Status))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(ErrorMessage.InvalidStatus);
}
}
return true;
}
//-------------------------------------------------------------------
// VehicleClass database interface.
public abstract bool InsertVehicleClass(SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateVehicleClass(SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo);
public virtual bool VehicleClassCanBeDeleted(SbmVehicleClass vehicleClass)
{
ClearErrorState();
return true;
}
public abstract bool DeleteVehicleClass(SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// VehicleClass list.
public abstract ColumnDfn GetVehicleClassColumnDfn(SbmVehicleClass.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetVehicleClassQueryFilter(SbmVehicleClass.Params prm);
public abstract long GetVehicleClassCount(SbmVehicleClass.Params prm);
public abstract List<SbmVehicleClass> GetVehicleClassList(SbmVehicleClass.Params prm);
public abstract DbResultSet ExecuteVehicleClassQuery(List<ColumnDfn> columns, SbmVehicleClass.Params prm);
//-------------------------------------------------------------------
// D a t a V a l u e s
//-------------------------------------------------------------------
/// <summary>
/// Extract and format result set data value where specific handling is required.
/// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para>
/// </summary>
public DataValue GetVehicleClassDataValue(ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
switch ((SbmVehicleClass.Column)column.Id)
{
// Notes.
case SbmVehicleClass.Column.Notes:
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
break;
// Status.
case SbmVehicleClass.Column.Status_Desc:
case SbmVehicleClass.Column.Status_Ind:
{
String statusCode = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
if (column.Id == (int)SbmVehicleClass.Column.Status_Desc)
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
else if (column.Id == (int)SbmVehicleClass.Column.Status_Ind)
value = new DataValue(SbmVehicleClass.GetStatusTriState(status));
}
break;
//-----------------------------------------------------------
}
return value;
}
}
//=======================================================================
}