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 companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetCommodityLocationList_Mobile (SlmCommodityLocation.Params prmCommodityLocation, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetCommodityLocationList_Mobile"; + + // CommodityLocation columns. + List columns = new List() + { + SlmCommodityLocation.Column.Id, + SlmCommodityLocation.Column.CommodityId, + SlmCommodityLocation.Column.LocationId, + SlmCommodityLocation.Column.WeighbridgeCode, + SlmCommodityLocation.Column.Capacity, + SlmCommodityLocation.Column.EffectiveFrom, + SlmCommodityLocation.Column.EffectiveTo, + SlmCommodityLocation.Column.Notes, + SlmCommodityLocation.Column.Flags, + SlmCommodityLocation.Column.Status + }; + + List itemDataList = await ExecuteCommodityLocationQuery_Mobile(columns, prmCommodityLocation, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmCommodityLocation.Column.Id); + ushort flags = (ushort)itemData.GetIntValue(SlmCommodityLocation.Column.Id); + // Create item. + SlmCommodityLocation_Mobile commodityLocation = new SlmCommodityLocation_Mobile(Site, id, flags); + // Populate item properties. + foreach (SlmCommodityLocation.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmCommodityLocation.Column.CommodityLocationCategory: commodityLocation.CommodityLocationCategory; break; + case SlmCommodityLocation.Column.CommodityId: commodityLocation.CommodityId = itemData.GetIdValue(column); break; + case SlmCommodityLocation.Column.LocationId: commodityLocation.LocationId = itemData.GetIdValue(column); break; + case SlmCommodityLocation.Column.WeighbridgeCode: commodityLocation.WeighbridgeCode = value; break; + case SlmCommodityLocation.Column.Capacity: commodityLocation.Capacity = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SlmCommodityLocation.Column.EffectiveFrom: commodityLocation.EffectiveFrom = itemData.GetDateTimeValue(column); break; + case SlmCommodityLocation.Column.EffectiveTo: commodityLocation.EffectiveTo = itemData.GetDateTimeValue(column); break; + case SlmCommodityLocation.Column.Notes: commodityLocation.Notes = value; break; + case SlmCommodityLocation.Column.Status: commodityLocation.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(commodityLocation); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // CommodityLocation query execution. + public override DbResultSet ExecuteCommodityLocationQuery (List columns, SlmCommodityLocation.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteCommodityLocationQuery_Mobile (List commodityLocationColumns, SlmCommodityLocation.Params prmCommodityLocation, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmCommodityLocation.Column column in commodityLocationColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetCommodityLocationRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetCommodityLocationQueryFilter_Mobile(prmCommodityLocation), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetCommodityLocationRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.CommodityLocation; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetCommodityLocationDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmCommodityLocation.Column)column.Id) + { + //----------------------------------------------------------- + // CommodityLocation Category. + //----------------------------------------------------------- + // Notes. + case SlmCommodityLocation.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmCommodityLocation.Column.Status_Desc: + case SlmCommodityLocation.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmCommodityLocation.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmCommodityLocation.Column.Status_Ind) + value = new DataValue(SlmCommodityLocation.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockLevels.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockLevels.cs new file mode 100644 index 0000000..9efaee1 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockLevels.cs @@ -0,0 +1,342 @@ +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 + { + //******************************************************************* + // S t o c k L e v e l s + //******************************************************************* + // StockLevel exists. + public override bool StockLevelExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StockLevel. + public override SlmStockLevel CreateStockLevel (SysId commodityId, Slm.StockLevelType stockLevelType) + { + ClearErrorState(); + return new SlmStockLevel_Mobile(Site, null, commodityId, stockLevelType, 0); + } + + //------------------------------------------------------------------- + // Get StockLevel. + public override SlmStockLevel GetStockLevel (SlmStockLevel.Params prmStockLevel) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStockLevel GetStockLevelById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StockLevel. + public override bool IsValidStockLevelData (SlmStockLevel.Data data, SlmStockLevel.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStockLevelData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StockLevel. + public override bool InsertStockLevel (SlmStockLevel stockLevel, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStockLevel(stockLevel)) return false; + if (SysId.IsValid(stockLevel.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StockLevel. + public override bool UpdateStockLevel (SlmStockLevel stockLevel, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStockLevel(stockLevel)) return false; + if (!SysId.IsValid(stockLevel.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StockLevel. + public override bool StockLevelCanBeDeleted (SlmStockLevel stockLevel) + { + ClearErrorState(); + if (!base.StockLevelCanBeDeleted(stockLevel)) return false; + return true; + } + public override bool DeleteStockLevel (SlmStockLevel stockLevel, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StockLevelCanBeDeleted(stockLevel)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement stockLevelElement, SlmStockLevel stockLevel, DbUpdateInfo dbUpdateInfo) + { + stockLevelElement.AppendElement("Id", SysId.ToString(stockLevel.Id)); + stockLevelElement.AppendElement("StockLevelType", stockLevel.StockLevelType.ToString()); + stockLevelElement.AppendElement("CommodityId", SysId.ToString(stockLevel.CommodityId)); + stockLevelElement.AppendElement("LocationId", SysId.ToString(stockLevel.LocationId)); + stockLevelElement.AppendElement("StockDate", DateUtil.FormatXmlDateTime(stockLevel.StockDate)); + stockLevelElement.AppendElement("Quantity", stockLevel.Quantity.ToString("N3")); + stockLevelElement.AppendElement("ExternalRef", stockLevel.ExternalRef); + stockLevelElement.AppendElement("Containers", stockLevel.Containers.ToString("N3")); + stockLevelElement.AppendElement("Notes", stockLevel.Notes); + stockLevelElement.AppendElement("Status", SacsSystem.GetStatusCode(stockLevel.Status)); + stockLevelElement.AppendElement("Flags", stockLevel.Flags.ToString()); + if (!SysId.IsValid(stockLevel.Id)) + { + stockLevelElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + stockLevelElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + stockLevelElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + stockLevelElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + stockLevelElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + stockLevelElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement stockLevelElement, SlmStockLevel stockLevel) + { + //stockLevel.Id = new SysId(StringUtil.ToInt(stockLevelElement.GetChildText("Id"))); + //stockLevel.StockLevelType = EnumUtil.ParseEnum(stockLevelElement.GetChildText("StockLevelType"), Slm.StockLevelType.Unknown); + //stockLevel.CommodityId = new SysId(StringUtil.ToInt(stockLevelElement.GetChildText("CommodityId"))); + stockLevel.LocationId = new SysId(StringUtil.ToInt(stockLevelElement.GetChildText("LocationId"))); + stockLevel.StockDate = DateUtil.ParseXmlDateTime(stockLevelElement.GetChildText("StockDate")); + stockLevel.Quantity = StringUtil.ToDecimal(stockLevelElement.GetChildText("Quantity")); + stockLevel.ExternalRef = stockLevelElement.GetChildText("ExternalRef"); + stockLevel.Containers = StringUtil.ToShort(stockLevelElement.GetChildText("Containers")); + stockLevel.Notes = stockLevelElement.GetChildText("Notes"); + stockLevel.Status = SacsSystem.GetStatusForCode(stockLevelElement.GetChildText("Status")); + stockLevel.SetCreateStamp(DateUtil.ParseXmlDateTime(stockLevelElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(stockLevelElement.GetChildText("CreateBy"))), stockLevelElement.GetChildText("CreateHost")); + stockLevel.SetUpdateStamp(DateUtil.ParseXmlDateTime(stockLevelElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(stockLevelElement.GetChildText("UpdateBy"))), stockLevelElement.GetChildText("UpdateHost")); + stockLevel.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StockLevel column definitions. + public override ColumnDfn GetStockLevelColumnDfn (SlmStockLevel.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; + } + + //------------------------------------------------------------------- + // StockLevel query filter. + public override List GetStockLevelQueryFilter (SlmStockLevel.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStockLevelQueryFilter_Mobile (SlmStockLevel.Params prm) + { + Dictionary filter = new Dictionary(); + + // StockLevel Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + // Stock Level type: + if (prm.StockLevelType != 0) filter.Add("StockLevelType", prm.StockLevelType.ToString()); + + // 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)); + + // Location Ids. + if (prm.LocationIncludedIds.Count > 0) filter.Add("LocationIncludedIds", prm.LocationIncludedIds.Concat(",")); + if (prm.LocationExcludedIds.Count > 0) filter.Add("LocationExcludedIds", prm.LocationExcludedIds.Concat(",")); + + // 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; + } + // StockLevel sort columns. + public List GetStockLevelSortColumns (SlmStockLevel.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StockLevel count. + public override long GetStockLevelCount (SlmStockLevel.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StockLevel list. + public override List GetStockLevelList (SlmStockLevel.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStockLevelList_Mobile (SlmStockLevel.Params prmStockLevel, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStockLevelList_Mobile"; + + // StockLevel columns. + List columns = new List() + { + SlmStockLevel.Column.Id, + SlmStockLevel.Column.StockLevelType, + SlmStockLevel.Column.CommodityId, + SlmStockLevel.Column.LocationId, + SlmStockLevel.Column.StockDate, + SlmStockLevel.Column.Quantity, + SlmStockLevel.Column.ExternalRef, + SlmStockLevel.Column.Containers, + SlmStockLevel.Column.Notes, + SlmStockLevel.Column.Flags, + SlmStockLevel.Column.Status + }; + + List itemDataList = await ExecuteStockLevelQuery_Mobile(columns, prmStockLevel, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStockLevel.Column.Id); + SysId commodityId = itemData.GetIdValue(SlmStockLevel.Column.CommodityId); + Slm.StockLevelType stockLevelType = EnumUtil.ParseEnum(itemData.GetValue(SlmStockLevel.Column.StockLevelType), Slm.StockLevelType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SlmStockLevel.Column.Id); + // Create item. + SlmStockLevel_Mobile stockLevel = new SlmStockLevel_Mobile(Site, id, commodityId, stockLevelType, flags); + // Populate item properties. + foreach (SlmStockLevel.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStockLevel.Column.StockLevelType: stockLevel.StockLevelType = EnumUtil.ParseEnum(value, Slm.StockLevelType.Unknown); break; + //case SlmStockLevel.Column.CommodityId: stockLevel.CommodityId = itemData.GetIdValue(column); break; + case SlmStockLevel.Column.LocationId: stockLevel.LocationId = itemData.GetIdValue(column); break; + case SlmStockLevel.Column.StockDate: stockLevel.StockDate = itemData.GetDateTimeValue(column); break; + case SlmStockLevel.Column.Quantity: stockLevel.Quantity = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SlmStockLevel.Column.ExternalRef: stockLevel.ExternalRef = value; break; + case SlmStockLevel.Column.Containers: stockLevel.Containers = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SlmStockLevel.Column.Notes: stockLevel.Notes = value; break; + case SlmStockLevel.Column.Status: stockLevel.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(stockLevel); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StockLevel query execution. + public override DbResultSet ExecuteStockLevelQuery (List columns, SlmStockLevel.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStockLevelQuery_Mobile (List stockLevelColumns, SlmStockLevel.Params prmStockLevel, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStockLevel.Column column in stockLevelColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStockLevelRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStockLevelQueryFilter_Mobile(prmStockLevel), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStockLevelRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StockLevel; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStockLevelDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStockLevel.Column)column.Id) + { + //----------------------------------------------------------- + // StockLevel Category. + //----------------------------------------------------------- + // Notes. + case SlmStockLevel.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStockLevel.Column.Status_Desc: + case SlmStockLevel.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStockLevel.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStockLevel.Column.Status_Ind) + value = new DataValue(SlmStockLevel.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockLoadings.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockLoadings.cs new file mode 100644 index 0000000..08733c5 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockLoadings.cs @@ -0,0 +1,323 @@ +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 + { + //******************************************************************* + // S t o c k L o a d i n g s + //******************************************************************* + // StockLoading exists. + public override bool StockLoadingExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StockLoading. + public override SlmStockLoading CreateStockLoading (SysId locationId) + { + ClearErrorState(); + return new SlmStockLoading_Mobile(Site, null, locationId, 0); + } + + //------------------------------------------------------------------- + // Get StockLoading. + public override SlmStockLoading GetStockLoading (SlmStockLoading.Params prmStockLoading) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStockLoading GetStockLoadingById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StockLoading. + public override bool IsValidStockLoadingData (SlmStockLoading.Data data, SlmStockLoading.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStockLoadingData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StockLoading. + public override bool InsertStockLoading (SlmStockLoading stockLoading, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStockLoading(stockLoading)) return false; + if (SysId.IsValid(stockLoading.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StockLoading. + public override bool UpdateStockLoading (SlmStockLoading stockLoading, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStockLoading(stockLoading)) return false; + if (!SysId.IsValid(stockLoading.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StockLoading. + public override bool StockLoadingCanBeDeleted (SlmStockLoading stockLoading) + { + ClearErrorState(); + if (!base.StockLoadingCanBeDeleted(stockLoading)) return false; + return true; + } + public override bool DeleteStockLoading (SlmStockLoading stockLoading, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StockLoadingCanBeDeleted(stockLoading)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement stockLoadingElement, SlmStockLoading stockLoading, DbUpdateInfo dbUpdateInfo) + { + stockLoadingElement.AppendElement("Id", SysId.ToString(stockLoading.Id)); + stockLoadingElement.AppendElement("LocationId", SysId.ToString(stockLoading.LocationId)); + stockLoadingElement.AppendElement("RecordedAt", DateUtil.FormatXmlDateTime(stockLoading.RecordedAt)); + stockLoadingElement.AppendElement("LoadingTemplate", stockLoading.LoadingTemplate); + stockLoadingElement.AppendElement("LoadingData", stockLoading.LoadingData); + stockLoadingElement.AppendElement("Notes", stockLoading.Notes); + stockLoadingElement.AppendElement("Status", SacsSystem.GetStatusCode(stockLoading.Status)); + stockLoadingElement.AppendElement("Flags", stockLoading.Flags.ToString()); + if (!SysId.IsValid(stockLoading.Id)) + { + stockLoadingElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + stockLoadingElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + stockLoadingElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + stockLoadingElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + stockLoadingElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + stockLoadingElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement stockLoadingElement, SlmStockLoading stockLoading) + { + //stockLoading.Id = new SysId(StringUtil.ToInt(stockLoadingElement.GetChildText("Id"))); + //stockLoading.LocationId = new SysId(StringUtil.ToInt(stockLoadingElement.GetChildText("LocationId"))); + stockLoading.RecordedAt = DateUtil.ParseXmlDateTime(stockLoadingElement.GetChildText("RecordedAt")); + stockLoading.LoadingTemplate = stockLoadingElement.GetChildText("LoadingTemplate"); + stockLoading.LoadingData = stockLoadingElement.GetChildText("LoadingData"); + stockLoading.Notes = stockLoadingElement.GetChildText("Notes"); + stockLoading.Status = SacsSystem.GetStatusForCode(stockLoadingElement.GetChildText("Status")); + stockLoading.SetCreateStamp(DateUtil.ParseXmlDateTime(stockLoadingElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(stockLoadingElement.GetChildText("CreateBy"))), stockLoadingElement.GetChildText("CreateHost")); + stockLoading.SetUpdateStamp(DateUtil.ParseXmlDateTime(stockLoadingElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(stockLoadingElement.GetChildText("UpdateBy"))), stockLoadingElement.GetChildText("UpdateHost")); + stockLoading.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StockLoading column definitions. + public override ColumnDfn GetStockLoadingColumnDfn (SlmStockLoading.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; + } + + //------------------------------------------------------------------- + // StockLoading query filter. + public override List GetStockLoadingQueryFilter (SlmStockLoading.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStockLoadingQueryFilter_Mobile (SlmStockLoading.Params prm) + { + Dictionary filter = new Dictionary(); + + // StockLoading Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + // Stock Location Id. + if (SysId.IsValid(prm.StockLocationId)) filter.Add("StockLocationId", SysId.ToString(prm.StockLocationId)); + + // Recorded. + if (DateUtil.IsValid(prm.RecordedFrom)) filter.Add("RecordedFrom", DateUtil.FormatXmlDate(prm.RecordedFrom)); + if (DateUtil.IsValid(prm.RecordedTo)) filter.Add("RecordedTo", DateUtil.FormatXmlDate(prm.RecordedTo)); + + // 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; + } + // StockLoading sort columns. + public List GetStockLoadingSortColumns (SlmStockLoading.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StockLoading count. + public override long GetStockLoadingCount (SlmStockLoading.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StockLoading list. + public override List GetStockLoadingList (SlmStockLoading.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStockLoadingList_Mobile (SlmStockLoading.Params prmStockLoading, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStockLoadingList_Mobile"; + + // StockLoading columns. + List columns = new List() + { + SlmStockLoading.Column.Id, + SlmStockLoading.Column.LocationId, + SlmStockLoading.Column.RecordedAt, + SlmStockLoading.Column.LoadingTemplate, + SlmStockLoading.Column.LoadingData, + SlmStockLoading.Column.Notes, + SlmStockLoading.Column.Flags, + SlmStockLoading.Column.Status + }; + + List itemDataList = await ExecuteStockLoadingQuery_Mobile(columns, prmStockLoading, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStockLoading.Column.Id); + SysId locationId = itemData.GetIdValue(SlmStockLoading.Column.LocationId); + ushort flags = (ushort)itemData.GetIntValue(SlmStockLoading.Column.Id); + // Create item. + SlmStockLoading_Mobile stockLoading = new SlmStockLoading_Mobile(Site, id, locationId, flags); + // Populate item properties. + foreach (SlmStockLoading.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStockLoading.Column.LocationId: stockLoading.LocationId = itemData.GetIdValue(column); break; + case SlmStockLoading.Column.RecordedAt: stockLoading.RecordedAt = itemData.GetDateTimeValue(column); break; + case SlmStockLoading.Column.LoadingTemplate: stockLoading.LoadingTemplate = value; break; + case SlmStockLoading.Column.LoadingData: stockLoading.LoadingData = value; break; + case SlmStockLoading.Column.Notes: stockLoading.Notes = value; break; + case SlmStockLoading.Column.Status: stockLoading.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(stockLoading); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StockLoading query execution. + public override DbResultSet ExecuteStockLoadingQuery (List columns, SlmStockLoading.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStockLoadingQuery_Mobile (List stockLoadingColumns, SlmStockLoading.Params prmStockLoading, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStockLoading.Column column in stockLoadingColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStockLoadingRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStockLoadingQueryFilter_Mobile(prmStockLoading), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStockLoadingRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StockLoading; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStockLoadingDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStockLoading.Column)column.Id) + { + //----------------------------------------------------------- + // StockLoading Category. + //----------------------------------------------------------- + // Notes. + case SlmStockLoading.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStockLoading.Column.Status_Desc: + case SlmStockLoading.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStockLoading.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStockLoading.Column.Status_Ind) + value = new DataValue(SlmStockLoading.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockLocations.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockLocations.cs new file mode 100644 index 0000000..6819cd4 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockLocations.cs @@ -0,0 +1,330 @@ +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 + { + //******************************************************************* + // S t o c k L o c a t i o n s + //******************************************************************* + // StockLocation exists. + public override bool StockLocationExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StockLocation. + public override SlmStockLocation CreateStockLocation (SysId locationIdParent, Slm.StockLocationType stockLocationType) + { + ClearErrorState(); + return new SlmStockLocation_Mobile(Site, null, locationIdParent, stockLocationType, 0); + } + + //------------------------------------------------------------------- + // Get StockLocation. + public override SlmStockLocation GetStockLocation (SlmStockLocation.Params prmStockLocation) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStockLocation GetStockLocationById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StockLocation. + public override bool IsValidStockLocationData (SlmStockLocation.Data data, SlmStockLocation.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStockLocationData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StockLocation. + public override bool InsertStockLocation (SlmStockLocation stockLocation, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStockLocation(stockLocation)) return false; + if (SysId.IsValid(stockLocation.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StockLocation. + public override bool UpdateStockLocation (SlmStockLocation stockLocation, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStockLocation(stockLocation)) return false; + if (!SysId.IsValid(stockLocation.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StockLocation. + public override bool StockLocationCanBeDeleted (SlmStockLocation stockLocation) + { + ClearErrorState(); + if (!base.StockLocationCanBeDeleted(stockLocation)) return false; + return true; + } + public override bool DeleteStockLocation (SlmStockLocation stockLocation, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StockLocationCanBeDeleted(stockLocation)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement stockLocationElement, SlmStockLocation stockLocation, DbUpdateInfo dbUpdateInfo) + { + stockLocationElement.AppendElement("Id", SysId.ToString(stockLocation.Id)); + stockLocationElement.AppendElement("StockLocationType", stockLocation.StockLocationType.ToString()); + stockLocationElement.AppendElement("LocationIdParent", SysId.ToString(stockLocation.LocationIdParent)); + stockLocationElement.AppendElement("Code", stockLocation.Code); + stockLocationElement.AppendElement("Caption", stockLocation.Caption); + stockLocationElement.AppendElement("LoadingTemplate", stockLocation.LoadingTemplate); + stockLocationElement.AppendElement("Notes", stockLocation.Notes); + stockLocationElement.AppendElement("Status", SacsSystem.GetStatusCode(stockLocation.Status)); + stockLocationElement.AppendElement("Flags", stockLocation.Flags.ToString()); + if (!SysId.IsValid(stockLocation.Id)) + { + stockLocationElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + stockLocationElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + stockLocationElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + stockLocationElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + stockLocationElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + stockLocationElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement stockLocationElement, SlmStockLocation stockLocation) + { + //stockLocation.Id = new SysId(StringUtil.ToInt(stockLocationElement.GetChildText("Id"))); + //stockLocation.StockLocationType = EnumUtil.ParseEnum(stockLocationElement.GetChildText("StockLocationType"), Slm.StockLocationType.Unknown); + //stockLocation.LocationIdParent = new SysId(StringUtil.ToInt(stockLocationElement.GetChildText("LocationIdParent"))); + stockLocation.Code = stockLocationElement.GetChildText("Code"); + stockLocation.Caption = stockLocationElement.GetChildText("Caption"); + stockLocation.LoadingTemplate = stockLocationElement.GetChildText("LoadingTemplate"); + stockLocation.Notes = stockLocationElement.GetChildText("Notes"); + stockLocation.Status = SacsSystem.GetStatusForCode(stockLocationElement.GetChildText("Status")); + stockLocation.SetCreateStamp(DateUtil.ParseXmlDateTime(stockLocationElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(stockLocationElement.GetChildText("CreateBy"))), stockLocationElement.GetChildText("CreateHost")); + stockLocation.SetUpdateStamp(DateUtil.ParseXmlDateTime(stockLocationElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(stockLocationElement.GetChildText("UpdateBy"))), stockLocationElement.GetChildText("UpdateHost")); + stockLocation.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StockLocation column definitions. + public override ColumnDfn GetStockLocationColumnDfn (SlmStockLocation.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; + } + + //------------------------------------------------------------------- + // StockLocation query filter. + public override List GetStockLocationQueryFilter (SlmStockLocation.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStockLocationQueryFilter_Mobile (SlmStockLocation.Params prm) + { + Dictionary filter = new Dictionary(); + + // StockLocation Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + // Stock Location type: + if (prm.StockLocationType != 0) filter.Add("StockLocationType", prm.StockLocationType.ToString()); + + // Parent Id. + if (SysId.IsValid(prm.ParentId)) filter.Add("ParentId", SysId.ToString(prm.ParentId)); + + // Ignore Parent. + if (prm.IgnoreParent != false) filter.Add("IgnoreParent", prm.IgnoreParent.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; + } + // StockLocation sort columns. + public List GetStockLocationSortColumns (SlmStockLocation.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StockLocation count. + public override long GetStockLocationCount (SlmStockLocation.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StockLocation list. + public override List GetStockLocationList (SlmStockLocation.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStockLocationList_Mobile (SlmStockLocation.Params prmStockLocation, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStockLocationList_Mobile"; + + // StockLocation columns. + List columns = new List() + { + SlmStockLocation.Column.Id, + SlmStockLocation.Column.StockLocationType, + SlmStockLocation.Column.LocationIdParent, + SlmStockLocation.Column.Code, + SlmStockLocation.Column.Caption, + SlmStockLocation.Column.LoadingTemplate, + SlmStockLocation.Column.Notes, + SlmStockLocation.Column.Flags, + SlmStockLocation.Column.Status + }; + + List itemDataList = await ExecuteStockLocationQuery_Mobile(columns, prmStockLocation, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStockLocation.Column.Id); + SysId locationIdParent = itemData.GetIdValue(SlmStockLocation.Column.LocationIdParent); + Slm.StockLocationType stockLocationType = EnumUtil.ParseEnum(itemData.GetValue(SlmStockLocation.Column.StockLocationType), Slm.StockLocationType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SlmStockLocation.Column.Id); + // Create item. + SlmStockLocation_Mobile stockLocation = new SlmStockLocation_Mobile(Site, id, locationIdParent, stockLocationType, flags); + // Populate item properties. + foreach (SlmStockLocation.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStockLocation.Column.StockLocationType: stockLocation.StockLocationType = EnumUtil.ParseEnum(value, Slm.StockLocationType.Unknown); break; + //case SlmStockLocation.Column.LocationIdParent: stockLocation.LocationIdParent = itemData.GetIdValue(column); break; + case SlmStockLocation.Column.Code: stockLocation.Code = value; break; + case SlmStockLocation.Column.Caption: stockLocation.Caption = value; break; + case SlmStockLocation.Column.LoadingTemplate: stockLocation.LoadingTemplate = value; break; + case SlmStockLocation.Column.Notes: stockLocation.Notes = value; break; + case SlmStockLocation.Column.Status: stockLocation.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(stockLocation); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StockLocation query execution. + public override DbResultSet ExecuteStockLocationQuery (List columns, SlmStockLocation.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStockLocationQuery_Mobile (List stockLocationColumns, SlmStockLocation.Params prmStockLocation, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStockLocation.Column column in stockLocationColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStockLocationRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStockLocationQueryFilter_Mobile(prmStockLocation), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStockLocationRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StockLocation; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStockLocationDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStockLocation.Column)column.Id) + { + //----------------------------------------------------------- + // StockLocation Category. + //----------------------------------------------------------- + // Notes. + case SlmStockLocation.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStockLocation.Column.Status_Desc: + case SlmStockLocation.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStockLocation.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStockLocation.Column.Status_Ind) + value = new DataValue(SlmStockLocation.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockMovements.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockMovements.cs new file mode 100644 index 0000000..89e0d17 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile-StockMovements.cs @@ -0,0 +1,360 @@ +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 + { + //******************************************************************* + // S t o c k M o v e m e n t s + //******************************************************************* + // StockMovement exists. + public override bool StockMovementExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StockMovement. + public override SlmStockMovement CreateStockMovement (SysId commodityId, Slm.StockMovementType stockMovementType) + { + ClearErrorState(); + return new SlmStockMovement_Mobile(Site, null, commodityId, stockMovementType, 0); + } + + //------------------------------------------------------------------- + // Get StockMovement. + public override SlmStockMovement GetStockMovement (SlmStockMovement.Params prmStockMovement) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStockMovement GetStockMovementById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StockMovement. + public override bool IsValidStockMovementData (SlmStockMovement.Data data, SlmStockMovement.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStockMovementData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StockMovement. + public override bool InsertStockMovement (SlmStockMovement stockMovement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStockMovement(stockMovement)) return false; + if (SysId.IsValid(stockMovement.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StockMovement. + public override bool UpdateStockMovement (SlmStockMovement stockMovement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStockMovement(stockMovement)) return false; + if (!SysId.IsValid(stockMovement.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StockMovement. + public override bool StockMovementCanBeDeleted (SlmStockMovement stockMovement) + { + ClearErrorState(); + if (!base.StockMovementCanBeDeleted(stockMovement)) return false; + return true; + } + public override bool DeleteStockMovement (SlmStockMovement stockMovement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StockMovementCanBeDeleted(stockMovement)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement stockMovementElement, SlmStockMovement stockMovement, DbUpdateInfo dbUpdateInfo) + { + stockMovementElement.AppendElement("Id", SysId.ToString(stockMovement.Id)); + stockMovementElement.AppendElement("CommodityId", SysId.ToString(stockMovement.CommodityId)); + stockMovementElement.AppendElement("StockMovementType", stockMovement.StockMovementType.ToString()); + stockMovementElement.AppendElement("StockMovementDirection", stockMovement.StockMovementDirection.ToString()); + stockMovementElement.AppendElement("LocationIdFrom", SysId.ToString(stockMovement.LocationIdFrom)); + stockMovementElement.AppendElement("LocationIdTo", SysId.ToString(stockMovement.LocationIdTo)); + stockMovementElement.AppendElement("Started", DateUtil.FormatXmlDateTime(stockMovement.Started)); + stockMovementElement.AppendElement("Completed", DateUtil.FormatXmlDateTime(stockMovement.Completed)); + stockMovementElement.AppendElement("Quantity", stockMovement.Quantity.ToString("N3")); + stockMovementElement.AppendElement("ExternalRef", stockMovement.ExternalRef); + stockMovementElement.AppendElement("SystemRef", stockMovement.SystemRef); + stockMovementElement.AppendElement("StockMovementData", stockMovement.StockMovementData); + stockMovementElement.AppendElement("Notes", stockMovement.Notes); + stockMovementElement.AppendElement("Status", SacsSystem.GetStatusCode(stockMovement.Status)); + stockMovementElement.AppendElement("Flags", stockMovement.Flags.ToString()); + if (!SysId.IsValid(stockMovement.Id)) + { + stockMovementElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + stockMovementElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + stockMovementElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + stockMovementElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + stockMovementElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + stockMovementElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement stockMovementElement, SlmStockMovement stockMovement) + { + //stockMovement.Id = new SysId(StringUtil.ToInt(stockMovementElement.GetChildText("Id"))); + //stockMovement.CommodityId = new SysId(StringUtil.ToInt(stockMovementElement.GetChildText("CommodityId"))); + //stockMovement.StockMovementType = EnumUtil.ParseEnum(stockMovementElement.GetChildText("StockMovementType"), Slm.StockMovementType.Unknown); + stockMovement.LocationIdFrom = new SysId(StringUtil.ToInt(stockMovementElement.GetChildText("LocationIdFrom"))); + stockMovement.LocationIdTo = new SysId(StringUtil.ToInt(stockMovementElement.GetChildText("LocationIdTo"))); + stockMovement.Started = DateUtil.ParseXmlDateTime(stockMovementElement.GetChildText("Started")); + stockMovement.Completed = DateUtil.ParseXmlDateTime(stockMovementElement.GetChildText("Completed")); + stockMovement.Quantity = StringUtil.ToDecimal(stockMovementElement.GetChildText("Quantity")); + stockMovement.ExternalRef = stockMovementElement.GetChildText("ExternalRef"); + stockMovement.SystemRef = stockMovementElement.GetChildText("SystemRef"); + stockMovement.StockMovementData = stockMovementElement.GetChildText("StockMovementData"); + stockMovement.Notes = stockMovementElement.GetChildText("Notes"); + stockMovement.Status = SacsSystem.GetStatusForCode(stockMovementElement.GetChildText("Status")); + stockMovement.SetCreateStamp(DateUtil.ParseXmlDateTime(stockMovementElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(stockMovementElement.GetChildText("CreateBy"))), stockMovementElement.GetChildText("CreateHost")); + stockMovement.SetUpdateStamp(DateUtil.ParseXmlDateTime(stockMovementElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(stockMovementElement.GetChildText("UpdateBy"))), stockMovementElement.GetChildText("UpdateHost")); + stockMovement.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StockMovement column definitions. + public override ColumnDfn GetStockMovementColumnDfn (SlmStockMovement.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; + } + + //------------------------------------------------------------------- + // StockMovement query filter. + public override List GetStockMovementQueryFilter (SlmStockMovement.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStockMovementQueryFilter_Mobile (SlmStockMovement.Params prm) + { + Dictionary filter = new Dictionary(); + + // StockMovement Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + // Commodity Id. + if (SysId.IsValid(prm.CommodityId)) filter.Add("CommodityId", SysId.ToString(prm.CommodityId)); + + // Location Ids. + if (SysId.IsValid(prm.LocationFromId)) filter.Add("LocationFromId", SysId.ToString(prm.LocationFromId)); + if (SysId.IsValid(prm.LocationToId)) filter.Add("LocationToId", SysId.ToString(prm.LocationToId)); + + // Stock Movement type. + if (prm.StockMovementType != 0) filter.Add("StockMovementType", prm.StockMovementType.ToString()); + + // Stock Movement direction. + if (prm.StockMovementDirection != 0) filter.Add("StockMovementDirection", prm.StockMovementDirection.ToString()); + + // Movement. + if (DateUtil.IsValid(prm.Movement)) filter.Add("Movement", DateUtil.FormatXmlDate(prm.Movement)); + + // 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; + } + // StockMovement sort columns. + public List GetStockMovementSortColumns (SlmStockMovement.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StockMovement count. + public override long GetStockMovementCount (SlmStockMovement.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StockMovement list. + public override List GetStockMovementList (SlmStockMovement.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStockMovementList_Mobile (SlmStockMovement.Params prmStockMovement, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStockMovementList_Mobile"; + + // StockMovement columns. + List columns = new List() + { + SlmStockMovement.Column.Id, + SlmStockMovement.Column.CommodityId, + SlmStockMovement.Column.StockMovementType, + SlmStockMovement.Column.StockMovementDirection, + SlmStockMovement.Column.LocationIdFrom, + SlmStockMovement.Column.LocationIdTo, + SlmStockMovement.Column.Started, + SlmStockMovement.Column.Completed, + SlmStockMovement.Column.Quantity, + SlmStockMovement.Column.ExternalRef, + SlmStockMovement.Column.SystemRef, + SlmStockMovement.Column.StockMovementData, + SlmStockMovement.Column.Notes, + SlmStockMovement.Column.Flags, + SlmStockMovement.Column.Status + }; + + List itemDataList = await ExecuteStockMovementQuery_Mobile(columns, prmStockMovement, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStockMovement.Column.Id); + SysId commodityId = itemData.GetIdValue(SlmStockMovement.Column.CommodityId); + Slm.StockMovementType stockMovementType = EnumUtil.ParseEnum(itemData.GetValue(SlmStockMovement.Column.StockMovementType), Slm.StockMovementType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SlmStockMovement.Column.Id); + // Create item. + SlmStockMovement_Mobile stockMovement = new SlmStockMovement_Mobile(Site, id, commodityId, stockMovementType, flags); + // Populate item properties. + foreach (SlmStockMovement.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStockMovement.Column.CommodityId: stockMovement.CommodityId = itemData.GetIdValue(column); break; + //case SlmStockMovement.Column.StockMovementType: stockMovement.StockMovementType = EnumUtil.ParseEnum(value, Slm.StockMovementType.Unknown); break; + case SlmStockMovement.Column.StockMovementDirection: stockMovement.StockMovementDirection = EnumUtil.ParseEnum(value, Slm.StockMovementDirection.Unknown); break; + case SlmStockMovement.Column.LocationIdFrom: stockMovement.LocationIdFrom = itemData.GetIdValue(column); break; + case SlmStockMovement.Column.LocationIdTo: stockMovement.LocationIdTo = itemData.GetIdValue(column); break; + case SlmStockMovement.Column.Started: stockMovement.Started = itemData.GetDateTimeValue(column); break; + case SlmStockMovement.Column.Completed: stockMovement.Completed = itemData.GetDateTimeValue(column); break; + case SlmStockMovement.Column.Quantity: stockMovement.Quantity = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SlmStockMovement.Column.ExternalRef: stockMovement.ExternalRef = value; break; + case SlmStockMovement.Column.SystemRef: stockMovement.SystemRef = value; break; + case SlmStockMovement.Column.StockMovementData: stockMovement.StockMovementData = value; break; + case SlmStockMovement.Column.Notes: stockMovement.Notes = value; break; + case SlmStockMovement.Column.Status: stockMovement.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(stockMovement); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StockMovement query execution. + public override DbResultSet ExecuteStockMovementQuery (List columns, SlmStockMovement.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStockMovementQuery_Mobile (List stockMovementColumns, SlmStockMovement.Params prmStockMovement, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStockMovement.Column column in stockMovementColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStockMovementRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStockMovementQueryFilter_Mobile(prmStockMovement), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStockMovementRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StockMovement; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStockMovementDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStockMovement.Column)column.Id) + { + //----------------------------------------------------------- + // StockMovement Category. + //----------------------------------------------------------- + // Notes. + case SlmStockMovement.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStockMovement.Column.Status_Desc: + case SlmStockMovement.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStockMovement.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStockMovement.Column.Status_Ind) + value = new DataValue(SlmStockMovement.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_Mobile.cs new file mode 100644 index 0000000..8c5e26e --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmCommodityMgr_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 SlmCommodityMgr_Mobile : SlmCommodityMgr + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SlmWebServiceClient webServiceClient = new SlmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SlmCommodityMgr_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/SlmItemDataMgr_Mobile-DataItemValues.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmItemDataMgr_Mobile-DataItemValues.cs new file mode 100644 index 0000000..61bb5d5 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmItemDataMgr_Mobile-DataItemValues.cs @@ -0,0 +1,337 @@ +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 SlmItemDataMgr_Mobile + { + //******************************************************************* + // D a t a I t e m V a l u e + //******************************************************************* + // Utilities. + public override bool ItemHasDataItemValues (ItemId itemId) + { + SlmDataItemValue.Params prmDataItemValue = new SlmDataItemValue.Params(); + prmDataItemValue.ItemId = itemId; + return GetDataItemValueCount(prmDataItemValue) == 1; + } + + // Create DataItemValue. + public override SlmDataItemValue CreateDataItemValue (ItemId itemId, Slm.ItemValueType valueType) + { + ClearErrorState(); + return new SlmDataItemValue_Mobile(Site, itemId, valueType, 0); + } + + //------------------------------------------------------------------- + // Get DataItemValue. + public override SlmDataItemValue GetDataItemValue (SlmDataItemValue.Params prmDataItemValue) + { + ClearErrorState(); + throw new NotImplementedException(); + } + //------------------------------------------------------------------- + // Validate DataItemValue. + public override bool IsValidDataItemValueData (SlmDataItemValue.Data data, SlmDataItemValue.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidDataItemValueData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Store Data Item Values. + public override bool StoreDataItemValues (ItemId itemId, List dataItemValues, DbUpdateInfo dbUpdateInfo) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Insert DataItemValue. + public override bool InsertDataItemValue (SlmDataItemValue dataItemValue, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidDataItemValue(dataItemValue)) return false; + if (SysId.IsValid(dataItemValue.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update DataItemValue. + public override bool UpdateDataItemValue (SlmDataItemValue dataItemValue, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidDataItemValue(dataItemValue)) return false; + if (!SysId.IsValid(dataItemValue.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete DataItemValue. + public override bool DataItemValueCanBeDeleted (SlmDataItemValue dataItemValue) + { + ClearErrorState(); + if (!base.DataItemValueCanBeDeleted(dataItemValue)) return false; + return true; + } + public override bool DeleteDataItemValue (SlmDataItemValue dataItemValue, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!DataItemValueCanBeDeleted(dataItemValue)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement dataItemValueElement, SlmDataItemValue dataItemValue, DbUpdateInfo dbUpdateInfo) + { + dataItemValueElement.AppendElement("Id", SysId.ToString(dataItemValue.Id)); + dataItemValueElement.AppendElement("ItemId", dataItemValue.ItemId.ToString()); + dataItemValueElement.AppendElement("ItemValueType", dataItemValue.ItemValueType.ToString()); + dataItemValueElement.AppendElement("Value", dataItemValue.Value); + dataItemValueElement.AppendElement("Notes", dataItemValue.Notes); + dataItemValueElement.AppendElement("Status", SacsSystem.GetStatusCode(dataItemValue.Status)); + dataItemValueElement.AppendElement("Flags", dataItemValue.Flags.ToString()); + if (!SysId.IsValid(dataItemValue.Id)) + { + dataItemValueElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + dataItemValueElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + dataItemValueElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + dataItemValueElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + dataItemValueElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + dataItemValueElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement dataItemValueElement, SlmDataItemValue dataItemValue) + { + //dataItemValue.Id = new SysId(StringUtil.ToInt(dataItemValueElement.GetChildText("Id"))); + //dataItemValue.ItemId = EnumUtil.ParseEnum(dataItemValueElement.GetChildText("ItemId"), Slm.ItemId.Unknown); + //dataItemValue.ItemValueType = EnumUtil.ParseEnum(dataItemValueElement.GetChildText("ItemValueType"), Slm.ItemValueType.Unknown); + dataItemValue.Value = dataItemValueElement.GetChildText("Value"); + dataItemValue.Notes = dataItemValueElement.GetChildText("Notes"); + dataItemValue.Status = SacsSystem.GetStatusForCode(dataItemValueElement.GetChildText("Status")); + dataItemValue.SetCreateStamp(DateUtil.ParseXmlDateTime(dataItemValueElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(dataItemValueElement.GetChildText("CreateBy"))), dataItemValueElement.GetChildText("CreateHost")); + dataItemValue.SetUpdateStamp(DateUtil.ParseXmlDateTime(dataItemValueElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(dataItemValueElement.GetChildText("UpdateBy"))), dataItemValueElement.GetChildText("UpdateHost")); + dataItemValue.AcceptChanges(); + } + + //------------------------------------------------------------------- + // DataItemValue column definitions. + public override ColumnDfn GetDataItemValueColumnDfn (SlmDataItemValue.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; + } + + //------------------------------------------------------------------- + // DataItemValue query filter. + public override List GetDataItemValueQueryFilter (SlmDataItemValue.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetDataItemValueQueryFilter_Mobile (SlmDataItemValue.Params prm) + { + Dictionary filter = new Dictionary(); + + // Item Id. + if (prm.ItemId.Type > 0) filter.Add("ItemId.Type", ((Slm.DataItemType)prm.ItemId.Type).ToString()); + if (SysId.IsValid(prm.ItemId.Id)) filter.Add("ItemId.Id", SysId.ToString(prm.ItemId.Id)); + + // Movement type: + if (prm.ItemValueType != 0) filter.Add("ItemValueType", prm.ItemValueType.ToString()); + + // Name. + if (!StringUtil.IsEmpty(prm.Value)) filter.Add("Value", prm.Value); + if (!StringUtil.IsEmpty(prm.ValuePartial)) filter.Add("ValuePartial", prm.ValuePartial); + + // 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; + } + // DataItemValue sort columns. + public List GetDataItemValueSortColumns (SlmDataItemValue.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // DataItemValue count. + public override long GetDataItemValueCount (SlmDataItemValue.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // DataItemValue list. + public override List GetDataItemValueList (SlmDataItemValue.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetDataItemValueList_Mobile (SlmDataItemValue.Params prmDataItemValue, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetDataItemValueList_Mobile"; + + // DataItemValue columns. + List columns = new List() + { + SlmDataItemValue.Column.ItemId, + SlmDataItemValue.Column.ItemType, + SlmDataItemValue.Column.Value, + SlmDataItemValue.Column.Flags, + SlmDataItemValue.Column.Status + }; + + List itemDataList = await ExecuteDataItemValueQuery_Mobile(columns, prmDataItemValue, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + //SysId id = itemData.GetIdValue(SlmDataItemValue.Column.Id); + ItemId itemId = new ItemId(); + Slm.ItemValueType valueType = EnumUtil.ParseEnum(itemData.GetValue(SlmDataItemValue.Column.ValueType), Slm.ItemValueType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SlmDataItemValue.Column.ItemId); + // Create item. + SlmDataItemValue_Mobile dataItemValue = new SlmDataItemValue_Mobile(Site, itemId, valueType, flags); + // Populate item properties. + foreach (SlmDataItemValue.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmDataItemValue.Column.DataItemValueCategory: dataItemValue.DataItemValueCategory; break; + //case SlmDataItemValue.Column.ItemId: dataItemValue.ItemId = EnumUtil.ParseEnum(value, ItemId.Unknown); break; + //case SlmDataItemValue.Column.ItemType: dataItemValue.ItemValueType = EnumUtil.ParseEnum(value, Slm.ItemValueType.Unknown); break; + case SlmDataItemValue.Column.Value: dataItemValue.Value = value; break; + case SlmDataItemValue.Column.Status: dataItemValue.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(dataItemValue); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // DataItemValue query execution. + public override DbResultSet ExecuteDataItemValueQuery (List columns, SlmDataItemValue.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteDataItemValueQuery_Mobile (List dataItemValueColumns, SlmDataItemValue.Params prmDataItemValue, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmDataItemValue.Column column in dataItemValueColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetDataItemValueRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetDataItemValueQueryFilter_Mobile(prmDataItemValue), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetDataItemValueRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.DataItemValue; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetDataItemValueDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmDataItemValue.Column)column.Id) + { + //----------------------------------------------------------- + // Item type. + case SlmDataItemValue.Column.ItemType_Desc: + { + Slm.DataItemType dataItemType = (Slm.DataItemType)values.GetValue(column.DataName).AsLong(); + value = new DataValue(dataItemTypes.GetDescForType((int)dataItemType, dataItemType.ToString())); + } + break; + + //----------------------------------------------------------- + // Value type. + case SlmDataItemValue.Column.ValueType_Desc: + { + Slm.ItemValueType itemValueType = (Slm.ItemValueType)values.GetValue(column.DataName).AsLong(); + value = new DataValue(itemValueTypes.GetDescForType((int)itemValueType, itemValueType.ToString())); + } + break; + + //----------------------------------------------------------- + // Status. + case SlmDataItemValue.Column.Status_Desc: + case SlmDataItemValue.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmDataItemValue.Column.Status_Desc) + { + String statusDesc = SacsSystem.GetStatusDescForCode(statusCode); + value = new DataValue(statusDesc); + } + else if (column.Id == (int)SlmDataItemValue.Column.Status_Ind) + { + DataValue.TriStateType triState = DataValue.TriStateType.Unknown; + if (status == SaStatus.Active) + triState = DataValue.TriStateType.Green; + else if (status == SaStatus.Inactive) + triState = DataValue.TriStateType.Red; + value = new DataValue(triState); + } + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmItemDataMgr_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmItemDataMgr_Mobile.cs new file mode 100644 index 0000000..587783b --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmItemDataMgr_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 SlmItemDataMgr_Mobile : SlmItemDataMgr + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SlmWebServiceClient webServiceClient = new SlmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SlmItemDataMgr_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/SlmStaffMgr_Mobile-StaffAllocations.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffAllocations.cs new file mode 100644 index 0000000..c8d85be --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffAllocations.cs @@ -0,0 +1,319 @@ +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 SlmStaffMgr_Mobile + { + //******************************************************************* + // S t a f f A l l o c a t i o n + //******************************************************************* + // StaffAllocation exists. + public override bool StaffAllocationExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StaffAllocation. + public override SlmStaffAllocation CreateStaffAllocation (SysId staffTaskId, SysId staffMemberId) + { + ClearErrorState(); + return new SlmStaffAllocation_Mobile(Site, null, staffTaskId, staffMemberId, 0); + } + + //------------------------------------------------------------------- + // Get StaffAllocation. + public override SlmStaffAllocation GetStaffAllocation (SlmStaffAllocation.Params prmStaffAllocation) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStaffAllocation GetStaffAllocationById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StaffAllocation. + public override bool IsValidStaffAllocationData (SlmStaffAllocation.Data data, SlmStaffAllocation.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStaffAllocationData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StaffAllocation. + public override bool InsertStaffAllocation (SlmStaffAllocation staffAllocation, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffAllocation(staffAllocation)) return false; + if (SysId.IsValid(staffAllocation.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StaffAllocation. + public override bool UpdateStaffAllocation (SlmStaffAllocation staffAllocation, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffAllocation(staffAllocation)) return false; + if (!SysId.IsValid(staffAllocation.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StaffAllocation. + public override bool StaffAllocationCanBeDeleted (SlmStaffAllocation staffAllocation) + { + ClearErrorState(); + if (!base.StaffAllocationCanBeDeleted(staffAllocation)) return false; + return true; + } + public override bool DeleteStaffAllocation (SlmStaffAllocation staffAllocation, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StaffAllocationCanBeDeleted(staffAllocation)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement staffAllocationElement, SlmStaffAllocation staffAllocation, DbUpdateInfo dbUpdateInfo) + { + staffAllocationElement.AppendElement("Id", SysId.ToString(staffAllocation.Id)); + staffAllocationElement.AppendElement("StaffTaskId", SysId.ToString(staffAllocation.StaffTaskId)); + staffAllocationElement.AppendElement("StaffMemberId", SysId.ToString(staffAllocation.StaffMemberId)); + staffAllocationElement.AppendElement("TaskOn", DateUtil.FormatXmlDateTime(staffAllocation.TaskOn)); + staffAllocationElement.AppendElement("Notes", staffAllocation.Notes); + staffAllocationElement.AppendElement("Status", SacsSystem.GetStatusCode(staffAllocation.Status)); + staffAllocationElement.AppendElement("Flags", staffAllocation.Flags.ToString()); + if (!SysId.IsValid(staffAllocation.Id)) + { + staffAllocationElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffAllocationElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffAllocationElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + staffAllocationElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffAllocationElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffAllocationElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement staffAllocationElement, SlmStaffAllocation staffAllocation) + { + //staffAllocation.Id = new SysId(StringUtil.ToInt(staffAllocationElement.GetChildText("Id"))); + //staffAllocation.StaffTaskId= new SysId(StringUtil.ToInt(staffAllocationElement.GetChildText("StaffTaskId"))); + //staffAllocation.StaffMemberId = new SysId(StringUtil.ToInt(staffAllocationElement.GetChildText("StaffMemberId"))); + staffAllocation.TaskOn = DateUtil.ParseXmlDateTime(staffAllocationElement.GetChildText("TaskOn")); + staffAllocation.Notes = staffAllocationElement.GetChildText("Notes"); + staffAllocation.Status = SacsSystem.GetStatusForCode(staffAllocationElement.GetChildText("Status")); + staffAllocation.SetCreateStamp(DateUtil.ParseXmlDateTime(staffAllocationElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(staffAllocationElement.GetChildText("CreateBy"))), staffAllocationElement.GetChildText("CreateHost")); + staffAllocation.SetUpdateStamp(DateUtil.ParseXmlDateTime(staffAllocationElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(staffAllocationElement.GetChildText("UpdateBy"))), staffAllocationElement.GetChildText("UpdateHost")); + staffAllocation.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StaffAllocation column definitions. + public override ColumnDfn GetStaffAllocationColumnDfn (SlmStaffAllocation.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; + } + + //------------------------------------------------------------------- + // StaffAllocation query filter. + public override List GetStaffAllocationQueryFilter (SlmStaffAllocation.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStaffAllocationQueryFilter_Mobile (SlmStaffAllocation.Params prm) + { + Dictionary filter = new Dictionary(); + + // StaffAllocation Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + // Staff Ids. + if (prm.StaffTaskIds.Count > 0) filter.Add("StaffTaskIds", prm.StaffTaskIds.Concat(",")); + if (prm.StaffMemberIds.Count > 0) filter.Add("StaffMemberIds", prm.StaffMemberIds.Concat(",")); + + // 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; + } + // StaffAllocation sort columns. + public List GetStaffAllocationSortColumns (SlmStaffAllocation.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffAllocation count. + public override long GetStaffAllocationCount (SlmStaffAllocation.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffAllocation list. + public override List GetStaffAllocationList (SlmStaffAllocation.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStaffAllocationList_Mobile (SlmStaffAllocation.Params prmStaffAllocation, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStaffAllocationList_Mobile"; + + // StaffAllocation columns. + List columns = new List() + { + SlmStaffAllocation.Column.Id, + SlmStaffAllocation.Column.StaffTaskId, + SlmStaffAllocation.Column.StaffMemberId, + SlmStaffAllocation.Column.TaskOn, + SlmStaffAllocation.Column.Notes, + SlmStaffAllocation.Column.Flags, + SlmStaffAllocation.Column.Status + }; + + List itemDataList = await ExecuteStaffAllocationQuery_Mobile(columns, prmStaffAllocation, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStaffAllocation.Column.Id); + SysId staffTaskId = itemData.GetIdValue(SlmStaffAllocation.Column.StaffTaskId); + SysId staffMemberId = itemData.GetIdValue(SlmStaffAllocation.Column.StaffMemberId); + ushort flags = (ushort)itemData.GetIntValue(SlmStaffAllocation.Column.Id); + // Create item. + SlmStaffAllocation_Mobile staffAllocation = new SlmStaffAllocation_Mobile(Site, id, staffTaskId, staffMemberId, flags); + // Populate item properties. + foreach (SlmStaffAllocation.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStaffAllocation.Column.StaffAllocationCategory: staffAllocation.StaffAllocationCategory; break; + //case SlmStaffAllocation.Column.StaffTaskId: staffAllocation.StaffTaskId = itemData.GetIdValue(column); break; + //case SlmStaffAllocation.Column.StaffMemberId: staffAllocation.StaffMemberId = itemData.GetIdValue(column); break; + case SlmStaffAllocation.Column.TaskOn: staffAllocation.TaskOn = itemData.GetDateTimeValue(column); break; + case SlmStaffAllocation.Column.Notes: staffAllocation.Notes = value; break; + case SlmStaffAllocation.Column.Status: staffAllocation.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(staffAllocation); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StaffAllocation query execution. + public override DbResultSet ExecuteStaffAllocationQuery (List columns, SlmStaffAllocation.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStaffAllocationQuery_Mobile (List staffAllocationColumns, SlmStaffAllocation.Params prmStaffAllocation, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStaffAllocation.Column column in staffAllocationColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStaffAllocationRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStaffAllocationQueryFilter_Mobile(prmStaffAllocation), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStaffAllocationRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StaffAllocation; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStaffAllocationDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStaffAllocation.Column)column.Id) + { + //----------------------------------------------------------- + // StaffAllocation Category. + + //----------------------------------------------------------- + // Notes. + case SlmStaffAllocation.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStaffAllocation.Column.Status_Desc: + case SlmStaffAllocation.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStaffAllocation.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStaffAllocation.Column.Status_Ind) + value = new DataValue(SlmStaffAllocation.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffJobs.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffJobs.cs new file mode 100644 index 0000000..7fa06f5 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffJobs.cs @@ -0,0 +1,336 @@ +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 SlmStaffMgr_Mobile + { + //******************************************************************* + // S t a f f J o b s + //******************************************************************* + // StaffJob exists. + public override bool StaffJobExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StaffJob. + public override SlmStaffJob CreateStaffJob () + { + ClearErrorState(); + return new SlmStaffJob_Mobile(Site, null, 0); + } + + //------------------------------------------------------------------- + // Get StaffJob. + public override SlmStaffJob GetStaffJob (SlmStaffJob.Params prmStaffJob) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStaffJob GetStaffJobById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StaffJob. + public override bool IsValidStaffJobData (SlmStaffJob.Data data, SlmStaffJob.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStaffJobData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StaffJob. + public override bool InsertStaffJob (SlmStaffJob staffJob, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffJob(staffJob)) return false; + if (SysId.IsValid(staffJob.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StaffJob. + public override bool UpdateStaffJob (SlmStaffJob staffJob, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffJob(staffJob)) return false; + if (!SysId.IsValid(staffJob.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StaffJob. + public override bool StaffJobCanBeDeleted (SlmStaffJob staffJob) + { + ClearErrorState(); + if (!base.StaffJobCanBeDeleted(staffJob)) return false; + return true; + } + public override bool DeleteStaffJob (SlmStaffJob staffJob, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StaffJobCanBeDeleted(staffJob)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement staffJobElement, SlmStaffJob staffJob, DbUpdateInfo dbUpdateInfo) + { + staffJobElement.AppendElement("Id", SysId.ToString(staffJob.Id)); + staffJobElement.AppendElement("Caption", staffJob.Caption); + staffJobElement.AppendElement("Location", staffJob.Location); + staffJobElement.AppendElement("DisplayColour", staffJob.DisplayColour); + staffJobElement.AppendElement("JobStartAt", DateUtil.FormatXmlDateTime(staffJob.JobStartAt)); + staffJobElement.AppendElement("JobFinishAt", DateUtil.FormatXmlDateTime(staffJob.JobFinishAt)); + staffJobElement.AppendElement("CruiseBerthingId", SysId.ToString(staffJob.CruiseBerthingId)); + staffJobElement.AppendElement("Notes", staffJob.Notes); + staffJobElement.AppendElement("Status", SacsSystem.GetStatusCode(staffJob.Status)); + staffJobElement.AppendElement("Flags", staffJob.Flags.ToString()); + if (!SysId.IsValid(staffJob.Id)) + { + staffJobElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffJobElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffJobElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + staffJobElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffJobElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffJobElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement staffJobElement, SlmStaffJob staffJob) + { + //staffJob.Id = new SysId(StringUtil.ToInt(staffJobElement.GetChildText("Id"))); + staffJob.Caption = staffJobElement.GetChildText("Caption"); + staffJob.Location = staffJobElement.GetChildText("Location"); + staffJob.DisplayColour = staffJobElement.GetChildText("DisplayColour"); + staffJob.JobStartAt= DateUtil.ParseXmlDateTime(staffJobElement.GetChildText("JobStartAt")); + staffJob.JobFinishAt = DateUtil.ParseXmlDateTime(staffJobElement.GetChildText("JobFinishAt")); + staffJob.CruiseBerthingId = new SysId(StringUtil.ToInt(staffJobElement.GetChildText("CruiseBerthingId"))); + staffJob.Notes = staffJobElement.GetChildText("Notes"); + staffJob.Status = SacsSystem.GetStatusForCode(staffJobElement.GetChildText("Status")); + staffJob.SetCreateStamp(DateUtil.ParseXmlDateTime(staffJobElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(staffJobElement.GetChildText("CreateBy"))), staffJobElement.GetChildText("CreateHost")); + staffJob.SetUpdateStamp(DateUtil.ParseXmlDateTime(staffJobElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(staffJobElement.GetChildText("UpdateBy"))), staffJobElement.GetChildText("UpdateHost")); + staffJob.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StaffJob column definitions. + public override ColumnDfn GetStaffJobColumnDfn (SlmStaffJob.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; + } + + //------------------------------------------------------------------- + // StaffJob query filter. + public override List GetStaffJobQueryFilter (SlmStaffJob.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStaffJobQueryFilter_Mobile (SlmStaffJob.Params prm) + { + Dictionary filter = new Dictionary(); + + // StaffJob Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + + // Caption. + if (!StringUtil.IsEmpty(prm.Caption)) filter.Add("Caption", prm.Caption); + if (!StringUtil.IsEmpty(prm.CaptionPartial)) filter.Add("CaptionPartial", prm.CaptionPartial); + + // Job. + if (DateUtil.IsValid(prm.JobFrom)) filter.Add("JobFrom", DateUtil.FormatXmlDate(prm.JobFrom)); + if (DateUtil.IsValid(prm.JobTo)) filter.Add("JobTo", DateUtil.FormatXmlDate(prm.JobTo)); + + // Cruise berthing Id. + if (SysId.IsValid(prm.CruiseBerthingId)) filter.Add("CruiseBerthingId", SysId.ToString(prm.CruiseBerthingId)); + + // 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; + } + // StaffJob sort columns. + public List GetStaffJobSortColumns (SlmStaffJob.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffJob count. + public override long GetStaffJobCount (SlmStaffJob.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffJob list. + public override List GetStaffJobList (SlmStaffJob.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStaffJobList_Mobile (SlmStaffJob.Params prmStaffJob, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStaffJobList_Mobile"; + + // StaffJob columns. + List columns = new List() + { + SlmStaffJob.Column.Id, + SlmStaffJob.Column.Caption, + SlmStaffJob.Column.Location, + SlmStaffJob.Column.DisplayColour, + SlmStaffJob.Column.JobStartAt, + SlmStaffJob.Column.JobFinishAt, + SlmStaffJob.Column.CruiseBerthingId, + SlmStaffJob.Column.Notes, + SlmStaffJob.Column.Flags, + SlmStaffJob.Column.Status + }; + + List itemDataList = await ExecuteStaffJobQuery_Mobile(columns, prmStaffJob, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStaffJob.Column.Id); + ushort flags = (ushort)itemData.GetIntValue(SlmStaffJob.Column.Id); + // Create item. + SlmStaffJob_Mobile staffJob = new SlmStaffJob_Mobile(Site, id, flags); + // Populate item properties. + foreach (SlmStaffJob.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStaffJob.Column.StaffJobCategory: staffJob.StaffJobCategory; break; + case SlmStaffJob.Column.Caption: staffJob.Caption = value; break; + case SlmStaffJob.Column.Location: staffJob.Location = value; break; + case SlmStaffJob.Column.DisplayColour: staffJob.DisplayColour = value; break; + case SlmStaffJob.Column.JobStartAt: staffJob.JobStartAt = itemData.GetDateTimeValue(column); break; + case SlmStaffJob.Column.JobFinishAt: staffJob.JobFinishAt = itemData.GetDateTimeValue(column); break; + case SlmStaffJob.Column.CruiseBerthingId: staffJob.CruiseBerthingId = itemData.GetIdValue(column); break; + case SlmStaffJob.Column.Notes: staffJob.Notes = value; break; + case SlmStaffJob.Column.Status: staffJob.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(staffJob); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StaffJob query execution. + public override DbResultSet ExecuteStaffJobQuery (List columns, SlmStaffJob.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStaffJobQuery_Mobile (List staffJobColumns, SlmStaffJob.Params prmStaffJob, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStaffJob.Column column in staffJobColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStaffJobRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStaffJobQueryFilter_Mobile(prmStaffJob), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStaffJobRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StaffJob; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStaffJobDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStaffJob.Column)column.Id) + { + //----------------------------------------------------------- + // StaffJob Category. + //----------------------------------------------------------- + // Notes. + case SlmStaffJob.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStaffJob.Column.Status_Desc: + case SlmStaffJob.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStaffJob.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStaffJob.Column.Status_Ind) + value = new DataValue(SlmStaffJob.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffMemberAvailabilities.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffMemberAvailabilities.cs new file mode 100644 index 0000000..841629d --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffMemberAvailabilities.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 SlmStaffMgr_Mobile + { + //******************************************************************* + // S t a f f M e m b e r A v a i l a b i l i t i e s + //******************************************************************* + // StaffMemberAvailability exists. + public override bool StaffMemberAvailabilityExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StaffMemberAvailability. + public override SlmStaffMemberAvailability CreateStaffMemberAvailability (SysId staffMemberId) + { + ClearErrorState(); + return new SlmStaffMemberAvailability_Mobile(Site, null, staffMemberId, 0); + } + + //------------------------------------------------------------------- + // Get StaffMemberAvailability. + public override SlmStaffMemberAvailability GetStaffMemberAvailability (SlmStaffMemberAvailability.Params prmStaffMemberAvailability) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStaffMemberAvailability GetStaffMemberAvailabilityById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StaffMemberAvailability. + public override bool IsValidStaffMemberAvailabilityData (SlmStaffMemberAvailability.Data data, SlmStaffMemberAvailability.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStaffMemberAvailabilityData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StaffMemberAvailability. + public override bool InsertStaffMemberAvailability (SlmStaffMemberAvailability staffMemberAvailability, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffMemberAvailability(staffMemberAvailability)) return false; + if (SysId.IsValid(staffMemberAvailability.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StaffMemberAvailability. + public override bool UpdateStaffMemberAvailability (SlmStaffMemberAvailability staffMemberAvailability, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffMemberAvailability(staffMemberAvailability)) return false; + if (!SysId.IsValid(staffMemberAvailability.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StaffMemberAvailability. + public override bool StaffMemberAvailabilityCanBeDeleted (SlmStaffMemberAvailability staffMemberAvailability) + { + ClearErrorState(); + if (!base.StaffMemberAvailabilityCanBeDeleted(staffMemberAvailability)) return false; + return true; + } + public override bool DeleteStaffMemberAvailability (SlmStaffMemberAvailability staffMemberAvailability, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StaffMemberAvailabilityCanBeDeleted(staffMemberAvailability)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement staffMemberAvailabilityElement, SlmStaffMemberAvailability staffMemberAvailability, DbUpdateInfo dbUpdateInfo) + { + staffMemberAvailabilityElement.AppendElement("Id", SysId.ToString(staffMemberAvailability.Id)); + staffMemberAvailabilityElement.AppendElement("StaffMemberId", SysId.ToString(staffMemberAvailability.StaffMemberId)); + staffMemberAvailabilityElement.AppendElement("AvailabilityOn", DateUtil.FormatXmlDateTime(staffMemberAvailability.AvailabilityOn)); + staffMemberAvailabilityElement.AppendElement("Notes", staffMemberAvailability.Notes); + staffMemberAvailabilityElement.AppendElement("Status", SacsSystem.GetStatusCode(staffMemberAvailability.Status)); + staffMemberAvailabilityElement.AppendElement("Flags", staffMemberAvailability.Flags.ToString()); + if (!SysId.IsValid(staffMemberAvailability.Id)) + { + staffMemberAvailabilityElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffMemberAvailabilityElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffMemberAvailabilityElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + staffMemberAvailabilityElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffMemberAvailabilityElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffMemberAvailabilityElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement staffMemberAvailabilityElement, SlmStaffMemberAvailability staffMemberAvailability) + { + //staffMemberAvailability.Id = new SysId(StringUtil.ToInt(staffMemberAvailabilityElement.GetChildText("Id"))); + //staffMemberAvailability.StaffMemberId = new SysId(StringUtil.ToInt(staffMemberAvailabilityElement.GetChildText("StaffMemberId"))); + staffMemberAvailability.AvailabilityOn = DateUtil.ParseXmlDateTime(staffMemberAvailabilityElement.GetChildText("AvailabilityOn")); + staffMemberAvailability.Notes = staffMemberAvailabilityElement.GetChildText("Notes"); + staffMemberAvailability.Status = SacsSystem.GetStatusForCode(staffMemberAvailabilityElement.GetChildText("Status")); + staffMemberAvailability.SetCreateStamp(DateUtil.ParseXmlDateTime(staffMemberAvailabilityElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(staffMemberAvailabilityElement.GetChildText("CreateBy"))), staffMemberAvailabilityElement.GetChildText("CreateHost")); + staffMemberAvailability.SetUpdateStamp(DateUtil.ParseXmlDateTime(staffMemberAvailabilityElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(staffMemberAvailabilityElement.GetChildText("UpdateBy"))), staffMemberAvailabilityElement.GetChildText("UpdateHost")); + staffMemberAvailability.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StaffMemberAvailability column definitions. + public override ColumnDfn GetStaffMemberAvailabilityColumnDfn (SlmStaffMemberAvailability.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; + } + + //------------------------------------------------------------------- + // StaffMemberAvailability query filter. + public override List GetStaffMemberAvailabilityQueryFilter (SlmStaffMemberAvailability.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStaffMemberAvailabilityQueryFilter_Mobile (SlmStaffMemberAvailability.Params prm) + { + Dictionary filter = new Dictionary(); + + // StaffMemberAvailability Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + // Staff Member Ids. + if (prm.StaffMemberIds.Count > 0) filter.Add("StaffMemberIds", prm.StaffMemberIds.Concat(",")); + + // Availability. + if (DateUtil.IsValid(prm.AvailabilityFrom)) filter.Add("AvailabilityFrom", DateUtil.FormatXmlDate(prm.AvailabilityFrom)); + if (DateUtil.IsValid(prm.AvailabilityTo)) filter.Add("AvailabilityTo", DateUtil.FormatXmlDate(prm.AvailabilityTo)); + + // 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; + } + // StaffMemberAvailability sort columns. + public List GetStaffMemberAvailabilitySortColumns (SlmStaffMemberAvailability.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffMemberAvailability count. + public override long GetStaffMemberAvailabilityCount (SlmStaffMemberAvailability.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffMemberAvailability list. + public override List GetStaffMemberAvailabilityList (SlmStaffMemberAvailability.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStaffMemberAvailabilityList_Mobile (SlmStaffMemberAvailability.Params prmStaffMemberAvailability, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStaffMemberAvailabilityList_Mobile"; + + // StaffMemberAvailability columns. + List columns = new List() + { + SlmStaffMemberAvailability.Column.Id, + SlmStaffMemberAvailability.Column.StaffMemberId, + SlmStaffMemberAvailability.Column.AvailabilityOn, + SlmStaffMemberAvailability.Column.Notes, + SlmStaffMemberAvailability.Column.Flags, + SlmStaffMemberAvailability.Column.Status + }; + + List itemDataList = await ExecuteStaffMemberAvailabilityQuery_Mobile(columns, prmStaffMemberAvailability, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStaffMemberAvailability.Column.Id); + SysId staffMemberId = itemData.GetIdValue(SlmStaffMemberAvailability.Column.StaffMemberId); + ushort flags = (ushort)itemData.GetIntValue(SlmStaffMemberAvailability.Column.Id); + // Create item. + SlmStaffMemberAvailability_Mobile staffMemberAvailability = new SlmStaffMemberAvailability_Mobile(Site, id, staffMemberId, flags); + // Populate item properties. + foreach (SlmStaffMemberAvailability.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStaffMemberAvailability.Column.StaffMemberAvailabilityCategory: staffMemberAvailability.StaffMemberAvailabilityCategory; break; + //case SlmStaffMemberAvailability.Column.StaffMemberId: staffMemberAvailability.StaffMemberId = itemData.GetIdValue(column); break; + case SlmStaffMemberAvailability.Column.AvailabilityOn: staffMemberAvailability.AvailabilityOn = itemData.GetDateTimeValue(column); break; + case SlmStaffMemberAvailability.Column.Notes: staffMemberAvailability.Notes = value; break; + case SlmStaffMemberAvailability.Column.Status: staffMemberAvailability.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(staffMemberAvailability); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StaffMemberAvailability query execution. + public override DbResultSet ExecuteStaffMemberAvailabilityQuery (List columns, SlmStaffMemberAvailability.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStaffMemberAvailabilityQuery_Mobile (List staffMemberAvailabilityColumns, SlmStaffMemberAvailability.Params prmStaffMemberAvailability, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStaffMemberAvailability.Column column in staffMemberAvailabilityColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStaffMemberAvailabilityRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStaffMemberAvailabilityQueryFilter_Mobile(prmStaffMemberAvailability), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStaffMemberAvailabilityRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StaffMemberAvailability; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStaffMemberAvailabilityDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStaffMemberAvailability.Column)column.Id) + { + //----------------------------------------------------------- + // StaffMemberAvailability Category. + + //----------------------------------------------------------- + // Notes. + case SlmStaffMemberAvailability.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStaffMemberAvailability.Column.Status_Desc: + case SlmStaffMemberAvailability.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStaffMemberAvailability.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStaffMemberAvailability.Column.Status_Ind) + value = new DataValue(SlmStaffMemberAvailability.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffMemberSkills.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffMemberSkills.cs new file mode 100644 index 0000000..37483b7 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffMemberSkills.cs @@ -0,0 +1,316 @@ +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 SlmStaffMgr_Mobile + { + //******************************************************************* + // S t a f f M e m b e r S k i l l s + //******************************************************************* + // StaffMemberSkill exists. + public override bool StaffMemberSkillExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StaffMemberSkill. + public override SlmStaffMemberSkill CreateStaffMemberSkill (SysId staffMemberId) + { + ClearErrorState(); + return new SlmStaffMemberSkill_Mobile(Site, null, staffMemberId, 0); + } + + //------------------------------------------------------------------- + // Get StaffMemberSkill. + public override SlmStaffMemberSkill GetStaffMemberSkill (SlmStaffMemberSkill.Params prmStaffMemberSkill) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStaffMemberSkill GetStaffMemberSkillById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StaffMemberSkill. + public override bool IsValidStaffMemberSkillData (SlmStaffMemberSkill.Data data, SlmStaffMemberSkill.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStaffMemberSkillData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StaffMemberSkill. + public override bool InsertStaffMemberSkill (SlmStaffMemberSkill staffMemberSkill, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffMemberSkill(staffMemberSkill)) return false; + if (SysId.IsValid(staffMemberSkill.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StaffMemberSkill. + public override bool UpdateStaffMemberSkill (SlmStaffMemberSkill staffMemberSkill, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffMemberSkill(staffMemberSkill)) return false; + if (!SysId.IsValid(staffMemberSkill.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StaffMemberSkill. + public override bool StaffMemberSkillCanBeDeleted (SlmStaffMemberSkill staffMemberSkill) + { + ClearErrorState(); + if (!base.StaffMemberSkillCanBeDeleted(staffMemberSkill)) return false; + return true; + } + public override bool DeleteStaffMemberSkill (SlmStaffMemberSkill staffMemberSkill, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StaffMemberSkillCanBeDeleted(staffMemberSkill)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement staffMemberSkillElement, SlmStaffMemberSkill staffMemberSkill, DbUpdateInfo dbUpdateInfo) + { + staffMemberSkillElement.AppendElement("Id", SysId.ToString(staffMemberSkill.Id)); + staffMemberSkillElement.AppendElement("StaffMemberId", SysId.ToString(staffMemberSkill.StaffMemberId)); + staffMemberSkillElement.AppendElement("SkillCode", staffMemberSkill.SkillCode); + staffMemberSkillElement.AppendElement("Notes", staffMemberSkill.Notes); + staffMemberSkillElement.AppendElement("Status", SacsSystem.GetStatusCode(staffMemberSkill.Status)); + staffMemberSkillElement.AppendElement("Flags", staffMemberSkill.Flags.ToString()); + if (!SysId.IsValid(staffMemberSkill.Id)) + { + staffMemberSkillElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffMemberSkillElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffMemberSkillElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + staffMemberSkillElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffMemberSkillElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffMemberSkillElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement staffMemberSkillElement, SlmStaffMemberSkill staffMemberSkill) + { + //staffMemberSkill.Id = new SysId(StringUtil.ToInt(staffMemberSkillElement.GetChildText("Id"))); + //staffMemberSkill.StaffMemberId = new SysId(StringUtil.ToInt(staffMemberSkillElement.GetChildText("StaffMemberId"))); + staffMemberSkill.SkillCode = staffMemberSkillElement.GetChildText("SkillCode"); + staffMemberSkill.Notes = staffMemberSkillElement.GetChildText("Notes"); + staffMemberSkill.Status = SacsSystem.GetStatusForCode(staffMemberSkillElement.GetChildText("Status")); + staffMemberSkill.SetCreateStamp(DateUtil.ParseXmlDateTime(staffMemberSkillElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(staffMemberSkillElement.GetChildText("CreateBy"))), staffMemberSkillElement.GetChildText("CreateHost")); + staffMemberSkill.SetUpdateStamp(DateUtil.ParseXmlDateTime(staffMemberSkillElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(staffMemberSkillElement.GetChildText("UpdateBy"))), staffMemberSkillElement.GetChildText("UpdateHost")); + staffMemberSkill.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StaffMemberSkill column definitions. + public override ColumnDfn GetStaffMemberSkillColumnDfn (SlmStaffMemberSkill.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; + } + + //------------------------------------------------------------------- + // StaffMemberSkill query filter. + public override List GetStaffMemberSkillQueryFilter (SlmStaffMemberSkill.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStaffMemberSkillQueryFilter_Mobile (SlmStaffMemberSkill.Params prm) + { + Dictionary filter = new Dictionary(); + + // StaffMemberSkill Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + // Staff Member Id. + if (SysId.IsValid(prm.StaffMemberId)) filter.Add("StaffMemberId", SysId.ToString(prm.StaffMemberId)); + + // Skill Code. + if (!StringUtil.IsEmpty(prm.SkillCode)) filter.Add("SkillCode", prm.SkillCode); + + // 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; + } + // StaffMemberSkill sort columns. + public List GetStaffMemberSkillSortColumns (SlmStaffMemberSkill.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffMemberSkill count. + public override long GetStaffMemberSkillCount (SlmStaffMemberSkill.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffMemberSkill list. + public override List GetStaffMemberSkillList (SlmStaffMemberSkill.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStaffMemberSkillList_Mobile (SlmStaffMemberSkill.Params prmStaffMemberSkill, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStaffMemberSkillList_Mobile"; + + // StaffMemberSkill columns. + List columns = new List() + { + SlmStaffMemberSkill.Column.Id, + SlmStaffMemberSkill.Column.StaffMemberId, + SlmStaffMemberSkill.Column.SkillCode, + SlmStaffMemberSkill.Column.Notes, + SlmStaffMemberSkill.Column.Flags, + SlmStaffMemberSkill.Column.Status + }; + + List itemDataList = await ExecuteStaffMemberSkillQuery_Mobile(columns, prmStaffMemberSkill, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStaffMemberSkill.Column.Id); + SysId staffMemberId = itemData.GetIdValue(SlmStaffMemberSkill.Column.StaffMemberId); + ushort flags = (ushort)itemData.GetIntValue(SlmStaffMemberSkill.Column.Id); + // Create item. + SlmStaffMemberSkill_Mobile staffMemberSkill = new SlmStaffMemberSkill_Mobile(Site, id, staffMemberId, flags); + // Populate item properties. + foreach (SlmStaffMemberSkill.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStaffMemberSkill.Column.StaffMemberSkillCategory: staffMemberSkill.StaffMemberSkillCategory; break; + //case SlmStaffMemberSkill.Column.StaffMemberId: staffMemberSkill.StaffMemberId = itemData.GetIdValue(column); break; + case SlmStaffMemberSkill.Column.SkillCode: staffMemberSkill.SkillCode = value; break; + case SlmStaffMemberSkill.Column.Notes: staffMemberSkill.Notes = value; break; + case SlmStaffMemberSkill.Column.Status: staffMemberSkill.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(staffMemberSkill); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StaffMemberSkill query execution. + public override DbResultSet ExecuteStaffMemberSkillQuery (List columns, SlmStaffMemberSkill.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStaffMemberSkillQuery_Mobile (List staffMemberSkillColumns, SlmStaffMemberSkill.Params prmStaffMemberSkill, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStaffMemberSkill.Column column in staffMemberSkillColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStaffMemberSkillRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStaffMemberSkillQueryFilter_Mobile(prmStaffMemberSkill), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStaffMemberSkillRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StaffMemberSkill; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStaffMemberSkillDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStaffMemberSkill.Column)column.Id) + { + //----------------------------------------------------------- + // StaffMemberSkill Category. + + //----------------------------------------------------------- + // Notes. + case SlmStaffMemberSkill.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStaffMemberSkill.Column.Status_Desc: + case SlmStaffMemberSkill.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStaffMemberSkill.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStaffMemberSkill.Column.Status_Ind) + value = new DataValue(SlmStaffMemberSkill.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffMembers.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffMembers.cs new file mode 100644 index 0000000..db4f8e7 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffMembers.cs @@ -0,0 +1,370 @@ +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 SlmStaffMgr_Mobile + { + //******************************************************************* + // S t a f f M e m b e r s + //******************************************************************* + // StaffMember exists. + public override bool StaffMemberExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StaffMember. + public override SlmStaffMember CreateStaffMember () + { + ClearErrorState(); + return new SlmStaffMember_Mobile(Site, null, 0); + } + + //------------------------------------------------------------------- + // Get StaffMember. + public override SlmStaffMember GetStaffMember (SlmStaffMember.Params prmStaffMember) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStaffMember GetStaffMemberById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StaffMember. + public override bool IsValidStaffMemberData (SlmStaffMember.Data data, SlmStaffMember.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStaffMemberData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StaffMember. + public override bool InsertStaffMember (SlmStaffMember staffMember, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffMember(staffMember)) return false; + if (SysId.IsValid(staffMember.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StaffMember. + public override bool UpdateStaffMember (SlmStaffMember staffMember, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffMember(staffMember)) return false; + if (!SysId.IsValid(staffMember.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StaffMember. + public override bool StaffMemberCanBeDeleted (SlmStaffMember staffMember) + { + ClearErrorState(); + if (!base.StaffMemberCanBeDeleted(staffMember)) return false; + return true; + } + public override bool DeleteStaffMember (SlmStaffMember staffMember, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StaffMemberCanBeDeleted(staffMember)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement staffMemberElement, SlmStaffMember staffMember, DbUpdateInfo dbUpdateInfo) + { + staffMemberElement.AppendElement("Id", SysId.ToString(staffMember.Id)); + staffMemberElement.AppendElement("FirstName", staffMember.FirstName); + staffMemberElement.AppendElement("LastName", staffMember.LastName); + staffMemberElement.AppendElement("DateOfBirth", DateUtil.FormatXmlDateTime(staffMember.DateOfBirth)); + staffMemberElement.AppendElement("Email", staffMember.Email); + staffMemberElement.AppendElement("PhoneHome", staffMember.PhoneHome); + staffMemberElement.AppendElement("PhoneMobile", staffMember.PhoneMobile); + staffMemberElement.AppendElement("ContractHours", staffMember.ContractHours.ToString("N3")); + staffMemberElement.AppendElement("ContractStartOn", DateUtil.FormatXmlDateTime(staffMember.ContractStartOn)); + staffMemberElement.AppendElement("ContractFinishOn", DateUtil.FormatXmlDateTime(staffMember.ContractFinishOn)); + staffMemberElement.AppendElement("SizeWaist", staffMember.SizeWaist); + staffMemberElement.AppendElement("SizeChest", staffMember.SizeChest); + staffMemberElement.AppendElement("SizeCollar", staffMember.SizeCollar); + staffMemberElement.AppendElement("SizeShoe", staffMember.SizeShoe); + staffMemberElement.AppendElement("EmergencyContactName", staffMember.EmergencyContactName); + staffMemberElement.AppendElement("EmergencyContactPhone", staffMember.EmergencyContactPhone); + staffMemberElement.AppendElement("Notes", staffMember.Notes); + staffMemberElement.AppendElement("Status", SacsSystem.GetStatusCode(staffMember.Status)); + staffMemberElement.AppendElement("Flags", staffMember.Flags.ToString()); + if (!SysId.IsValid(staffMember.Id)) + { + staffMemberElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffMemberElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffMemberElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + staffMemberElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffMemberElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffMemberElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement staffMemberElement, SlmStaffMember staffMember) + { + //staffMember.Id = new SysId(StringUtil.ToInt(staffMemberElement.GetChildText("Id"))); + staffMember.FirstName = staffMemberElement.GetChildText("FirstName"); + staffMember.LastName = staffMemberElement.GetChildText("LastName"); + staffMember.DateOfBirth = DateUtil.ParseXmlDateTime(staffMemberElement.GetChildText("DateOfBirth")); + staffMember.Email = staffMemberElement.GetChildText("Email"); + staffMember.PhoneHome = staffMemberElement.GetChildText("PhoneHome"); + staffMember.PhoneMobile = staffMemberElement.GetChildText("PhoneMobile"); + staffMember.ContractHours = StringUtil.ToInt(staffMemberElement.GetChildText("ContractHours")); + staffMember.ContractStartOn = DateUtil.ParseXmlDateTime(staffMemberElement.GetChildText("ContractStartOn")); + staffMember.ContractFinishOn = DateUtil.ParseXmlDateTime(staffMemberElement.GetChildText("ContractFinishOn")); + staffMember.SizeWaist = staffMemberElement.GetChildText("SizeWaist"); + staffMember.SizeChest = staffMemberElement.GetChildText("SizeChest"); + staffMember.SizeCollar = staffMemberElement.GetChildText("SizeCollar"); + staffMember.SizeShoe = staffMemberElement.GetChildText("SizeShoe"); + staffMember.EmergencyContactName = staffMemberElement.GetChildText("EmergencyContactName"); + staffMember.EmergencyContactPhone = staffMemberElement.GetChildText("EmergencyContactPhone"); + staffMember.Notes = staffMemberElement.GetChildText("Notes"); + staffMember.Status = SacsSystem.GetStatusForCode(staffMemberElement.GetChildText("Status")); + staffMember.SetCreateStamp(DateUtil.ParseXmlDateTime(staffMemberElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(staffMemberElement.GetChildText("CreateBy"))), staffMemberElement.GetChildText("CreateHost")); + staffMember.SetUpdateStamp(DateUtil.ParseXmlDateTime(staffMemberElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(staffMemberElement.GetChildText("UpdateBy"))), staffMemberElement.GetChildText("UpdateHost")); + staffMember.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StaffMember column definitions. + public override ColumnDfn GetStaffMemberColumnDfn (SlmStaffMember.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; + } + + //------------------------------------------------------------------- + // StaffMember query filter. + public override List GetStaffMemberQueryFilter (SlmStaffMember.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStaffMemberQueryFilter_Mobile (SlmStaffMember.Params prm) + { + Dictionary filter = new Dictionary(); + + // StaffMember 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.NamePartial)) filter.Add("NamePartial", prm.NamePartial); + if (!StringUtil.IsEmpty(prm.LastName)) filter.Add("LastName", prm.LastName); + if (!StringUtil.IsEmpty(prm.LastNamePartial)) filter.Add("LastNamePartial", prm.LastNamePartial); + + // Availability. + if (DateUtil.IsValid(prm.AvailableFrom)) filter.Add("AvailableFrom", DateUtil.FormatXmlDate(prm.AvailableFrom)); + if (DateUtil.IsValid(prm.AvailableTo)) filter.Add("AvailableTo", DateUtil.FormatXmlDate(prm.AvailableTo)); + + // 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; + } + // StaffMember sort columns. + public List GetStaffMemberSortColumns (SlmStaffMember.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffMember count. + public override long GetStaffMemberCount (SlmStaffMember.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffMember list. + public override List GetStaffMemberList (SlmStaffMember.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStaffMemberList_Mobile (SlmStaffMember.Params prmStaffMember, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStaffMemberList_Mobile"; + + // StaffMember columns. + List columns = new List() + { + SlmStaffMember.Column.Id, + SlmStaffMember.Column.FirstName, + SlmStaffMember.Column.LastName, + SlmStaffMember.Column.DateOfBirth, + SlmStaffMember.Column.Email, + SlmStaffMember.Column.PhoneHome, + SlmStaffMember.Column.PhoneMobile, + SlmStaffMember.Column.ContractHours, + SlmStaffMember.Column.ContractStartOn, + SlmStaffMember.Column.ContractFinishOn, + SlmStaffMember.Column.SizeWaist, + SlmStaffMember.Column.SizeChest, + SlmStaffMember.Column.SizeCollar, + SlmStaffMember.Column.SizeShoe, + SlmStaffMember.Column.EmergencyContactName, + SlmStaffMember.Column.EmergencyContactPhone, + SlmStaffMember.Column.Notes, + SlmStaffMember.Column.Flags, + SlmStaffMember.Column.Status + }; + + List itemDataList = await ExecuteStaffMemberQuery_Mobile(columns, prmStaffMember, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStaffMember.Column.Id); + ushort flags = (ushort)itemData.GetIntValue(SlmStaffMember.Column.Id); + // Create item. + SlmStaffMember_Mobile staffMember = new SlmStaffMember_Mobile(Site, id, flags); + // Populate item properties. + foreach (SlmStaffMember.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStaffMember.Column.StaffMemberCategory: staffMember.StaffMemberCategory; break; + case SlmStaffMember.Column.FirstName: staffMember.FirstName = value; break; + case SlmStaffMember.Column.LastName: staffMember.LastName = value; break; + case SlmStaffMember.Column.DateOfBirth: staffMember.DateOfBirth = itemData.GetDateTimeValue(column); break; + case SlmStaffMember.Column.Email: staffMember.Email = value; break; + case SlmStaffMember.Column.PhoneHome: staffMember.PhoneHome = value; break; + case SlmStaffMember.Column.PhoneMobile: staffMember.PhoneMobile = value; break; + case SlmStaffMember.Column.ContractHours: staffMember.ContractHours = itemData.GetIntValue(column); break; + case SlmStaffMember.Column.ContractStartOn: staffMember.ContractStartOn = itemData.GetDateTimeValue(column); break; + case SlmStaffMember.Column.ContractFinishOn: staffMember.ContractFinishOn = itemData.GetDateTimeValue(column); break; + case SlmStaffMember.Column.SizeWaist: staffMember.SizeWaist = value; break; + case SlmStaffMember.Column.SizeChest: staffMember.SizeChest = value; break; + case SlmStaffMember.Column.SizeCollar: staffMember.SizeCollar = value; break; + case SlmStaffMember.Column.SizeShoe: staffMember.SizeShoe = value; break; + case SlmStaffMember.Column.EmergencyContactName: staffMember.EmergencyContactName = value; break; + case SlmStaffMember.Column.EmergencyContactPhone: staffMember.EmergencyContactPhone = value; break; + case SlmStaffMember.Column.Notes: staffMember.Notes = value; break; + case SlmStaffMember.Column.Status: staffMember.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(staffMember); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StaffMember query execution. + public override DbResultSet ExecuteStaffMemberQuery (List columns, SlmStaffMember.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStaffMemberQuery_Mobile (List staffMemberColumns, SlmStaffMember.Params prmStaffMember, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStaffMember.Column column in staffMemberColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStaffMemberRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStaffMemberQueryFilter_Mobile(prmStaffMember), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStaffMemberRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StaffMember; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStaffMemberDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStaffMember.Column)column.Id) + { + //----------------------------------------------------------- + // StaffMember Category. + //----------------------------------------------------------- + // Notes. + case SlmStaffMember.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStaffMember.Column.Status_Desc: + case SlmStaffMember.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStaffMember.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStaffMember.Column.Status_Ind) + value = new DataValue(SlmStaffMember.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffTaskSkills.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffTaskSkills.cs new file mode 100644 index 0000000..cd94c8c --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffTaskSkills.cs @@ -0,0 +1,316 @@ +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 SlmStaffMgr_Mobile + { + //******************************************************************* + // S t a f f T a s k s S k i l l s + //******************************************************************* + // StaffTaskSkill exists. + public override bool StaffTaskSkillExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StaffTaskSkill. + public override SlmStaffTaskSkill CreateStaffTaskSkill (SysId staffTaskId) + { + ClearErrorState(); + return new SlmStaffTaskSkill_Mobile(Site, null, staffTaskId, 0); + } + + //------------------------------------------------------------------- + // Get StaffTaskSkill. + public override SlmStaffTaskSkill GetStaffTaskSkill (SlmStaffTaskSkill.Params prmStaffTaskSkill) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStaffTaskSkill GetStaffTaskSkillById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StaffTaskSkill. + public override bool IsValidStaffTaskSkillData (SlmStaffTaskSkill.Data data, SlmStaffTaskSkill.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStaffTaskSkillData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StaffTaskSkill. + public override bool InsertStaffTaskSkill (SlmStaffTaskSkill staffTaskSkill, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffTaskSkill(staffTaskSkill)) return false; + if (SysId.IsValid(staffTaskSkill.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StaffTaskSkill. + public override bool UpdateStaffTaskSkill (SlmStaffTaskSkill staffTaskSkill, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffTaskSkill(staffTaskSkill)) return false; + if (!SysId.IsValid(staffTaskSkill.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StaffTaskSkill. + public override bool StaffTaskSkillCanBeDeleted (SlmStaffTaskSkill staffTaskSkill) + { + ClearErrorState(); + if (!base.StaffTaskSkillCanBeDeleted(staffTaskSkill)) return false; + return true; + } + public override bool DeleteStaffTaskSkill (SlmStaffTaskSkill staffTaskSkill, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StaffTaskSkillCanBeDeleted(staffTaskSkill)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement staffTaskSkillElement, SlmStaffTaskSkill staffTaskSkill, DbUpdateInfo dbUpdateInfo) + { + staffTaskSkillElement.AppendElement("Id", SysId.ToString(staffTaskSkill.Id)); + staffTaskSkillElement.AppendElement("StaffTaskId", SysId.ToString(staffTaskSkill.StaffTaskId)); + staffTaskSkillElement.AppendElement("SkillCode", staffTaskSkill.SkillCode); + staffTaskSkillElement.AppendElement("Notes", staffTaskSkill.Notes); + staffTaskSkillElement.AppendElement("Status", SacsSystem.GetStatusCode(staffTaskSkill.Status)); + staffTaskSkillElement.AppendElement("Flags", staffTaskSkill.Flags.ToString()); + if (!SysId.IsValid(staffTaskSkill.Id)) + { + staffTaskSkillElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffTaskSkillElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffTaskSkillElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + staffTaskSkillElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffTaskSkillElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffTaskSkillElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement staffTaskSkillElement, SlmStaffTaskSkill staffTaskSkill) + { + //staffTaskSkill.Id = new SysId(StringUtil.ToInt(staffTaskSkillElement.GetChildText("Id"))); + //staffTaskSkill.StaffMemberId = new SysId(StringUtil.ToInt(staffTaskSkillElement.GetChildText("StaffMemberId"))); + staffTaskSkill.SkillCode = staffTaskSkillElement.GetChildText("SkillCode"); + staffTaskSkill.Notes = staffTaskSkillElement.GetChildText("Notes"); + staffTaskSkill.Status = SacsSystem.GetStatusForCode(staffTaskSkillElement.GetChildText("Status")); + staffTaskSkill.SetCreateStamp(DateUtil.ParseXmlDateTime(staffTaskSkillElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(staffTaskSkillElement.GetChildText("CreateBy"))), staffTaskSkillElement.GetChildText("CreateHost")); + staffTaskSkill.SetUpdateStamp(DateUtil.ParseXmlDateTime(staffTaskSkillElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(staffTaskSkillElement.GetChildText("UpdateBy"))), staffTaskSkillElement.GetChildText("UpdateHost")); + staffTaskSkill.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StaffTaskSkill column definitions. + public override ColumnDfn GetStaffTaskSkillColumnDfn (SlmStaffTaskSkill.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; + } + + //------------------------------------------------------------------- + // StaffTaskSkill query filter. + public override List GetStaffTaskSkillQueryFilter (SlmStaffTaskSkill.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStaffTaskSkillQueryFilter_Mobile (SlmStaffTaskSkill.Params prm) + { + Dictionary filter = new Dictionary(); + + // StaffTaskSkill Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + // Staff Task Id. + if (SysId.IsValid(prm.StaffTask)) filter.Add("StaffTask", SysId.ToString(prm.StaffTask)); + + // Skill Code. + if (!StringUtil.IsEmpty(prm.SkillCode)) filter.Add("SkillCode", prm.SkillCode); + + // 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; + } + // StaffTaskSkill sort columns. + public List GetStaffTaskSkillSortColumns (SlmStaffTaskSkill.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffTaskSkill count. + public override long GetStaffTaskSkillCount (SlmStaffTaskSkill.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffTaskSkill list. + public override List GetStaffTaskSkillList (SlmStaffTaskSkill.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStaffTaskSkillList_Mobile (SlmStaffTaskSkill.Params prmStaffTaskSkill, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStaffTaskSkillList_Mobile"; + + // StaffTaskSkill columns. + List columns = new List() + { + SlmStaffTaskSkill.Column.Id, + SlmStaffTaskSkill.Column.StaffTaskId, + SlmStaffTaskSkill.Column.SkillCode, + SlmStaffTaskSkill.Column.Notes, + SlmStaffTaskSkill.Column.Flags, + SlmStaffTaskSkill.Column.Status + }; + + List itemDataList = await ExecuteStaffTaskSkillQuery_Mobile(columns, prmStaffTaskSkill, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStaffTaskSkill.Column.Id); + SysId staffMemberId = itemData.GetIdValue(SlmStaffTaskSkill.Column.StaffTaskId); + ushort flags = (ushort)itemData.GetIntValue(SlmStaffTaskSkill.Column.Id); + // Create item. + SlmStaffTaskSkill_Mobile staffTaskSkill = new SlmStaffTaskSkill_Mobile(Site, id, staffMemberId, flags); + // Populate item properties. + foreach (SlmStaffTaskSkill.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStaffTaskSkill.Column.StaffTaskSkillCategory: staffTaskSkill.StaffTaskSkillCategory; break; + //case SlmStaffTaskSkill.Column.StaffTaskId: staffTaskSkill.StaffTaskId = itemData.GetIdValue(column); break; + case SlmStaffTaskSkill.Column.SkillCode: staffTaskSkill.SkillCode = value; break; + case SlmStaffTaskSkill.Column.Notes: staffTaskSkill.Notes = value; break; + case SlmStaffTaskSkill.Column.Status: staffTaskSkill.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(staffTaskSkill); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StaffTaskSkill query execution. + public override DbResultSet ExecuteStaffTaskSkillQuery (List columns, SlmStaffTaskSkill.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStaffTaskSkillQuery_Mobile (List staffTaskSkillColumns, SlmStaffTaskSkill.Params prmStaffTaskSkill, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStaffTaskSkill.Column column in staffTaskSkillColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStaffTaskSkillRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStaffTaskSkillQueryFilter_Mobile(prmStaffTaskSkill), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStaffTaskSkillRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StaffTaskSkill; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStaffTaskSkillDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStaffTaskSkill.Column)column.Id) + { + //----------------------------------------------------------- + // StaffTaskSkill Category. + + //----------------------------------------------------------- + // Notes. + case SlmStaffTaskSkill.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStaffTaskSkill.Column.Status_Desc: + case SlmStaffTaskSkill.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStaffTaskSkill.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStaffTaskSkill.Column.Status_Ind) + value = new DataValue(SlmStaffTaskSkill.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffTasks.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffTasks.cs new file mode 100644 index 0000000..1cf3e89 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile-StaffTasks.cs @@ -0,0 +1,341 @@ +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 SlmStaffMgr_Mobile + { + //******************************************************************* + // S t a f f T a s k s + //******************************************************************* + // StaffTask exists. + public override bool StaffTaskExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create StaffTask. + public override SlmStaffTask CreateStaffTask (SysId staffJobId) + { + ClearErrorState(); + return new SlmStaffTask_Mobile(Site, null, staffJobId, 0); + } + + //------------------------------------------------------------------- + // Get StaffTask. + public override SlmStaffTask GetStaffTask (SlmStaffTask.Params prmStaffTask) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmStaffTask GetStaffTaskById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate StaffTask. + public override bool IsValidStaffTaskData (SlmStaffTask.Data data, SlmStaffTask.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidStaffTaskData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert StaffTask. + public override bool InsertStaffTask (SlmStaffTask staffTask, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffTask(staffTask)) return false; + if (SysId.IsValid(staffTask.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update StaffTask. + public override bool UpdateStaffTask (SlmStaffTask staffTask, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidStaffTask(staffTask)) return false; + if (!SysId.IsValid(staffTask.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete StaffTask. + public override bool StaffTaskCanBeDeleted (SlmStaffTask staffTask) + { + ClearErrorState(); + if (!base.StaffTaskCanBeDeleted(staffTask)) return false; + return true; + } + public override bool DeleteStaffTask (SlmStaffTask staffTask, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!StaffTaskCanBeDeleted(staffTask)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement staffTaskElement, SlmStaffTask staffTask, DbUpdateInfo dbUpdateInfo) + { + staffTaskElement.AppendElement("Id", SysId.ToString(staffTask.Id)); + staffTaskElement.AppendElement("StaffJobId", SysId.ToString(staffTask.StaffJobId)); + staffTaskElement.AppendElement("TaskStartAt", DateUtil.FormatXmlDateTime(staffTask.TaskStartAt)); + staffTaskElement.AppendElement("TaskFinishAt", DateUtil.FormatXmlDateTime(staffTask.TaskFinishAt)); + staffTaskElement.AppendElement("StaffRequired", staffTask.StaffRequired.ToString("N3")); + staffTaskElement.AppendElement("StaffExternal", staffTask.StaffExternal.ToString("N3")); + staffTaskElement.AppendElement("SkillCode", staffTask.SkillCode); + staffTaskElement.AppendElement("Notes", staffTask.Notes); + staffTaskElement.AppendElement("Status", SacsSystem.GetStatusCode(staffTask.Status)); + staffTaskElement.AppendElement("Flags", staffTask.Flags.ToString()); + if (!SysId.IsValid(staffTask.Id)) + { + staffTaskElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffTaskElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffTaskElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + staffTaskElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + staffTaskElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + staffTaskElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement staffTaskElement, SlmStaffTask staffTask) + { + //staffTask.Id = new SysId(StringUtil.ToInt(staffTaskElement.GetChildText("Id"))); + //staffTask.StaffJobId = new SysId(StringUtil.ToInt(staffTaskElement.GetChildText("StaffJobId"))); + staffTask.TaskStartAt = DateUtil.ParseXmlDateTime(staffTaskElement.GetChildText("TaskStartAt")); + staffTask.TaskFinishAt = DateUtil.ParseXmlDateTime(staffTaskElement.GetChildText("TaskFinishAt")); + staffTask.StaffRequired = StringUtil.ToShort(staffTaskElement.GetChildText("Caption")); + staffTask.StaffExternal = StringUtil.ToShort(staffTaskElement.GetChildText("Location")); + staffTask.SkillCode = staffTaskElement.GetChildText("SkillCode"); + staffTask.Notes = staffTaskElement.GetChildText("Notes"); + staffTask.Status = SacsSystem.GetStatusForCode(staffTaskElement.GetChildText("Status")); + staffTask.SetCreateStamp(DateUtil.ParseXmlDateTime(staffTaskElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(staffTaskElement.GetChildText("CreateBy"))), staffTaskElement.GetChildText("CreateHost")); + staffTask.SetUpdateStamp(DateUtil.ParseXmlDateTime(staffTaskElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(staffTaskElement.GetChildText("UpdateBy"))), staffTaskElement.GetChildText("UpdateHost")); + staffTask.AcceptChanges(); + } + + //------------------------------------------------------------------- + // StaffTask column definitions. + public override ColumnDfn GetStaffTaskColumnDfn (SlmStaffTask.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; + } + + //------------------------------------------------------------------- + // StaffTask query filter. + public override List GetStaffTaskQueryFilter (SlmStaffTask.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetStaffTaskQueryFilter_Mobile (SlmStaffTask.Params prm) + { + Dictionary filter = new Dictionary(); + + // StaffTask Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + // Staff Job Ids. + if (prm.StaffJobIds.Count > 0) filter.Add("StaffJobIds", prm.StaffJobIds.Concat(",")); + + // Job Caption Partial. + if (!StringUtil.IsEmpty(prm.JobCaptionPartial)) filter.Add("JobCaptionPartial", prm.JobCaptionPartial); + + // Task. + if (DateUtil.IsValid(prm.TaskFrom)) filter.Add("TaskFrom", DateUtil.FormatXmlDate(prm.TaskFrom)); + if (DateUtil.IsValid(prm.TaskTo)) filter.Add("TaskTo", DateUtil.FormatXmlDate(prm.TaskTo)); + + // Skill Code. + if (prm.SkillCode.Count > 0) filter.Add("SkillCode", prm.SkillCode.ToCsv()); + + // External Staff Required. + if (prm.ExternalStaffRequired != false) filter.Add("ExternalStaffRequired", prm.ExternalStaffRequired.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; + } + // StaffTask sort columns. + public List GetStaffTaskSortColumns (SlmStaffTask.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffTask count. + public override long GetStaffTaskCount (SlmStaffTask.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // StaffTask list. + public override List GetStaffTaskList (SlmStaffTask.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetStaffTaskList_Mobile (SlmStaffTask.Params prmStaffTask, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetStaffTaskList_Mobile"; + + // StaffTask columns. + List columns = new List() + { + SlmStaffTask.Column.Id, + SlmStaffTask.Column.StaffJobId, + SlmStaffTask.Column.TaskStartAt, + SlmStaffTask.Column.TaskFinishAt, + SlmStaffTask.Column.StaffRequired, + SlmStaffTask.Column.StaffExternal, + SlmStaffTask.Column.SkillCode, + SlmStaffTask.Column.Notes, + SlmStaffTask.Column.Flags, + SlmStaffTask.Column.Status + }; + + List itemDataList = await ExecuteStaffTaskQuery_Mobile(columns, prmStaffTask, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmStaffTask.Column.Id); + SysId staffJobId = itemData.GetIdValue(SlmStaffTask.Column.StaffJobId); + ushort flags = (ushort)itemData.GetIntValue(SlmStaffTask.Column.Id); + // Create item. + SlmStaffTask_Mobile staffTask = new SlmStaffTask_Mobile(Site, id, staffJobId, flags); + // Populate item properties. + foreach (SlmStaffTask.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmStaffTask.Column.StaffTaskCategory: staffTask.StaffTaskCategory; break; + //case SlmStaffTask.Column.StaffJobId: staffTask.StaffJobId = itemData.GetIdValue(column); break; + case SlmStaffTask.Column.TaskStartAt: staffTask.TaskStartAt = itemData.GetDateTimeValue(column); break; + case SlmStaffTask.Column.TaskFinishAt: staffTask.TaskFinishAt = itemData.GetDateTimeValue(column); break; + case SlmStaffTask.Column.StaffRequired: staffTask.StaffRequired = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SlmStaffTask.Column.StaffExternal: staffTask.StaffExternal = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SlmStaffTask.Column.SkillCode: staffTask.SkillCode = value; break; + case SlmStaffTask.Column.Notes: staffTask.Notes = value; break; + case SlmStaffTask.Column.Status: staffTask.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(staffTask); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // StaffTask query execution. + public override DbResultSet ExecuteStaffTaskQuery (List columns, SlmStaffTask.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteStaffTaskQuery_Mobile (List staffTaskColumns, SlmStaffTask.Params prmStaffTask, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmStaffTask.Column column in staffTaskColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetStaffTaskRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetStaffTaskQueryFilter_Mobile(prmStaffTask), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetStaffTaskRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.StaffTask; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetStaffTaskDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmStaffTask.Column)column.Id) + { + //----------------------------------------------------------- + // StaffTask Category. + //----------------------------------------------------------- + // Notes. + case SlmStaffTask.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmStaffTask.Column.Status_Desc: + case SlmStaffTask.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmStaffTask.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmStaffTask.Column.Status_Ind) + value = new DataValue(SlmStaffTask.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_Mobile.cs new file mode 100644 index 0000000..7bc2cbc --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmStaffMgr_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 SlmStaffMgr_Mobile : SlmStaffMgr + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SlmWebServiceClient webServiceClient = new SlmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SlmStaffMgr_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/SlmTransactionMgr_Mobile-Requirements.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmTransactionMgr_Mobile-Requirements.cs new file mode 100644 index 0000000..bdbd429 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmTransactionMgr_Mobile-Requirements.cs @@ -0,0 +1,371 @@ +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 SlmTransactionMgr_Mobile + { + //******************************************************************* + // R e q u i r e m e n t s + //******************************************************************* + // Requirement exists. + public override bool RequirementExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create Requirement. + public override SlmRequirement CreateRequirement (SysId transId, Slm.RequirementType requirementType) + { + ClearErrorState(); + return new SlmRequirement_Mobile(Site, null, transId, requirementType, 0); + } + + //------------------------------------------------------------------- + // Get Requirement. + public override SlmRequirement GetRequirement (SlmRequirement.Params prmRequirement) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmRequirement GetRequirementById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Requirement. + public override bool IsValidRequirementData (SlmRequirement.Data data, SlmRequirement.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidRequirementData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Requirement. + public override bool InsertRequirement (SlmRequirement requirement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidRequirement(requirement)) return false; + if (SysId.IsValid(requirement.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Requirement. + public override bool UpdateRequirement (SlmRequirement requirement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidRequirement(requirement)) return false; + if (!SysId.IsValid(requirement.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Requirement. + public override bool RequirementCanBeDeleted (SlmRequirement requirement) + { + ClearErrorState(); + if (!base.RequirementCanBeDeleted(requirement)) return false; + return true; + } + public override bool DeleteRequirement (SlmRequirement requirement, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!RequirementCanBeDeleted(requirement)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement requirementElement, SlmRequirement requirement, DbUpdateInfo dbUpdateInfo) + { + requirementElement.AppendElement("Id", SysId.ToString(requirement.Id)); + requirementElement.AppendElement("TransId", SysId.ToString(requirement.TransId)); + requirementElement.AppendElement("RequirementType", requirement.RequirementType.ToString()); + requirementElement.AppendElement("Seq", requirement.Seq.ToString("N3")); + requirementElement.AppendElement("TicketNo", requirement.TicketNo); + requirementElement.AppendElement("ContractNo", requirement.ContractNo); + requirementElement.AppendElement("PartnerName", requirement.PartnerName); + requirementElement.AppendElement("VehicleReg", requirement.VehicleReg); + requirementElement.AppendElement("HaulierCode", requirement.HaulierCode); + requirementElement.AppendElement("HaulierName", requirement.HaulierName); + requirementElement.AppendElement("CommodityId", SysId.ToString(requirement.CommodityId)); + requirementElement.AppendElement("ProductCode", requirement.ProductCode); + requirementElement.AppendElement("ProductDesc", requirement.ProductDesc); + requirementElement.AppendElement("Quantity", requirement.Quantity.ToString("N3")); + requirementElement.AppendElement("QuantityUnit", requirement.QuantityUnit.ToString()); + requirementElement.AppendElement("Weighed", DateUtil.FormatXmlDateTime(requirement.Weighed)); + requirementElement.AppendElement("Published", DateUtil.FormatXmlDateTime(requirement.Published)); + requirementElement.AppendElement("Notes", requirement.Notes); + requirementElement.AppendElement("Status", SacsSystem.GetStatusCode(requirement.Status)); + requirementElement.AppendElement("Flags", requirement.Flags.ToString()); + if (!SysId.IsValid(requirement.Id)) + { + requirementElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + requirementElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + requirementElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + requirementElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + requirementElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + requirementElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement requirementElement, SlmRequirement requirement) + { + //requirement.Id = new SysId(StringUtil.ToInt(requirementElement.GetChildText("Id"))); + //requirement.TransId = new SysId(StringUtil.ToInt(requirementElement.GetChildText("TransId"))); + //requirement.RequirementType = EnumUtil.ParseEnum(requirementElement.GetChildText("Type"), Slm.RequirementType.Unknown); + requirement.Seq = StringUtil.ToInt(requirementElement.GetChildText("Seq")); + requirement.TicketNo = requirementElement.GetChildText("TicketNo"); + requirement.ContractNo = requirementElement.GetChildText("ContractNo"); + requirement.PartnerName = requirementElement.GetChildText("PartnerName"); + requirement.VehicleReg = requirementElement.GetChildText("VehicleReg"); + requirement.HaulierCode = requirementElement.GetChildText("HaulierCode"); + requirement.HaulierName = requirementElement.GetChildText("HaulierName"); + requirement.CommodityId = new SysId(StringUtil.ToInt(requirementElement.GetChildText("CommodityId"))); + requirement.ProductCode = requirementElement.GetChildText("ProductCode"); + requirement.ProductDesc = requirementElement.GetChildText("ProductDesc "); + requirement.Quantity = StringUtil.ToDecimal(requirementElement.GetChildText("Quantity")); + requirement.QuantityUnit = EnumUtil.ParseEnum(requirementElement.GetChildText("QuantityUnit"), Slm.WeightUnit.Unknown); + requirement.Weighed = DateUtil.ParseXmlDateTime(requirementElement.GetChildText("Draught")); + requirement.Published = DateUtil.ParseXmlDateTime(requirementElement.GetChildText("Depth")); + requirement.Notes = requirementElement.GetChildText("Notes"); + requirement.Status = SacsSystem.GetStatusForCode(requirementElement.GetChildText("Status")); + requirement.SetCreateStamp(DateUtil.ParseXmlDateTime(requirementElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(requirementElement.GetChildText("CreateBy"))), requirementElement.GetChildText("CreateHost")); + requirement.SetUpdateStamp(DateUtil.ParseXmlDateTime(requirementElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(requirementElement.GetChildText("UpdateBy"))), requirementElement.GetChildText("UpdateHost")); + requirement.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Requirement column definitions. + public override ColumnDfn GetRequirementColumnDfn (SlmRequirement.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; + } + + //------------------------------------------------------------------- + // Requirement query filter. + public override List GetRequirementQueryFilter (SlmRequirement.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetRequirementQueryFilter_Mobile (SlmRequirement.Params prm) + { + Dictionary filter = new Dictionary(); + + // Requirement Id. + if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(",")); + if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(",")); + + // Trans Id. + if (SysId.IsValid(prm.TransId)) filter.Add("TransId", SysId.ToString(prm.TransId)); + + // Product Code. + if (!StringUtil.IsEmpty(prm.ProductCode)) filter.Add("ProductCode", prm.ProductCode); + + // 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; + } + // Requirement sort columns. + public List GetRequirementSortColumns (SlmRequirement.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Requirement count. + public override long GetRequirementCount (SlmRequirement.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Requirement list. + public override List GetRequirementList (SlmRequirement.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetRequirementList_Mobile (SlmRequirement.Params prmRequirement, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetRequirementList_Mobile"; + + // Requirement columns. + List columns = new List() + { + SlmRequirement.Column.Id, + SlmRequirement.Column.TransId, + SlmRequirement.Column.RequirementType, + SlmRequirement.Column.Seq, + SlmRequirement.Column.TicketNo, + SlmRequirement.Column.ContractNo, + SlmRequirement.Column.PartnerName, + SlmRequirement.Column.VehicleReg, + SlmRequirement.Column.HaulierCode, + SlmRequirement.Column.HaulierName, + SlmRequirement.Column.CommodityId, + SlmRequirement.Column.ProductCode, + SlmRequirement.Column.ProductDesc, + SlmRequirement.Column.Quantity, + SlmRequirement.Column.QuantityUnit, + SlmRequirement.Column.Weighed, + SlmRequirement.Column.Published, + SlmRequirement.Column.Notes, + SlmRequirement.Column.Flags, + SlmRequirement.Column.Status + }; + + List itemDataList = await ExecuteRequirementQuery_Mobile(columns, prmRequirement, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmRequirement.Column.Id); + SysId transId = itemData.GetIdValue(SlmRequirement.Column.TransId); + Slm.RequirementType requirementType = EnumUtil.ParseEnum(itemData.GetValue(SlmRequirement.Column.RequirementType), Slm.RequirementType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SlmRequirement.Column.Id); + // Create item. + SlmRequirement_Mobile requirement = new SlmRequirement_Mobile(Site, id, transId, requirementType, flags); + // Populate item properties. + foreach (SlmRequirement.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + //case SlmRequirement.Column.TransId: requirement.TransId = itemData.GetIdValue(column); break; + //case SlmRequirement.Column.RequirementType: requirement.RequirementType = value; break; + case SlmRequirement.Column.Seq: requirement.Seq = StringUtil.ToShort(itemData.GetDecimalValue(column)); break; + case SlmRequirement.Column.TicketNo: requirement.TicketNo = value; break; + case SlmRequirement.Column.ContractNo: requirement.ContractNo = value; break; + case SlmRequirement.Column.PartnerName: requirement.PartnerName = value; break; + case SlmRequirement.Column.VehicleReg: requirement.VehicleReg = value; break; + case SlmRequirement.Column.HaulierCode: requirement.HaulierCode = value; break; + case SlmRequirement.Column.HaulierName: requirement.HaulierName = value; break; + case SlmRequirement.Column.CommodityId: requirement.CommodityId = itemData.GetIdValue(column); break; + case SlmRequirement.Column.ProductCode: requirement.ProductCode = value; break; + case SlmRequirement.Column.ProductDesc: requirement.ProductDesc = value; break; + case SlmRequirement.Column.Quantity: requirement.Quantity = itemData.GetDecimalValue(column); break; + case SlmRequirement.Column.QuantityUnit: requirement.QuantityUnit = EnumUtil.ParseEnum(value, Slm.WeightUnit.Unknown); break; + case SlmRequirement.Column.Weighed: requirement.Weighed = itemData.GetDateTimeValue(column); break; + case SlmRequirement.Column.Published: requirement.Published = itemData.GetDateTimeValue(column); break; + case SlmRequirement.Column.Notes: requirement.Notes = value; break; + case SlmRequirement.Column.Status: requirement.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(requirement); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // Requirement query execution. + public override DbResultSet ExecuteRequirementQuery (List columns, SlmRequirement.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteRequirementQuery_Mobile (List requirementColumns, SlmRequirement.Params prmRequirement, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmRequirement.Column column in requirementColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetRequirementRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetRequirementQueryFilter_Mobile(prmRequirement), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetRequirementRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.Requirement; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetRequirementDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmRequirement.Column)column.Id) + { + //----------------------------------------------------------- + // Requirement Category. + //----------------------------------------------------------- + // Notes. + case SlmRequirement.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmRequirement.Column.Status_Desc: + case SlmRequirement.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmRequirement.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmRequirement.Column.Status_Ind) + value = new DataValue(SlmRequirement.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmTransactionMgr_Mobile-Transactions.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmTransactionMgr_Mobile-Transactions.cs new file mode 100644 index 0000000..5a8bb34 --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmTransactionMgr_Mobile-Transactions.cs @@ -0,0 +1,344 @@ +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 SlmTransactionMgr_Mobile + { + //******************************************************************* + // T r a n s a c t i o n s + //******************************************************************* + // Transaction exists. + public override bool TransactionExistsById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + // Create Transaction. + public override SlmTransaction CreateTransaction (Slm.TransactionType transactionType) + { + ClearErrorState(); + return new SlmTransaction_Mobile(Site, null, transactionType, 0); + } + + //------------------------------------------------------------------- + // Get Transaction. + public override SlmTransaction GetTransaction (SlmTransaction.Params prmTransaction) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public override SlmTransaction GetTransactionById (SysId id) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Validate Transaction. + public override bool IsValidTransactionData (SlmTransaction.Data data, SlmTransaction.ErrField errField) + { + ClearErrorState(); + if (!base.IsValidTransactionData(data, errField)) return false; + return true; + } + + //------------------------------------------------------------------- + // Insert Transaction. + public override bool InsertTransaction (SlmTransaction transaction, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidTransaction(transaction)) return false; + if (SysId.IsValid(transaction.Id)) return SetErrorState(ErrorMessage.ValiditemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Update Transaction. + public override bool UpdateTransaction (SlmTransaction transaction, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!IsValidTransaction(transaction)) return false; + if (!SysId.IsValid(transaction.Id)) return SetErrorState(ErrorMessage.InvalidItemId); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Delete Transaction. + public override bool TransactionCanBeDeleted (SlmTransaction transaction) + { + ClearErrorState(); + if (!base.TransactionCanBeDeleted(transaction)) return false; + return true; + } + public override bool DeleteTransaction (SlmTransaction transaction, DbUpdateInfo dbUpdateInfo) + { + ClearErrorState(); + if (!TransactionCanBeDeleted(transaction)) return false; + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Copy data properties to and from database. + private void PopulateTo (XElement transactionElement, SlmTransaction transaction, DbUpdateInfo dbUpdateInfo) + { + transactionElement.AppendElement("Id", SysId.ToString(transaction.Id)); + transactionElement.AppendElement("CompanyId", SysId.ToString(transaction.CompanyId)); + transactionElement.AppendElement("TransactionType", transaction.TransactionType.ToString()); + transactionElement.AppendElement("Ref", transaction.Ref); + transactionElement.AppendElement("RefInt", transaction.RefInt.ToString("N3")); + transactionElement.AppendElement("RefExt", transaction.RefExt); + transactionElement.AppendElement("Raised", DateUtil.FormatXmlDateTime(transaction.Raised)); + transactionElement.AppendElement("Published", DateUtil.FormatXmlDateTime(transaction.Published)); + transactionElement.AppendElement("Notes", transaction.Notes); + transactionElement.AppendElement("Status", SacsSystem.GetStatusCode(transaction.Status)); + transactionElement.AppendElement("Flags", transaction.Flags.ToString()); + if (!SysId.IsValid(transaction.Id)) + { + transactionElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + transactionElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId)); + transactionElement.AppendElement("CreateHost", dbUpdateInfo.Host); + } + transactionElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now)); + transactionElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId)); + transactionElement.AppendElement("UpdateHost", dbUpdateInfo.Host); + } + private void PopulateFrom (XElement transactionElement, SlmTransaction transaction) + { + //transaction.Id = new SysId(StringUtil.ToInt(transactionElement.GetChildText("Id"))); + transaction.CompanyId = new SysId(StringUtil.ToInt(transactionElement.GetChildText("CompanyId"))); + //transaction.TransactionType = EnumUtil.ParseEnum(transactionElement.GetChildText("Type"), Slm.TransactionType.Unknown); + transaction.Ref = transactionElement.GetChildText("Ref"); + transaction.RefInt = StringUtil.ToInt(transactionElement.GetChildText("RefInt")); + transaction.RefExt = transactionElement.GetChildText("RefExt"); + transaction.Raised = DateUtil.ParseXmlDateTime(transactionElement.GetChildText("Raised")); + transaction.Published = DateUtil.ParseXmlDateTime(transactionElement.GetChildText("Depth")); + transaction.Notes = transactionElement.GetChildText("Notes"); + transaction.Status = SacsSystem.GetStatusForCode(transactionElement.GetChildText("Status")); + transaction.SetCreateStamp(DateUtil.ParseXmlDateTime(transactionElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(transactionElement.GetChildText("CreateBy"))), transactionElement.GetChildText("CreateHost")); + transaction.SetUpdateStamp(DateUtil.ParseXmlDateTime(transactionElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(transactionElement.GetChildText("UpdateBy"))), transactionElement.GetChildText("UpdateHost")); + transaction.AcceptChanges(); + } + + //------------------------------------------------------------------- + // Transaction column definitions. + public override ColumnDfn GetTransactionColumnDfn (SlmTransaction.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; + } + + //------------------------------------------------------------------- + // Transaction query filter. + public override List GetTransactionQueryFilter (SlmTransaction.Params prm) + { + throw new NotImplementedException(); + } + public Dictionary GetTransactionQueryFilter_Mobile (SlmTransaction.Params prm) + { + Dictionary filter = new Dictionary(); + + // Transaction 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. + if (SysId.IsValid(prm.CompanyId)) filter.Add("CompanyId", SysId.ToString(prm.CompanyId)); + + // Company Name. + if (!StringUtil.IsEmpty(prm.CompanyName)) filter.Add("CompanyName", prm.CompanyName); + + // Transaction type: + if (prm.TransactionType != 0) filter.Add("TransactionType", prm.TransactionType.ToString()); + + // Ref. + if (!StringUtil.IsEmpty(prm.RefFull)) filter.Add("RefFull", prm.RefFull); + if (!StringUtil.IsEmpty(prm.RefPartial)) filter.Add("RefPartial", prm.RefPartial); + if (!StringUtil.IsEmpty(prm.RefExtFull)) filter.Add("RefExtFull", prm.RefExtFull); + if (!StringUtil.IsEmpty(prm.RefExtPartial)) filter.Add("RefExtPartial", prm.RefExtPartial); + + // 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; + } + // Transaction sort columns. + public List GetTransactionSortColumns (SlmTransaction.Params prm) + { + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Transaction count. + public override long GetTransactionCount (SlmTransaction.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + + //------------------------------------------------------------------- + // Transaction list. + public override List GetTransactionList (SlmTransaction.Params prm) + { + List companies = new List(); + throw new NotImplementedException(); + } + public async Task> GetTransactionList_Mobile (SlmTransaction.Params prmTransaction, SacsTaskData taskData) + { + ClearErrorState(); + List companies = new List(); + String fn = GetType().Name + ".GetTransactionList_Mobile"; + + // Transaction columns. + List columns = new List() + { + SlmTransaction.Column.Id, + SlmTransaction.Column.CompanyId, + SlmTransaction.Column.TransactionType, + SlmTransaction.Column.Ref, + SlmTransaction.Column.RefInt, + SlmTransaction.Column.RefExt, + SlmTransaction.Column.Raised, + SlmTransaction.Column.Published, + SlmTransaction.Column.Published, + SlmTransaction.Column.Notes, + SlmTransaction.Column.Flags, + SlmTransaction.Column.Status + }; + + List itemDataList = await ExecuteTransactionQuery_Mobile(columns, prmTransaction, taskData); + foreach (SlmWebServiceItemData itemData in itemDataList) + { + taskData.ThrowIfCancellationRequested(); + // Item construction properties. + SysId id = itemData.GetIdValue(SlmTransaction.Column.Id); + Slm.TransactionType transactionType = EnumUtil.ParseEnum(itemData.GetValue(SlmTransaction.Column.TransactionType), Slm.TransactionType.Unknown); + ushort flags = (ushort)itemData.GetIntValue(SlmTransaction.Column.Id); + // Create item. + SlmTransaction_Mobile transaction = new SlmTransaction_Mobile(Site, id, transactionType, flags); + // Populate item properties. + foreach (SlmTransaction.Column column in columns) + { + String value = itemData.GetValue(column); + switch (column) + { + case SlmTransaction.Column.CompanyId: transaction.CompanyId = itemData.GetIdValue(column); break; + //case SlmTransaction.Column.TransactionType: transaction.TransactionType = value; break; + case SlmTransaction.Column.Ref: transaction.Ref = value; break; + case SlmTransaction.Column.RefInt: transaction.RefInt = itemData.GetIntValue(column); break; + case SlmTransaction.Column.RefExt: transaction.RefExt = value; break; + case SlmTransaction.Column.Raised: transaction.Raised = itemData.GetDateTimeValue(column); break; + case SlmTransaction.Column.Published: transaction.Published = itemData.GetDateTimeValue(column); break; + case SlmTransaction.Column.Notes: transaction.Notes = value; break; + case SlmTransaction.Column.Status: transaction.Status = SacsSystem.GetStatusForCode(value); break; + } + } + companies.Add(transaction); + } + taskData.ThrowIfCancellationRequested(); + + if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count); + return companies; + } + + + //------------------------------------------------------------------- + // Transaction query execution. + public override DbResultSet ExecuteTransactionQuery (List columns, SlmTransaction.Params prm) + { + ClearErrorState(); + throw new NotImplementedException(); + } + public async Task> ExecuteTransactionQuery_Mobile (List transactionColumns, SlmTransaction.Params prmTransaction, SacsTaskData taskData) + { + ClearErrorState(); + + // Columns. + List columns = new List(); + foreach (SlmTransaction.Column column in transactionColumns) + columns.Add(column.ToString()); + + SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetTransactionRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetTransactionQueryFilter_Mobile(prmTransaction), columns, taskData); + return responseData.Items; + } + + //------------------------------------------------------------------- + private SlmWebServiceRequest.Config GetTransactionRequestConfig (SlmWebServiceRequest.RequestType requestType, bool debug = false) + { + SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config(); + configRequest.DataType = SlmWebServiceRequest.DataType.Transaction; + configRequest.RequestType = requestType; + configRequest.Context.SiteDefinition = SiteDefinition; + configRequest.Context.User = User; + configRequest.Context.Email = Email; + configRequest.Context.Debug = debug; + return configRequest; + } + + //------------------------------------------------------------------- + public override DataValue GetTransactionDataValue (ColumnDfn column, NamedValue.Map values) + { + DataValue value = new DataValue(); + switch ((SlmTransaction.Column)column.Id) + { + //----------------------------------------------------------- + // Transaction Category. + //----------------------------------------------------------- + // Notes. + case SlmTransaction.Column.Notes: + value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); + break; + + //----------------------------------------------------------- + // Status. + case SlmTransaction.Column.Status_Desc: + case SlmTransaction.Column.Status_Ind: + { + String statusCode = values.GetValue(column.DataName).ToString(); + SaStatus status = SacsSystem.GetStatusForCode(statusCode); + if (column.Id == (int)SlmTransaction.Column.Status_Desc) + value = new DataValue(SacsSystem.GetStatusDesc(status)); + else if (column.Id == (int)SlmTransaction.Column.Status_Ind) + value = new DataValue(SlmTransaction.GetStatusTriState(status)); + } + break; + + //----------------------------------------------------------- + } + return value; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} + diff --git a/SaLogMgrMobCore/Mobile/Core/Mgr/SlmTransactionMgr_Mobile.cs b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmTransactionMgr_Mobile.cs new file mode 100644 index 0000000..597398b --- /dev/null +++ b/SaLogMgrMobCore/Mobile/Core/Mgr/SlmTransactionMgr_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 SlmTransactionMgr_Mobile : SlmTransactionMgr + { + //------------------------------------------------------------------- + // Definitions. + + //------------------------------------------------------------------- + // Data members. + private SlmWebServiceClient webServiceClient = new SlmWebServiceClient(); + + //------------------------------------------------------------------- + // Construction. + public SlmTransactionMgr_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; } } + + //------------------------------------------------------------------- + } + //======================================================================= +}