3.0.0.2 Production SMTP config

This commit is contained in:
Andy Howard
2025-02-08 22:20:44 +00:00
parent c4e5712d0a
commit 75185ed302
42 changed files with 346 additions and 497 deletions
@@ -7,6 +7,7 @@ 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.Interfaces;
using Sarand.Net.Standard.Base.ItemData;
using Sarand.Net.Standard.Base.Utils;
using Sarand.Net.Standard.Dbas.Data;
@@ -35,10 +36,189 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Data members.
// Odometer Reading.
public override bool SetVehicleOdometerReading(SbmVehicle vehicle, decimal odometer, DbUpdateInfo dbUpdateInfo)
{
if (vehicle == null || !SysId.IsValid(vehicle.Id) || odometer < 1) return false;
DateTime todayDate = DateTime.MinValue;
// Check whether there is already a reading for today.
SbmVehicleEvent vehicleEventUpdated = null;
SbmVehicleEvent.Params prm = new SbmVehicleEvent.Params();
prm.VehicleId = vehicle.Id;
prm.VehicleEventType = Sbm.VehicleEventType.Odometer;
foreach (SbmVehicleEvent vehicleEvent in GetVehicleEventList(prm))
{
// Check whether this event should be used in preference to any previously found.
if (vehicleEvent.StartOn.Date == todayDate)
{
// Always refresh any odometer reading recorded today.
vehicleEventUpdated = vehicleEvent;
break;
}
else if (vehicleEventUpdated == null && vehicleEvent.Odometer == odometer)
vehicleEventUpdated = vehicleEvent; // Events with the same reading can be updated (to refresh the date).
else if (vehicleEventUpdated == null && vehicleEvent.StartOn.Date > vehicleEventUpdated.StartOn.Date && vehicleEvent.Odometer == odometer)
vehicleEventUpdated = vehicleEvent; // Events with the same reading and more recent date can be refreshed.
}
if (vehicleEventUpdated != null)
{
vehicleEventUpdated.StartOn = todayDate;
vehicleEventUpdated.FinishOn = todayDate;
vehicleEventUpdated.Odometer = odometer;
if (UpdateVehicleEvent(vehicleEventUpdated, dbUpdateInfo))
{
}
#if _DEBUG
else TRACE("SapVehicle::SetOdometerReading: Failed to update vehicle event - %s\n", assetMgr.ErrorStateMessage);
#endif
}
else
{
// Create a new reading.
SbmVehicleEvent vehicleEvent = CreateVehicleEvent(vehicle.Id, Sbm.VehicleEventType.Odometer);
if (vehicleEvent != null)
{
vehicleEventUpdated.StartOn = todayDate;
vehicleEventUpdated.FinishOn = todayDate;
vehicleEventUpdated.Odometer = odometer;
if (InsertVehicleEvent(vehicleEvent, dbUpdateInfo))
{
}
#if _DEBUG
else TRACE("SapVehicle::SetOdometerReading: Failed to add vehicle event - %s\n", assetMgr.ErrorStateMessage);
#endif
}
#if _DEBUG
else TRACE("SapVehicle::SetOdometerReading: Failed to create vehicle event - %s\n", assetMgr.ErrorStateMessage);
#endif
}
// Update this vehicle itself.
vehicle.LatestOdo = odometer;
vehicle.LatestOdoOn = todayDate;
UpdateVehicle(vehicle, dbUpdateInfo);
return true;
}
//-------------------------------------------------------------------
// Get Vehicle.
// Associated data.
public override bool VehicleHasAssets(SysId vehicleId)
{
if (!SysId.IsValid(vehicleId)) return false;
String tableAsset = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaAsset);
if (Database.TableExists(tableAsset))
{
List<String> filter = new List<String>();
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaAsset_ItemType) + "=" + ((int)Sbm.ItemType.Vehicle).ToString());
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaAsset_ItemId) + "=" + vehicleId.ToString());
return Database.GetRowCount(tableAsset, filter.Concat(" AND ", "(", ")")) > 0;
}
return false;
}
public override bool VehicleHasProcesses(SysId vehicleId)
{
ClearErrorState();
if (!SysId.IsValid(vehicleId)) return false;
String tableAssetProcess = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaAssetProcess);
if (Database.TableExists(tableAssetProcess))
{
List<String> filter = new List<String>();
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaAssetProcess_AssetId) + "=" + vehicleId.ToString());
return Database.GetRowCount(tableAssetProcess, filter.Concat(" AND ", "(", ")")) > 0;
}
return false;
}
public override bool VehicleHasEvents(SysId vehicleId)
{
ClearErrorState();
if (!SysId.IsValid(vehicleId)) return false;
String tableVehicleEvent = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaVehicleEvent);
if (Database.TableExists(tableVehicleEvent))
{
List<String> filter = new List<String>();
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaVehicleEvent_VehicleId) + "=" + vehicleId.ToString());
return Database.GetRowCount(tableVehicleEvent, filter.Concat(" AND ", "(", ")")) > 0;
}
return false;
}
public override long GetVehicleFeatureCount(SysId vehicleId)
{
ClearErrorState();
if (!SysId.IsValid(vehicleId)) return 0;
String tableVehicleFeature = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaVehicleFeature);
if (Database.TableExists(tableVehicleFeature))
{
List<String> filter = new List<String>();
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaVehicleFeature_VehicleId) + "=" + vehicleId.ToString());
Database.GetRowCount(tableVehicleFeature, filter.Concat(" AND ", "(", ")"));
}
return 0;
}
public override bool VehicleHasFeatures(SysId vehicleId)
{
return GetVehicleFeatureCount(vehicleId) > 0;
}
public override bool VehicleHasInterfaceDataItems(SysId vehicleId)
{
ClearErrorState();
if (!SysId.IsValid(vehicleId)) return false;
return InterfaceConsole.ItemHasDataItems(new SbmItemId(Sbm.ItemType.Vehicle, vehicleId));
}
public override bool GetVehicleHpiCheckCount(SysId vehicleId)
{
ClearErrorState();
if (!SysId.IsValid(vehicleId)) return false;
// ToDo ItemDataConsole & SbmItemData.Params for HpiCheckCount
/*SaItemDataConsole itemDataConsole = SbmGlobals.Application.GetItemDataConsole(userContext.SessionContext);
if (itemDataConsole == null)
{
SbmItemData.Params prmData = new SbmItemData.Params();
prmData.lItemId.Add(SaItemId.Id, Sbm.ItemType.Vehicle);
List<TypeCodeDesc> itemDataTypes = SbmSystem.GetCodesOfType(Sbm.SystemCode.ItemDataType);
prmData.lDataType.Add(itemDataTypes.GetCodeForType(Sbm.ItemData.Vehicle_HpiResponse));
prmData.lDataType.RemoveEmpty();
if (!StringUtil.IsEmpty(prmData.lDataType))
itemDataConsole.GetItemDataCount(prmData);
}*/
return false;
}
public override bool VehicleHasItemData(SysId vehicleId)
{
ClearErrorState();
if (!SysId.IsValid(vehicleId)) return false;
SaItemData.Params prmData = new SaItemData.Params();
prmData.ItemIdsIncluded.Add(new SbmItemId(Sbm.ItemType.Vehicle, vehicleId));
return ItemDataConsole.ItemDataExists(prmData);
}
public override bool ClearVehicleDependentData(SbmVehicle vehicle, DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
if (vehicle == null || !SysId.IsValid(vehicle.Id)) return false;
if (!HasErrorState())
{
// Remove document references:
if (!ItemDocConsole.ClearItemDocs(vehicle.GetItemId(), dbUpdateInfo))
SetErrorState(ItemDocConsole.ErrorStateMessage);
}
if (!HasErrorState())
{
// Remove Item Data.
if (!ItemDataConsole.ClearItemData(vehicle.GetItemId(), dbUpdateInfo))
SetErrorState(ItemDataConsole.ErrorStateMessage);
}
if (!HasErrorState())
{
// Remove interface data items.
if (!InterfaceConsole.ClearInterfaceDataItems(vehicle.GetItemId(), dbUpdateInfo))
SetErrorState(InterfaceConsole.ErrorStateMessage);
}
return OK;
}
//-------------------------------------------------------------------
// Get Item.
public override SbmVehicle GetVehicle(SbmVehicle.Params prm)
{
return GetVehicle(GetVehicleQueryFilter(prm).Concat(" AND ", "(", ")"));
@@ -80,12 +260,12 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
public override SbmVehicle CreateVehicle()
{
ClearErrorState();
return new SbmVehicle_Dbas(Internals, new SysId(), 0);
return new SbmVehicle_Dbas(new SysId(), 0);
}
private SbmVehicle_Dbas CreateVehicle(SaVehicle_Db dbVehicle)
{
ClearErrorState();
SbmVehicle_Dbas vehicle = new SbmVehicle_Dbas(Internals, new SysId(dbVehicle._Id), (ushort)dbVehicle._Flags);
SbmVehicle_Dbas vehicle = new SbmVehicle_Dbas(new SysId(dbVehicle._Id), (ushort)dbVehicle._Flags);
PopulateFrom(dbVehicle, vehicle);
return vehicle;
}