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 s //******************************************************************* //------------------------------------------------------------------- // Utilities. //------------------------------------------------------------------- // Retrieve individual vehicles. //------------------------------------------------------------------- // Vehicle exists. public bool VehicleExistsById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return false; SbmVehicle.Params prm = new SbmVehicle.Params(); prm.IncludedIds.Add(id); prm.StatusCat = SbmVehicle.StatusCat.Any; return GetVehicleCount(prm) == 1; } public bool VehicleExistsByRegNumber(String regNumber) { ClearErrorState(); if (!StringUtil.IsEmpty(regNumber)) return false; SbmVehicle.Params prm = new SbmVehicle.Params { RegNumber = regNumber, StatusCat = SbmVehicle.StatusCat.Any }; return GetVehicleCount(prm) == 1; } //------------------------------------------------------------------- // Get vehicle. public abstract SbmVehicle GetVehicle(SbmVehicle.Params prm); public SbmVehicle GetVehicleById(SysId id) { ClearErrorState(); if (!SysId.IsValid(id)) return null; SbmVehicle.Params prm = new SbmVehicle.Params(); prm.IncludedIds.Add(id); prm.StatusCat = SbmVehicle.StatusCat.Any; return GetVehicle(prm); } public SbmVehicle GetVehicleByRegNumber(String regNumber) { ClearErrorState(); if (StringUtil.IsEmpty(regNumber)) return null; SbmVehicle.Params prm = new SbmVehicle.Params { RegNumber = regNumber, StatusCat = SbmVehicle.StatusCat.Any }; return GetVehicle(prm); } //------------------------------------------------------------------- // Create vehicle. public abstract SbmVehicle CreateVehicle(); //------------------------------------------------------------------- // Validate vehicle data. public bool IsValidVehicle(SbmVehicle vehicle) { ClearErrorState(); if (vehicle == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidVehicleData(vehicle.GetData(), new SbmVehicle.ErrField()); } public virtual bool IsValidVehicleData(SbmVehicle.Data data, SbmVehicle.ErrField errField) { ClearErrorState(); // Vehicle properties. if (errField.VehicleClassId != SacsHierarchyItem.ValidValue.Ignore && SysId.ToInt(data.VehicleClassId) < 1) { errField.VehicleClassId = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState("Aff Id Owner must be supplied"); } if (errField.RegNumber != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.RegNumber, "registration Number", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_RegNumber)))) { errField.RegNumber = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.RegNumberPrev != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.RegNumberPrev, "registration Number Previous", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_RegNumberPrev)))) { errField.RegNumberPrev = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Vin != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.Vin, "VIN", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_VIN)))) { errField.Vin = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.TachoCode != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.TachoCode, "tacho code", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_TachoCode)))) { errField.TachoCode = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.TachoId != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.TachoId, "tacho id", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_TachoId)))) { errField.TachoId = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.MotNo != SacsHierarchyItem.ValidValue.Ignore && (IsValidValue(data.MotNo, "MOT", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_MotNo)))) { errField.MotNo = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. if (!IsValidValue(data.Notes, "notes", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(data.StatusCode, "status", (long)SbmDbDfn.GetColTextLen(SbmDbDfn.ColumnIdx.SaVehicle_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SbmVehicle.ValidStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } return true; } //------------------------------------------------------------------- // Vehicle database interface. public abstract bool InsertVehicle(SbmVehicle vehicle, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateVehicle(SbmVehicle vehicle, DbUpdateInfo dbUpdateInfo); public virtual bool VehicleCanBeDeleted(SbmVehicle vehicle) { ClearErrorState(); return true; } public abstract bool DeleteVehicle(SbmVehicle vehicle, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Vehicle list. public abstract ColumnDfn GetVehicleColumnDfn(SbmVehicle.Column columnId, String caption = "", int width = 0); public abstract List GetVehicleQueryFilter(SbmVehicle.Params prm); public abstract long GetVehicleCount(SbmVehicle.Params prm); public abstract List GetVehicleList(SbmVehicle.Params prm); public abstract DbResultSet ExecuteVehicleQuery(List columns, SbmVehicle.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 GetVehicleDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SbmVehicle.Column)column.Id) { // Notes. case SbmVehicle.Column.Notes: value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); break; // Status. case SbmVehicle.Column.Status_Desc: case SbmVehicle.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SbmVehicle.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode)); else if (column.Id == (int)SbmVehicle.Column.Status_Ind) value = new DataValue(SbmVehicle.GetStatusTriState(status)); } break; //----------------------------------------------------------- } return value; } } //======================================================================= }