diff --git a/LogisticsMgrMobile/LogisticsMgrMobile.UWP/LogisticsMgrMobile.UWP.csproj b/LogisticsMgrMobile/LogisticsMgrMobile.UWP/LogisticsMgrMobile.UWP.csproj
index 39440dd..9d2e550 100644
--- a/LogisticsMgrMobile/LogisticsMgrMobile.UWP/LogisticsMgrMobile.UWP.csproj
+++ b/LogisticsMgrMobile/LogisticsMgrMobile.UWP/LogisticsMgrMobile.UWP.csproj
@@ -151,6 +151,10 @@
{5af5ac55-7a6e-434d-a7b9-be1924903f1c}
SacsCoreBase
+
+ {56ab4cf8-63a8-44ff-b325-16e13be82366}
+ SacsCoreMob
+
{74e66d28-ce0c-49eb-8c8b-9370b2faae49}
SaLogMgrCore
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthingCost_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthingCost_Mobile.cs
new file mode 100644
index 0000000..6e9ba96
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthingCost_Mobile.cs
@@ -0,0 +1,34 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmBerthingCost_Mobile : SlmBerthingCost
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmBerthingCost_Mobile (Slm.Site site, SysId id, SysId berthingId, ushort flags) :
+ base(site, id, berthingId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthingResource_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthingResource_Mobile.cs
new file mode 100644
index 0000000..727a428
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthingResource_Mobile.cs
@@ -0,0 +1,34 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmBerthingResource_Mobile : SlmBerthingResource
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmBerthingResource_Mobile (Slm.Site site, SysId id, SysId berthingId, Slm.BerthingResourceType berthingResourceType, ushort flags) :
+ base(site, id, berthingId, berthingResourceType)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthingTask_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthingTask_Mobile.cs
new file mode 100644
index 0000000..933297f
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthingTask_Mobile.cs
@@ -0,0 +1,34 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmBerthingTask_Mobile : SlmBerthingTask
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmBerthingTask_Mobile (Slm.Site site, SysId id, SysId berthingId, Slm.BerthingTaskType berthingTaskType, ushort flags) :
+ base(site, id, berthingId, berthingTaskType)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthing_Mobile .cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthing_Mobile .cs
new file mode 100644
index 0000000..03b810a
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmBerthing_Mobile .cs
@@ -0,0 +1,34 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmBerthing_Mobile : SlmBerthing
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmBerthing_Mobile (Slm.Site site, SysId id, ushort flags) :
+ base(site, id)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmChecklistItem_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmChecklistItem_Mobile.cs
new file mode 100644
index 0000000..8ad38d7
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmChecklistItem_Mobile.cs
@@ -0,0 +1,37 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmChecklistItem_Mobile : SlmChecklistItem
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmChecklistItem_Mobile (Slm.Site site, SysId id, SysId checklistId, ushort flags) :
+ base(site, id, checklistId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ public override bool HasItemChecklistReferences()
+ {
+ throw new NotImplementedException();
+ }
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmChecklist_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmChecklist_Mobile.cs
new file mode 100644
index 0000000..1419eb7
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmChecklist_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmChecklist_Mobile : SlmChecklist
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmChecklist_Mobile (Slm.Site site, SysId id, ushort flags) :
+ base(site, id)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmCommodityLocation_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmCommodityLocation_Mobile.cs
new file mode 100644
index 0000000..8d789ad
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmCommodityLocation_Mobile.cs
@@ -0,0 +1,37 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmCommodityLocation_Mobile : SlmCommodityLocation
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmCommodityLocation_Mobile (Slm.Site site, SysId id, ushort flags) :
+ base(site, id)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ public override bool HasStockMovements ()
+ {
+ throw new NotImplementedException();
+ }
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmCommodity_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmCommodity_Mobile.cs
new file mode 100644
index 0000000..3a17a1c
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmCommodity_Mobile.cs
@@ -0,0 +1,58 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmCommodity_Mobile : SlmCommodity
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmCommodity_Mobile (Slm.Site site, SysId id, ushort flags) :
+ base(site, id)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ public override bool HasStockLocations ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasStockMovements ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasStockLevels ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasDischargeHolds ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasDischarges ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasRequirements ()
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmCruiseBerthing_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmCruiseBerthing_Mobile.cs
new file mode 100644
index 0000000..410c3e1
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmCruiseBerthing_Mobile.cs
@@ -0,0 +1,34 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmCruiseBerthing_Mobile : SlmCruiseBerthing
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmCruiseBerthing_Mobile (Slm.Site site, SysId id, ushort flags) :
+ base(site, id)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmDataItemValue_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmDataItemValue_Mobile.cs
new file mode 100644
index 0000000..1f5f78e
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmDataItemValue_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmDataItemValue_Mobile : SlmDataItemValue
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmDataItemValue_Mobile (Slm.Site site, ItemId itemId, Slm.ItemValueType valueType, ushort flags) :
+ base(itemId, valueType)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmDischargeHold_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmDischargeHold_Mobile.cs
new file mode 100644
index 0000000..5036531
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmDischargeHold_Mobile.cs
@@ -0,0 +1,34 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmDischargeHold_Mobile : SlmDischargeHold
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmDischargeHold_Mobile (Slm.Site site, SysId id, SysId berthingId, ushort flags) :
+ base(site, id, berthingId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmDischarge_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmDischarge_Mobile.cs
new file mode 100644
index 0000000..9a9f250
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmDischarge_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmDischarge_Mobile : SlmDischarge
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmDischarge_Mobile (Slm.Site site, SysId id, SysId berthingId, ushort flags) :
+ base(site, id, berthingId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmItemChecklistItem_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmItemChecklistItem_Mobile.cs
new file mode 100644
index 0000000..376cf7c
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmItemChecklistItem_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmItemChecklistItem_Mobile : SlmItemChecklistItem
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmItemChecklistItem_Mobile (Slm.Site site, SysId id, SysId itemChecklistId, SysId checklistItemId, ushort flags) :
+ base(site, id, itemChecklistId, checklistItemId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmItemChecklist_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmItemChecklist_Mobile.cs
new file mode 100644
index 0000000..155dd9f
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmItemChecklist_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmItemChecklist_Mobile : SlmItemChecklist
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmItemChecklist_Mobile (Slm.Site site, SysId id, SysId itemId, SysId checklistId, Slm.ChecklistItemType itemType, ushort flags) :
+ base(site, id, itemId, checklistId, itemType)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmRequirement_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmRequirement_Mobile.cs
new file mode 100644
index 0000000..a1aea84
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmRequirement_Mobile.cs
@@ -0,0 +1,34 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmRequirement_Mobile : SlmRequirement
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmRequirement_Mobile (Slm.Site site, SysId id, SysId transId, Slm.RequirementType requirementType, ushort flags) :
+ base(site, id, transId, requirementType)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffAllocation_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffAllocation_Mobile.cs
new file mode 100644
index 0000000..ad6fedc
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffAllocation_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStaffAllocation_Mobile : SlmStaffAllocation
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStaffAllocation_Mobile (Slm.Site site, SysId id, SysId staffTaskId, SysId staffMemberId, ushort flags) :
+ base(site, id, staffTaskId, staffMemberId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffJob_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffJob_Mobile.cs
new file mode 100644
index 0000000..5c4c78d
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffJob_Mobile.cs
@@ -0,0 +1,42 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStaffJob_Mobile : SlmStaffJob
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStaffJob_Mobile (Slm.Site site, SysId id, ushort flags) :
+ base(site, id)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ public override bool HasTasks ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasAllocations ()
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffMemberAvailability_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffMemberAvailability_Mobile.cs
new file mode 100644
index 0000000..35f6464
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffMemberAvailability_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStaffMemberAvailability_Mobile : SlmStaffMemberAvailability
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStaffMemberAvailability_Mobile (Slm.Site site, SysId id, SysId staffMemberId, ushort flags) :
+ base(site, id, staffMemberId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffMemberSkill_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffMemberSkill_Mobile.cs
new file mode 100644
index 0000000..adfb706
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffMemberSkill_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStaffMemberSkill_Mobile : SlmStaffMemberSkill
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStaffMemberSkill_Mobile (Slm.Site site, SysId id, SysId staffMemberId, ushort flags) :
+ base(site, id, staffMemberId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffMember_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffMember_Mobile.cs
new file mode 100644
index 0000000..5626ae5
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffMember_Mobile.cs
@@ -0,0 +1,50 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStaffMember_Mobile : SlmStaffMember
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStaffMember_Mobile (Slm.Site site, SysId id, ushort flags) :
+ base(site, id)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ public override bool HasSkills ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasAllocations ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasAllocationsBefore ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasAllocationsAfter ()
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffTaskSkill_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffTaskSkill_Mobile.cs
new file mode 100644
index 0000000..a804ce4
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffTaskSkill_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStaffTaskSkill_Mobile : SlmStaffTaskSkill
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStaffTaskSkill_Mobile (Slm.Site site, SysId id, SysId staffTaskId, ushort flags) :
+ base(site, id, staffTaskId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffTask_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffTask_Mobile.cs
new file mode 100644
index 0000000..8d33b00
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStaffTask_Mobile.cs
@@ -0,0 +1,41 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStaffTask_Mobile : SlmStaffTask
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStaffTask_Mobile (Slm.Site site, SysId id, SysId staffJobId, ushort flags) :
+ base(site, id, staffJobId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ public override bool HasAllocations ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasAllocationsCount ()
+ {
+ throw new NotImplementedException();
+ }
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockLevel_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockLevel_Mobile.cs
new file mode 100644
index 0000000..035dba7
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockLevel_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStockLevel_Mobile : SlmStockLevel
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStockLevel_Mobile (Slm.Site site, SysId id, SysId commodityId, Slm.StockLevelType stockLevelType, ushort flags) :
+ base(site, id, commodityId, stockLevelType)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockLoading_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockLoading_Mobile.cs
new file mode 100644
index 0000000..923b4df
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockLoading_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStockLoading_Mobile : SlmStockLoading
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStockLoading_Mobile (Slm.Site site, SysId id, SysId locationId, ushort flags) :
+ base(site, id, locationId)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockLocation_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockLocation_Mobile.cs
new file mode 100644
index 0000000..6acaf70
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockLocation_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStockLocation_Mobile : SlmStockLocation
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStockLocation_Mobile (Slm.Site site, SysId id, SysId locationIdParent, Slm.StockLocationType stockLocationType, ushort flags) :
+ base(site, id, locationIdParent, stockLocationType)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockMovement_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockMovement_Mobile.cs
new file mode 100644
index 0000000..6d3d126
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmStockMovement_Mobile.cs
@@ -0,0 +1,33 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmStockMovement_Mobile : SlmStockMovement
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmStockMovement_Mobile (Slm.Site site, SysId id, SysId commodityId, Slm.StockMovementType stockMovementType, ushort flags) :
+ base(site, id, commodityId, stockMovementType)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmTransaction_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmTransaction_Mobile.cs
new file mode 100644
index 0000000..fcd30f4
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmTransaction_Mobile.cs
@@ -0,0 +1,34 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmTransaction_Mobile : SlmTransaction
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmTransaction_Mobile (Slm.Site site, SysId id, Slm.TransactionType requirementType, ushort flags) :
+ base(site, id, requirementType)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Bus/SlmVessel_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Bus/SlmVessel_Mobile.cs
new file mode 100644
index 0000000..8241707
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Bus/SlmVessel_Mobile.cs
@@ -0,0 +1,42 @@
+using Sarand.Core.Bus;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Bus
+{
+ //=======================================================================
+ public class SlmVessel_Mobile : SlmVessel
+ {
+ //-------------------------------------------------------------------
+ // Data members.
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmVessel_Mobile (Slm.Site site, SysId id, Slm.VesselCategory vesselCategory, ushort flags) :
+ base(site, id, vesselCategory)
+ {
+ Flags = flags;
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+
+ //-------------------------------------------------------------------
+ // A s s o c i a t e d D a t a
+ //-------------------------------------------------------------------
+ public override bool HasBulkBerthings ()
+ {
+ throw new NotImplementedException();
+ }
+ public override bool HasCommodities ()
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmAssetMgr_Mobile-AssetMovements.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmAssetMgr_Mobile-AssetMovements.cs
index c100bf2..bbf3f33 100644
--- a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmAssetMgr_Mobile-AssetMovements.cs
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmAssetMgr_Mobile-AssetMovements.cs
@@ -378,9 +378,9 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
if (DateUtil.IsValid(prm.InProgressFrom)) filter.Add("InProgressFrom", DateUtil.FormatXmlDate(prm.InProgressFrom));
if (DateUtil.IsValid(prm.InProgressTo)) filter.Add("InProgressTo", DateUtil.FormatXmlDate(prm.InProgressTo));
- // Storage date range.
- if (DateUtil.IsValid(prm.StorageFrom)) filter.Add("StorageFrom", DateUtil.FormatXmlDate(prm.StorageFrom));
- if (DateUtil.IsValid(prm.StorageTo)) filter.Add("StorageTo", DateUtil.FormatXmlDate(prm.StorageTo));
+ // Storage date range.
+ if (DateUtil.IsValid(prm.StorageFrom)) filter.Add("StorageFrom", DateUtil.FormatXmlDate(prm.StorageFrom));
+ if (DateUtil.IsValid(prm.StorageTo)) filter.Add("StorageTo", DateUtil.FormatXmlDate(prm.StorageTo));
// Completed date range.
if (DateUtil.IsValid(prm.CompletedFrom)) filter.Add("CompletedFrom", DateUtil.FormatXmlDate(prm.CompletedFrom));
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-BerthingCosts.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-BerthingCosts.cs
new file mode 100644
index 0000000..1f7a403
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-BerthingCosts.cs
@@ -0,0 +1,338 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmBerthingMgr_Mobile
+ {
+ //*******************************************************************
+ // B e r t h i n g C o s t s
+ //*******************************************************************
+ // BerthingCost exists.
+ public override bool BerthingCostExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create BerthingCost.
+ public override SlmBerthingCost CreateBerthingCost (SysId berthingId)
+ {
+ ClearErrorState();
+ return new SlmBerthingCost_Mobile(Site, null, berthingId, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get BerthingCost.
+ public override SlmBerthingCost GetBerthingCost (SlmBerthingCost.Params prmBerthingCost)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmBerthingCost GetBerthingCostById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate BerthingCost.
+ public override bool IsValidBerthingCostData (SlmBerthingCost.Data data, SlmBerthingCost.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidBerthingCostData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert BerthingCost.
+ public override bool InsertBerthingCost (SlmBerthingCost berthingCost, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidBerthingCost(berthingCost)) return false;
+ if (SysId.IsValid(berthingCost.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update BerthingCost.
+ public override bool UpdateBerthingCost (SlmBerthingCost berthingCost, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidBerthingCost(berthingCost)) return false;
+ if (!SysId.IsValid(berthingCost.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete BerthingCost.
+ public override bool BerthingCostCanBeDeleted (SlmBerthingCost berthingCost)
+ {
+ ClearErrorState();
+ if (!base.BerthingCostCanBeDeleted(berthingCost)) return false;
+ return true;
+ }
+ public override bool DeleteBerthingCost (SlmBerthingCost berthingCost, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!BerthingCostCanBeDeleted(berthingCost)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement berthingCostElement, SlmBerthingCost berthingCost, DbUpdateInfo dbUpdateInfo)
+ {
+ berthingCostElement.AppendElement("Id", SysId.ToString(berthingCost.Id));
+ berthingCostElement.AppendElement("BerthingId", SysId.ToString(berthingCost.BerthingId));
+ berthingCostElement.AppendElement("BerthingCostCategory", berthingCost.BerthingCostCategory.ToString());
+ berthingCostElement.AppendElement("Unit", berthingCost.BerthingCostUnit.ToString());
+ berthingCostElement.AppendElement("Type", berthingCost.BerthingCostType.ToString());
+ berthingCostElement.AppendElement("Rate", berthingCost.Rate.ToString("N3"));
+ berthingCostElement.AppendElement("Quantity", berthingCost.Quantity.ToString("N3"));
+ berthingCostElement.AppendElement("Total", berthingCost.Total.ToString("N3"));
+ berthingCostElement.AppendElement("Notes", berthingCost.Notes);
+ berthingCostElement.AppendElement("Status", SacsSystem.GetStatusCode(berthingCost.Status));
+ berthingCostElement.AppendElement("Flags", berthingCost.Flags.ToString());
+ if (!SysId.IsValid(berthingCost.Id))
+ {
+ berthingCostElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ berthingCostElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ berthingCostElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ berthingCostElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ berthingCostElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ berthingCostElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement berthingCostElement, SlmBerthingCost berthingCost)
+ {
+ //berthingCost.Id = new SysId(StringUtil.ToInt(berthingCostElement.GetChildText("Id")));
+ //berthingCost.BerthingId = new SysId(StringUtil.ToInt(berthingCostElement.GetChildText("BerthingId")));
+ berthingCost.BerthingCostCategory = EnumUtil.ParseEnum(berthingCostElement.GetChildText("Category"), Slm.BerthingCostCategory.Unknown);
+ berthingCost.BerthingCostUnit = EnumUtil.ParseEnum(berthingCostElement.GetChildText("BerthingCostUnit"), Slm.BerthingCostUnit.Unknown);
+ berthingCost.BerthingCostType = EnumUtil.ParseEnum(berthingCostElement.GetChildText("BerthingCostType"), Slm.BerthingCostType.Unknown);
+ berthingCost.Rate = StringUtil.ToDecimal(berthingCostElement.GetChildText("Rate"));
+ berthingCost.Quantity = StringUtil.ToDecimal(berthingCostElement.GetChildText("Quantity"));
+ berthingCost.Total = StringUtil.ToDecimal(berthingCostElement.GetChildText("Total"));
+ berthingCost.Notes = berthingCostElement.GetChildText("Notes");
+ berthingCost.Status = SacsSystem.GetStatusForCode(berthingCostElement.GetChildText("Status"));
+ berthingCost.SetCreateStamp(DateUtil.ParseXmlDateTime(berthingCostElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(berthingCostElement.GetChildText("CreateBy"))), berthingCostElement.GetChildText("CreateHost"));
+ berthingCost.SetUpdateStamp(DateUtil.ParseXmlDateTime(berthingCostElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(berthingCostElement.GetChildText("UpdateBy"))), berthingCostElement.GetChildText("UpdateHost"));
+ berthingCost.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingCost column definitions.
+ public override ColumnDfn GetBerthingCostColumnDfn (SlmBerthingCost.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingCost query filter.
+ public override List GetBerthingCostQueryFilter (SlmBerthingCost.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetBerthingCostQueryFilter_Mobile (SlmBerthingCost.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // BerthingCost Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Company Id Cruise Line
+ if (SysId.IsValid(prm.BerthingId)) filter.Add("BerthingId", SysId.ToString(prm.BerthingId));
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // BerthingCost sort columns.
+ public List GetBerthingCostSortColumns (SlmBerthingCost.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingCost count.
+ public override long GetBerthingCostCount (SlmBerthingCost.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingCost list.
+ public override List GetBerthingCostList (SlmBerthingCost.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetBerthingCostList_Mobile (SlmBerthingCost.Params prmBerthingCost, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetBerthingCostList_Mobile";
+
+ // BerthingCost columns.
+ List columns = new List()
+ {
+ SlmBerthingCost.Column.Id,
+ SlmBerthingCost.Column.BerthingId,
+ SlmBerthingCost.Column.BerthingCostCategory,
+ SlmBerthingCost.Column.BerthingCostUnit,
+ SlmBerthingCost.Column.BerthingCostType,
+ SlmBerthingCost.Column.Rate,
+ SlmBerthingCost.Column.Quantity,
+ SlmBerthingCost.Column.Total,
+ SlmBerthingCost.Column.Notes,
+ SlmBerthingCost.Column.Flags,
+ SlmBerthingCost.Column.Status
+ };
+
+ List itemDataList = await ExecuteBerthingCostQuery_Mobile(columns, prmBerthingCost, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmBerthingCost.Column.Id);
+ SysId berthingId = itemData.GetIdValue(SlmBerthingCost.Column.BerthingId);
+ ushort flags = (ushort)itemData.GetIntValue(SlmBerthingCost.Column.Id);
+ // Create item.
+ SlmBerthingCost_Mobile berthingCost = new SlmBerthingCost_Mobile(Site, id, berthingId, flags);
+ // Populate item properties.
+ foreach (SlmBerthingCost.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmBerthingCost.Column.BerthingId: berthingCost.BerthingId = itemData.GetIdValue(column); break;
+ case SlmBerthingCost.Column.BerthingCostCategory: berthingCost.BerthingCostCategory = EnumUtil.ParseEnum(value, Slm.BerthingCostCategory.Unknown); break;
+ case SlmBerthingCost.Column.BerthingCostUnit: berthingCost.BerthingCostUnit= EnumUtil.ParseEnum(value, Slm.BerthingCostUnit.Unknown); break;
+ case SlmBerthingCost.Column.BerthingCostType: berthingCost.BerthingCostType = EnumUtil.ParseEnum(value, Slm.BerthingCostType.Unknown); break;
+ case SlmBerthingCost.Column.Rate: berthingCost.Rate = itemData.GetDecimalValue(column); break;
+ case SlmBerthingCost.Column.Quantity: berthingCost.Quantity = itemData.GetDecimalValue(column); break;
+ case SlmBerthingCost.Column.Total: berthingCost.Total = itemData.GetDecimalValue(column); break;
+ case SlmBerthingCost.Column.Notes: berthingCost.Notes = value; break;
+ case SlmBerthingCost.Column.Status: berthingCost.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(berthingCost);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // BerthingCost query execution.
+ public override DbResultSet ExecuteBerthingCostQuery (List columns, SlmBerthingCost.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteBerthingCostQuery_Mobile (List berthingCostColumns, SlmBerthingCost.Params prmBerthingCost, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmBerthingCost.Column column in berthingCostColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetBerthingCostRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetBerthingCostQueryFilter_Mobile(prmBerthingCost), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetBerthingCostRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.BerthingCost;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetBerthingCostDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmBerthingCost.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // BerthingCost Category.
+ case SlmBerthingCost.Column.BerthingCostCategory_Desc:
+ {
+ Slm.BerthingCostCategory berthingCostCategory = (Slm.BerthingCostCategory)values.GetValue(column.DataName).AsLong();
+ value = new DataValue(berthingCostCategories.GetDescForType((int)berthingCostCategory, berthingCostCategory.ToString()));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmBerthingCost.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmBerthingCost.Column.Status_Desc:
+ case SlmBerthingCost.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmBerthingCost.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmBerthingCost.Column.Status_Ind)
+ value = new DataValue(SlmBerthingCost.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-BerthingResource.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-BerthingResource.cs
new file mode 100644
index 0000000..f647c11
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-BerthingResource.cs
@@ -0,0 +1,348 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmBerthingMgr_Mobile
+ {
+ //*******************************************************************
+ // B e r t h i n g R e s o u r c e s
+ //*******************************************************************
+ // BerthingResource exists.
+ public override bool BerthingResourceExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create BerthingResource.
+ public override SlmBerthingResource CreateBerthingResource (SysId berthingId,Slm.BerthingResourceType berthingResourceType)
+ {
+ ClearErrorState();
+ return new SlmBerthingResource_Mobile(Site, null, berthingId, berthingResourceType, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get BerthingResource.
+ public override SlmBerthingResource GetBerthingResource (SlmBerthingResource.Params prmBerthingResource)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmBerthingResource GetBerthingResourceById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate BerthingResource.
+ public override bool IsValidBerthingResourceData (SlmBerthingResource.Data data, SlmBerthingResource.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidBerthingResourceData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert BerthingResource.
+ public override bool InsertBerthingResource (SlmBerthingResource berthingResource, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidBerthingResource(berthingResource)) return false;
+ if (SysId.IsValid(berthingResource.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update BerthingResource.
+ public override bool UpdateBerthingResource (SlmBerthingResource berthingResource, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidBerthingResource(berthingResource)) return false;
+ if (!SysId.IsValid(berthingResource.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete BerthingResource.
+ public override bool BerthingResourceCanBeDeleted (SlmBerthingResource berthingResource)
+ {
+ ClearErrorState();
+ if (!base.BerthingResourceCanBeDeleted(berthingResource)) return false;
+ return true;
+ }
+ public override bool DeleteBerthingResource (SlmBerthingResource berthingResource, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!BerthingResourceCanBeDeleted(berthingResource)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement berthingResourceElement, SlmBerthingResource berthingResource, DbUpdateInfo dbUpdateInfo)
+ {
+ berthingResourceElement.AppendElement("Id", SysId.ToString(berthingResource.Id));
+ berthingResourceElement.AppendElement("BerthingId", SysId.ToString(berthingResource.BerthingId));
+ berthingResourceElement.AppendElement("Type", berthingResource.BerthingResourceType.ToString());
+ berthingResourceElement.AppendElement("Name", berthingResource.Name);
+ berthingResourceElement.AppendElement("Identity", berthingResource.Identity);
+ berthingResourceElement.AppendElement("Started", DateUtil.FormatXmlDateTime(berthingResource.Started));
+ berthingResourceElement.AppendElement("Completed", DateUtil.FormatXmlDateTime(berthingResource.Completed));
+ berthingResourceElement.AppendElement("Length", berthingResource.Elapsed.ToString("N3"));
+ berthingResourceElement.AppendElement("Breadth", berthingResource.Rate.ToString("N3"));
+ berthingResourceElement.AppendElement("Draught", berthingResource.Cost.ToString("N3"));
+ berthingResourceElement.AppendElement("Notes", berthingResource.Notes);
+ berthingResourceElement.AppendElement("Status", SacsSystem.GetStatusCode(berthingResource.Status));
+ berthingResourceElement.AppendElement("Flags", berthingResource.Flags.ToString());
+ if (!SysId.IsValid(berthingResource.Id))
+ {
+ berthingResourceElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ berthingResourceElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ berthingResourceElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ berthingResourceElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ berthingResourceElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ berthingResourceElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement berthingResourceElement, SlmBerthingResource berthingResource)
+ {
+ //berthingResource.Id = new SysId(StringUtil.ToInt(berthingResourceElement.GetChildText("Id")));
+ //berthingResource.BerthingId = new SysId(StringUtil.ToInt(berthingResourceElement.GetChildText("BerthingId")));
+ //berthingResource.BerthingResourceType = EnumUtil.ParseEnum(berthingResourceElement.GetChildText("Type"), Slm.BerthingResourceType.Unknown);
+ berthingResource.Name = berthingResourceElement.GetChildText("Name");
+ berthingResource.Identity = berthingResourceElement.GetChildText("Identity");
+ berthingResource.Started = DateUtil.ParseXmlDateTime(berthingResourceElement.GetChildText("Started"));
+ berthingResource.Completed = DateUtil.ParseXmlDateTime(berthingResourceElement.GetChildText("Completed"));
+ berthingResource.Elapsed = StringUtil.ToDecimal(berthingResourceElement.GetChildText("Elapsed"));
+ berthingResource.Rate = StringUtil.ToDecimal(berthingResourceElement.GetChildText("Rate"));
+ berthingResource.Cost = StringUtil.ToDecimal(berthingResourceElement.GetChildText("Cost"));
+ berthingResource.Notes = berthingResourceElement.GetChildText("Notes");
+ berthingResource.Status = SacsSystem.GetStatusForCode(berthingResourceElement.GetChildText("Status"));
+ berthingResource.SetCreateStamp(DateUtil.ParseXmlDateTime(berthingResourceElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(berthingResourceElement.GetChildText("CreateBy"))), berthingResourceElement.GetChildText("CreateHost"));
+ berthingResource.SetUpdateStamp(DateUtil.ParseXmlDateTime(berthingResourceElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(berthingResourceElement.GetChildText("UpdateBy"))), berthingResourceElement.GetChildText("UpdateHost"));
+ berthingResource.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingResource column definitions.
+ public override ColumnDfn GetBerthingResourceColumnDfn (SlmBerthingResource.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingResource query filter.
+ public override List GetBerthingResourceQueryFilter (SlmBerthingResource.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetBerthingResourceQueryFilter_Mobile (SlmBerthingResource.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // BerthingResource Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Berthing Id.
+ if (SysId.IsValid(prm.BerthingId)) filter.Add("BerthingId", SysId.ToString(prm.BerthingId));
+
+ // Berthing Resource Type.
+ if ((int)prm.BerthingResourceType> 0) filter.Add("BerthingResourceType", ((int)prm.BerthingResourceType).ToString());
+
+ // Started.
+ if (DateUtil.IsValid(prm.Started)) filter.Add("Started", DateUtil.FormatXmlDate(prm.Started));
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // BerthingResource sort columns.
+ public List GetBerthingResourceSortColumns (SlmBerthingResource.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingResource count.
+ public override long GetBerthingResourceCount (SlmBerthingResource.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingResource list.
+ public override List GetBerthingResourceList (SlmBerthingResource.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetBerthingResourceList_Mobile (SlmBerthingResource.Params prmBerthingResource, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetBerthingResourceList_Mobile";
+
+ // BerthingResource columns.
+ List columns = new List()
+ {
+ SlmBerthingResource.Column.Id,
+ SlmBerthingResource.Column.BerthingId,
+ SlmBerthingResource.Column.BerthingResourceType,
+ SlmBerthingResource.Column.Name,
+ SlmBerthingResource.Column.Identity,
+ SlmBerthingResource.Column.Started,
+ SlmBerthingResource.Column.Completed,
+ SlmBerthingResource.Column.Elapsed,
+ SlmBerthingResource.Column.Rate,
+ SlmBerthingResource.Column.Cost,
+ SlmBerthingResource.Column.Notes,
+ SlmBerthingResource.Column.Flags,
+ SlmBerthingResource.Column.Status
+ };
+
+ List itemDataList = await ExecuteBerthingResourceQuery_Mobile(columns, prmBerthingResource, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmBerthingResource.Column.Id);
+ SysId berthingId = itemData.GetIdValue(SlmBerthingResource.Column.BerthingId);
+ Slm.BerthingResourceType berthingResourceType = EnumUtil.ParseEnum(itemData.GetValue(SlmBerthingResource.Column.BerthingResourceType), Slm.BerthingResourceType.Unknown);
+ ushort flags = (ushort)itemData.GetIntValue(SlmBerthingResource.Column.Id);
+ // Create item.
+ SlmBerthingResource_Mobile berthingResource = new SlmBerthingResource_Mobile(Site, id, berthingId, berthingResourceType, flags);
+ // Populate item properties.
+ foreach (SlmBerthingResource.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmBerthingResource.Column.BerthingResourceCategory: berthingResource.BerthingResourceCategory; break;
+ //case SlmBerthingResource.Column.BerthingId: berthingResource.BerthingId = itemData.GetIdValue(column); break;
+ //case SlmBerthingResource.Column.BerthingResourceType: berthingResource.BerthingResourceType = value; break;
+ case SlmBerthingResource.Column.Name: berthingResource.Name = value; break;
+ case SlmBerthingResource.Column.Identity: berthingResource.Identity = value; break;
+ case SlmBerthingResource.Column.Started: berthingResource.Started= itemData.GetDateTimeValue(column); break;
+ case SlmBerthingResource.Column.Completed: berthingResource.Completed= itemData.GetDateTimeValue(column); break;
+ case SlmBerthingResource.Column.Elapsed: berthingResource.Elapsed = itemData.GetDecimalValue(column); break;
+ case SlmBerthingResource.Column.Rate: berthingResource.Rate = itemData.GetDecimalValue(column); break;
+ case SlmBerthingResource.Column.Cost: berthingResource.Cost= itemData.GetDecimalValue(column); break;
+ case SlmBerthingResource.Column.Notes: berthingResource.Notes = value; break;
+ case SlmBerthingResource.Column.Status: berthingResource.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(berthingResource);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // BerthingResource query execution.
+ public override DbResultSet ExecuteBerthingResourceQuery (List columns, SlmBerthingResource.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteBerthingResourceQuery_Mobile (List berthingResourceColumns, SlmBerthingResource.Params prmBerthingResource, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmBerthingResource.Column column in berthingResourceColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetBerthingResourceRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetBerthingResourceQueryFilter_Mobile(prmBerthingResource), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetBerthingResourceRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.BerthingResource;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetBerthingResourceDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmBerthingResource.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // BerthingResource Category.
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmBerthingResource.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmBerthingResource.Column.Status_Desc:
+ case SlmBerthingResource.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmBerthingResource.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmBerthingResource.Column.Status_Ind)
+ value = new DataValue(SlmBerthingResource.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-BerthingTasks.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-BerthingTasks.cs
new file mode 100644
index 0000000..abb8111
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-BerthingTasks.cs
@@ -0,0 +1,329 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmBerthingMgr_Mobile
+ {
+ //*******************************************************************
+ // B e r t h i n g T a s k s
+ //*******************************************************************
+ // BerthingTask exists.
+ public override bool BerthingTaskExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create BerthingTask.
+ public override SlmBerthingTask CreateBerthingTask (SysId berthingId ,Slm.BerthingTaskType berthingTaskType)
+ {
+ ClearErrorState();
+ return new SlmBerthingTask_Mobile(Site, null, berthingId, berthingTaskType, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get BerthingTask.
+ public override SlmBerthingTask GetBerthingTask (SlmBerthingTask.Params prmBerthingTask)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmBerthingTask GetBerthingTaskById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate BerthingTask.
+ public override bool IsValidBerthingTaskData (SlmBerthingTask.Data data, SlmBerthingTask.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidBerthingTaskData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert BerthingTask.
+ public override bool InsertBerthingTask (SlmBerthingTask berthingTask, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidBerthingTask(berthingTask)) return false;
+ if (SysId.IsValid(berthingTask.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update BerthingTask.
+ public override bool UpdateBerthingTask (SlmBerthingTask berthingTask, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidBerthingTask(berthingTask)) return false;
+ if (!SysId.IsValid(berthingTask.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete BerthingTask.
+ public override bool BerthingTaskCanBeDeleted (SlmBerthingTask berthingTask)
+ {
+ ClearErrorState();
+ if (!base.BerthingTaskCanBeDeleted(berthingTask)) return false;
+ return true;
+ }
+ public override bool DeleteBerthingTask (SlmBerthingTask berthingTask, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!BerthingTaskCanBeDeleted(berthingTask)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement berthingTaskElement, SlmBerthingTask berthingTask, DbUpdateInfo dbUpdateInfo)
+ {
+ berthingTaskElement.AppendElement("Id", SysId.ToString(berthingTask.Id));
+ berthingTaskElement.AppendElement("BerthingId", SysId.ToString(berthingTask.BerthingId));
+ berthingTaskElement.AppendElement("Type", berthingTask.BerthingTaskType.ToString());
+ berthingTaskElement.AppendElement("Started", DateUtil.FormatXmlDateTime(berthingTask.Started));
+ berthingTaskElement.AppendElement("Completed", DateUtil.FormatXmlDateTime(berthingTask.Completed));
+ berthingTaskElement.AppendElement("Remarks", berthingTask.Remarks);
+ berthingTaskElement.AppendElement("Notes", berthingTask.Notes);
+ berthingTaskElement.AppendElement("Status", SacsSystem.GetStatusCode(berthingTask.Status));
+ berthingTaskElement.AppendElement("Flags", berthingTask.Flags.ToString());
+ if (!SysId.IsValid(berthingTask.Id))
+ {
+ berthingTaskElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ berthingTaskElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ berthingTaskElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ berthingTaskElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ berthingTaskElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ berthingTaskElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement berthingTaskElement, SlmBerthingTask berthingTask)
+ {
+ //berthingTask.Id = new SysId(StringUtil.ToInt(berthingTaskElement.GetChildText("Id")));
+ //berthingTask.BerthingId = new SysId(StringUtil.ToInt(berthingTaskElement.GetChildText("BerthingId")));
+ //berthingTask.BerthingTaskType = EnumUtil.ParseEnum(berthingTaskElement.GetChildText("Type"), Slm.BerthingTaskType.Unknown);
+ berthingTask.Started = DateUtil.ParseXmlDateTime(berthingTaskElement.GetChildText("Started"));
+ berthingTask.Completed = DateUtil.ParseXmlDateTime(berthingTaskElement.GetChildText("Completed"));
+ berthingTask.Remarks = berthingTaskElement.GetChildText("Remarks");
+ berthingTask.Notes = berthingTaskElement.GetChildText("Notes");
+ berthingTask.Status = SacsSystem.GetStatusForCode(berthingTaskElement.GetChildText("Status"));
+ berthingTask.SetCreateStamp(DateUtil.ParseXmlDateTime(berthingTaskElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(berthingTaskElement.GetChildText("CreateBy"))), berthingTaskElement.GetChildText("CreateHost"));
+ berthingTask.SetUpdateStamp(DateUtil.ParseXmlDateTime(berthingTaskElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(berthingTaskElement.GetChildText("UpdateBy"))), berthingTaskElement.GetChildText("UpdateHost"));
+ berthingTask.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingTask column definitions.
+ public override ColumnDfn GetBerthingTaskColumnDfn (SlmBerthingTask.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingTask query filter.
+ public override List GetBerthingTaskQueryFilter (SlmBerthingTask.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetBerthingTaskQueryFilter_Mobile (SlmBerthingTask.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // BerthingTask Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Berthing Id.
+ if (SysId.IsValid(prm.BerthingId)) filter.Add("BerthingId", SysId.ToString(prm.BerthingId));
+
+ // BerthingTask type.
+ if ((int)prm.BerthingTaskType > 0) filter.Add("BerthingTaskType", ((int)prm.BerthingTaskType).ToString());
+
+ // Started.
+ if (DateUtil.IsValid(prm.Started)) filter.Add("Started", DateUtil.FormatXmlDate(prm.Started));
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // BerthingTask sort columns.
+ public List GetBerthingTaskSortColumns (SlmBerthingTask.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingTask count.
+ public override long GetBerthingTaskCount (SlmBerthingTask.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // BerthingTask list.
+ public override List GetBerthingTaskList (SlmBerthingTask.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetBerthingTaskList_Mobile (SlmBerthingTask.Params prmBerthingTask, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetBerthingTaskList_Mobile";
+
+ // BerthingTask columns.
+ List columns = new List()
+ {
+ SlmBerthingTask.Column.Id,
+ SlmBerthingTask.Column.BerthingId,
+ SlmBerthingTask.Column.BerthingTaskType,
+ SlmBerthingTask.Column.Started,
+ SlmBerthingTask.Column.Completed,
+ SlmBerthingTask.Column.Remarks,
+ SlmBerthingTask.Column.Notes,
+ SlmBerthingTask.Column.Flags,
+ SlmBerthingTask.Column.Status
+ };
+
+ List itemDataList = await ExecuteBerthingTaskQuery_Mobile(columns, prmBerthingTask, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmBerthingTask.Column.Id);
+ SysId berthingId = itemData.GetIdValue(SlmBerthingTask.Column.BerthingId);
+ Slm.BerthingTaskType berthingTaskType = EnumUtil.ParseEnum(itemData.GetValue(SlmBerthingTask.Column.BerthingTaskType), Slm.BerthingTaskType.Unknown);
+ ushort flags = (ushort)itemData.GetIntValue(SlmBerthingTask.Column.Id);
+ // Create item.
+ SlmBerthingTask_Mobile berthingTask = new SlmBerthingTask_Mobile(Site, id, berthingId, berthingTaskType, flags);
+ // Populate item properties.
+ foreach (SlmBerthingTask.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmBerthingTask.Column.BerthingId: berthingTask.BerthingId = itemData.GetIdValue(column); break;
+ //case SlmBerthingTask.Column.BerthingTaskType: berthingTask.BerthingTaskType; break;
+ case SlmBerthingTask.Column.Remarks: berthingTask.Remarks = value; break;
+ case SlmBerthingTask.Column.Notes: berthingTask.Notes = value; break;
+ case SlmBerthingTask.Column.Status: berthingTask.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(berthingTask);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // BerthingTask query execution.
+ public override DbResultSet ExecuteBerthingTaskQuery (List columns, SlmBerthingTask.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteBerthingTaskQuery_Mobile (List berthingTaskColumns, SlmBerthingTask.Params prmBerthingTask, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmBerthingTask.Column column in berthingTaskColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetBerthingTaskRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetBerthingTaskQueryFilter_Mobile(prmBerthingTask), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetBerthingTaskRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.BerthingTask;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetBerthingTaskDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmBerthingTask.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // BerthingTask Category.
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmBerthingTask.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmBerthingTask.Column.Status_Desc:
+ case SlmBerthingTask.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmBerthingTask.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmBerthingTask.Column.Status_Ind)
+ value = new DataValue(SlmBerthingTask.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-Berthings.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-Berthings.cs
new file mode 100644
index 0000000..865c2d6
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-Berthings.cs
@@ -0,0 +1,409 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmBerthingMgr_Mobile
+ {
+ //*******************************************************************
+ // B e r t h i n g s
+ //*******************************************************************
+ // Berthing exists.
+ public override bool BerthingExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create Berthing.
+ public override SlmBerthing CreateBerthing ()
+ {
+ ClearErrorState();
+ return new SlmBerthing_Mobile(Site, null, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get Berthing.
+ public override SlmBerthing GetBerthing (SlmBerthing.Params prmBerthing)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmBerthing GetBerthingById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate Berthing.
+ public override bool IsValidBerthingData (SlmBerthing.Data data, SlmBerthing.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidBerthingData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert Berthing.
+ public override bool InsertBerthing (SlmBerthing berthing, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidBerthing(berthing)) return false;
+ if (SysId.IsValid(berthing.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update Berthing.
+ public override bool UpdateBerthing (SlmBerthing berthing, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidBerthing(berthing)) return false;
+ if (!SysId.IsValid(berthing.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete Berthing.
+ public override bool BerthingCanBeDeleted (SlmBerthing berthing)
+ {
+ ClearErrorState();
+ if (!base.BerthingCanBeDeleted(berthing)) return false;
+ return true;
+ }
+ public override bool DeleteBerthing (SlmBerthing berthing, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!BerthingCanBeDeleted(berthing)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement berthingElement, SlmBerthing berthing, DbUpdateInfo dbUpdateInfo)
+ {
+ berthingElement.AppendElement("Id", SysId.ToString(berthing.Id));
+ berthingElement.AppendElement("VesselId", SysId.ToString(berthing.VesselId));
+ berthingElement.AppendElement("AgentId", SysId.ToString(berthing.AgentId));
+ berthingElement.AppendElement("CustomerId", SysId.ToString(berthing.CustomerId));
+ berthingElement.AppendElement("Berth", berthing.Berth);
+ berthingElement.AppendElement("Bollard", berthing.Bollard);
+ berthingElement.AppendElement("Expected", DateUtil.FormatXmlDateTime(berthing.Expected));
+ berthingElement.AppendElement("CompletionEst", DateUtil.FormatXmlDateTime(berthing.CompletionEst));
+ berthingElement.AppendElement("Arrived", DateUtil.FormatXmlDateTime(berthing.Arrived));
+ berthingElement.AppendElement("Completed", DateUtil.FormatXmlDateTime(berthing.Completed));
+ berthingElement.AppendElement("Departed", DateUtil.FormatXmlDateTime(berthing.Departed));
+ berthingElement.AppendElement("Cargo", berthing.Cargo);
+ berthingElement.AppendElement("Holds", berthing.Holds.ToString("N3"));
+ berthingElement.AppendElement("TotalDischarge", berthing.TotalDischarge.ToString("N3"));
+ berthingElement.AppendElement("HoursWorked", berthing.HoursWorked.ToString("N3"));
+ berthingElement.AppendElement("StatsData", berthing.StatsData);
+ berthingElement.AppendElement("RateConveyor", berthing.RateConveyor.ToString("N3"));
+ berthingElement.AppendElement("RateLorry", berthing.RateLorry.ToString("N3"));
+ berthingElement.AppendElement("RateQuayside", berthing.RateQuayside.ToString("N3"));
+ berthingElement.AppendElement("RateOvertime", berthing.RateOvertime.ToString("N3"));
+ berthingElement.AppendElement("SpecialInstr", berthing.SpecialInstr);
+ berthingElement.AppendElement("Notes", berthing.Notes);
+ berthingElement.AppendElement("Status", SacsSystem.GetStatusCode(berthing.Status));
+ berthingElement.AppendElement("Flags", berthing.Flags.ToString());
+ if (!SysId.IsValid(berthing.Id))
+ {
+ berthingElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ berthingElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ berthingElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ berthingElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ berthingElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ berthingElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement berthingElement, SlmBerthing berthing)
+ {
+ //berthing.Id = new SysId(StringUtil.ToInt(berthingElement.GetChildText("Id")));
+ berthing.VesselId = new SysId(StringUtil.ToInt(berthingElement.GetChildText("VesselId")));
+ berthing.AgentId = new SysId(StringUtil.ToInt(berthingElement.GetChildText("AgentId")));
+ berthing.CustomerId = new SysId(StringUtil.ToInt(berthingElement.GetChildText("CustomerId")));
+ berthing.Berth = berthingElement.GetChildText("Berth");
+ berthing.Bollard = berthingElement.GetChildText("Bollard");
+ berthing.Expected = DateUtil.ParseXmlDateTime(berthingElement.GetChildText("Expected"));
+ berthing.CompletionEst = DateUtil.ParseXmlDateTime(berthingElement.GetChildText("CompletionEst "));
+ berthing.Arrived = DateUtil.ParseXmlDateTime(berthingElement.GetChildText("Arrived"));
+ berthing.Completed = DateUtil.ParseXmlDateTime(berthingElement.GetChildText("Completed"));
+ berthing.Departed = DateUtil.ParseXmlDateTime(berthingElement.GetChildText("Departed"));
+ berthing.Cargo = berthingElement.GetChildText("Cargo");
+ berthing.Holds = decimal.ToByte(StringUtil.ToDecimal((berthingElement.GetChildText("Holds"))));
+ berthing.TotalDischarge = StringUtil.ToDecimal(berthingElement.GetChildText("TotalDischarge"));
+ berthing.HoursWorked = StringUtil.ToShort(berthingElement.GetChildText("HoursWorked"));
+ berthing.StatsData = berthingElement.GetChildText("StatsData");
+ berthing.RateConveyor = StringUtil.ToDecimal(berthingElement.GetChildText("RateConveyor"));
+ berthing.RateLorry = StringUtil.ToDecimal(berthingElement.GetChildText("RateLorry"));
+ berthing.RateQuayside = StringUtil.ToDecimal(berthingElement.GetChildText("RateQuayside "));
+ berthing.RateOvertime = StringUtil.ToDecimal(berthingElement.GetChildText("RateOvertime"));
+ berthing.SpecialInstr = berthingElement.GetChildText("SpecialInstr");
+ berthing.Notes = berthingElement.GetChildText("Notes");
+ berthing.Status = SacsSystem.GetStatusForCode(berthingElement.GetChildText("Status"));
+ berthing.SetCreateStamp(DateUtil.ParseXmlDateTime(berthingElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(berthingElement.GetChildText("CreateBy"))), berthingElement.GetChildText("CreateHost"));
+ berthing.SetUpdateStamp(DateUtil.ParseXmlDateTime(berthingElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(berthingElement.GetChildText("UpdateBy"))), berthingElement.GetChildText("UpdateHost"));
+ berthing.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // Berthing column definitions.
+ public override ColumnDfn GetBerthingColumnDfn (SlmBerthing.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // Berthing query filter.
+ public override List GetBerthingQueryFilter (SlmBerthing.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetBerthingQueryFilter_Mobile (SlmBerthing.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // Berthing Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Vessel Id.
+ if (SysId.IsValid(prm.VesselId)) filter.Add("VesselId", SysId.ToString(prm.VesselId));
+
+ // Agent Id.
+ if (SysId.IsValid(prm.AgentId)) filter.Add("AgentId", SysId.ToString(prm.AgentId));
+
+ // Customer Id.
+ if (SysId.IsValid(prm.CustomerId)) filter.Add("CustomerId", SysId.ToString(prm.CustomerId));
+
+ // Customer.
+ if (!StringUtil.IsEmpty(prm.CustomerPartial)) filter.Add("CustomerPartial", prm.CustomerPartial);
+
+ // Arrived.
+ if (DateUtil.IsValid(prm.ArrivedFrom)) filter.Add("ArrivedFrom", DateUtil.FormatXmlDate(prm.ArrivedFrom));
+ if (DateUtil.IsValid(prm.ArrivedTo)) filter.Add("ArrivedTo", DateUtil.FormatXmlDate(prm.ArrivedTo));
+
+ // Completed.
+ if (DateUtil.IsValid(prm.CompletedFrom)) filter.Add("CompletedFrom", DateUtil.FormatXmlDate(prm.CompletedFrom));
+ if (DateUtil.IsValid(prm.CompletedTo)) filter.Add("CompletedTo", DateUtil.FormatXmlDate(prm.CompletedTo));
+
+ // Berth.
+ if (!StringUtil.IsEmpty(prm.Berth)) filter.Add("Berth", prm.Berth);
+
+ // Bollard.
+ if (!StringUtil.IsEmpty(prm.Bollard)) filter.Add("Bollard", prm.Bollard);
+
+ // Vessel.
+ if (!StringUtil.IsEmpty(prm.VesselPartial)) filter.Add("VesselPartial", prm.VesselPartial);
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // Berthing sort columns.
+ public List GetBerthingSortColumns (SlmBerthing.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Berthing count.
+ public override long GetBerthingCount (SlmBerthing.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Berthing list.
+ public override List GetBerthingList (SlmBerthing.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetBerthingList_Mobile (SlmBerthing.Params prmBerthing, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetBerthingList_Mobile";
+
+ // Berthing columns.
+ List columns = new List()
+ {
+ SlmBerthing.Column.Id,
+ SlmBerthing.Column.VesselId,
+ SlmBerthing.Column.AgentId,
+ SlmBerthing.Column.CustomerId,
+ SlmBerthing.Column.Berth,
+ SlmBerthing.Column.Bollard,
+ SlmBerthing.Column.Expected,
+ SlmBerthing.Column.CompletionEst,
+ SlmBerthing.Column.Arrived,
+ SlmBerthing.Column.Completed,
+ SlmBerthing.Column.Departed,
+ SlmBerthing.Column.Cargo,
+ SlmBerthing.Column.Holds,
+ SlmBerthing.Column.TotalDischarge,
+ SlmBerthing.Column.HoursWorked,
+ SlmBerthing.Column.StatsData,
+ SlmBerthing.Column.RateConveyor,
+ SlmBerthing.Column.RateLorry,
+ SlmBerthing.Column.RateQuayside,
+ SlmBerthing.Column.RateOvertime,
+ SlmBerthing.Column.SpecialInstr,
+ SlmBerthing.Column.Notes,
+ SlmBerthing.Column.Flags,
+ SlmBerthing.Column.Status
+ };
+
+ List itemDataList = await ExecuteBerthingQuery_Mobile(columns, prmBerthing, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmBerthing.Column.Id);
+ ushort flags = (ushort)itemData.GetIntValue(SlmBerthing.Column.Id);
+ // Create item.
+ SlmBerthing_Mobile berthing = new SlmBerthing_Mobile(Site, id, flags);
+ // Populate item properties.
+ foreach (SlmBerthing.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ case SlmBerthing.Column.VesselId: berthing.VesselId = itemData.GetIdValue(column); break;
+ case SlmBerthing.Column.AgentId: berthing.AgentId = itemData.GetIdValue(column); break;
+ case SlmBerthing.Column.CustomerId: berthing.CustomerId= itemData.GetIdValue(column); break;
+ case SlmBerthing.Column.Berth: berthing.Berth = value; break;
+ case SlmBerthing.Column.Bollard: berthing.Bollard = value; break;
+ case SlmBerthing.Column.Expected: berthing.Expected = itemData.GetDateTimeValue(column); break;
+ case SlmBerthing.Column.CompletionEst: berthing.CompletionEst = itemData.GetDateTimeValue(column); break;
+ case SlmBerthing.Column.Arrived: berthing.Arrived = itemData.GetDateTimeValue(column); break;
+ case SlmBerthing.Column.Completed: berthing.Completed = itemData.GetDateTimeValue(column); break;
+ case SlmBerthing.Column.Departed: berthing.Departed = itemData.GetDateTimeValue(column); break;
+ case SlmBerthing.Column.Cargo: berthing.Cargo = value; break;
+ case SlmBerthing.Column.Holds: berthing.Holds = decimal.ToByte(itemData.GetDecimalValue(column)); break;
+ case SlmBerthing.Column.TotalDischarge: berthing.TotalDischarge = itemData.GetDecimalValue(column); break;
+ case SlmBerthing.Column.HoursWorked: berthing.HoursWorked = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmBerthing.Column.StatsData: berthing.StatsData = value; break;
+ case SlmBerthing.Column.RateConveyor: berthing.RateConveyor = itemData.GetDecimalValue(column); break;
+ case SlmBerthing.Column.RateLorry: berthing.RateLorry = itemData.GetDecimalValue(column); break;
+ case SlmBerthing.Column.RateQuayside: berthing.RateQuayside = itemData.GetDecimalValue(column); break;
+ case SlmBerthing.Column.RateOvertime: berthing.RateOvertime = itemData.GetDecimalValue(column); break;
+ case SlmBerthing.Column.SpecialInstr: berthing.SpecialInstr = value; break;
+ case SlmBerthing.Column.Notes: berthing.Notes = value; break;
+ case SlmBerthing.Column.Status: berthing.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(berthing);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // Berthing query execution.
+ public override DbResultSet ExecuteBerthingQuery (List columns, SlmBerthing.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteBerthingQuery_Mobile (List berthingColumns, SlmBerthing.Params prmBerthing, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmBerthing.Column column in berthingColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetBerthingRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetBerthingQueryFilter_Mobile(prmBerthing), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetBerthingRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.Berthing;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetBerthingDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmBerthing.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // Berthing Category.
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmBerthing.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmBerthing.Column.Status_Desc:
+ case SlmBerthing.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmBerthing.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmBerthing.Column.Status_Ind)
+ value = new DataValue(SlmBerthing.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-CruiseBerthings.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-CruiseBerthings.cs
new file mode 100644
index 0000000..98a2227
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-CruiseBerthings.cs
@@ -0,0 +1,453 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmBerthingMgr_Mobile
+ {
+ //*******************************************************************
+ // C r u i s e B e r t h i n g s
+ //*******************************************************************
+ // CruiseBerthing exists.
+ public override bool CruiseBerthingExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create CruiseBerthing.
+ public override SlmCruiseBerthing CreateCruiseBerthing ()
+ {
+ ClearErrorState();
+ return new SlmCruiseBerthing_Mobile(Site, null, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get CruiseBerthing.
+ public override SlmCruiseBerthing GetCruiseBerthing (SlmCruiseBerthing.Params prmCruiseBerthing)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmCruiseBerthing GetCruiseBerthingById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate CruiseBerthing.
+ public override bool IsValidCruiseBerthingData (SlmCruiseBerthing.Data data, SlmCruiseBerthing.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidCruiseBerthingData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert CruiseBerthing.
+ public override bool InsertCruiseBerthing (SlmCruiseBerthing cruiseBerthing, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidCruiseBerthing(cruiseBerthing)) return false;
+ if (SysId.IsValid(cruiseBerthing.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update CruiseBerthing.
+ public override bool UpdateCruiseBerthing (SlmCruiseBerthing cruiseBerthing, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidCruiseBerthing(cruiseBerthing)) return false;
+ if (!SysId.IsValid(cruiseBerthing.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete CruiseBerthing.
+ public override bool CruiseBerthingCanBeDeleted (SlmCruiseBerthing cruiseBerthing)
+ {
+ ClearErrorState();
+ if (!base.CruiseBerthingCanBeDeleted(cruiseBerthing)) return false;
+ return true;
+ }
+ public override bool DeleteCruiseBerthing (SlmCruiseBerthing cruiseBerthing, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!CruiseBerthingCanBeDeleted(cruiseBerthing)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement cruiseBerthingElement, SlmCruiseBerthing cruiseBerthing, DbUpdateInfo dbUpdateInfo)
+ {
+ cruiseBerthingElement.AppendElement("Id", SysId.ToString(cruiseBerthing.Id));
+ cruiseBerthingElement.AppendElement("VesselId", SysId.ToString(cruiseBerthing.VesselId));
+ cruiseBerthingElement.AppendElement("AgentContact", cruiseBerthing.AgentContact);
+ cruiseBerthingElement.AppendElement("PortContact", cruiseBerthing.PortContact);
+ cruiseBerthingElement.AppendElement("CruiseLineContact", cruiseBerthing.CruiseLineContact);
+ cruiseBerthingElement.AppendElement("TerminalCode", cruiseBerthing.TerminalCode);
+ cruiseBerthingElement.AppendElement("Bollard", cruiseBerthing.Bollard);
+ cruiseBerthingElement.AppendElement("SideToQuayCode", cruiseBerthing.SideToQuayCode);
+ cruiseBerthingElement.AppendElement("Expected", DateUtil.FormatXmlDateTime(cruiseBerthing.Expected));
+ cruiseBerthingElement.AppendElement("Arrived", DateUtil.FormatXmlDateTime(cruiseBerthing.Arrived));
+ cruiseBerthingElement.AppendElement("Started", DateUtil.FormatXmlDateTime(cruiseBerthing.Started));
+ cruiseBerthingElement.AppendElement("Completed", DateUtil.FormatXmlDateTime(cruiseBerthing.Completed));
+ cruiseBerthingElement.AppendElement("Departed", DateUtil.FormatXmlDateTime(cruiseBerthing.Departed));
+ cruiseBerthingElement.AppendElement("SpecialInstr", cruiseBerthing.SpecialInstr);
+ cruiseBerthingElement.AppendElement("DelayMins", cruiseBerthing.DelayMins.ToString("N3"));
+ cruiseBerthingElement.AppendElement("BaggageFirstBagOff", DateUtil.FormatXmlDateTime(cruiseBerthing.BaggageFirstBagOff));
+ cruiseBerthingElement.AppendElement("BaggageLastBagOff", DateUtil.FormatXmlDateTime(cruiseBerthing.BaggageLastBagOff));
+ cruiseBerthingElement.AppendElement("BaggageCageCountOff", cruiseBerthing.BaggageCageCountOff.ToString("N3"));
+ cruiseBerthingElement.AppendElement("BaggageLaidOutBy", DateUtil.FormatXmlDateTime(cruiseBerthing.BaggageLaidOutBy));
+ cruiseBerthingElement.AppendElement("BaggagePaxOff", DateUtil.FormatXmlDateTime(cruiseBerthing.BaggagePaxOff));
+ cruiseBerthingElement.AppendElement("BaggageFirstBagOn", DateUtil.FormatXmlDateTime(cruiseBerthing.BaggageFirstBagOn));
+ cruiseBerthingElement.AppendElement("BaggageLastBagOn", DateUtil.FormatXmlDateTime(cruiseBerthing.BaggageLastBagOn));
+ cruiseBerthingElement.AppendElement("BaggageCageCountOn", cruiseBerthing.BaggageCageCountOn.ToString("N3"));
+ cruiseBerthingElement.AppendElement("BaggageComment", cruiseBerthing.BaggageComment);
+ cruiseBerthingElement.AppendElement("StoreCargoNets", cruiseBerthing.StoreCargoNets.ToString());
+ cruiseBerthingElement.AppendElement("StoreDeclarationComplete", cruiseBerthing.StoreDeclarationComplete.ToString());
+ cruiseBerthingElement.AppendElement("StoresOnStartAt", DateUtil.FormatXmlDateTime(cruiseBerthing.StoresOnStartAt));
+ cruiseBerthingElement.AppendElement("StoresOnFinishAt", DateUtil.FormatXmlDateTime(cruiseBerthing.StoresOnFinishAt));
+ cruiseBerthingElement.AppendElement("StoresComment", cruiseBerthing.StoresComment);
+ cruiseBerthingElement.AppendElement("BuildingsEquipmentComment", cruiseBerthing.BuildingsEquipmentComment);
+ cruiseBerthingElement.AppendElement("HealthSafetyComment", cruiseBerthing.HealthSafetyComment);
+ cruiseBerthingElement.AppendElement("SecurityComment", cruiseBerthing.SecurityComment);
+ cruiseBerthingElement.AppendElement("OtherComment", cruiseBerthing.OtherComment);
+ cruiseBerthingElement.AppendElement("SupervisorName", cruiseBerthing.SupervisorName);
+ cruiseBerthingElement.AppendElement("SupervisorPosition", cruiseBerthing.SupervisorPosition);
+ cruiseBerthingElement.AppendElement("Notes", cruiseBerthing.Notes);
+ cruiseBerthingElement.AppendElement("Status", SacsSystem.GetStatusCode(cruiseBerthing.Status));
+ cruiseBerthingElement.AppendElement("Flags", cruiseBerthing.Flags.ToString());
+ if (!SysId.IsValid(cruiseBerthing.Id))
+ {
+ cruiseBerthingElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ cruiseBerthingElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ cruiseBerthingElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ cruiseBerthingElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ cruiseBerthingElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ cruiseBerthingElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement cruiseBerthingElement, SlmCruiseBerthing cruiseBerthing)
+ {
+ //cruiseBerthing.Id = new SysId(StringUtil.ToInt(cruiseBerthingElement.GetChildText("Id")));
+ cruiseBerthing.VesselId= new SysId(StringUtil.ToInt(cruiseBerthingElement.GetChildText("VesselId")));
+ cruiseBerthing.AgentContact = cruiseBerthingElement.GetChildText("AgentContact");
+ cruiseBerthing.PortContact = cruiseBerthingElement.GetChildText("PortContact");
+ cruiseBerthing.CruiseLineContact = cruiseBerthingElement.GetChildText("CruiseLineContact");
+ cruiseBerthing.TerminalCode = cruiseBerthingElement.GetChildText("TerminalCode");
+ cruiseBerthing.Bollard = cruiseBerthingElement.GetChildText("Bollard");
+ cruiseBerthing.SideToQuayCode = cruiseBerthingElement.GetChildText("SideToQuayCode");
+ cruiseBerthing.Expected = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("Expected"));
+ cruiseBerthing.Arrived = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("Arrvied"));
+ cruiseBerthing.Started = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("Started"));
+ cruiseBerthing.Completed = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("Completed"));
+ cruiseBerthing.Departed = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("Departed"));
+ cruiseBerthing.SpecialInstr = cruiseBerthingElement.GetChildText("SpecialInstr");
+ cruiseBerthing.DelayMins = StringUtil.ToInt(cruiseBerthingElement.GetChildText("DelayMins"));
+ cruiseBerthing.BaggageFirstBagOff= DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("BaggageFirstBagOff"));
+ cruiseBerthing.BaggageLastBagOff = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("BaggageLastBagOff"));
+ cruiseBerthing.BaggageCageCountOff= StringUtil.ToShort(cruiseBerthingElement.GetChildText("BaggageCageCountOff"));
+ cruiseBerthing.BaggageLaidOutBy= DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("BaggageLaidOutBy"));
+ cruiseBerthing.BaggagePaxOff = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("BaggagePaxOff"));
+ cruiseBerthing.BaggageFirstBagOn = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("BaggageFirstBagOn "));
+ cruiseBerthing.BaggageLastBagOn = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("BaggageLastBagOn"));
+ cruiseBerthing.BaggageCageCountOn = StringUtil.ToShort(cruiseBerthingElement.GetChildText("BaggageCageCountOn"));
+ cruiseBerthing.BaggageComment = cruiseBerthingElement.GetChildText("BaggageComment");
+ cruiseBerthing.StoreCargoNets = StringUtil.ToBool(cruiseBerthingElement.GetChildText("StoreCargoNets"));
+ cruiseBerthing.StoreDeclarationComplete = StringUtil.ToBool(cruiseBerthingElement.GetChildText("StoreDeclarationComplete"));
+ cruiseBerthing.StoresOnStartAt = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("StoresOnStartAt"));
+ cruiseBerthing.StoresOnFinishAt = DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("StoresOnFinishAt"));
+ cruiseBerthing.StoresOnPalletCount = StringUtil.ToShort(cruiseBerthingElement.GetChildText("StoresOnPalletCount"));
+ cruiseBerthing.StoresComment = cruiseBerthingElement.GetChildText("StoresComment");
+ cruiseBerthing.BuildingsEquipmentComment = cruiseBerthingElement.GetChildText("BuildingsEquipmentComment");
+ cruiseBerthing.HealthSafetyComment = cruiseBerthingElement.GetChildText("HealthSafetyComment");
+ cruiseBerthing.SecurityComment = cruiseBerthingElement.GetChildText("SecurityComment");
+ cruiseBerthing.OtherComment = cruiseBerthingElement.GetChildText("OtherComment");
+ cruiseBerthing.SupervisorName = cruiseBerthingElement.GetChildText("SupervisorName");
+ cruiseBerthing.SupervisorPosition = cruiseBerthingElement.GetChildText("SupervisorPosition");
+ cruiseBerthing.Notes = cruiseBerthingElement.GetChildText("Notes");
+ cruiseBerthing.Status = SacsSystem.GetStatusForCode(cruiseBerthingElement.GetChildText("Status"));
+ cruiseBerthing.SetCreateStamp(DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(cruiseBerthingElement.GetChildText("CreateBy"))), cruiseBerthingElement.GetChildText("CreateHost"));
+ cruiseBerthing.SetUpdateStamp(DateUtil.ParseXmlDateTime(cruiseBerthingElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(cruiseBerthingElement.GetChildText("UpdateBy"))), cruiseBerthingElement.GetChildText("UpdateHost"));
+ cruiseBerthing.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // CruiseBerthing column definitions.
+ public override ColumnDfn GetCruiseBerthingColumnDfn (SlmCruiseBerthing.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // CruiseBerthing query filter.
+ public override List GetCruiseBerthingQueryFilter (SlmCruiseBerthing.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetCruiseBerthingQueryFilter_Mobile (SlmCruiseBerthing.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // CruiseBerthing Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Vessel Id.
+ if (SysId.IsValid(prm.VesselId)) filter.Add("VesselId", SysId.ToString(prm.VesselId));
+
+ // Arrived.
+ if (DateUtil.IsValid(prm.ArrivedFrom)) filter.Add("ArrivedFrom", DateUtil.FormatXmlDate(prm.ArrivedFrom));
+ if (DateUtil.IsValid(prm.ArrivedTo)) filter.Add("ArrivedTo", DateUtil.FormatXmlDate(prm.ArrivedTo));
+
+ // Terminal Code.
+ if (!StringUtil.IsEmpty(prm.TerminalCode)) filter.Add("TerminalCode", prm.TerminalCode);
+
+ // Arrived.
+ if (prm.Arrived != false) filter.Add("Arrived", prm.Arrived.ToString());
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // CruiseBerthing sort columns.
+ public List GetCruiseBerthingSortColumns (SlmCruiseBerthing.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // CruiseBerthing count.
+ public override long GetCruiseBerthingCount (SlmCruiseBerthing.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // CruiseBerthing list.
+ public override List GetCruiseBerthingList (SlmCruiseBerthing.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetCruiseBerthingList_Mobile (SlmCruiseBerthing.Params prmCruiseBerthing, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetCruiseBerthingList_Mobile";
+
+ // CruiseBerthing columns.
+ List columns = new List()
+ {
+ SlmCruiseBerthing.Column.Id,
+ SlmCruiseBerthing.Column.VesselId,
+ SlmCruiseBerthing.Column.AgentContact,
+ SlmCruiseBerthing.Column.PortContact,
+ SlmCruiseBerthing.Column.CruiseLineContact,
+ SlmCruiseBerthing.Column.TerminalCode,
+ SlmCruiseBerthing.Column.Bollard,
+ SlmCruiseBerthing.Column.SideToQuayCode,
+ SlmCruiseBerthing.Column.Expected,
+ SlmCruiseBerthing.Column.Arrived,
+ SlmCruiseBerthing.Column.Started,
+ SlmCruiseBerthing.Column.Completed,
+ SlmCruiseBerthing.Column.Departed,
+ SlmCruiseBerthing.Column.SpecialInstr,
+ SlmCruiseBerthing.Column.DelayMins,
+ SlmCruiseBerthing.Column.BaggageFirstBagOff,
+ SlmCruiseBerthing.Column.BaggageLastBagOff,
+ SlmCruiseBerthing.Column.BaggageCageCountOff,
+ SlmCruiseBerthing.Column.BaggageLaidOutBy,
+ SlmCruiseBerthing.Column.BaggagePaxOff,
+ SlmCruiseBerthing.Column.BaggageFirstBagOn,
+ SlmCruiseBerthing.Column.BaggageLastBagOn,
+ SlmCruiseBerthing.Column.BaggageCageCountOn,
+ SlmCruiseBerthing.Column.BaggageComment,
+ SlmCruiseBerthing.Column.StoresCargoNets,
+ SlmCruiseBerthing.Column.StoresDeclarationComplete,
+ SlmCruiseBerthing.Column.StoresOnStartAt,
+ SlmCruiseBerthing.Column.StoresOnFinishAt,
+ SlmCruiseBerthing.Column.StoresOnPalletCount,
+ SlmCruiseBerthing.Column.StoresComment,
+ SlmCruiseBerthing.Column.BuildingsEquipmentComment,
+ SlmCruiseBerthing.Column.HealthSafetyComment,
+ SlmCruiseBerthing.Column.SecurityComment,
+ SlmCruiseBerthing.Column.OtherComment,
+ SlmCruiseBerthing.Column.SupervisorName,
+ SlmCruiseBerthing.Column.SupervisorPosition,
+ SlmCruiseBerthing.Column.Notes,
+ SlmCruiseBerthing.Column.Flags,
+ SlmCruiseBerthing.Column.Status
+ };
+
+ List itemDataList = await ExecuteCruiseBerthingQuery_Mobile(columns, prmCruiseBerthing, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmCruiseBerthing.Column.Id);
+ ushort flags = (ushort)itemData.GetIntValue(SlmCruiseBerthing.Column.Id);
+ // Create item.
+ SlmCruiseBerthing_Mobile cruiseBerthing = new SlmCruiseBerthing_Mobile(Site, id, flags);
+ // Populate item properties.
+ foreach (SlmCruiseBerthing.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmCruiseBerthing.Column.CruiseBerthingCategory: cruiseBerthing.CruiseBerthingCategory; break;
+ case SlmCruiseBerthing.Column.VesselId: cruiseBerthing.VesselId = itemData.GetIdValue(column); break;
+ case SlmCruiseBerthing.Column.AgentContact: cruiseBerthing.AgentContact = value; break;
+ case SlmCruiseBerthing.Column.PortContact: cruiseBerthing.PortContact = value; break;
+ case SlmCruiseBerthing.Column.CruiseLineContact: cruiseBerthing.CruiseLineContact = value; break;
+ case SlmCruiseBerthing.Column.TerminalCode: cruiseBerthing.TerminalCode= value; break;
+ case SlmCruiseBerthing.Column.Bollard: cruiseBerthing.Bollard = value; break;
+ case SlmCruiseBerthing.Column.SideToQuayCode: cruiseBerthing.SideToQuayCode = value; break;
+ case SlmCruiseBerthing.Column.Expected: cruiseBerthing.Expected = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.Arrived: cruiseBerthing.Arrived = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.Started: cruiseBerthing.Started= itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.Completed: cruiseBerthing.Completed = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.Departed: cruiseBerthing.Departed = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.SpecialInstr: cruiseBerthing.SpecialInstr = value; break;
+ case SlmCruiseBerthing.Column.DelayMins: cruiseBerthing.DelayMins = itemData.GetIntValue(column); break;
+ case SlmCruiseBerthing.Column.BaggageFirstBagOff: cruiseBerthing.BaggageFirstBagOff= itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.BaggageLastBagOff: cruiseBerthing.BaggageLastBagOff = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.BaggageCageCountOff: cruiseBerthing.BaggageCageCountOff = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmCruiseBerthing.Column.BaggageLaidOutBy: cruiseBerthing.BaggageLaidOutBy = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.BaggagePaxOff: cruiseBerthing.BaggagePaxOff = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.BaggageFirstBagOn: cruiseBerthing.BaggageFirstBagOn = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.BaggageLastBagOn: cruiseBerthing.BaggageLastBagOn = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.BaggageCageCountOn: cruiseBerthing.BaggageCageCountOn = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmCruiseBerthing.Column.BaggageComment: cruiseBerthing.BaggageComment = value; break;
+ case SlmCruiseBerthing.Column.StoresCargoNets: cruiseBerthing.StoreCargoNets = StringUtil.ToBool(value); break;
+ case SlmCruiseBerthing.Column.StoresDeclarationComplete: cruiseBerthing.StoreDeclarationComplete = StringUtil.ToBool(value); break;
+ case SlmCruiseBerthing.Column.StoresOnStartAt: cruiseBerthing.StoresOnStartAt = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.StoresOnFinishAt: cruiseBerthing.StoresOnFinishAt = itemData.GetDateTimeValue(column); break;
+ case SlmCruiseBerthing.Column.StoresOnPalletCount: cruiseBerthing.StoresOnPalletCount = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmCruiseBerthing.Column.StoresComment: cruiseBerthing.StoresComment= value; break;
+ case SlmCruiseBerthing.Column.BuildingsEquipmentComment: cruiseBerthing.BuildingsEquipmentComment= value; break;
+ case SlmCruiseBerthing.Column.HealthSafetyComment: cruiseBerthing.HealthSafetyComment= value; break;
+ case SlmCruiseBerthing.Column.SecurityComment: cruiseBerthing.SecurityComment = value; break;
+ case SlmCruiseBerthing.Column.OtherComment: cruiseBerthing.OtherComment = value; break;
+ case SlmCruiseBerthing.Column.SupervisorName: cruiseBerthing.SupervisorName = value; break;
+ case SlmCruiseBerthing.Column.SupervisorPosition: cruiseBerthing.SupervisorPosition = value; break;
+ case SlmCruiseBerthing.Column.Notes: cruiseBerthing.Notes = value; break;
+ case SlmCruiseBerthing.Column.Status: cruiseBerthing.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(cruiseBerthing);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // CruiseBerthing query execution.
+ public override DbResultSet ExecuteCruiseBerthingQuery (List columns, SlmCruiseBerthing.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteCruiseBerthingQuery_Mobile (List cruiseBerthingColumns, SlmCruiseBerthing.Params prmCruiseBerthing, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmCruiseBerthing.Column column in cruiseBerthingColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetCruiseBerthingRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetCruiseBerthingQueryFilter_Mobile(prmCruiseBerthing), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetCruiseBerthingRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.CruiseBerthing;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetCruiseBerthingDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmCruiseBerthing.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // CruiseBerthing Category.
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmCruiseBerthing.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmCruiseBerthing.Column.Status_Desc:
+ case SlmCruiseBerthing.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmCruiseBerthing.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmCruiseBerthing.Column.Status_Ind)
+ value = new DataValue(SlmCruiseBerthing.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-DischargeHolds.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-DischargeHolds.cs
new file mode 100644
index 0000000..ba09891
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-DischargeHolds.cs
@@ -0,0 +1,338 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmBerthingMgr_Mobile
+ {
+ //*******************************************************************
+ // D i s c h a r g e H o l d s
+ //*******************************************************************
+ // DischargeHold exists.
+ public override bool DischargeHoldExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create DischargeHold.
+ public override SlmDischargeHold CreateDischargeHold (SysId berthingId)
+ {
+ ClearErrorState();
+ return new SlmDischargeHold_Mobile(Site, null, berthingId, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get DischargeHold.
+ public override SlmDischargeHold GetDischargeHold (SlmDischargeHold.Params prmDischargeHold)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmDischargeHold GetDischargeHoldById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate DischargeHold.
+ public override bool IsValidDischargeHoldData (SlmDischargeHold.Data data, SlmDischargeHold.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidDischargeHoldData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert DischargeHold.
+ public override bool InsertDischargeHold (SlmDischargeHold dischargeHold, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidDischargeHold(dischargeHold)) return false;
+ if (SysId.IsValid(dischargeHold.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update DischargeHold.
+ public override bool UpdateDischargeHold (SlmDischargeHold dischargeHold, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidDischargeHold(dischargeHold)) return false;
+ if (!SysId.IsValid(dischargeHold.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete DischargeHold.
+ public override bool DischargeHoldCanBeDeleted (SlmDischargeHold dischargeHold)
+ {
+ ClearErrorState();
+ if (!base.DischargeHoldCanBeDeleted(dischargeHold)) return false;
+ return true;
+ }
+ public override bool DeleteDischargeHold (SlmDischargeHold dischargeHold, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!DischargeHoldCanBeDeleted(dischargeHold)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement dischargeHoldElement, SlmDischargeHold dischargeHold, DbUpdateInfo dbUpdateInfo)
+ {
+ dischargeHoldElement.AppendElement("Id", SysId.ToString(dischargeHold.Id));
+ dischargeHoldElement.AppendElement("BerthingId", SysId.ToString(dischargeHold.BerthingId));
+ dischargeHoldElement.AppendElement("HoldNo", dischargeHold.HoldNo);
+ dischargeHoldElement.AppendElement("Capacity", dischargeHold.Capacity.ToString("N3"));
+ dischargeHoldElement.AppendElement("CommodityId", SysId.ToString(dischargeHold.CommodityId));
+ dischargeHoldElement.AppendElement("NumberCranes", dischargeHold.NumberCranes.ToString("N3"));
+ dischargeHoldElement.AppendElement("Method", dischargeHold.Method);
+ dischargeHoldElement.AppendElement("Unit", dischargeHold.Unit);
+ dischargeHoldElement.AppendElement("Notes", dischargeHold.Notes);
+ dischargeHoldElement.AppendElement("Status", SacsSystem.GetStatusCode(dischargeHold.Status));
+ dischargeHoldElement.AppendElement("Flags", dischargeHold.Flags.ToString());
+ if (!SysId.IsValid(dischargeHold.Id))
+ {
+ dischargeHoldElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ dischargeHoldElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ dischargeHoldElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ dischargeHoldElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ dischargeHoldElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ dischargeHoldElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement dischargeHoldElement, SlmDischargeHold dischargeHold)
+ {
+ //dischargeHold.Id = new SysId(StringUtil.ToInt(dischargeHoldElement.GetChildText("Id")));
+ //dischargeHold.BerthingId = new SysId(StringUtil.ToInt(dischargeHoldElement.GetChildText("BerthingId")));
+ dischargeHold.HoldNo= dischargeHoldElement.GetChildText("HoldNo");
+ dischargeHold.Capacity = StringUtil.ToDecimal(dischargeHoldElement.GetChildText("Capacity"));
+ dischargeHold.CommodityId = new SysId(StringUtil.ToInt(dischargeHoldElement.GetChildText("CommodityId")));
+ dischargeHold.NumberCranes = StringUtil.ToShort(dischargeHoldElement.GetChildText("NumberCranes"));
+ dischargeHold.Method = dischargeHoldElement.GetChildText("Method");
+ dischargeHold.Unit = dischargeHoldElement.GetChildText("Unit");
+ dischargeHold.Notes = dischargeHoldElement.GetChildText("Notes");
+ dischargeHold.Status = SacsSystem.GetStatusForCode(dischargeHoldElement.GetChildText("Status"));
+ dischargeHold.SetCreateStamp(DateUtil.ParseXmlDateTime(dischargeHoldElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(dischargeHoldElement.GetChildText("CreateBy"))), dischargeHoldElement.GetChildText("CreateHost"));
+ dischargeHold.SetUpdateStamp(DateUtil.ParseXmlDateTime(dischargeHoldElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(dischargeHoldElement.GetChildText("UpdateBy"))), dischargeHoldElement.GetChildText("UpdateHost"));
+ dischargeHold.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // DischargeHold column definitions.
+ public override ColumnDfn GetDischargeHoldColumnDfn (SlmDischargeHold.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // DischargeHold query filter.
+ public override List GetDischargeHoldQueryFilter (SlmDischargeHold.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetDischargeHoldQueryFilter_Mobile (SlmDischargeHold.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // DischargeHold Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Berthing Id.
+ if (SysId.IsValid(prm.BerthingId)) filter.Add("BerthingId", SysId.ToString(prm.BerthingId));
+
+ // Commodity Id.
+ if (SysId.IsValid(prm.CommodityId)) filter.Add("CommodityId", SysId.ToString(prm.CommodityId));
+
+ // Hold No.
+ if (!StringUtil.IsEmpty(prm.HoldNo)) filter.Add("HoldNo", prm.HoldNo);
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // DischargeHold sort columns.
+ public List GetDischargeHoldSortColumns (SlmDischargeHold.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // DischargeHold count.
+ public override long GetDischargeHoldCount (SlmDischargeHold.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // DischargeHold list.
+ public override List GetDischargeHoldList (SlmDischargeHold.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetDischargeHoldList_Mobile (SlmDischargeHold.Params prmDischargeHold, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetDischargeHoldList_Mobile";
+
+ // DischargeHold columns.
+ List columns = new List()
+ {
+ SlmDischargeHold.Column.Id,
+ SlmDischargeHold.Column.BerthingId,
+ SlmDischargeHold.Column.HoldNo,
+ SlmDischargeHold.Column.Capacity,
+ SlmDischargeHold.Column.CommodityId,
+ SlmDischargeHold.Column.NumberCranes,
+ SlmDischargeHold.Column.Method,
+ SlmDischargeHold.Column.Unit,
+ SlmDischargeHold.Column.Notes,
+ SlmDischargeHold.Column.Flags,
+ SlmDischargeHold.Column.Status
+ };
+
+ List itemDataList = await ExecuteDischargeHoldQuery_Mobile(columns, prmDischargeHold, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmDischargeHold.Column.Id);
+ SysId berthingId = itemData.GetIdValue(SlmDischargeHold.Column.BerthingId);
+ ushort flags = (ushort)itemData.GetIntValue(SlmDischargeHold.Column.Id);
+ // Create item.
+ SlmDischargeHold_Mobile dischargeHold = new SlmDischargeHold_Mobile(Site, id, berthingId, flags);
+ // Populate item properties.
+ foreach (SlmDischargeHold.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmDischargeHold.Column.BerthingId: dischargeHold.BerthingId = itemData.GetIdValue(column); break;
+ case SlmDischargeHold.Column.HoldNo: dischargeHold.HoldNo = value; break;
+ case SlmDischargeHold.Column.Capacity: dischargeHold.Capacity = itemData.GetDecimalValue(column); break;
+ case SlmDischargeHold.Column.CommodityId: dischargeHold.CommodityId = itemData.GetIdValue(column); break;
+ case SlmDischargeHold.Column.NumberCranes: dischargeHold.NumberCranes = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmDischargeHold.Column.Method: dischargeHold.Method = value; break;
+ case SlmDischargeHold.Column.Unit: dischargeHold.Unit = value; break;
+ case SlmDischargeHold.Column.Notes: dischargeHold.Notes = value; break;
+ case SlmDischargeHold.Column.Status: dischargeHold.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(dischargeHold);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // DischargeHold query execution.
+ public override DbResultSet ExecuteDischargeHoldQuery (List columns, SlmDischargeHold.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteDischargeHoldQuery_Mobile (List dischargeHoldColumns, SlmDischargeHold.Params prmDischargeHold, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmDischargeHold.Column column in dischargeHoldColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetDischargeHoldRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetDischargeHoldQueryFilter_Mobile(prmDischargeHold), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetDischargeHoldRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.DischargeHold;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetDischargeHoldDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmDischargeHold.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // DischargeHold Category.
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmDischargeHold.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmDischargeHold.Column.Status_Desc:
+ case SlmDischargeHold.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmDischargeHold.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmDischargeHold.Column.Status_Ind)
+ value = new DataValue(SlmDischargeHold.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-Discharges.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-Discharges.cs
new file mode 100644
index 0000000..8652e18
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-Discharges.cs
@@ -0,0 +1,358 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmBerthingMgr_Mobile
+ {
+ //*******************************************************************
+ // D i s c h a r g e s
+ //*******************************************************************
+ // Discharge exists.
+ public override bool DischargeExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create Discharge.
+ public override SlmDischarge CreateDischarge (SysId berthingId)
+ {
+ ClearErrorState();
+ return new SlmDischarge_Mobile(Site, null, berthingId, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get Discharge.
+ public override SlmDischarge GetDischarge (SlmDischarge.Params prmDischarge)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmDischarge GetDischargeById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate Discharge.
+ public override bool IsValidDischargeData (SlmDischarge.Data data, SlmDischarge.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidDischargeData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert Discharge.
+ public override bool InsertDischarge (SlmDischarge discharge, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidDischarge(discharge)) return false;
+ if (SysId.IsValid(discharge.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update Discharge.
+ public override bool UpdateDischarge (SlmDischarge discharge, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidDischarge(discharge)) return false;
+ if (!SysId.IsValid(discharge.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete Discharge.
+ public override bool DischargeCanBeDeleted (SlmDischarge discharge)
+ {
+ ClearErrorState();
+ if (!base.DischargeCanBeDeleted(discharge)) return false;
+ return true;
+ }
+ public override bool DeleteDischarge (SlmDischarge discharge, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!DischargeCanBeDeleted(discharge)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement dischargeElement, SlmDischarge discharge, DbUpdateInfo dbUpdateInfo)
+ {
+ dischargeElement.AppendElement("Id", SysId.ToString(discharge.Id));
+ dischargeElement.AppendElement("BerthingId", SysId.ToString(discharge.BerthingId));
+ dischargeElement.AppendElement("Discharged", DateUtil.FormatXmlDateTime(discharge.Discharged));
+ dischargeElement.AppendElement("Completed", DateUtil.FormatXmlDateTime(discharge.Completed));
+ dischargeElement.AppendElement("CommodityId", SysId.ToString(discharge.CommodityId));
+ dischargeElement.AppendElement("LocationId", SysId.ToString(discharge.LocationId));
+ dischargeElement.AppendElement("Quantity", discharge.Quantity.ToString("N3"));
+ dischargeElement.AppendElement("NumberCranes", discharge.NumberCranes.ToString("N3"));
+ dischargeElement.AppendElement("Method", discharge.Method);
+ dischargeElement.AppendElement("Unit", discharge.Unit);
+ dischargeElement.AppendElement("Notes", discharge.Notes);
+ dischargeElement.AppendElement("Status", SacsSystem.GetStatusCode(discharge.Status));
+ dischargeElement.AppendElement("Flags", discharge.Flags.ToString());
+ if (!SysId.IsValid(discharge.Id))
+ {
+ dischargeElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ dischargeElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ dischargeElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ dischargeElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ dischargeElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ dischargeElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement dischargeElement, SlmDischarge discharge)
+ {
+ //discharge.Id = new SysId(StringUtil.ToInt(dischargeElement.GetChildText("Id")));
+ //discharge.BerthingId = new SysId(StringUtil.ToInt(dischargeElement.GetChildText("BerthingId")));
+ discharge.Discharged = DateUtil.ParseXmlDateTime(dischargeElement.GetChildText("Discharged"));
+ discharge.Completed= DateUtil.ParseXmlDateTime(dischargeElement.GetChildText("Completed"));
+ discharge.CommodityId = new SysId(StringUtil.ToInt(dischargeElement.GetChildText("CommodityId")));
+ discharge.LocationId = new SysId(StringUtil.ToInt(dischargeElement.GetChildText("LocationId")));
+ discharge.Quantity = StringUtil.ToDecimal(dischargeElement.GetChildText("Quantity"));
+ discharge.NumberCranes = StringUtil.ToShort(dischargeElement.GetChildText("NumberCranes"));
+ discharge.Method = dischargeElement.GetChildText("Method");
+ discharge.Unit = dischargeElement.GetChildText("Unit");
+ discharge.Notes = dischargeElement.GetChildText("Notes");
+ discharge.Status = SacsSystem.GetStatusForCode(dischargeElement.GetChildText("Status"));
+ discharge.SetCreateStamp(DateUtil.ParseXmlDateTime(dischargeElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(dischargeElement.GetChildText("CreateBy"))), dischargeElement.GetChildText("CreateHost"));
+ discharge.SetUpdateStamp(DateUtil.ParseXmlDateTime(dischargeElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(dischargeElement.GetChildText("UpdateBy"))), dischargeElement.GetChildText("UpdateHost"));
+ discharge.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // Discharge column definitions.
+ public override ColumnDfn GetDischargeColumnDfn (SlmDischarge.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // Discharge query filter.
+ public override List GetDischargeQueryFilter (SlmDischarge.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetDischargeQueryFilter_Mobile (SlmDischarge.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // Discharge Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Berthing Id.
+ if (SysId.IsValid(prm.BerthingId)) filter.Add("BerthingId", SysId.ToString(prm.BerthingId));
+
+ // Commodity Id.
+ if (SysId.IsValid(prm.CommodityId)) filter.Add("CommodityId", SysId.ToString(prm.CommodityId));
+
+ // Location Id.
+ if (SysId.IsValid(prm.LocationId)) filter.Add("LocationId", SysId.ToString(prm.LocationId));
+
+ // Discharged.
+ if (DateUtil.IsValid(prm.Discharged)) filter.Add("Discharged", DateUtil.FormatXmlDate(prm.Discharged));
+
+ // Completed.
+ if (DateUtil.IsValid(prm.Completed)) filter.Add("Completed", DateUtil.FormatXmlDate(prm.Completed));
+
+ // Quantity.
+ if (prm.Quantity > 0) filter.Add("Quantity", prm.Quantity.ToString());
+
+ // NumberCranes.
+ if (prm.NumberCranes > 0) filter.Add("NumberCranes", prm.NumberCranes.ToString());
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // Discharge sort columns.
+ public List GetDischargeSortColumns (SlmDischarge.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Discharge count.
+ public override long GetDischargeCount (SlmDischarge.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Discharge list.
+ public override List GetDischargeList (SlmDischarge.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetDischargeList_Mobile (SlmDischarge.Params prmDischarge, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetDischargeList_Mobile";
+
+ // Discharge columns.
+ List columns = new List()
+ {
+ SlmDischarge.Column.Id,
+ SlmDischarge.Column.BerthingId,
+ SlmDischarge.Column.Discharged,
+ SlmDischarge.Column.Completed,
+ SlmDischarge.Column.CommodityId,
+ SlmDischarge.Column.LocationId,
+ SlmDischarge.Column.Quantity,
+ SlmDischarge.Column.NumberCranes,
+ SlmDischarge.Column.Method,
+ SlmDischarge.Column.Unit,
+ SlmDischarge.Column.Notes,
+ SlmDischarge.Column.Flags,
+ SlmDischarge.Column.Status
+ };
+
+ List itemDataList = await ExecuteDischargeQuery_Mobile(columns, prmDischarge, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmDischarge.Column.Id);
+ SysId berthingId = itemData.GetIdValue(SlmDischarge.Column.BerthingId);
+ ushort flags = (ushort)itemData.GetIntValue(SlmDischarge.Column.Id);
+ // Create item.
+ SlmDischarge_Mobile discharge = new SlmDischarge_Mobile(Site, id, berthingId, flags);
+ // Populate item properties.
+ foreach (SlmDischarge.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmDischarge.Column.BerthingId: discharge.BerthingId = itemData.GetIdValue(column); break;
+ case SlmDischarge.Column.Discharged: discharge.Discharged = itemData.GetDateTimeValue(column); break;
+ case SlmDischarge.Column.Completed: discharge.Completed = itemData.GetDateTimeValue(column); break;
+ case SlmDischarge.Column.CommodityId: discharge.CommodityId = itemData.GetIdValue(column); break;
+ case SlmDischarge.Column.LocationId: discharge.LocationId = itemData.GetIdValue(column); break;
+ case SlmDischarge.Column.Quantity: discharge.Quantity = itemData.GetDecimalValue(column); break;
+ case SlmDischarge.Column.NumberCranes: discharge.NumberCranes = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmDischarge.Column.Method: discharge.Method = value; break;
+ case SlmDischarge.Column.Unit: discharge.Unit = value; break;
+ case SlmDischarge.Column.Notes: discharge.Notes = value; break;
+ case SlmDischarge.Column.Status: discharge.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(discharge);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // Discharge query execution.
+ public override DbResultSet ExecuteDischargeQuery (List columns, SlmDischarge.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteDischargeQuery_Mobile (List dischargeColumns, SlmDischarge.Params prmDischarge, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmDischarge.Column column in dischargeColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetDischargeRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetDischargeQueryFilter_Mobile(prmDischarge), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetDischargeRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.Discharge;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetDischargeDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmDischarge.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // Discharge Category.
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmDischarge.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmDischarge.Column.Status_Desc:
+ case SlmDischarge.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmDischarge.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmDischarge.Column.Status_Ind)
+ value = new DataValue(SlmDischarge.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-Vessels.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-Vessels.cs
new file mode 100644
index 0000000..75aeb99
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile-Vessels.cs
@@ -0,0 +1,363 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmBerthingMgr_Mobile
+ {
+ //*******************************************************************
+ // V e s s e l s
+ //*******************************************************************
+ // Vessel exists.
+ public override bool VesselExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create Vessel.
+ public override SlmVessel CreateVessel (Slm.VesselCategory vesselCategory)
+ {
+ ClearErrorState();
+ return new SlmVessel_Mobile(Site, null, vesselCategory, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get Vessel.
+ public override SlmVessel GetVessel (SlmVessel.Params prmVessel)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmVessel GetVesselById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate Vessel.
+ public override bool IsValidVesselData (SlmVessel.Data data, SlmVessel.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidVesselData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert Vessel.
+ public override bool InsertVessel (SlmVessel vessel, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidVessel(vessel)) return false;
+ if (SysId.IsValid(vessel.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update Vessel.
+ public override bool UpdateVessel (SlmVessel vessel, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidVessel(vessel)) return false;
+ if (!SysId.IsValid(vessel.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete Vessel.
+ public override bool VesselCanBeDeleted (SlmVessel vessel)
+ {
+ ClearErrorState();
+ if (!base.VesselCanBeDeleted(vessel)) return false;
+ return true;
+ }
+ public override bool DeleteVessel (SlmVessel vessel, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!VesselCanBeDeleted(vessel)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement vesselElement, SlmVessel vessel, DbUpdateInfo dbUpdateInfo)
+ {
+ vesselElement.AppendElement("Id", SysId.ToString(vessel.Id));
+ vesselElement.AppendElement("Category", vessel.VesselCategory.ToString());
+ vesselElement.AppendElement("Name", vessel.Name);
+ vesselElement.AppendElement("Type", vessel.VesselType);
+ vesselElement.AppendElement("Owner", vessel.Owner);
+ vesselElement.AppendElement("Abbreviation", vessel.Abbreviation);
+ vesselElement.AppendElement("Length", vessel.Length.ToString("N3"));
+ vesselElement.AppendElement("Breadth", vessel.Breadth.ToString("N3"));
+ vesselElement.AppendElement("Draught", vessel.Draught.ToString("N3"));
+ vesselElement.AppendElement("Depth", vessel.Depth.ToString("N3"));
+ vesselElement.AppendElement("Displacement", vessel.Displacement.ToString("N3"));
+ vesselElement.AppendElement("CompanyIdCruiseLine", SysId.ToString(vessel.CompanyIdCruiseLine));
+ vesselElement.AppendElement("Notes", vessel.Notes);
+ vesselElement.AppendElement("Status", SacsSystem.GetStatusCode(vessel.Status));
+ vesselElement.AppendElement("Flags", vessel.Flags.ToString());
+ if (!SysId.IsValid(vessel.Id))
+ {
+ vesselElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ vesselElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ vesselElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ vesselElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ vesselElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ vesselElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement vesselElement, SlmVessel vessel)
+ {
+ //vessel.Id = new SysId(StringUtil.ToInt(vesselElement.GetChildText("Id")));
+ //vessel.VesselCategory = EnumUtil.ParseEnum(vesselElement.GetChildText("Category"), Slm.VesselCategory.Unknown);
+ vessel.Name = vesselElement.GetChildText("Name");
+ vessel.VesselType = vesselElement.GetChildText("Type");
+ vessel.Owner = vesselElement.GetChildText("Owner");
+ vessel.Abbreviation = vesselElement.GetChildText("Abbreviation");
+ vessel.Length = StringUtil.ToDecimal(vesselElement.GetChildText("Length"));
+ vessel.Breadth = StringUtil.ToDecimal(vesselElement.GetChildText("Breadth"));
+ vessel.Draught= StringUtil.ToDecimal(vesselElement.GetChildText("Draught"));
+ vessel.Depth = StringUtil.ToDecimal(vesselElement.GetChildText("Depth"));
+ vessel.Displacement = StringUtil.ToDecimal(vesselElement.GetChildText("Displacement"));
+ vessel.CompanyIdCruiseLine = new SysId(StringUtil.ToInt(vesselElement.GetChildText("CompanyIdCruiseLine")));
+ vessel.Notes = vesselElement.GetChildText("Notes");
+ vessel.Status = SacsSystem.GetStatusForCode(vesselElement.GetChildText("Status"));
+ vessel.SetCreateStamp(DateUtil.ParseXmlDateTime(vesselElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(vesselElement.GetChildText("CreateBy"))), vesselElement.GetChildText("CreateHost"));
+ vessel.SetUpdateStamp(DateUtil.ParseXmlDateTime(vesselElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(vesselElement.GetChildText("UpdateBy"))), vesselElement.GetChildText("UpdateHost"));
+ vessel.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // Vessel column definitions.
+ public override ColumnDfn GetVesselColumnDfn (SlmVessel.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // Vessel query filter.
+ public override List GetVesselQueryFilter (SlmVessel.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetVesselQueryFilter_Mobile (SlmVessel.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // Vessel Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Vessel Category.
+ if ((int)prm.VesselCategory > 0) filter.Add("VesselCategory", ((int)prm.VesselCategory).ToString());
+
+ // Company Id Cruise Line
+ if (SysId.IsValid(prm.CompanyIdCruiseLine)) filter.Add("CompanyIdCruiseLine", SysId.ToString(prm.CompanyIdCruiseLine));
+
+ // Name.
+ if (!StringUtil.IsEmpty(prm.Name)) filter.Add("Name", prm.Name);
+ if (!StringUtil.IsEmpty(prm.NamePartial)) filter.Add("NamePartial", prm.NamePartial);
+
+ // Type.
+ if (!StringUtil.IsEmpty(prm.TypePartial)) filter.Add("TypePartial", prm.TypePartial);
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // Vessel sort columns.
+ public List GetVesselSortColumns (SlmVessel.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Vessel count.
+ public override long GetVesselCount (SlmVessel.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Vessel list.
+ public override List GetVesselList (SlmVessel.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetVesselList_Mobile (SlmVessel.Params prmVessel, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetVesselList_Mobile";
+
+ // Vessel columns.
+ List columns = new List()
+ {
+ SlmVessel.Column.Id,
+ SlmVessel.Column.VesselCategory,
+ SlmVessel.Column.Name,
+ SlmVessel.Column.VesselType,
+ SlmVessel.Column.Owner,
+ SlmVessel.Column.Abbreviation,
+ SlmVessel.Column.Length,
+ SlmVessel.Column.Breadth,
+ SlmVessel.Column.Draught,
+ SlmVessel.Column.Depth,
+ SlmVessel.Column.Displacement,
+ SlmVessel.Column.CompanyIdCruiseLine,
+ SlmVessel.Column.Notes,
+ SlmVessel.Column.Flags,
+ SlmVessel.Column.Status
+ };
+
+ List itemDataList = await ExecuteVesselQuery_Mobile(columns, prmVessel, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmVessel.Column.Id);
+ Slm.VesselCategory vesselCategory = EnumUtil.ParseEnum(itemData.GetValue(SlmVessel.Column.VesselCategory), Slm.VesselCategory.Unknown);
+ ushort flags = (ushort)itemData.GetIntValue(SlmVessel.Column.Id);
+ // Create item.
+ SlmVessel_Mobile vessel = new SlmVessel_Mobile(Site, id, vesselCategory, flags);
+ // Populate item properties.
+ foreach (SlmVessel.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmVessel.Column.VesselCategory: vessel.VesselCategory; break;
+ case SlmVessel.Column.Name: vessel.Name = value; break;
+ case SlmVessel.Column.VesselType: vessel.VesselType = value; break;
+ case SlmVessel.Column.Owner: vessel.Owner = value; break;
+ case SlmVessel.Column.Abbreviation: vessel.Abbreviation= value; break;
+ case SlmVessel.Column.Length: vessel.Length = itemData.GetDecimalValue(column); break;
+ case SlmVessel.Column.Breadth: vessel.Breadth = itemData.GetDecimalValue(column); break;
+ case SlmVessel.Column.Depth: vessel.Depth = itemData.GetDecimalValue(column); break;
+ case SlmVessel.Column.Displacement: vessel.Displacement = itemData.GetDecimalValue(column); break;
+ case SlmVessel.Column.CompanyIdCruiseLine: vessel.CompanyIdCruiseLine = itemData.GetIdValue(column); break;
+ case SlmVessel.Column.Notes: vessel.Notes = value; break;
+ case SlmVessel.Column.Status: vessel.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(vessel);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // Vessel query execution.
+ public override DbResultSet ExecuteVesselQuery (List columns, SlmVessel.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteVesselQuery_Mobile (List vesselColumns, SlmVessel.Params prmVessel, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmVessel.Column column in vesselColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetVesselRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetVesselQueryFilter_Mobile(prmVessel), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetVesselRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.Vessel;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetVesselDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmVessel.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // Vessel Category.
+ case SlmVessel.Column.VesselCategory_Desc:
+ {
+ Slm.VesselCategory vesselCategory = (Slm.VesselCategory)values.GetValue(column.DataName).AsLong();
+ value = new DataValue(vesselCategories.GetDescForType((int)vesselCategory, vesselCategory.ToString()));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmVessel.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmVessel.Column.Status_Desc:
+ case SlmVessel.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmVessel.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmVessel.Column.Status_Ind)
+ value = new DataValue(SlmVessel.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile.cs
new file mode 100644
index 0000000..2519f6e
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmBerthingMgr_Mobile.cs
@@ -0,0 +1,39 @@
+using Sarand.Core.Base;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Mgr;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.App;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ public partial class SlmBerthingMgr_Mobile : SlmBerthingMgr
+ {
+ //-------------------------------------------------------------------
+ // Definitions.
+
+ //-------------------------------------------------------------------
+ // Data members.
+ private SlmWebServiceClient webServiceClient = new SlmWebServiceClient();
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmBerthingMgr_Mobile (SlmSessionContext sessionContext) :
+ base(sessionContext)
+ {
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+ public SlmSessionProfile_Mobile SessionProfile { get { return SlmGlobals_Mobile.SessionProfile; } }
+ public SlmSiteDefinition SiteDefinition { get { return SessionProfile.SiteDefinition; } }
+ public String User { get { return SessionProfile.User; } }
+ public String Email { get { return SessionProfile.Email; } }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-ChecklistItems.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-ChecklistItems.cs
new file mode 100644
index 0000000..8042aea
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-ChecklistItems.cs
@@ -0,0 +1,345 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmChecklistMgr_Mobile
+ {
+ //*******************************************************************
+ // C h e c k l i s t I t e m s
+ //*******************************************************************
+ // ChecklistItem exists.
+ public override bool ChecklistItemExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create ChecklistItem.
+ public override SlmChecklistItem CreateChecklistItem (SysId checklistId)
+ {
+ ClearErrorState();
+ return new SlmChecklistItem_Mobile(Site, null, checklistId, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get ChecklistItem.
+ public override SlmChecklistItem GetChecklistItem (SlmChecklistItem.Params prmChecklistItem)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmChecklistItem GetChecklistItemById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate ChecklistItem.
+ public override bool IsValidChecklistItemData (SlmChecklistItem.Data data, SlmChecklistItem.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidChecklistItemData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert ChecklistItem.
+ public override bool InsertChecklistItem (SlmChecklistItem checklistItem, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidChecklistItem(checklistItem)) return false;
+ if (SysId.IsValid(checklistItem.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update ChecklistItem.
+ public override bool UpdateChecklistItem (SlmChecklistItem checklistItem, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidChecklistItem(checklistItem)) return false;
+ if (!SysId.IsValid(checklistItem.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete ChecklistItem.
+ public override bool ChecklistItemCanBeDeleted (SlmChecklistItem checklistItem)
+ {
+ ClearErrorState();
+ if (!base.ChecklistItemCanBeDeleted(checklistItem)) return false;
+ return true;
+ }
+ public override bool DeleteChecklistItem (SlmChecklistItem checklistItem, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!ChecklistItemCanBeDeleted(checklistItem)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement checklistItemElement, SlmChecklistItem checklistItem, DbUpdateInfo dbUpdateInfo)
+ {
+ checklistItemElement.AppendElement("Id", SysId.ToString(checklistItem.Id));
+ checklistItemElement.AppendElement("ChecklistId", SysId.ToString(checklistItem.ChecklistId));
+ checklistItemElement.AppendElement("Seq", checklistItem.Seq.ToString("N3"));
+ checklistItemElement.AppendElement("Name", checklistItem.Name);
+ checklistItemElement.AppendElement("ChecklistItemType", checklistItem.ChecklistItemType.ToString());
+ checklistItemElement.AppendElement("Length", checklistItem.Length.ToString("N3"));
+ checklistItemElement.AppendElement("Decimals", checklistItem.Decimals.ToString("N3"));
+ checklistItemElement.AppendElement("ResponseFmt", checklistItem.ResponseFmt);
+ checklistItemElement.AppendElement("ValidValues", checklistItem.ValidValues);
+ checklistItemElement.AppendElement("DefaultValue", checklistItem.DefaultValue);
+ checklistItemElement.AppendElement("Notes", checklistItem.Notes);
+ checklistItemElement.AppendElement("Status", SacsSystem.GetStatusCode(checklistItem.Status));
+ checklistItemElement.AppendElement("Flags", checklistItem.Flags.ToString());
+ if (!SysId.IsValid(checklistItem.Id))
+ {
+ checklistItemElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ checklistItemElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ checklistItemElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ checklistItemElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ checklistItemElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ checklistItemElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement checklistItemElement, SlmChecklistItem checklistItem)
+ {
+ //checklistItem.Id = new SysId(StringUtil.ToInt(checklistItemElement.GetChildText("Id")));
+ //checklistItem.ChecklistId = new SysId(StringUtil.ToInt(checklistItemElement.GetChildText("ChecklistId")));
+ checklistItem.Seq = StringUtil.ToShort(checklistItemElement.GetChildText("Seq"));
+ //checklistItem.Name = checklistItemElement.GetChildText("Name");
+ //checklistItem.ChecklistItemType = EnumUtil.ParseEnum(checklistItemElement.GetChildText("Type"), Slm.ChecklistItemType.Unknown);
+ //checklistItem.Length = StringUtil.ToDecimal(checklistItemElement.GetChildText("Length"));
+ //checklistItem.Decimals = StringUtil.ToDecimal(checklistItemElement.GetChildText("Decimals"));
+ //checklistItem.ResponseFmt = checklistItemElement.GetChildText("ResponseFmt");
+ //checklistItem.ValidValues= checklistItemElement.GetChildText("ValidValues");
+ //checklistItem.DefaultValue = checklistItemElement.GetChildText("DefaultValue");
+ checklistItem.Notes = checklistItemElement.GetChildText("Notes");
+ checklistItem.Status = SacsSystem.GetStatusForCode(checklistItemElement.GetChildText("Status"));
+ checklistItem.SetCreateStamp(DateUtil.ParseXmlDateTime(checklistItemElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(checklistItemElement.GetChildText("CreateBy"))), checklistItemElement.GetChildText("CreateHost"));
+ checklistItem.SetUpdateStamp(DateUtil.ParseXmlDateTime(checklistItemElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(checklistItemElement.GetChildText("UpdateBy"))), checklistItemElement.GetChildText("UpdateHost"));
+ checklistItem.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // ChecklistItem column definitions.
+ public override ColumnDfn GetChecklistItemColumnDfn (SlmChecklistItem.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // ChecklistItem query filter.
+ public override List GetChecklistItemQueryFilter (SlmChecklistItem.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetChecklistItemQueryFilter_Mobile (SlmChecklistItem.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // ChecklistItem Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Checklist Id.
+ if (SysId.IsValid(prm.ChecklistId)) filter.Add("ChecklistId", SysId.ToString(prm.ChecklistId));
+
+ // Name.
+ if (!StringUtil.IsEmpty(prm.Name)) filter.Add("Name", prm.Name);
+ if (!StringUtil.IsEmpty(prm.NamePartial)) filter.Add("NamePartial", prm.NamePartial);
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // ChecklistItem sort columns.
+ public List GetChecklistItemSortColumns (SlmChecklistItem.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // ChecklistItem count.
+ public override long GetChecklistItemCount (SlmChecklistItem.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // ChecklistItem list.
+ public override List GetChecklistItemList (SlmChecklistItem.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetChecklistItemList_Mobile (SlmChecklistItem.Params prmChecklistItem, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetChecklistItemList_Mobile";
+
+ // ChecklistItem columns.
+ List columns = new List()
+ {
+ SlmChecklistItem.Column.Id,
+ SlmChecklistItem.Column.ChecklistId,
+ SlmChecklistItem.Column.Seq,
+ SlmChecklistItem.Column.Name,
+ SlmChecklistItem.Column.ChecklistItemType,
+ SlmChecklistItem.Column.Length,
+ SlmChecklistItem.Column.Decimals,
+ SlmChecklistItem.Column.ResponseFmt,
+ SlmChecklistItem.Column.ValidValues,
+ SlmChecklistItem.Column.DefaultValue,
+ SlmChecklistItem.Column.Notes,
+ SlmChecklistItem.Column.Flags,
+ SlmChecklistItem.Column.Status
+ };
+
+ List itemDataList = await ExecuteChecklistItemQuery_Mobile(columns, prmChecklistItem, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmChecklistItem.Column.Id);
+ SysId checklistId = itemData.GetIdValue(SlmChecklistItem.Column.ChecklistId);
+ ushort flags = (ushort)itemData.GetIntValue(SlmChecklistItem.Column.Id);
+ // Create item.
+ SlmChecklistItem_Mobile checklistItem = new SlmChecklistItem_Mobile(Site, id, checklistId, flags);
+ // Populate item properties.
+ foreach (SlmChecklistItem.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmChecklistItem.Column.ChecklistItemCategory: checklistItem.ChecklistItemCategory; break;
+ //case SlmChecklistItem.Column.ChecklistId: checklistItem.ChecklistId = itemData.GetIdValue(column); break;
+ case SlmChecklistItem.Column.Seq: checklistItem.Seq = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ //case SlmChecklistItem.Column.Name: checklistItem.Name = value; break;
+ //case SlmChecklistItem.Column.ChecklistItemType: checklistItem.ChecklistItemType = value; break;
+ //case SlmChecklistItem.Column.Length: checklistItem.Length = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ //case SlmChecklistItem.Column.Decimals: checklistItem.Decimals= StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ //case SlmChecklistItem.Column.ResponseFmt: checklistItem.ResponseFmt = value; break;
+ //case SlmChecklistItem.Column.ValidValues: checklistItem.ValidValues= value; break;
+ //case SlmChecklistItem.Column.DefaultValue: checklistItem.DefaultValue = itemData.GetDecimalValue(column); break;
+ case SlmChecklistItem.Column.Notes: checklistItem.Notes = value; break;
+ case SlmChecklistItem.Column.Status: checklistItem.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(checklistItem);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // ChecklistItem query execution.
+ public override DbResultSet ExecuteChecklistItemQuery (List columns, SlmChecklistItem.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteChecklistItemQuery_Mobile (List checklistItemColumns, SlmChecklistItem.Params prmChecklistItem, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmChecklistItem.Column column in checklistItemColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetChecklistItemRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetChecklistItemQueryFilter_Mobile(prmChecklistItem), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetChecklistItemRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.ChecklistItem;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetChecklistItemDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmChecklistItem.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // ChecklistItem Category.
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmChecklistItem.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmChecklistItem.Column.Status_Desc:
+ case SlmChecklistItem.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmChecklistItem.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmChecklistItem.Column.Status_Ind)
+ value = new DataValue(SlmChecklistItem.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-Checklists.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-Checklists.cs
new file mode 100644
index 0000000..2791e95
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-Checklists.cs
@@ -0,0 +1,317 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmChecklistMgr_Mobile
+ {
+ //*******************************************************************
+ // C h e c k l i s t s
+ //*******************************************************************
+ // Checklist exists.
+ public override bool ChecklistExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create Checklist.
+ public override SlmChecklist CreateChecklist ()
+ {
+ ClearErrorState();
+ return new SlmChecklist_Mobile(Site, null, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get Checklist.
+ public override SlmChecklist GetChecklist (SlmChecklist.Params prmChecklist)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmChecklist GetChecklistById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate Checklist.
+ public override bool IsValidChecklistData (SlmChecklist.Data data, SlmChecklist.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidChecklistData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert Checklist.
+ public override bool InsertChecklist (SlmChecklist checklist, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidChecklist(checklist)) return false;
+ if (SysId.IsValid(checklist.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update Checklist.
+ public override bool UpdateChecklist (SlmChecklist checklist, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidChecklist(checklist)) return false;
+ if (!SysId.IsValid(checklist.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete Checklist.
+ public override bool ChecklistCanBeDeleted (SlmChecklist checklist)
+ {
+ ClearErrorState();
+ if (!base.ChecklistCanBeDeleted(checklist)) return false;
+ return true;
+ }
+ public override bool DeleteChecklist (SlmChecklist checklist, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!ChecklistCanBeDeleted(checklist)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement checklistElement, SlmChecklist checklist, DbUpdateInfo dbUpdateInfo)
+ {
+ checklistElement.AppendElement("Id", SysId.ToString(checklist.Id));
+ checklistElement.AppendElement("Name", checklist.Name);
+ checklistElement.AppendElement("Version", checklist.Version.ToString("N3"));
+ checklistElement.AppendElement("PrevChecklistId", checklist.PrevChecklistId.ToString("N3"));
+ checklistElement.AppendElement("Notes", checklist.Notes);
+ checklistElement.AppendElement("Status", SacsSystem.GetStatusCode(checklist.Status));
+ checklistElement.AppendElement("Flags", checklist.Flags.ToString());
+ if (!SysId.IsValid(checklist.Id))
+ {
+ checklistElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ checklistElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ checklistElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ checklistElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ checklistElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ checklistElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement checklistElement, SlmChecklist checklist)
+ {
+ //checklist.Id = new SysId(StringUtil.ToInt(checklistElement.GetChildText("Id")));
+ //checklist.Name = checklistElement.GetChildText("Name");
+ checklist.Version = StringUtil.ToShort(checklistElement.GetChildText("Version"));
+ checklist.PrevChecklistId = StringUtil.ToInt(checklistElement.GetChildText("PrevChecklistId"));
+ checklist.Notes = checklistElement.GetChildText("Notes");
+ checklist.Status = SacsSystem.GetStatusForCode(checklistElement.GetChildText("Status"));
+ checklist.SetCreateStamp(DateUtil.ParseXmlDateTime(checklistElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(checklistElement.GetChildText("CreateBy"))), checklistElement.GetChildText("CreateHost"));
+ checklist.SetUpdateStamp(DateUtil.ParseXmlDateTime(checklistElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(checklistElement.GetChildText("UpdateBy"))), checklistElement.GetChildText("UpdateHost"));
+ checklist.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // Checklist column definitions.
+ public override ColumnDfn GetChecklistColumnDfn (SlmChecklist.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // Checklist query filter.
+ public override List GetChecklistQueryFilter (SlmChecklist.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetChecklistQueryFilter_Mobile (SlmChecklist.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // Checklist Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Name.
+ if (!StringUtil.IsEmpty(prm.Name)) filter.Add("Name", prm.Name);
+ if (!StringUtil.IsEmpty(prm.NamePartial)) filter.Add("NamePartial", prm.NamePartial);
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // Checklist sort columns.
+ public List GetChecklistSortColumns (SlmChecklist.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Checklist count.
+ public override long GetChecklistCount (SlmChecklist.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Checklist list.
+ public override List GetChecklistList (SlmChecklist.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetChecklistList_Mobile (SlmChecklist.Params prmChecklist, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetChecklistList_Mobile";
+
+ // Checklist columns.
+ List columns = new List()
+ {
+ SlmChecklist.Column.Id,
+ SlmChecklist.Column.Name,
+ SlmChecklist.Column.Version,
+ SlmChecklist.Column.PrevChecklistId,
+ SlmChecklist.Column.Notes,
+ SlmChecklist.Column.Flags,
+ SlmChecklist.Column.Status
+ };
+
+ List itemDataList = await ExecuteChecklistQuery_Mobile(columns, prmChecklist, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmChecklist.Column.Id);
+ ushort flags = (ushort)itemData.GetIntValue(SlmChecklist.Column.Id);
+ // Create item.
+ SlmChecklist_Mobile checklist = new SlmChecklist_Mobile(Site, id, flags);
+ // Populate item properties.
+ foreach (SlmChecklist.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmChecklist.Column.ChecklistCategory: checklist.ChecklistCategory; break;
+ //case SlmChecklist.Column.Name: checklist.Name = value; break;
+ case SlmChecklist.Column.Version: checklist.Version = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmChecklist.Column.PrevChecklistId: checklist.PrevChecklistId = itemData.GetIntValue(column); break;
+ case SlmChecklist.Column.Notes: checklist.Notes = value; break;
+ case SlmChecklist.Column.Status: checklist.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(checklist);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // Checklist query execution.
+ public override DbResultSet ExecuteChecklistQuery (List columns, SlmChecklist.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteChecklistQuery_Mobile (List checklistColumns, SlmChecklist.Params prmChecklist, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmChecklist.Column column in checklistColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetChecklistRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetChecklistQueryFilter_Mobile(prmChecklist), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetChecklistRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.Checklist;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetChecklistDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmChecklist.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // Checklist Category.
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmChecklist.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmChecklist.Column.Status_Desc:
+ case SlmChecklist.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmChecklist.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmChecklist.Column.Status_Ind)
+ value = new DataValue(SlmChecklist.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-ItemChecklistItems.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-ItemChecklistItems.cs
new file mode 100644
index 0000000..f49173e
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-ItemChecklistItems.cs
@@ -0,0 +1,351 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmChecklistMgr_Mobile
+ {
+ //*******************************************************************
+ // I t e m C h e c k l i s t I t e m s
+ //*******************************************************************
+ // ItemChecklistItem exists.
+ public override bool ItemChecklistItemExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create ItemChecklistItem.
+ public override SlmItemChecklistItem CreateItemChecklistItem (SysId itemChecklistId,SysId checklistItemId)
+ {
+ ClearErrorState();
+ return new SlmItemChecklistItem_Mobile(Site, null, itemChecklistId, checklistItemId, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get ItemChecklistItem.
+ public override SlmItemChecklistItem GetItemChecklistItem (SlmItemChecklistItem.Params prmItemChecklistItem)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmItemChecklistItem GetItemChecklistItemById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate ItemChecklistItem.
+ public override bool IsValidItemChecklistItemData (SlmItemChecklistItem.Data data, SlmItemChecklistItem.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidItemChecklistItemData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert ItemChecklistItem.
+ public override bool InsertItemChecklistItem (SlmItemChecklistItem itemChecklistItem, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidItemChecklistItem(itemChecklistItem)) return false;
+ if (SysId.IsValid(itemChecklistItem.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update ItemChecklistItem.
+ public override bool UpdateItemChecklistItem (SlmItemChecklistItem itemChecklistItem, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidItemChecklistItem(itemChecklistItem)) return false;
+ if (!SysId.IsValid(itemChecklistItem.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete ItemChecklistItem.
+ public override bool ItemChecklistItemCanBeDeleted (SlmItemChecklistItem itemChecklistItem)
+ {
+ ClearErrorState();
+ if (!base.ItemChecklistItemCanBeDeleted(itemChecklistItem)) return false;
+ return true;
+ }
+ public override bool DeleteItemChecklistItem (SlmItemChecklistItem itemChecklistItem, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!ItemChecklistItemCanBeDeleted(itemChecklistItem)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement itemChecklistItemElement, SlmItemChecklistItem itemChecklistItem, DbUpdateInfo dbUpdateInfo)
+ {
+ itemChecklistItemElement.AppendElement("Id", SysId.ToString(itemChecklistItem.Id));
+ itemChecklistItemElement.AppendElement("ItemChecklistId", SysId.ToString(itemChecklistItem.ItemChecklistId));
+ itemChecklistItemElement.AppendElement("ChecklistItemId", SysId.ToString(itemChecklistItem.ChecklistItemId));
+ itemChecklistItemElement.AppendElement("Seq", itemChecklistItem.Seq.ToString("N3"));
+ itemChecklistItemElement.AppendElement("Name", itemChecklistItem.Name);
+ itemChecklistItemElement.AppendElement("ItemChecklistItemType", itemChecklistItem.ItemChecklistItemType.ToString());
+ itemChecklistItemElement.AppendElement("Value", itemChecklistItem.Value);
+ itemChecklistItemElement.AppendElement("Length", itemChecklistItem.Length.ToString("N3"));
+ itemChecklistItemElement.AppendElement("Decimals", itemChecklistItem.Decimals.ToString("N3"));
+ itemChecklistItemElement.AppendElement("ResponseFmt", itemChecklistItem.ResponseFmt);
+ itemChecklistItemElement.AppendElement("ValidValues", itemChecklistItem.ValidValues);
+ itemChecklistItemElement.AppendElement("DefaultValue", itemChecklistItem.DefaultValue);
+ itemChecklistItemElement.AppendElement("Notes", itemChecklistItem.Notes);
+ itemChecklistItemElement.AppendElement("Status", SacsSystem.GetStatusCode(itemChecklistItem.Status));
+ itemChecklistItemElement.AppendElement("Flags", itemChecklistItem.Flags.ToString());
+ if (!SysId.IsValid(itemChecklistItem.Id))
+ {
+ itemChecklistItemElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ itemChecklistItemElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ itemChecklistItemElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ itemChecklistItemElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ itemChecklistItemElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ itemChecklistItemElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement itemChecklistItemElement, SlmItemChecklistItem itemChecklistItem)
+ {
+ //itemChecklistItem.Id = new SysId(StringUtil.ToInt(itemChecklistItemElement.GetChildText("Id")));
+ //itemChecklistItem.ChecklistId = new SysId(StringUtil.ToInt(itemChecklistItemElement.GetChildText("ChecklistId")));
+ itemChecklistItem.Seq = StringUtil.ToShort(itemChecklistItemElement.GetChildText("Seq"));
+ //itemChecklistItem.Name = itemChecklistItemElement.GetChildText("Name");
+ //itemChecklistItem.ItemChecklistItemType = EnumUtil.ParseEnum(itemChecklistItemElement.GetChildText("Type"), Slm.ItemChecklistItemType.Unknown);
+ //itemChecklistItem.Length = StringUtil.ToDecimal(itemChecklistItemElement.GetChildText("Length"));
+ //itemChecklistItem.Decimals = StringUtil.ToDecimal(itemChecklistItemElement.GetChildText("Decimals"));
+ //itemChecklistItem.ResponseFmt = itemChecklistItemElement.GetChildText("ResponseFmt");
+ //itemChecklistItem.ValidValues= itemChecklistItemElement.GetChildText("ValidValues");
+ //itemChecklistItem.DefaultValue = itemChecklistItemElement.GetChildText("DefaultValue");
+ itemChecklistItem.Notes = itemChecklistItemElement.GetChildText("Notes");
+ itemChecklistItem.Status = SacsSystem.GetStatusForCode(itemChecklistItemElement.GetChildText("Status"));
+ itemChecklistItem.SetCreateStamp(DateUtil.ParseXmlDateTime(itemChecklistItemElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(itemChecklistItemElement.GetChildText("CreateBy"))), itemChecklistItemElement.GetChildText("CreateHost"));
+ itemChecklistItem.SetUpdateStamp(DateUtil.ParseXmlDateTime(itemChecklistItemElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(itemChecklistItemElement.GetChildText("UpdateBy"))), itemChecklistItemElement.GetChildText("UpdateHost"));
+ itemChecklistItem.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // ItemChecklistItem column definitions.
+ public override ColumnDfn GetItemChecklistItemColumnDfn (SlmItemChecklistItem.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // ItemChecklistItem query filter.
+ public override List GetItemChecklistItemQueryFilter (SlmItemChecklistItem.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetItemChecklistItemQueryFilter_Mobile (SlmItemChecklistItem.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // ItemChecklistItem Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Item Checklist Id.
+ if (SysId.IsValid(prm.ItemChecklistId)) filter.Add("ItemChecklistId", SysId.ToString(prm.ItemChecklistId));
+
+ // Checklist Item Id.
+ if (SysId.IsValid(prm.ChecklistItemId)) filter.Add("ChecklistItemId", SysId.ToString(prm.ChecklistItemId));
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // ItemChecklistItem sort columns.
+ public List GetItemChecklistItemSortColumns (SlmItemChecklistItem.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // ItemChecklistItem count.
+ public override long GetItemChecklistItemCount (SlmItemChecklistItem.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // ItemChecklistItem list.
+ public override List GetItemChecklistItemList (SlmItemChecklistItem.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetItemChecklistItemList_Mobile (SlmItemChecklistItem.Params prmItemChecklistItem, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetItemChecklistItemList_Mobile";
+
+ // ItemChecklistItem columns.
+ List columns = new List()
+ {
+ SlmItemChecklistItem.Column.Id,
+ SlmItemChecklistItem.Column.ItemChecklistId,
+ SlmItemChecklistItem.Column.ChecklistItemId,
+ SlmItemChecklistItem.Column.Seq,
+ SlmItemChecklistItem.Column.Name,
+ SlmItemChecklistItem.Column.ItemChecklistItemType,
+ SlmItemChecklistItem.Column.Value,
+ SlmItemChecklistItem.Column.Length,
+ SlmItemChecklistItem.Column.Decimals,
+ SlmItemChecklistItem.Column.ResponseFmt,
+ SlmItemChecklistItem.Column.ValidValues,
+ SlmItemChecklistItem.Column.DefaultValue,
+ SlmItemChecklistItem.Column.Notes,
+ SlmItemChecklistItem.Column.Flags,
+ SlmItemChecklistItem.Column.Status
+ };
+
+ List itemDataList = await ExecuteItemChecklistItemQuery_Mobile(columns, prmItemChecklistItem, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmItemChecklistItem.Column.Id);
+ SysId itemChecklistId = itemData.GetIdValue(SlmItemChecklistItem.Column.ItemChecklistId);
+ SysId checklistItemId = itemData.GetIdValue(SlmItemChecklistItem.Column.ChecklistItemId);
+ ushort flags = (ushort)itemData.GetIntValue(SlmItemChecklistItem.Column.Id);
+ // Create item.
+ SlmItemChecklistItem_Mobile itemChecklistItem = new SlmItemChecklistItem_Mobile(Site, id, itemChecklistId, checklistItemId, flags);
+ // Populate item properties.
+ foreach (SlmItemChecklistItem.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmItemChecklistItem.Column.ItemChecklistItemCategory: itemChecklistItem.ItemChecklistItemCategory; break;
+ //case SlmItemChecklistItem.Column.ItemChecklistId: itemChecklistItem.ItemChecklistId = itemData.GetIdValue(column); break;
+ //case SlmItemChecklistItem.Column.ChecklistItemId: itemChecklistItem.ChecklistItemId = itemData.GetIdValue(column); break;
+ case SlmItemChecklistItem.Column.Seq: itemChecklistItem.Seq = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmItemChecklistItem.Column.Name: itemChecklistItem.Name = value; break;
+ case SlmItemChecklistItem.Column.ItemChecklistItemType: itemChecklistItem.ItemChecklistItemType = EnumUtil.ParseEnum(value, Slm.ChecklistItemType.Unknown); break;
+ case SlmItemChecklistItem.Column.Value: itemChecklistItem.Value = value; break;
+ case SlmItemChecklistItem.Column.Length: itemChecklistItem.Length = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmItemChecklistItem.Column.Decimals: itemChecklistItem.Decimals= StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmItemChecklistItem.Column.ResponseFmt: itemChecklistItem.ResponseFmt = value; break;
+ case SlmItemChecklistItem.Column.ValidValues: itemChecklistItem.ValidValues= value; break;
+ case SlmItemChecklistItem.Column.DefaultValue: itemChecklistItem.DefaultValue = value; break;
+ case SlmItemChecklistItem.Column.Notes: itemChecklistItem.Notes = value; break;
+ case SlmItemChecklistItem.Column.Status: itemChecklistItem.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(itemChecklistItem);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // ItemChecklistItem query execution.
+ public override DbResultSet ExecuteItemChecklistItemQuery (List columns, SlmItemChecklistItem.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteItemChecklistItemQuery_Mobile (List itemChecklistItemColumns, SlmItemChecklistItem.Params prmItemChecklistItem, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmItemChecklistItem.Column column in itemChecklistItemColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetItemChecklistItemRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetItemChecklistItemQueryFilter_Mobile(prmItemChecklistItem), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetItemChecklistItemRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.ItemChecklistItem;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetItemChecklistItemDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmItemChecklistItem.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // ItemChecklistItem Category.
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmItemChecklistItem.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmItemChecklistItem.Column.Status_Desc:
+ case SlmItemChecklistItem.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmItemChecklistItem.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmItemChecklistItem.Column.Status_Ind)
+ value = new DataValue(SlmItemChecklistItem.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-ItemChecklists.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-ItemChecklists.cs
new file mode 100644
index 0000000..62a5f72
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile-ItemChecklists.cs
@@ -0,0 +1,335 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmChecklistMgr_Mobile
+ {
+ //*******************************************************************
+ // I t e m C h e c k l i s t s
+ //*******************************************************************
+ // ItemChecklist exists.
+ public override bool ItemChecklistExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create ItemChecklist.
+ public override SlmItemChecklist CreateItemChecklist (SysId itemId, SysId checklistId, Slm.ChecklistItemType itemType)
+ {
+ ClearErrorState();
+ return new SlmItemChecklist_Mobile(Site, null, itemId, checklistId, itemType, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get ItemChecklist.
+ public override SlmItemChecklist GetItemChecklist (SlmItemChecklist.Params prmItemChecklist)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmItemChecklist GetItemChecklistById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate ItemChecklist.
+ public override bool IsValidItemChecklistData (SlmItemChecklist.Data data, SlmItemChecklist.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidItemChecklistData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert ItemChecklist.
+ public override bool InsertItemChecklist (SlmItemChecklist itemChecklist, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidItemChecklist(itemChecklist)) return false;
+ if (SysId.IsValid(itemChecklist.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update ItemChecklist.
+ public override bool UpdateItemChecklist (SlmItemChecklist itemChecklist, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidItemChecklist(itemChecklist)) return false;
+ if (!SysId.IsValid(itemChecklist.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete ItemChecklist.
+ public override bool ItemChecklistCanBeDeleted (SlmItemChecklist itemChecklist)
+ {
+ ClearErrorState();
+ if (!base.ItemChecklistCanBeDeleted(itemChecklist)) return false;
+ return true;
+ }
+ public override bool DeleteItemChecklist (SlmItemChecklist itemChecklist, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!ItemChecklistCanBeDeleted(itemChecklist)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement itemChecklistElement, SlmItemChecklist itemChecklist, DbUpdateInfo dbUpdateInfo)
+ {
+ itemChecklistElement.AppendElement("Id", SysId.ToString(itemChecklist.Id));
+ itemChecklistElement.AppendElement("ItemChecklistType", itemChecklist.ItemType.ToString());
+ itemChecklistElement.AppendElement("ItemId", SysId.ToString(itemChecklist.ItemId));
+ itemChecklistElement.AppendElement("ChecklistId", SysId.ToString(itemChecklist.ChecklistId));
+ itemChecklistElement.AppendElement("Name", itemChecklist.Name);
+ itemChecklistElement.AppendElement("Actioned", DateUtil.FormatXmlDateTime(itemChecklist.Actioned));
+ itemChecklistElement.AppendElement("Notes", itemChecklist.Notes);
+ itemChecklistElement.AppendElement("Status", SacsSystem.GetStatusCode(itemChecklist.Status));
+ itemChecklistElement.AppendElement("Flags", itemChecklist.Flags.ToString());
+ if (!SysId.IsValid(itemChecklist.Id))
+ {
+ itemChecklistElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ itemChecklistElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ itemChecklistElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ itemChecklistElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ itemChecklistElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ itemChecklistElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement itemChecklistElement, SlmItemChecklist itemChecklist)
+ {
+ //itemChecklist.Id = new SysId(StringUtil.ToInt(itemChecklistElement.GetChildText("Id")));
+ //itemChecklist.ItemType = EnumUtil.ParseEnum(itemChecklistElement.GetChildText("Type"), Slm.ChecklistItemType.Unknown);
+ //itemChecklist.ItemId = new SysId(StringUtil.ToInt(itemChecklistElement.GetChildText("ItemId")));
+ //itemChecklist.ChecklistId = new SysId(StringUtil.ToInt(itemChecklistElement.GetChildText("ChecklistId")));
+ itemChecklist.Name = itemChecklistElement.GetChildText("Name");
+ itemChecklist.Actioned = DateUtil.ParseXmlDateTime(itemChecklistElement.GetChildText("Actioned"));
+ itemChecklist.Notes = itemChecklistElement.GetChildText("Notes");
+ itemChecklist.Status = SacsSystem.GetStatusForCode(itemChecklistElement.GetChildText("Status"));
+ itemChecklist.SetCreateStamp(DateUtil.ParseXmlDateTime(itemChecklistElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(itemChecklistElement.GetChildText("CreateBy"))), itemChecklistElement.GetChildText("CreateHost"));
+ itemChecklist.SetUpdateStamp(DateUtil.ParseXmlDateTime(itemChecklistElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(itemChecklistElement.GetChildText("UpdateBy"))), itemChecklistElement.GetChildText("UpdateHost"));
+ itemChecklist.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // ItemChecklist column definitions.
+ public override ColumnDfn GetItemChecklistColumnDfn (SlmItemChecklist.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // ItemChecklist query filter.
+ public override List GetItemChecklistQueryFilter (SlmItemChecklist.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetItemChecklistQueryFilter_Mobile (SlmItemChecklist.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // ItemChecklist Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Item type:
+ if (prm.ItemType!= 0) filter.Add("ItemType", prm.ItemType.ToString());
+
+ // Item Id.
+ if (SysId.IsValid(prm.ItemId)) filter.Add("ItemId", SysId.ToString(prm.ItemId));
+
+ // Checklist Id.
+ if (SysId.IsValid(prm.ChecklistId)) filter.Add("ChecklistId", SysId.ToString(prm.ChecklistId));
+
+ // Active Only.
+ if (prm.ActiveOnly != false) filter.Add("ActiveOnly", prm.ActiveOnly.ToString());
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // ItemChecklist sort columns.
+ public List GetItemChecklistSortColumns (SlmItemChecklist.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // ItemChecklist count.
+ public override long GetItemChecklistCount (SlmItemChecklist.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // ItemChecklist list.
+ public override List GetItemChecklistList (SlmItemChecklist.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetItemChecklistList_Mobile (SlmItemChecklist.Params prmItemChecklist, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetItemChecklistList_Mobile";
+
+ // ItemChecklist columns.
+ List columns = new List()
+ {
+ SlmItemChecklist.Column.Id,
+ SlmItemChecklist.Column.ItemType,
+ SlmItemChecklist.Column.ItemId,
+ SlmItemChecklist.Column.ChecklistId,
+ SlmItemChecklist.Column.Name,
+ SlmItemChecklist.Column.Actioned,
+ SlmItemChecklist.Column.Notes,
+ SlmItemChecklist.Column.Flags,
+ SlmItemChecklist.Column.Status
+ };
+
+ List itemDataList = await ExecuteItemChecklistQuery_Mobile(columns, prmItemChecklist, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmItemChecklist.Column.Id);
+ SysId itemId = itemData.GetIdValue(SlmItemChecklist.Column.ItemId);
+ SysId checklistId = itemData.GetIdValue(SlmItemChecklist.Column.ChecklistId);
+ Slm.ChecklistItemType itemType = EnumUtil.ParseEnum(itemData.GetValue(SlmItemChecklist.Column.ItemType), Slm.ChecklistItemType.Unknown);
+ ushort flags = (ushort)itemData.GetIntValue(SlmItemChecklist.Column.Id);
+ // Create item.
+ SlmItemChecklist_Mobile itemChecklist = new SlmItemChecklist_Mobile(Site, id, itemId, checklistId, itemType, flags);
+ // Populate item properties.
+ foreach (SlmItemChecklist.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmItemChecklist.Column.ItemType: itemChecklist.ItemType= value; break;
+ //case SlmItemChecklist.Column.ItemId: itemChecklist.ItemId = itemData.GetIdValue(column); break;
+ //case SlmItemChecklist.Column.ChecklistId: itemChecklist.ChecklistId = itemData.GetIdValue(column); break;
+ case SlmItemChecklist.Column.Name: itemChecklist.Name = value; break;
+ case SlmItemChecklist.Column.Actioned: itemChecklist.Actioned = itemData.GetDateTimeValue(column); break;
+ case SlmItemChecklist.Column.Notes: itemChecklist.Notes = value; break;
+ case SlmItemChecklist.Column.Status: itemChecklist.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(itemChecklist);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // ItemChecklist query execution.
+ public override DbResultSet ExecuteItemChecklistQuery (List columns, SlmItemChecklist.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteItemChecklistQuery_Mobile (List itemChecklistColumns, SlmItemChecklist.Params prmItemChecklist, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmItemChecklist.Column column in itemChecklistColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetItemChecklistRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetItemChecklistQueryFilter_Mobile(prmItemChecklist), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetItemChecklistRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.ItemChecklist;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetItemChecklistDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmItemChecklist.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // ItemChecklist Category.
+
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmItemChecklist.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmItemChecklist.Column.Status_Desc:
+ case SlmItemChecklist.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmItemChecklist.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmItemChecklist.Column.Status_Ind)
+ value = new DataValue(SlmItemChecklist.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile.cs
new file mode 100644
index 0000000..58c8dfb
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmChecklistMgr_Mobile.cs
@@ -0,0 +1,39 @@
+using Sarand.Core.Base;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Mgr;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.App;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ public partial class SlmChecklistMgr_Mobile : SlmChecklistMgr
+ {
+ //-------------------------------------------------------------------
+ // Definitions.
+
+ //-------------------------------------------------------------------
+ // Data members.
+ private SlmWebServiceClient webServiceClient = new SlmWebServiceClient();
+
+ //-------------------------------------------------------------------
+ // Construction.
+ public SlmChecklistMgr_Mobile (SlmSessionContext sessionContext) :
+ base(sessionContext)
+ {
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+ public SlmSessionProfile_Mobile SessionProfile { get { return SlmGlobals_Mobile.SessionProfile; } }
+ public SlmSiteDefinition SiteDefinition { get { return SessionProfile.SiteDefinition; } }
+ public String User { get { return SessionProfile.User; } }
+ public String Email { get { return SessionProfile.Email; } }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-Commodities.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-Commodities.cs
new file mode 100644
index 0000000..ccf449d
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-Commodities.cs
@@ -0,0 +1,359 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmCommodityMgr_Mobile
+ {
+ //*******************************************************************
+ // C o m m o d i t i e s
+ //*******************************************************************
+ // Commodity exists.
+ public override bool CommodityExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create Commodity.
+ public override SlmCommodity CreateCommodity ()
+ {
+ ClearErrorState();
+ return new SlmCommodity_Mobile(Site, null, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get Commodity.
+ public override SlmCommodity GetCommodity (SlmCommodity.Params prmCommodity)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmCommodity GetCommodityById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate Commodity.
+ public override bool IsValidCommodityData (SlmCommodity.Data data, SlmCommodity.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidCommodityData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert Commodity.
+ public override bool InsertCommodity (SlmCommodity commodity, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidCommodity(commodity)) return false;
+ if (SysId.IsValid(commodity.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update Commodity.
+ public override bool UpdateCommodity (SlmCommodity commodity, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidCommodity(commodity)) return false;
+ if (!SysId.IsValid(commodity.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete Commodity.
+ public override bool CommodityCanBeDeleted (SlmCommodity commodity)
+ {
+ ClearErrorState();
+ if (!base.CommodityCanBeDeleted(commodity)) return false;
+ return true;
+ }
+ public override bool DeleteCommodity (SlmCommodity commodity, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!CommodityCanBeDeleted(commodity)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement commodityElement, SlmCommodity commodity, DbUpdateInfo dbUpdateInfo)
+ {
+ commodityElement.AppendElement("Id", SysId.ToString(commodity.Id));
+ commodityElement.AppendElement("Code", commodity.Code);
+ commodityElement.AppendElement("Desc", commodity.Desc);
+ commodityElement.AppendElement("DescFmt", commodity.DescFmt);
+ commodityElement.AppendElement("GenesysCode", commodity.GenesysCode);
+ commodityElement.AppendElement("CustomerId", SysId.ToString(commodity.CustomerId));
+ commodityElement.AppendElement("CustomerCode", commodity.CustomerCode);
+ commodityElement.AppendElement("CustomerDesc", commodity.CustomerDesc);
+ commodityElement.AppendElement("StockUnit", commodity.StockUnit.ToString("N3"));
+ commodityElement.AppendElement("StockColour", commodity.StockColour);
+ commodityElement.AppendElement("StockCalcDate", DateUtil.FormatXmlDateTime(commodity.StockCalcDate));
+ commodityElement.AppendElement("EarliestStockCalcDate", DateUtil.FormatXmlDateTime(commodity.EarliestStockCalcDate));
+ commodityElement.AppendElement("Notes", commodity.Notes);
+ commodityElement.AppendElement("Status", SacsSystem.GetStatusCode(commodity.Status));
+ commodityElement.AppendElement("Flags", commodity.Flags.ToString());
+ if (!SysId.IsValid(commodity.Id))
+ {
+ commodityElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ commodityElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ commodityElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ commodityElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ commodityElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ commodityElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement commodityElement, SlmCommodity commodity)
+ {
+ //commodity.Id = new SysId(StringUtil.ToInt(commodityElement.GetChildText("Id")));
+ commodity.Code = commodityElement.GetChildText("Code");
+ commodity.Desc = commodityElement.GetChildText("Desc");
+ commodity.DescFmt = commodityElement.GetChildText("DescFmt");
+ commodity.GenesysCode = commodityElement.GetChildText("GenesysCode");
+ commodity.CustomerId = new SysId(StringUtil.ToInt(commodityElement.GetChildText("CustomerId")));
+ commodity.CustomerCode = commodityElement.GetChildText("CustomerCode");
+ commodity.CustomerDesc = commodityElement.GetChildText("CustomerDesc");
+ commodity.StockUnit = StringUtil.ToShort(commodityElement.GetChildText("StockUnit"));
+ commodity.StockColour = commodityElement.GetChildText("StockColour");
+ commodity.StockCalcDate = DateUtil.ParseXmlDateTime(commodityElement.GetChildText("StockCalcDate"));
+ commodity.EarliestStockCalcDate = DateUtil.ParseXmlDateTime(commodityElement.GetChildText("EarliestStockCalcDate"));
+ commodity.Notes = commodityElement.GetChildText("Notes");
+ commodity.Status = SacsSystem.GetStatusForCode(commodityElement.GetChildText("Status"));
+ commodity.SetCreateStamp(DateUtil.ParseXmlDateTime(commodityElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(commodityElement.GetChildText("CreateBy"))), commodityElement.GetChildText("CreateHost"));
+ commodity.SetUpdateStamp(DateUtil.ParseXmlDateTime(commodityElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(commodityElement.GetChildText("UpdateBy"))), commodityElement.GetChildText("UpdateHost"));
+ commodity.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // Commodity column definitions.
+ public override ColumnDfn GetCommodityColumnDfn (SlmCommodity.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // Commodity query filter.
+ public override List GetCommodityQueryFilter (SlmCommodity.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetCommodityQueryFilter_Mobile (SlmCommodity.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // Commodity Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Commodity Code.
+ if (prm.CommodityCode.Count > 0) filter.Add("CommodityCode", prm.IncludedIds.Concat(","));
+
+ // Code Partial.
+ if (!StringUtil.IsEmpty(prm.CodePartial)) filter.Add("CodePartial", prm.CodePartial);
+
+ // Desc Partial.
+ if (!StringUtil.IsEmpty(prm.DescPartial)) filter.Add("DescPartial", prm.DescPartial);
+
+ // Customer Id.
+ if (SysId.IsValid(prm.CustomerId)) filter.Add("CustomerId", SysId.ToString(prm.CustomerId));
+
+ // Customer Code.
+ if (!StringUtil.IsEmpty(prm.CustomerCode)) filter.Add("CustomerCode", prm.CustomerCode);
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // Commodity sort columns.
+ public List GetCommoditySortColumns (SlmCommodity.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Commodity count.
+ public override long GetCommodityCount (SlmCommodity.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Commodity list.
+ public override List GetCommodityList (SlmCommodity.Params prm)
+ {
+ List companies = new List();
+ throw new NotImplementedException();
+ }
+ public async Task> GetCommodityList_Mobile (SlmCommodity.Params prmCommodity, SacsTaskData taskData)
+ {
+ ClearErrorState();
+ List companies = new List();
+ String fn = GetType().Name + ".GetCommodityList_Mobile";
+
+ // Commodity columns.
+ List columns = new List()
+ {
+ SlmCommodity.Column.Id,
+ SlmCommodity.Column.Code,
+ SlmCommodity.Column.Desc,
+ SlmCommodity.Column.DescFmt,
+ SlmCommodity.Column.GenesysCode,
+ SlmCommodity.Column.CustomerId,
+ SlmCommodity.Column.CustomerCode,
+ SlmCommodity.Column.CustomerDesc,
+ SlmCommodity.Column.StockUnit,
+ SlmCommodity.Column.StockColour,
+ SlmCommodity.Column.StockCalcDate,
+ SlmCommodity.Column.EarliestStockCalcDate,
+ SlmCommodity.Column.Notes,
+ SlmCommodity.Column.Flags,
+ SlmCommodity.Column.Status
+ };
+
+ List itemDataList = await ExecuteCommodityQuery_Mobile(columns, prmCommodity, taskData);
+ foreach (SlmWebServiceItemData itemData in itemDataList)
+ {
+ taskData.ThrowIfCancellationRequested();
+ // Item construction properties.
+ SysId id = itemData.GetIdValue(SlmCommodity.Column.Id);
+ ushort flags = (ushort)itemData.GetIntValue(SlmCommodity.Column.Id);
+ // Create item.
+ SlmCommodity_Mobile commodity = new SlmCommodity_Mobile(Site, id, flags);
+ // Populate item properties.
+ foreach (SlmCommodity.Column column in columns)
+ {
+ String value = itemData.GetValue(column);
+ switch (column)
+ {
+ //case SlmCommodity.Column.CommodityCategory: commodity.CommodityCategory; break;
+ case SlmCommodity.Column.Code: commodity.Code = value; break;
+ case SlmCommodity.Column.Desc: commodity.Desc= value; break;
+ case SlmCommodity.Column.DescFmt: commodity.DescFmt = value; break;
+ case SlmCommodity.Column.GenesysCode: commodity.GenesysCode = value; break;
+ case SlmCommodity.Column.CustomerId: commodity.CustomerId = itemData.GetIdValue(column); break;
+ case SlmCommodity.Column.CustomerCode: commodity.CustomerCode = value; break;
+ case SlmCommodity.Column.CustomerDesc: commodity.CustomerDesc = value; break;
+ case SlmCommodity.Column.StockUnit: commodity.StockUnit = StringUtil.ToShort(itemData.GetDecimalValue(column)); break;
+ case SlmCommodity.Column.StockColour: commodity.StockColour = value; break;
+ case SlmCommodity.Column.StockCalcDate: commodity.StockCalcDate = itemData.GetDateTimeValue(column); break;
+ case SlmCommodity.Column.EarliestStockCalcDate: commodity.EarliestStockCalcDate = itemData.GetDateTimeValue(column); break;
+ case SlmCommodity.Column.Notes: commodity.Notes = value; break;
+ case SlmCommodity.Column.Status: commodity.Status = SacsSystem.GetStatusForCode(value); break;
+ }
+ }
+ companies.Add(commodity);
+ }
+ taskData.ThrowIfCancellationRequested();
+
+ if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
+ return companies;
+ }
+
+
+ //-------------------------------------------------------------------
+ // Commodity query execution.
+ public override DbResultSet ExecuteCommodityQuery (List columns, SlmCommodity.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public async Task> ExecuteCommodityQuery_Mobile (List commodityColumns, SlmCommodity.Params prmCommodity, SacsTaskData taskData)
+ {
+ ClearErrorState();
+
+ // Columns.
+ List columns = new List();
+ foreach (SlmCommodity.Column column in commodityColumns)
+ columns.Add(column.ToString());
+
+ SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetCommodityRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetCommodityQueryFilter_Mobile(prmCommodity), columns, taskData);
+ return responseData.Items;
+ }
+
+ //-------------------------------------------------------------------
+ private SlmWebServiceRequest.Config GetCommodityRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false)
+ {
+ SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
+ configRequest.DataType = SlmWebServiceRequest.DataType.Commodity;
+ configRequest.RequestType = requestType;
+ configRequest.Context.SiteDefinition = SiteDefinition;
+ configRequest.Context.User = User;
+ configRequest.Context.Email = Email;
+ configRequest.Context.Debug = debug;
+ return configRequest;
+ }
+
+ //-------------------------------------------------------------------
+ public override DataValue GetCommodityDataValue (ColumnDfn column, NamedValue.Map values)
+ {
+ DataValue value = new DataValue();
+ switch ((SlmCommodity.Column)column.Id)
+ {
+ //-----------------------------------------------------------
+ // Commodity Category.
+ //-----------------------------------------------------------
+ // Notes.
+ case SlmCommodity.Column.Notes:
+ value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
+ break;
+
+ //-----------------------------------------------------------
+ // Status.
+ case SlmCommodity.Column.Status_Desc:
+ case SlmCommodity.Column.Status_Ind:
+ {
+ String statusCode = values.GetValue(column.DataName).ToString();
+ SaStatus status = SacsSystem.GetStatusForCode(statusCode);
+ if (column.Id == (int)SlmCommodity.Column.Status_Desc)
+ value = new DataValue(SacsSystem.GetStatusDesc(status));
+ else if (column.Id == (int)SlmCommodity.Column.Status_Ind)
+ value = new DataValue(SlmCommodity.GetStatusTriState(status));
+ }
+ break;
+
+ //-----------------------------------------------------------
+ }
+ return value;
+ }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
+
diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-CommodityLocations.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-CommodityLocations.cs
new file mode 100644
index 0000000..3c2072e
--- /dev/null
+++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-CommodityLocations.cs
@@ -0,0 +1,333 @@
+using Sarand.Core.App;
+using Sarand.Core.Base;
+using Sarand.Core.Bus;
+using Sarand.Core.Data;
+using Sarand.Core.Dbas.Base;
+using Sarand.Core.Tasks;
+using Sarand.Core.Xml;
+using Sarand.LogisticsMgr.Core.App;
+using Sarand.LogisticsMgr.Core.Bus;
+using Sarand.LogisticsMgr.Core.WebService;
+using Sarand.LogisticsMgr.Mobile.Core.Bus;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
+{
+ //=======================================================================
+ partial class SlmCommodityMgr_Mobile
+ {
+ //*******************************************************************
+ // C o m m o d i t y L o c a t i o n s
+ //*******************************************************************
+ // CommodityLocation exists.
+ public override bool CommodityLocationExistsById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ // Create CommodityLocation.
+ public override SlmCommodityLocation CreateCommodityLocation ()
+ {
+ ClearErrorState();
+ return new SlmCommodityLocation_Mobile(Site, null, 0);
+ }
+
+ //-------------------------------------------------------------------
+ // Get CommodityLocation.
+ public override SlmCommodityLocation GetCommodityLocation (SlmCommodityLocation.Params prmCommodityLocation)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+ public override SlmCommodityLocation GetCommodityLocationById (SysId id)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Validate CommodityLocation.
+ public override bool IsValidCommodityLocationData (SlmCommodityLocation.Data data, SlmCommodityLocation.ErrField errField)
+ {
+ ClearErrorState();
+ if (!base.IsValidCommodityLocationData(data, errField)) return false;
+ return true;
+ }
+
+ //-------------------------------------------------------------------
+ // Insert CommodityLocation.
+ public override bool InsertCommodityLocation (SlmCommodityLocation commodityLocation, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidCommodityLocation(commodityLocation)) return false;
+ if (SysId.IsValid(commodityLocation.Id)) return SetErrorState(ErrorMessage.ValiditemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Update CommodityLocation.
+ public override bool UpdateCommodityLocation (SlmCommodityLocation commodityLocation, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!IsValidCommodityLocation(commodityLocation)) return false;
+ if (!SysId.IsValid(commodityLocation.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Delete CommodityLocation.
+ public override bool CommodityLocationCanBeDeleted (SlmCommodityLocation commodityLocation)
+ {
+ ClearErrorState();
+ if (!base.CommodityLocationCanBeDeleted(commodityLocation)) return false;
+ return true;
+ }
+ public override bool DeleteCommodityLocation (SlmCommodityLocation commodityLocation, DbUpdateInfo dbUpdateInfo)
+ {
+ ClearErrorState();
+ if (!CommodityLocationCanBeDeleted(commodityLocation)) return false;
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // Copy data properties to and from database.
+ private void PopulateTo (XElement commodityLocationElement, SlmCommodityLocation commodityLocation, DbUpdateInfo dbUpdateInfo)
+ {
+ commodityLocationElement.AppendElement("Id", SysId.ToString(commodityLocation.Id));
+ commodityLocationElement.AppendElement("CommodityId", SysId.ToString(commodityLocation.CommodityId));
+ commodityLocationElement.AppendElement("LocationId", SysId.ToString(commodityLocation.LocationId));
+ commodityLocationElement.AppendElement("WeighbridgeCode", commodityLocation.WeighbridgeCode);
+ commodityLocationElement.AppendElement("Capacity", commodityLocation.Capacity.ToString("N3"));
+ commodityLocationElement.AppendElement("EffectiveFrom", DateUtil.FormatXmlDateTime(commodityLocation.EffectiveFrom));
+ commodityLocationElement.AppendElement("EffectiveTo", DateUtil.FormatXmlDateTime(commodityLocation.EffectiveTo));
+ commodityLocationElement.AppendElement("Notes", commodityLocation.Notes);
+ commodityLocationElement.AppendElement("Status", SacsSystem.GetStatusCode(commodityLocation.Status));
+ commodityLocationElement.AppendElement("Flags", commodityLocation.Flags.ToString());
+ if (!SysId.IsValid(commodityLocation.Id))
+ {
+ commodityLocationElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ commodityLocationElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
+ commodityLocationElement.AppendElement("CreateHost", dbUpdateInfo.Host);
+ }
+ commodityLocationElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
+ commodityLocationElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
+ commodityLocationElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
+ }
+ private void PopulateFrom (XElement commodityLocationElement, SlmCommodityLocation commodityLocation)
+ {
+ //commodityLocation.Id = new SysId(StringUtil.ToInt(commodityLocationElement.GetChildText("Id")));
+ commodityLocation.CommodityId = new SysId(StringUtil.ToInt(commodityLocationElement.GetChildText("CommodityId")));
+ commodityLocation.LocationId = new SysId(StringUtil.ToInt(commodityLocationElement.GetChildText("LocationId")));
+ commodityLocation.WeighbridgeCode = commodityLocationElement.GetChildText("WeighbridgeCode");
+ commodityLocation.Capacity = StringUtil.ToDecimal(commodityLocationElement.GetChildText("Capacity"));
+ commodityLocation.EffectiveFrom = DateUtil.ParseXmlDateTime(commodityLocationElement.GetChildText("EffectiveFrom"));
+ commodityLocation.EffectiveTo = DateUtil.ParseXmlDateTime(commodityLocationElement.GetChildText("EffectiveTo"));
+ commodityLocation.Notes = commodityLocationElement.GetChildText("Notes");
+ commodityLocation.Status = SacsSystem.GetStatusForCode(commodityLocationElement.GetChildText("Status"));
+ commodityLocation.SetCreateStamp(DateUtil.ParseXmlDateTime(commodityLocationElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(commodityLocationElement.GetChildText("CreateBy"))), commodityLocationElement.GetChildText("CreateHost"));
+ commodityLocation.SetUpdateStamp(DateUtil.ParseXmlDateTime(commodityLocationElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(commodityLocationElement.GetChildText("UpdateBy"))), commodityLocationElement.GetChildText("UpdateHost"));
+ commodityLocation.AcceptChanges();
+ }
+
+ //-------------------------------------------------------------------
+ // CommodityLocation column definitions.
+ public override ColumnDfn GetCommodityLocationColumnDfn (SlmCommodityLocation.Column columnId, string caption = "", int width = 0)
+ {
+ ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
+ if (!String.IsNullOrEmpty(caption))
+ columnDfn.Caption = caption;
+ if (width > 0)
+ columnDfn.Width = width;
+ return columnDfn;
+ }
+
+ //-------------------------------------------------------------------
+ // CommodityLocation query filter.
+ public override List GetCommodityLocationQueryFilter (SlmCommodityLocation.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+ public Dictionary GetCommodityLocationQueryFilter_Mobile (SlmCommodityLocation.Params prm)
+ {
+ Dictionary filter = new Dictionary();
+
+ // CommodityLocation Id.
+ if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
+ if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
+
+ // Location Id.
+ if (SysId.IsValid(prm.LocationId)) filter.Add("LocationId", SysId.ToString(prm.LocationId));
+
+ // Commodity Id.
+ if (SysId.IsValid(prm.CommodityId)) filter.Add("CommodityId", SysId.ToString(prm.CommodityId));
+
+ // Stock.
+ if (DateUtil.IsValid(prm.Stock)) filter.Add("Stock", DateUtil.FormatXmlDate(prm.Stock));
+
+ // Notes.
+ if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
+
+ // Status.
+ filter.Add("StatusCat", prm.StatusCat.ToString());
+
+ // Paging.
+ if (prm.ResultsPaging.Paged)
+ {
+ filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
+ filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
+ }
+
+ return filter;
+ }
+ // CommodityLocation sort columns.
+ public List GetCommodityLocationSortColumns (SlmCommodityLocation.Params prm)
+ {
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // CommodityLocation count.
+ public override long GetCommodityLocationCount (SlmCommodityLocation.Params prm)
+ {
+ ClearErrorState();
+ throw new NotImplementedException();
+ }
+
+ //-------------------------------------------------------------------
+ // CommodityLocation list.
+ public override List GetCommodityLocationList (SlmCommodityLocation.Params prm)
+ {
+ List