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 { //======================================================================= // Asset manager - Vehicle Classes. //======================================================================= partial class SbmAssetMgr { //------------------------------------------------------------------- // Utilities. public abstract String ConstructVehicleClassCaption(String makeCode, String model, String derivative); public String ConstructVehicleClassCaption(SbmVehicleClass vehicleClass) { // Make, model and derivative - to populate brief description. return ConstructVehicleClassCaption(vehicleClass.MakeCode, vehicleClass.Model, vehicleClass.Derivative); } // Association Data. public abstract long GetVehicleClassVehicleCount(SysId vehicleClassId); public abstract bool VehicleClassHasVehicles(SysId vehicleClassId); public abstract bool ClearVehicleClassDependentData(SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo); public abstract List GetVehicleClasses_IdName(SbmVehicleClass.Params prm); public abstract List GetModelsForMake(String makeCode); public abstract List GetDerivativesForModel(String makeCode, String model); public abstract List 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.IdsIncluded.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.IdsIncluded.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)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_MakeCode), true)) { errField.MakeCode = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Model != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Model, "model", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Model), true)) { errField.Model = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Derivative != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MakeCode, "derivative", (long)Internals.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)Internals.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)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_VehicleCategoryCode))) { errField.VehicleCategoryCode = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.InsuranceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.InsuranceCode, "insurance code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_InsuranceCode))) { errField.InsuranceCode = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. if (!IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicleClass_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SbmVehicleClass.ValidStatuses.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 GetVehicleClassQueryFilter(SbmVehicleClass.Params prm); public abstract long GetVehicleClassCount(SbmVehicleClass.Params prm); public abstract List GetVehicleClassList(SbmVehicleClass.Params prm); public abstract DbResultSet ExecuteVehicleClassQuery(List columns, SbmVehicleClass.Params prm); //------------------------------------------------------------------- // D a t a V a l u e s //------------------------------------------------------------------- /// /// Extract and format result set data value where specific handling is required. /// Where response is an invalid data value, format value using column.FormatValue(values). /// 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; //----------------------------------------------------------- default: value = values.GetValue(column.DataName); break; } return value; } } //======================================================================= }