Berthing and Tasks

This commit is contained in:
Andy Howard
2019-08-07 09:11:16 +01:00
parent 79b37d1b5c
commit 3e25524057
65 changed files with 1800 additions and 2216 deletions
@@ -80,7 +80,7 @@ namespace Sarand.LogisticsMgr.Mobile.App
public override async Task<bool> IsWebServiceAlive (SlmSiteDefinition siteDefinition)
{
SlmWebServiceClient webServiceClient = new SlmWebServiceClient();
return await webServiceClient.IsAlive(siteDefinition);
return await webServiceClient.RequestIsAlive(siteDefinition);
}
//-------------------------------------------------------------------
@@ -119,8 +119,8 @@ namespace Sarand.LogisticsMgr.Mobile.App
{
sites.Add(new SlmSiteDefinition_App(Slm.Site.Southampton, "Localhost", "http://localhost:34567/SaLogMgr"));
sites.Add(new SlmSiteDefinition_App(Slm.Site.Southampton, "Sarand107", "http://Sarand107:34567/SaLogMgr"));
sites.Add(new SlmSiteDefinition_App(Slm.Site.Southampton, "Sarand107 IP4", "http://10.53.2.208:34567/SaLogMgr"));
//sites.Add(new SlmSiteDefinition_App(Slm.Site.Southampton, "Sarand107 IP6", "http://[fe80::c1b6:f5ee:a3ea:35e3]:34567/SaLogMgr"));
sites.Add(new SlmSiteDefinition_App(Slm.Site.Southampton, "Sarand107 IP4", "http://192.168.1.117:34567/SaLogMgr"));
sites.Add(new SlmSiteDefinition_App(Slm.Site.Southampton, "Sarand107 IP6", "http://[2a00:23c4:1b29:cc00:87d:e29d:3ee4:7829]:34567/SaLogMgr"));
}
}
return sites;
@@ -1,7 +1,7 @@
using Sarand.Core.Base;
using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Mobile.Core.App;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Templates;
using System;
using System.Collections.Generic;
@@ -38,8 +38,8 @@ namespace Sarand.LogisticsMgr.Mobile.App.Commands
try
{
if (!await App.GetInstance().SlmMainPage.IsWebServiceActive()) return;
SlmPage_Assets_Repair.Config pageConfig = new SlmPage_Assets_Repair.Config();
SlmPage_Assets_Repair assetRepairForm = new SlmPage_Assets_Repair (pageConfig);
SlmFormPage_Assets_Repair.Config pageConfig = new SlmFormPage_Assets_Repair.Config();
SlmFormPage_Assets_Repair assetRepairForm = new SlmFormPage_Assets_Repair (pageConfig);
assetRepairForm.Disappearing += (sender2, e2) =>
{
AssetRepairFormActive = false;
@@ -4,9 +4,11 @@ using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Mobile.Core.App;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Forms.Components;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Templates;
using Sarand.LogisticsMgr.Mobile.Forms.Panels.Main;
using Sarand.LogisticsMgr.Mobile.Forms.Panels.Main.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Panels.Main.Bulk;
using Sarand.LogisticsMgr.Mobile.Forms.Views;
using System;
using System.Collections.Generic;
@@ -91,8 +93,8 @@ namespace Sarand.LogisticsMgr.Mobile.App
// Bulk.
case SlmMobile.MainView.ShipFile:
{
SlmMainPanel_ShipFile.Config panelConfig = new SlmMainPanel_ShipFile.Config();
SlmMainPanel_ShipFile loginPanel = new SlmMainPanel_ShipFile(panelConfig);
SlmMainPanel_Bulk_Berthings.Config panelConfig = new SlmMainPanel_Bulk_Berthings.Config();
SlmMainPanel_Bulk_Berthings loginPanel = new SlmMainPanel_Bulk_Berthings(panelConfig);
mainPanel = loginPanel;
break;
}
@@ -1,7 +1,7 @@
using Sarand.Core.Base;
using Sarand.LogisticsMgr.Mobile.App.Commands;
using Sarand.LogisticsMgr.Mobile.Core.App;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Config;
using Sarand.LogisticsMgr.Mobile.Forms.Views;
using System;
@@ -99,8 +99,8 @@ namespace Sarand.LogisticsMgr.Mobile.App
{
InvokeMenuOptionClicked();
if (!await MainPage.IsWebServiceActive()) return;
SlmPage_Assets_Repair.Config pageConfig = new SlmPage_Assets_Repair.Config();
SlmPage_Assets_Repair assetRepairForm = new SlmPage_Assets_Repair (pageConfig);
SlmFormPage_Assets_Repair.Config pageConfig = new SlmFormPage_Assets_Repair.Config();
SlmFormPage_Assets_Repair assetRepairForm = new SlmFormPage_Assets_Repair (pageConfig);
assetRepairForm.Disappearing += (sender2, e2) =>
{
AssetRepairFormActive = false;
@@ -11,7 +11,7 @@ using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Components
namespace Sarand.LogisticsMgr.Mobile.Forms.Components.Assets
{
//=======================================================================
public class SlmComponents_AssetMovement : SlmComponents
@@ -32,66 +32,35 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Components
//-------------------------------------------------------------------
// Properties.
public String MessageTitle { get; set; } = "Asset Movement";
// Asset Code.
public SlmLabel LabelAssetCode { get; } = new SlmLabel() { Text = "Container no." };
public SlmEntryView EntryAssetCode { get; } = new SlmEntryView();
// Asset Size.
public SlmLabel LabelAssetSize { get; } = new SlmLabel() { Text = "Size" };
public SlmPickerView_CodeType PickerAssetSize { get; } = new SlmPickerView_CodeType() { CodeType = Slm.CodeType.ContainerSize };
// Movement type.
public SlmLabel LabelMovementType { get; } = new SlmLabel() { Text = "Movement type" };
public SlmPickerView_SystemCodes PickerMovementType { get; } = new SlmPickerView_SystemCodes(Slm.SystemCode.AssetMovementType) { };
// Reference.
public SlmLabel LabelReference { get; } = new SlmLabel() { Text = "Reference" };
public SlmEntryView EntryReference { get; } = new SlmEntryView();
// Movement date.
public SlmLabel LabelMovementDate { get; } = new SlmLabel() { Text = "Movement date" };
public SlmDatePickerView DatePickerMovementDate { get; } = new SlmDatePickerView();
// Asset.
public SlmEntryView EntryAssetCode { get; } = new SlmEntryView() { LabelText = "Container no." };
public SlmPickerView_CodeType PickerAssetSize { get; } = new SlmPickerView_CodeType() { LabelText = "Size", CodeType = Slm.CodeType.ContainerSize };
// Movement.
public SlmPickerView_SystemCodes PickerMovementType { get; } = new SlmPickerView_SystemCodes(Slm.SystemCode.AssetMovementType) { LabelText = "Movement type" };
public SlmEntryView EntryReference { get; } = new SlmEntryView() { LabelText = "Reference" };
public SlmDatePickerView DatePickerMovementDate { get; } = new SlmDatePickerView() { LabelText = "Movement date" };
// Customer.
public SlmLabel LabelCustomer { get; } = new SlmLabel() { Text = "Customer" };
public SlmEntryView EntryCustomer { get; } = new SlmEntryView();
// Customer reference.
public SlmLabel LabelCustomerReference { get; } = new SlmLabel() { Text = "Customer ref" };
public SlmEntryView EntryCustomerReference { get; } = new SlmEntryView();
// Location - start.
public SlmLabel LabelLocationStart { get; } = new SlmLabel() { Text = "Location - start" };
public SlmEntryView EntryLocationStart { get; } = new SlmEntryView();
// Location - current.
public SlmLabel LabelLocationCurrent { get; } = new SlmLabel() { Text = "Location - current" };
public SlmEntryView EntryLocationCurrent { get; } = new SlmEntryView();
// Location - finish.
public SlmLabel LabelLocationFinish { get; } = new SlmLabel() { Text = "Location - finish" };
public SlmEntryView EntryLocationFinish { get; } = new SlmEntryView();
// Haulier - initial.
public SlmLabel LabelHaulierInitial { get; } = new SlmLabel() { Text = "Haulier - initial" };
public SlmEntryView EntryHaulierInitial { get; } = new SlmEntryView();
// Registration - initial.
public SlmLabel LabelRegistrationInitial { get; } = new SlmLabel() { Text = "Registration - initial" };
public SlmEntryView EntryRegistrationInitial { get; } = new SlmEntryView();
// Haulier - final.
public SlmLabel LabelHaulierFinal { get; } = new SlmLabel() { Text = "Haulier - final" };
public SlmEntryView EntryHaulierFinal { get; } = new SlmEntryView();
// Registration - final.
public SlmLabel LabelRegistrationFinal { get; } = new SlmLabel() { Text = "Registration - final" };
public SlmEntryView EntryRegistrationFinal { get; } = new SlmEntryView();
// Pin number.
public SlmLabel LabelPinNumber { get; } = new SlmLabel() { Text = "PIN" };
public SlmEntryView EntryPinNumber { get; } = new SlmEntryView();
// Seal number.
public SlmLabel LabelSealNumber { get; } = new SlmLabel() { Text = "Seal number" };
public SlmEntryView EntrySealNumber { get; } = new SlmEntryView();
// Status.
public SlmLabel LabelStatus { get; } = new SlmLabel() { Text = "Status" };
public SlmEntryView EntryStatus { get; } = new SlmEntryView();
// InProgress date.
public SlmLabel LabelInProgressDate { get; } = new SlmLabel() { Text = "In progress" };
public SlmDatePickerView DatePickerInProgressDate { get; } = new SlmDatePickerView();
// Completed date.
public SlmLabel LabelCompletedDate { get; } = new SlmLabel() { Text = "Completed" };
public SlmDatePickerView DatePickerCompletedDate { get; } = new SlmDatePickerView();
public SlmEntryView EntryCustomer { get; } = new SlmEntryView() { LabelText = "Customer" };
public SlmEntryView EntryCustomerReference { get; } = new SlmEntryView() { LabelText = "Customer ref" };
// Location.
public SlmEntryView EntryLocationStart { get; } = new SlmEntryView() { LabelText = "Location - start" };
public SlmEntryView EntryLocationCurrent { get; } = new SlmEntryView() { LabelText = "Location - current" };
public SlmEntryView EntryLocationFinish { get; } = new SlmEntryView() { LabelText = "Location - finish" };
// Haulier.
public SlmEntryView EntryHaulierInitial { get; } = new SlmEntryView() { LabelText = "Haulier - initial" };
public SlmEntryView EntryHaulierFinal { get; } = new SlmEntryView() { LabelText = "Haulier - final" };
// Registration.
public SlmEntryView EntryRegistrationInitial { get; } = new SlmEntryView() { LabelText = "Registration - initial" };
public SlmEntryView EntryRegistrationFinal { get; } = new SlmEntryView() { LabelText = "Registration - final" };
// Numbers.
public SlmEntryView EntryPinNumber { get; } = new SlmEntryView() { LabelText = "PIN" };
public SlmEntryView EntrySealNumber { get; } = new SlmEntryView() { LabelText = "Seal number" };
// Status & dates.
public SlmEntryView EntryStatus { get; } = new SlmEntryView() { LabelText = "Status" };
public SlmDatePickerView DatePickerInProgressDate { get; } = new SlmDatePickerView() { LabelText = "In progress" };
public SlmDatePickerView DatePickerCompletedDate { get; } = new SlmDatePickerView() { LabelText = "Completed" };
// Notes.
public SlmLabel LabelNotes { get; } = new SlmLabel() { Text = "Notes" };
public SlmEditorView EntryNotes { get; } = new SlmEditorView();
public SlmEditorView EditorNotes { get; } = new SlmEditorView() { LabelText = "Notes" };
//-------------------------------------------------------------------
// Utilities.
@@ -144,7 +113,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Components
EntryReference.Text = data.MovementRef;
DatePickerInProgressDate.Date = data.InProgressAt;
DatePickerCompletedDate.Date = data.CompletedAt;
EntryNotes.Text = data.Notes;
EditorNotes.Text = data.Notes;
Changed = false;
}
//-------------------------------------------------------------------
@@ -186,7 +155,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Components
EntryStatus.ReadOnly = ReadOnly;
DatePickerInProgressDate.ReadOnly = ReadOnly;
DatePickerCompletedDate.ReadOnly = ReadOnly;
EntryNotes.ReadOnly = ReadOnly;
EditorNotes.ReadOnly = ReadOnly;
}
//-------------------------------------------------------------------
@@ -11,7 +11,7 @@ using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Components
namespace Sarand.LogisticsMgr.Mobile.Forms.Components.Assets
{
//=======================================================================
public class SlmComponents_AssetRepair : SlmComponents
@@ -30,21 +30,15 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Components
//-------------------------------------------------------------------
// Properties.
public String MessageTitle { get; set; } = "Asset Repair";
// Controls.
// Shipping Line company.
public SlmLabel LabelCompany { get; } = new SlmLabel() { Text = "Shipping line" };
public SlmPickerView_Companies PickerCompany { get; } = new SlmPickerView_Companies() { CompanyType = Slm.CompanyType.ContainerLine };
// Asset Code.
public SlmLabel LabelAssetCode { get; } = new SlmLabel() { Text = "Container no." };
public SlmEntryView EntryAssetCode { get; } = new SlmEntryView();
// Asset Size.
public SlmLabel LabelAssetSize { get; } = new SlmLabel() { Text = "Size" };
public SlmPickerView_CodeType PickerAssetSize { get; } = new SlmPickerView_CodeType() { CodeType = Slm.CodeType.ContainerSize };
// Repair Narrative.
public SlmLabel LabelRepairNarrative { get; } = new SlmLabel() { Text = "Narrative" };
public SlmEntryView EntryRepairNarrative { get; } = new SlmEntryView();
// Repair Inspector.
public SlmLabel LabelRepairInspector { get; } = new SlmLabel() { Text = "Inspector" };
public SlmEntryView EntryRepairInspector { get; } = new SlmEntryView();
public SlmPickerView_Companies PickerCompany { get; } = new SlmPickerView_Companies() { LabelText = "Shipping line", CompanyType = Slm.CompanyType.ContainerLine };
// Asset.
public SlmEntryView EntryAssetCode { get; } = new SlmEntryView() { LabelText = "Container no." };
public SlmPickerView_CodeType PickerAssetSize { get; } = new SlmPickerView_CodeType() { LabelText = "Size", CodeType = Slm.CodeType.ContainerSize };
// Repair.
public SlmEntryView EntryRepairNarrative { get; } = new SlmEntryView() { LabelText = "Narrative" };
public SlmEntryView EntryRepairInspector { get; } = new SlmEntryView() { LabelText = "Inspector" };
// Repair Authorisation type.
public Slm.AssetRepairAuthoriseType RepairAuthoriseType
{
@@ -7,14 +7,13 @@ using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Components
namespace Sarand.LogisticsMgr.Mobile.Forms.Components.Assets
{
//=======================================================================
public class SlmComponents_AssetRepairImage : SlmComponents
{
//-------------------------------------------------------------------
// Data members.
private SlmSessionProfile_Mobile sessionProfile = SlmGlobals_Mobile.SessionProfile;
//-------------------------------------------------------------------
// Construction.
@@ -26,8 +25,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Components
//-------------------------------------------------------------------
// Properties.
// Filename.
public SlmLabel LabelFilename { get; } = new SlmLabel() { Text = "Filename" };
public SlmEntryView EntryFilename { get; } = new SlmEntryView();
public SlmEntryView EntryFilename { get; } = new SlmEntryView() { LabelText = "Filename" };
//-------------------------------------------------------------------
// Utilities.
@@ -10,7 +10,7 @@ using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Components
namespace Sarand.LogisticsMgr.Mobile.Forms.Components.Assets
{
//=======================================================================
public class SlmComponents_AssetRepairJob : SlmComponents
@@ -20,7 +20,6 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Components
//-------------------------------------------------------------------
// Data members.
private SlmSessionProfile_Mobile sessionProfile = SlmGlobals_Mobile.SessionProfile;
private static readonly int codeEntryWidth = 48;
//-------------------------------------------------------------------
@@ -33,24 +32,19 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Components
//-------------------------------------------------------------------
// Properties.
// Location code.
public SlmLabel LabelLocation { get; } = new SlmLabel() { Text = "Location" };
public SlmEntryView EntryLocation { get; } = new SlmEntryView();
public SlmEntryView EntryLocation { get; } = new SlmEntryView() { LabelText = "Location" };
public SlmPickerView_CodeType PickerLocation { get; } = new SlmPickerView_CodeType() { CodeType = Slm.CodeType.AssetRepair_Location };
// Component code.
public SlmLabel LabelComponent { get; } = new SlmLabel() { Text = "Component" };
public SlmEntryView EntryComponent { get; } = new SlmEntryView();
public SlmEntryView EntryComponent { get; } = new SlmEntryView() { LabelText = "Component" };
public SlmPickerView_CodeType PickerComponent { get; } = new SlmPickerView_CodeType() { CodeType = Slm.CodeType.AssetRepair_Component };
// Damage code.
public SlmLabel LabelDamage { get; } = new SlmLabel() { Text = "Damage" };
public SlmEntryView EntryDamage { get; } = new SlmEntryView();
public SlmEntryView EntryDamage { get; } = new SlmEntryView() { LabelText = "Damage" };
public SlmPickerView_CodeType PickerDamage { get; } = new SlmPickerView_CodeType() { CodeType = Slm.CodeType.AssetRepair_Damage };
// Repair code.
public SlmLabel LabelRepair { get; } = new SlmLabel() { Text = "Repair" };
public SlmEntryView EntryRepair { get; } = new SlmEntryView();
public SlmEntryView EntryRepair { get; } = new SlmEntryView() { LabelText = "Repair" };
public SlmPickerView_CodeType PickerRepair { get; } = new SlmPickerView_CodeType() { CodeType = Slm.CodeType.AssetRepair_Repair };
// Quantity.
public SlmLabel LabelQuantity { get; } = new SlmLabel() { Text = "Quantity" };
public SlmEntryView EntryQuantity { get; } = new SlmEntryView();
public SlmEntryView EntryQuantity { get; } = new SlmEntryView() { LabelText = "Quantity" };
//-------------------------------------------------------------------
// Utilities.
@@ -0,0 +1,123 @@
using Sarand.Core.Base;
using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Mobile.App;
using Sarand.LogisticsMgr.Mobile.Core.App;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Controls;
using System;
using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Components.Bulk
{
//=======================================================================
public class SlmComponents_Berthing : SlmComponents
{
//-------------------------------------------------------------------
// Data members.
private SlmSessionProfile_Mobile sessionProfile = SlmGlobals_Mobile.SessionProfile;
//-------------------------------------------------------------------
// Construction.
public SlmComponents_Berthing ()
{
InitialiseComponents();
}
//-------------------------------------------------------------------
// Properties.
// Vessel.
public SlmPickerView PickerVessel { get; } = new SlmPickerView() { LabelText = "Vessel", ReadOnly = true };
// Berthing.
public SlmPickerView PickerAgent { get; } = new SlmPickerView() { LabelText = "Agent", ReadOnly = true };
public SlmPickerView PickerCustomer { get; } = new SlmPickerView() { LabelText = "Customer", ReadOnly = true };
// Notes.
public SlmEditorView EditorNotes { get; } = new SlmEditorView() { LabelText = "Notes" };
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
// I n i t i a l i s e
//-------------------------------------------------------------------
private void InitialiseComponents ()
{
// Control events.
PickerVessel.SelectedIndexChanged += PickerVessel_SelectedIndexChanged;
PickerAgent.SelectedIndexChanged += PickerAgent_SelectedIndexChanged;
PickerCustomer.SelectedIndexChanged += PickerCustomer_SelectedIndexChanged;
EditorNotes.TextChanged += EditorNotes_TextChanged;
EditorNotes.Completed += EditorNotes_Completed;
Changed = false;
}
//-------------------------------------------------------------------
// P o p u l a t i o n
//-------------------------------------------------------------------
public void PopulateToControls (SlmVessel.Data data)
{
Changed = false;
}
public void PopulateToControls (SlmBerthing.Data data)
{
EditorNotes.Text = data.Notes;
Changed = false;
}
//-------------------------------------------------------------------
public bool IsDataValid (SlmAssetMovement.Data data)
{
return true;
}
//-------------------------------------------------------------------
public void PopulateFromControls (SlmAssetMovement.Data data)
{
}
//-------------------------------------------------------------------
// C o n t r o l A c t i v i t y
//-------------------------------------------------------------------
protected override void SetControlActivity ()
{
SetControlsReadOnly();
}
protected override void SetControlsReadOnly ()
{
PickerVessel.ReadOnly = true;
PickerAgent.ReadOnly = ReadOnly;
PickerCustomer.ReadOnly = ReadOnly;
EditorNotes.ReadOnly = ReadOnly;
}
//-------------------------------------------------------------------
// C o n t r o l E v e n t s
//-------------------------------------------------------------------
private void PickerVessel_SelectedIndexChanged (object sender, EventArgs e)
{
Changed = true;
}
//-------------------------------------------------------------------
private void PickerAgent_SelectedIndexChanged (object sender, EventArgs e)
{
Changed = true;
}
//-------------------------------------------------------------------
private void PickerCustomer_SelectedIndexChanged (object sender, EventArgs e)
{
Changed = true;
}
//-------------------------------------------------------------------
private void EditorNotes_TextChanged (object sender, TextChangedEventArgs e)
{
}
private void EditorNotes_Completed (object sender, EventArgs e)
{
Changed = true;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,107 @@
using Sarand.Core.Base;
using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Mobile.Core.App;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Controls;
using System;
using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Components.Bulk
{
//=======================================================================
public class SlmComponents_BerthingTask : SlmComponents
{
//-------------------------------------------------------------------
// Data members.
private SlmSessionProfile_Mobile sessionProfile = SlmGlobals_Mobile.SessionProfile;
private readonly List<TypeCodeDesc> berthingTaskTypes;
//-------------------------------------------------------------------
// Construction.
public SlmComponents_BerthingTask()
{
berthingTaskTypes = SlmSystem.GetCodesOfType(Slm.SystemCode.BerthingTaskType);
InitialiseComponents();
}
//-------------------------------------------------------------------
// Properties.
// Controls.
public SlmPickerView_SystemCodes PickerTaskType { get; } = new SlmPickerView_SystemCodes(Slm.SystemCode.BerthingTaskType) { LabelText = "Task type" };
public SlmDatePickerView DatePickerStarted { get; } = new SlmDatePickerView() { LabelText = "Started" };
public SlmDatePickerView DatePickerCompleted { get; } = new SlmDatePickerView() { LabelText = "Completed" };
public SlmEditorView EntryRemarks { get; } = new SlmEditorView() { LabelText = "Remarks" };
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
// I n i t i a l i s e
//-------------------------------------------------------------------
private void InitialiseComponents ()
{
// Filename.
EntryRemarks.MaxLength = (int)SlmDbDfn.GetColTextLen(SlmDbDfn.ColumnIdx.BerthingTask_Remarks);
EntryRemarks.TextChanged += EntryRemarks_TextChanged;
EntryRemarks.Completed += EntryRemarks_Completed;
Changed = false;
}
//-------------------------------------------------------------------
// P o p u l a t i o n
//-------------------------------------------------------------------
public void PopulateToControls (SlmBerthingTask.Data data)
{
PickerTaskType.SelectedCode = berthingTaskTypes.GetCodeForType((int)data.BerthingTaskType);
DatePickerStarted.Date = data.Started;
DatePickerCompleted.Date = data.Completed;
EntryRemarks.Text = data.Remarks;
Changed = false;
}
public bool IsDataValid (SlmBerthingTask.Data data)
{
return true;
}
public void PopulateFromControls (SlmBerthingTask.Data data)
{
data.BerthingTaskType = (Slm.BerthingTaskType)berthingTaskTypes.GetTypeForCode(PickerTaskType.SelectedCode);
data.Started = DatePickerStarted.Date;
data.Completed = DatePickerCompleted.Date;
data.Remarks = EntryRemarks.Text;
}
//-------------------------------------------------------------------
// C o n t r o l A c t i v i t y
//-------------------------------------------------------------------
protected override void SetControlActivity ()
{
SetControlsReadOnly();
}
protected override void SetControlsReadOnly ()
{
PickerTaskType.ReadOnly = ReadOnly;
DatePickerStarted.ReadOnly = ReadOnly;
DatePickerCompleted.ReadOnly = ReadOnly;
EntryRemarks.ReadOnly = ReadOnly;
}
//-------------------------------------------------------------------
// C o n t r o l E v e n t s
//-------------------------------------------------------------------
// Filename.
private void EntryRemarks_TextChanged (object sender, TextChangedEventArgs e)
{
}
private void EntryRemarks_Completed (object sender, EventArgs e)
{
Changed = true;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -1,271 +0,0 @@
using Sarand.Core.App;
using Sarand.Core.Base;
using Sarand.Core.Bus;
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.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Forms.Components;
using Sarand.LogisticsMgr.Mobile.Forms.Effects;
using Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
{
//=======================================================================
public class SlmPage_Assets_Movement : SlmFormPage
{
//-------------------------------------------------------------------
// Definitions.
public new class Config : SlmFormPage.Config
{
public SlmAssetMovement AssetMovementToUpdate { get; set; }
public SlmContainer AssetMovement_Container { get; set; }
}
private class AssetMovementData
{
public Slm.AssetItemType AssetItemType { get; set; }
public SysId AssetItemId { get; set; }
}
//-------------------------------------------------------------------
// Data members.
private readonly Config config;
private readonly AssetMovementData assetMovementData = new AssetMovementData();
private SlmGrid gridProperties = new SlmGrid();
private SlmComponents_AssetMovement assetMovementComponents = new SlmComponents_AssetMovement();
//-------------------------------------------------------------------
// Construction.
public SlmPage_Assets_Movement (Config config) : base(config)
{
this.config = config;
Title = "Asset Movement";
AddMode = config.AssetMovementToUpdate == null;
if (config.ReadOnly)
{
assetMovementComponents.ReadOnly = true;
}
InitialiseComponents();
}
//-------------------------------------------------------------------
// Properties.
//-------------------------------------------------------------------
// I n i t i a l i s e
//-------------------------------------------------------------------
private void InitialiseComponents ()
{
// Asset Repair form.
FormBodyView.Content = gridProperties;
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
int rowIdx = -1;
// Asset code.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelAssetCode, 0, rowIdx);
//entryAssetCode.Effects.Add(new InputCaseEffect());
gridProperties.Children.Add(assetMovementComponents.EntryAssetCode, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryAssetCode, 2);
assetMovementComponents.EntryAssetCode.TextChanged += EntryAssetCode_TextChanged;
assetMovementComponents.EntryAssetCode.Completed += EntryAssetCode_Completed;
// Asset Size.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelAssetSize, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.PickerAssetSize, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.PickerAssetSize, 2);
// Movement type.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelMovementType, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.PickerMovementType, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.PickerMovementType, 2);
// Reference.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelReference, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryReference, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryReference, 2);
// Movement date.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelMovementDate, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.DatePickerMovementDate, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.DatePickerMovementDate, 2);
// Customer.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelCustomer, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryCustomer, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryCustomer, 2);
// CustomerReference.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelCustomerReference, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryCustomerReference, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryCustomerReference, 2);
// LocationStart.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelLocationStart, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryLocationStart, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryLocationStart, 2);
// LocationCurrent.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelLocationCurrent, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryLocationCurrent, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryLocationCurrent, 2);
// LocationFinish.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelLocationFinish, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryLocationFinish, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryLocationFinish, 2);
// HaulierInitial.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelHaulierInitial, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryHaulierInitial, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryHaulierInitial, 2);
// RegistrationInitial.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelRegistrationInitial, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryRegistrationInitial, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryRegistrationInitial, 2);
// HaulierFinal.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelHaulierFinal, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryHaulierFinal, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryHaulierFinal, 2);
// RegistrationFinal.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelRegistrationFinal, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryRegistrationFinal, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryRegistrationFinal, 2);
// PinNumber.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelPinNumber, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryPinNumber, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryPinNumber, 2);
// SealNumber.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelSealNumber, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntrySealNumber, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntrySealNumber, 2);
// Status.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelStatus, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryStatus, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryStatus, 2);
// InProgress date.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelInProgressDate, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.DatePickerInProgressDate, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.DatePickerInProgressDate, 2);
// Completed date.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelCompletedDate, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.DatePickerCompletedDate, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.DatePickerCompletedDate, 2);
// Notes.
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetMovementComponents.LabelNotes, 0, rowIdx);
gridProperties.Children.Add(assetMovementComponents.EntryNotes, 1, rowIdx);
Grid.SetColumnSpan(assetMovementComponents.EntryNotes, 2);
// Complete page configuration.
ConfigureComponents();
}
//-------------------------------------------------------------------
// C o n f i g u r e C o n t r o l s
//-------------------------------------------------------------------
private void ConfigureComponents ()
{
// Populate properties to components.
assetMovementComponents.PopulateToControls(config.AssetMovement_Container?.GetData() ?? new SlmContainer.Data());
assetMovementComponents.PopulateToControls(config.AssetMovementToUpdate?.GetData() ?? new SlmAssetMovement.Data());
}
//-------------------------------------------------------------------
// C o n t r o l A c t i v i t y
//-------------------------------------------------------------------
protected override void SetControlActivity ()
{
base.SetControlActivity();
}
protected override void SetControlsReadOnly ()
{
}
//-------------------------------------------------------------------
// N a v i g a t i o n E v e n t s
//-------------------------------------------------------------------
protected override bool SaveFormData ()
{
return true;
}
//-------------------------------------------------------------------
protected override bool QueryCancelForm ()
{
if (!base.QueryCancelForm()) return false;
return true;
}
//-------------------------------------------------------------------
// P r o p e r t y E v e n t s
//-------------------------------------------------------------------
// Asset code.
private void EntryAssetCode_TextChanged (object sender, TextChangedEventArgs e)
{
}
private void EntryAssetCode_Completed (object sender, EventArgs e)
{
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,234 @@
using Sarand.Core.App;
using Sarand.Core.Base;
using Sarand.Core.Bus;
using Sarand.Core.Tasks;
using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Forms.Components.Assets;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets
{
//=======================================================================
public class SlmFormPage_Assets_Movement : SlmFormPage
{
//-------------------------------------------------------------------
// Definitions.
public new class Config : SlmFormPage.Config
{
public SysId AssetMovementIdToUpdate { get; set; }
}
private class AssetMovementData
{
public Slm.AssetItemType AssetItemType { get; set; }
public SysId AssetItemId { get; set; }
}
//-------------------------------------------------------------------
// Data members.
private readonly Config config;
private readonly AssetMovementData assetMovementData = new AssetMovementData();
private SlmGrid gridProperties = new SlmGrid();
private SlmComponents_AssetMovement assetMovementComponents = new SlmComponents_AssetMovement();
// Data to view/update.
public SlmAssetMovement assetMovementToUpdate { get; set; }
public SlmContainer assetMovement_Container { get; set; }
//-------------------------------------------------------------------
// Construction.
public SlmFormPage_Assets_Movement (Config config) : base(config)
{
this.config = config;
Title = "Asset Movement";
AddMode = !SysId.IsValid(config.AssetMovementIdToUpdate);
if (config.ReadOnly)
{
assetMovementComponents.ReadOnly = true;
}
PrepareFormData();
}
//-------------------------------------------------------------------
// Properties.
//-------------------------------------------------------------------
// P r e p a r a t i o n
//-------------------------------------------------------------------
private SacsTaskData taskDataPrepareData = new SacsTaskData(null);
private void PrepareFormData ()
{
String fn = GetType().Name+".PrepareFormData";
if (!SysId.IsValid(config.AssetMovementIdToUpdate)) return;
// Form is initialised on separate thread while data is retrieved from the service.
// 'Please wait' message is displayed during preparation.
// Any issue during preparation results in an alert message and the form is closed.
FormBodyView.Content = new SlmLabel() { Text = DataPreparationMessage };
Task.Run(async () =>
{
try
{
await PopulateAssetMovementData(taskDataPrepareData);
}
catch (Exception exc)
{
if (SacsSystem.DebugMode) Logger.Warn(fn + " " + ExceptionUtil.GetLogMessage(exc));
CloseFormWithAlert(nameof(exc) + " on form initialisation.\n\n" + exc.Message);
}
}, taskDataPrepareData.CancellationToken)
.ContinueWith(task =>
{
taskDataPrepareData.Dispose();
});
}
//-------------------------------------------------------------------
private async Task PopulateAssetMovementData (SacsTaskData taskDataPrepareData_Local)
{
String fn = GetType().Name + ".PopulateAssetMovementData";
// Retrieve Asset Movement and associated details.
try
{
// Retrieve Asset Movement.
SlmAssetMovement.Params prmAssetMovement = new SlmAssetMovement.Params();
prmAssetMovement.IncludedIds.Add(config.AssetMovementIdToUpdate);
prmAssetMovement.StatusCat = SlmAssetMovement.StatusCat.Any;
assetMovementToUpdate = await AssetMgr.GetAssetMovement_Mobile(prmAssetMovement, taskDataPrepareData_Local);
// Retrieve Container.
if (assetMovementToUpdate != null)
{
if (assetMovementToUpdate.AssetItemType == Slm.AssetItemType.Container)
{
SlmContainer.Params prmContainer = new SlmContainer.Params();
prmContainer.IncludedIds.Add(assetMovementToUpdate.AssetItemId);
prmContainer.StatusCat = SlmContainer.StatusCat.Any;
assetMovement_Container = await AssetMgr.GetContainer_Mobile(prmContainer, taskDataPrepareData_Local);
}
}
}
catch (Exception exc) { Logger.Debug(fn + " " + exc.GetLogMessage(6)); }
if (assetMovementToUpdate == null)
{
CloseFormWithAlert("Failed to retrieve Asset movement data.");
return;
}
if (assetMovementToUpdate.AssetItemType == Slm.AssetItemType.Container)
{
if (assetMovement_Container == null)
{
CloseFormWithAlert("Failed to retrieve Container data.");
return;
}
}
else
{
CloseFormWithAlert("Unrecognised asset type: " + assetMovementToUpdate.AssetItemType.ToString() + ".");
return;
}
if (taskDataPrepareData_Local.IsCancellationRequested) return;
Device.BeginInvokeOnMainThread(() =>
{
// Initialise form.
InitialiseComponents();
});
}
//-------------------------------------------------------------------
// I n i t i a l i s e
//-------------------------------------------------------------------
private void InitialiseComponents ()
{
// Asset Repair form.
FormBodyView.Content = gridProperties;
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
//---------------------------------------------------------------
// Asset.
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryAssetCode);
AddControlViewToGrid(gridProperties, assetMovementComponents.PickerAssetSize);
// Movement.
AddControlViewToGrid(gridProperties, assetMovementComponents.PickerMovementType);
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryReference);
AddControlViewToGrid(gridProperties, assetMovementComponents.DatePickerMovementDate);
// Customer.
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryCustomer);
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryCustomerReference);
// Location.
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryLocationStart);
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryLocationCurrent);
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryLocationFinish);
// Haulier & Registration.
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryHaulierInitial);
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryRegistrationInitial);
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryHaulierFinal);
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryRegistrationFinal);
// Numbers.
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryPinNumber);
AddControlViewToGrid(gridProperties, assetMovementComponents.EntrySealNumber);
// Status.
AddControlViewToGrid(gridProperties, assetMovementComponents.EntryStatus);
AddControlViewToGrid(gridProperties, assetMovementComponents.DatePickerInProgressDate);
AddControlViewToGrid(gridProperties, assetMovementComponents.DatePickerCompletedDate);
// Notes.
AddControlViewToGrid(gridProperties, assetMovementComponents.EditorNotes);
//---------------------------------------------------------------
// Populate properties to components.
assetMovementComponents.PopulateToControls(assetMovement_Container?.GetData() ?? new SlmContainer.Data());
assetMovementComponents.PopulateToControls(assetMovementToUpdate?.GetData() ?? new SlmAssetMovement.Data());
// Complete page configuration.
SetControlActivity();
Changed = false;
}
//-------------------------------------------------------------------
// C o n t r o l A c t i v i t y
//-------------------------------------------------------------------
protected override void SetControlActivity ()
{
base.SetControlActivity();
}
protected override void SetControlsReadOnly ()
{
}
//-------------------------------------------------------------------
// N a v i g a t i o n E v e n t s
//-------------------------------------------------------------------
protected override bool SaveFormData ()
{
return true;
}
//-------------------------------------------------------------------
protected override bool QueryCancelForm ()
{
if (!base.QueryCancelForm()) return false;
return true;
}
//-------------------------------------------------------------------
// P r o p e r t y E v e n t s
//-------------------------------------------------------------------
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -7,8 +7,7 @@ using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Core.WebService;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Forms.Components;
using Sarand.LogisticsMgr.Mobile.Forms.Effects;
using Sarand.LogisticsMgr.Mobile.Forms.Components.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets;
using System;
using System.Collections.Generic;
@@ -18,10 +17,10 @@ using System.Threading.Tasks;
using System.Xml.Linq;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets
{
//=======================================================================
public class SlmPage_Assets_Repair : SlmFormPage
public class SlmFormPage_Assets_Repair : SlmFormPage
{
//-------------------------------------------------------------------
// Definitions.
@@ -40,7 +39,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
// Data members.
private readonly Config config;
private readonly AssetRepairData assetRepairData = new AssetRepairData();
private SlmGrid gridRepairProperties = new SlmGrid();
private SlmGrid gridProperties = new SlmGrid();
private SlmComponents_AssetRepair assetRepairComponents = new SlmComponents_AssetRepair();
private SlmPanel_AssetMovement_SearchResults assetSearchResultsWebView = new SlmPanel_AssetMovement_SearchResults() { IsVisible = false, };
private SlmPanel_AssetRepair_Jobs repairJobsPanel;
@@ -48,7 +47,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
//-------------------------------------------------------------------
// Construction.
public SlmPage_Assets_Repair (Config config) : base(config)
public SlmFormPage_Assets_Repair (Config config) : base(config)
{
this.config = config;
AddMode = (config.AssetRepairToUpdate == null);
@@ -66,35 +65,26 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
private void InitialiseComponents ()
{
// Asset Repair form.
FormBodyView.Content = gridRepairProperties;
gridRepairProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridRepairProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
gridRepairProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
FormBodyView.Content = gridProperties;
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
int rowIdx = -1;
// Shipping line company.
rowIdx = gridRepairProperties.RowDefinitions.Count;
gridRepairProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairProperties.Children.Add(assetRepairComponents.LabelCompany, 0, rowIdx);
gridRepairProperties.Children.Add(assetRepairComponents.PickerCompany, 1, rowIdx);
Grid.SetColumnSpan(assetRepairComponents.PickerCompany, 2);
AddControlViewToGrid(gridProperties, assetRepairComponents.PickerCompany);
assetRepairComponents.PickerCompany.Populated += PickerCompany_Populated;
assetRepairComponents.PickerCompany.SelectedIndexChanged += PickerCompany_SelectedIndexChanged;
// Asset code.
rowIdx = gridRepairProperties.RowDefinitions.Count;
gridRepairProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairProperties.Children.Add(assetRepairComponents.LabelAssetCode, 0, rowIdx);
//entryAssetCode.Effects.Add(new InputCaseEffect());
gridRepairProperties.Children.Add(assetRepairComponents.EntryAssetCode, 1, rowIdx);
Grid.SetColumnSpan(assetRepairComponents.EntryAssetCode, 2);
AddControlViewToGrid(gridProperties, assetRepairComponents.EntryAssetCode);
assetRepairComponents.EntryAssetCode.TextChanged += EntryAssetCode_TextChanged;
assetRepairComponents.EntryAssetCode.Completed += EntryAssetCode_Completed;
// Asset search results view.
rowIdx = gridRepairProperties.RowDefinitions.Count;
gridRepairProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairProperties.Children.Add(assetSearchResultsWebView, 0, rowIdx);
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(assetSearchResultsWebView, 0, rowIdx);
Grid.SetColumnSpan(assetSearchResultsWebView, 3);
assetSearchResultsWebView.ColumnsToDisplay.AddRange(new List<ColumnDfn>()
{
@@ -107,42 +97,30 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
assetSearchResultsWebView.AssetMovementSelected += AssetSearchResultsWebView_AssetMovementSelected;
// Asset Size.
rowIdx = gridRepairProperties.RowDefinitions.Count;
gridRepairProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairProperties.Children.Add(assetRepairComponents.LabelAssetSize, 0, rowIdx);
gridRepairProperties.Children.Add(assetRepairComponents.PickerAssetSize, 1, rowIdx);
Grid.SetColumnSpan(assetRepairComponents.PickerAssetSize, 2);
AddControlViewToGrid(gridProperties, assetRepairComponents.PickerAssetSize);
// Repair Narrative.
rowIdx = gridRepairProperties.RowDefinitions.Count;
gridRepairProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairProperties.Children.Add(assetRepairComponents.LabelRepairNarrative, 0, rowIdx);
gridRepairProperties.Children.Add(assetRepairComponents.EntryRepairNarrative, 1, rowIdx);
Grid.SetColumnSpan(assetRepairComponents.EntryRepairNarrative, 2);
AddControlViewToGrid(gridProperties, assetRepairComponents.EntryRepairNarrative);
// Repair Inspector.
rowIdx = gridRepairProperties.RowDefinitions.Count;
gridRepairProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairProperties.Children.Add(assetRepairComponents.LabelRepairInspector, 0, rowIdx);
gridRepairProperties.Children.Add(assetRepairComponents.EntryRepairInspector, 1, rowIdx);
Grid.SetColumnSpan(assetRepairComponents.EntryRepairInspector, 2);
AddControlViewToGrid(gridProperties, assetRepairComponents.EntryRepairInspector);
// Jobs panel.
SlmPanel_AssetRepair_Jobs.Config jobsPanelConfig = new SlmPanel_AssetRepair_Jobs.Config();
jobsPanelConfig.AssetRepairPage = this;
repairJobsPanel = new SlmPanel_AssetRepair_Jobs(jobsPanelConfig);
rowIdx = gridRepairProperties.RowDefinitions.Count;
gridRepairProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairProperties.Children.Add(repairJobsPanel, 0, rowIdx);
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(repairJobsPanel, 0, rowIdx);
Grid.SetColumnSpan(repairJobsPanel, 3);
// Images panel.
SlmPanel_AssetRepair_Images.Config imagesPanelConfig = new SlmPanel_AssetRepair_Images.Config();
imagesPanelConfig.AssetRepairPage = this;
repairImagesPanel = new SlmPanel_AssetRepair_Images(imagesPanelConfig);
rowIdx = gridRepairProperties.RowDefinitions.Count;
gridRepairProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairProperties.Children.Add(repairImagesPanel, 0, rowIdx);
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(repairImagesPanel, 0, rowIdx);
Grid.SetColumnSpan(repairImagesPanel, 3);
}
@@ -5,8 +5,7 @@ using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Core.WebService;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Forms.Components;
using Sarand.LogisticsMgr.Mobile.Forms.Effects;
using Sarand.LogisticsMgr.Mobile.Forms.Components.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets;
using System;
using System.Collections.Generic;
@@ -15,10 +14,10 @@ using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets
{
//=======================================================================
public class SlmPage_Assets_RepairImage : SlmFormPage
public class SlmFormPage_Assets_RepairImage : SlmFormPage
{
//-------------------------------------------------------------------
// Definitions.
@@ -36,12 +35,12 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
// Data members.
private readonly Config config;
private SlmAssetRepairImage.Data newRepairImageData = null;
private SlmGrid gridRepairImageProperties = new SlmGrid();
private SlmGrid gridProperties = new SlmGrid();
private SlmComponents_AssetRepairImage repairImageComponents = new SlmComponents_AssetRepairImage();
//-------------------------------------------------------------------
// Construction.
public SlmPage_Assets_RepairImage (Config config) : base(config)
public SlmFormPage_Assets_RepairImage (Config config) : base(config)
{
this.config = config;
AddMode = (config.AssetRepairImageToUpdate == null);
@@ -59,19 +58,15 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
private void InitialiseComponents ()
{
// Asset Repair form.
FormBodyView.Content = gridRepairImageProperties;
gridRepairImageProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridRepairImageProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridRepairImageProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
gridRepairImageProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
FormBodyView.Content = gridProperties;
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
int rowIdx = -1;
// Filename.
rowIdx = gridRepairImageProperties.RowDefinitions.Count;
gridRepairImageProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairImageProperties.Children.Add(repairImageComponents.LabelFilename, 0, rowIdx);
gridRepairImageProperties.Children.Add(repairImageComponents.EntryFilename, 1, rowIdx);
Grid.SetColumnSpan(repairImageComponents.EntryFilename, 2);
AddControlViewToGrid(gridProperties, repairImageComponents.EntryFilename);
}
//-------------------------------------------------------------------
@@ -5,8 +5,7 @@ using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Core.WebService;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Forms.Components;
using Sarand.LogisticsMgr.Mobile.Forms.Effects;
using Sarand.LogisticsMgr.Mobile.Forms.Components.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets;
using System;
using System.Collections.Generic;
@@ -15,10 +14,10 @@ using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets
{
//=======================================================================
public class SlmPage_Assets_RepairJob : SlmFormPage
public class SlmFormPage_Assets_RepairJob : SlmFormPage
{
//-------------------------------------------------------------------
// Definitions.
@@ -36,12 +35,12 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
// Data members.
private readonly Config config;
private SlmAssetRepairJob.Data newRepairJobData = null;
private SlmGrid gridRepairJobProperties = new SlmGrid();
private SlmGrid gridProperties = new SlmGrid();
private SlmComponents_AssetRepairJob repairJobComponents = new SlmComponents_AssetRepairJob();
//-------------------------------------------------------------------
// Construction.
public SlmPage_Assets_RepairJob (Config config) : base(config)
public SlmFormPage_Assets_RepairJob (Config config) : base(config)
{
this.config = config;
AddMode = (config.AssetRepairJobToUpdate == null);
@@ -63,51 +62,47 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets
private void InitialiseComponents ()
{
// Asset Repair form.
FormBodyView.Content = gridRepairJobProperties;
gridRepairJobProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridRepairJobProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridRepairJobProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
gridRepairJobProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
FormBodyView.Content = gridProperties;
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
int rowIdx = -1;
// Location.
rowIdx = gridRepairJobProperties.RowDefinitions.Count;
gridRepairJobProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairJobProperties.Children.Add(repairJobComponents.LabelLocation, 0, rowIdx);
gridRepairJobProperties.Children.Add(repairJobComponents.EntryLocation, 1, rowIdx);
gridRepairJobProperties.Children.Add(repairJobComponents.PickerLocation, 2, rowIdx);
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(repairJobComponents.EntryLocation.Label, 0, rowIdx);
gridProperties.Children.Add(repairJobComponents.EntryLocation, 1, rowIdx);
gridProperties.Children.Add(repairJobComponents.PickerLocation, 2, rowIdx);
Grid.SetColumnSpan(repairJobComponents.PickerLocation, 2);
// Component.
rowIdx = gridRepairJobProperties.RowDefinitions.Count;
gridRepairJobProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairJobProperties.Children.Add(repairJobComponents.LabelComponent, 0, rowIdx);
gridRepairJobProperties.Children.Add(repairJobComponents.EntryComponent, 1, rowIdx);
gridRepairJobProperties.Children.Add(repairJobComponents.PickerComponent, 2, rowIdx);
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(repairJobComponents.EntryComponent.Label, 0, rowIdx);
gridProperties.Children.Add(repairJobComponents.EntryComponent, 1, rowIdx);
gridProperties.Children.Add(repairJobComponents.PickerComponent, 2, rowIdx);
Grid.SetColumnSpan(repairJobComponents.PickerComponent, 2);
// Damage.
rowIdx = gridRepairJobProperties.RowDefinitions.Count;
gridRepairJobProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairJobProperties.Children.Add(repairJobComponents.LabelDamage, 0, rowIdx);
gridRepairJobProperties.Children.Add(repairJobComponents.EntryDamage, 1, rowIdx);
gridRepairJobProperties.Children.Add(repairJobComponents.PickerDamage, 2, rowIdx);
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(repairJobComponents.EntryDamage.Label, 0, rowIdx);
gridProperties.Children.Add(repairJobComponents.EntryDamage, 1, rowIdx);
gridProperties.Children.Add(repairJobComponents.PickerDamage, 2, rowIdx);
Grid.SetColumnSpan(repairJobComponents.PickerDamage, 2);
// Repair.
rowIdx = gridRepairJobProperties.RowDefinitions.Count;
gridRepairJobProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairJobProperties.Children.Add(repairJobComponents.LabelRepair, 0, rowIdx);
gridRepairJobProperties.Children.Add(repairJobComponents.EntryRepair, 1, rowIdx);
gridRepairJobProperties.Children.Add(repairJobComponents.PickerRepair, 2, rowIdx);
rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(repairJobComponents.EntryRepair.Label, 0, rowIdx);
gridProperties.Children.Add(repairJobComponents.EntryRepair, 1, rowIdx);
gridProperties.Children.Add(repairJobComponents.PickerRepair, 2, rowIdx);
Grid.SetColumnSpan(repairJobComponents.PickerRepair, 2);
// Quantity.
rowIdx = gridRepairJobProperties.RowDefinitions.Count;
gridRepairJobProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridRepairJobProperties.Children.Add(repairJobComponents.LabelQuantity, 0, rowIdx);
gridRepairJobProperties.Children.Add(repairJobComponents.EntryQuantity, 1, rowIdx);
Grid.SetColumnSpan(repairJobComponents.EntryQuantity, 2);
AddControlViewToGrid(gridProperties, repairJobComponents.EntryQuantity);
}
//-------------------------------------------------------------------
@@ -0,0 +1,246 @@
using Sarand.Core.App;
using Sarand.Core.Base;
using Sarand.Core.Bus;
using Sarand.Core.Tasks;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Core.WebService;
using Sarand.LogisticsMgr.Mobile.Core.Bus;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Forms.Components.Bulk;
using Sarand.LogisticsMgr.Mobile.Forms.Panels.Bulk;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Bulk
{
//=======================================================================
public class SlmFormPage_Bulk_Berthing : SlmFormPage
{
//-------------------------------------------------------------------
// Definitions.
public new class Config : SlmFormPage.Config
{
public SysId BerthingIdToUpdate { get; set; }
}
//-------------------------------------------------------------------
// Data members.
private readonly Config config;
private SlmGrid gridProperties = new SlmGrid();
private SlmComponents_Berthing berthingComponents = new SlmComponents_Berthing();
private SlmPanel_Bulk_BerthingTasks berthingTasksPanel;
// Data to view/update.
private SlmBerthing BerthingToUpdate;
private SlmVessel Berthing_Vessel;
private SlmCompany Berthing_Company_Agent;
private SlmCompany Berthing_Company_Customer;
//-------------------------------------------------------------------
// Construction.
public SlmFormPage_Bulk_Berthing (Config config) : base(config)
{
this.config = config;
Title = "Bulk - Berthing";
AddMode = !SysId.IsValid(config.BerthingIdToUpdate);
if (config.ReadOnly)
{
berthingComponents.ReadOnly = true;
}
PrepareFormData();
}
//-------------------------------------------------------------------
// Properties.
public SysId BerthingId { get { return BerthingToUpdate?.Id ?? new SysId(); } }
//-------------------------------------------------------------------
// P r e p a r a t i o n
//-------------------------------------------------------------------
private SacsTaskData taskDataPrepareData = new SacsTaskData(null);
private void PrepareFormData ()
{
String fn = GetType().Name+".PrepareFormData";
if (!SysId.IsValid(config.BerthingIdToUpdate)) return;
// Form is initialised on separate thread while data is retrieved from the service.
// 'Please wait' message is displayed during preparation.
// Any issue during preparation results in an alert message and the form is closed.
FormBodyView.Content = new SlmLabel() { Text = DataPreparationMessage };
Task.Run(async () =>
{
try
{
await PopulateBerthingData(taskDataPrepareData);
}
catch (Exception exc)
{
if (SacsSystem.DebugMode) Logger.Warn(fn + " " + ExceptionUtil.GetLogMessage(exc));
CloseFormWithAlert(nameof(exc)+" on form initialisation.\n\n"+exc.Message);
}
}, taskDataPrepareData.CancellationToken)
.ContinueWith(task =>
{
taskDataPrepareData.Dispose();
});
}
//-------------------------------------------------------------------
private async Task PopulateBerthingData (SacsTaskData taskDataPrepareData_Local)
{
String fn = GetType().Name + ".PopulateBerthingData";
// Retrieve Berthing and associated details.
try
{
// Berthing filter.
SlmBerthing_Mobile.Params prmBerthing = new SlmBerthing_Mobile.Params();
prmBerthing.IncludedIds.Add(config.BerthingIdToUpdate);
prmBerthing.StatusCat = SlmBerthing.StatusCat.Any;
// Associated data item are retrieved at the same time to avoid multiple service requests.
prmBerthing.IncludeVessel = true;
prmBerthing.IncludeCompanies = true;
// Request config.
SlmWebServiceRequest.Config requestConfig = new SlmWebServiceRequest.Config();
requestConfig.RequestType = SlmWebServiceRequest.RequestType.Item;
requestConfig.DataType = SlmWebServiceRequest.DataType.Berthing;
requestConfig.Context.SiteDefinition = SessionContext.SiteDefinition;
requestConfig.Context.User = UserContext.User.SecurityItemCode;
requestConfig.Context.Email = UserContext.User.EmailAddress;
requestConfig.Context.Debug = SacsSystem.DebugMode;
// Retrieve Berthing data.
SlmWebServiceClient.ItemDataResponseData response =
await WebServiceClient.RequestItemData(requestConfig, BerthingMgr.GetBerthingQueryFilter_Mobile(prmBerthing), taskDataPrepareData_Local);
// Populate berthing.
BerthingToUpdate = BerthingMgr.CreateBerthing_Mobile(response.Item);
if (BerthingToUpdate != null)
{
// Retrieve Vessel.
List<SlmWebServiceItemData> vesselItems = response.Item.ChildItems.GetValue("VesselList",null);
SlmWebServiceItemData vesselItem = vesselItems?.Find(item=>item.GetIdValue(nameof(SlmVessel.Id)).Equals(BerthingToUpdate.VesselId)) ?? null;
if (vesselItem != null)
Berthing_Vessel = BerthingMgr.CreateVessel_Mobile(vesselItem);
// Retrieve Companies.
List<SlmWebServiceItemData> companyItems = response.Item.ChildItems.GetValue("CompanyList",null);
SlmWebServiceItemData companyItem_Agent = companyItems?.Find(item=>item.GetIdValue(nameof(SlmCompany.Id)).Equals(BerthingToUpdate.CompanyIdAgent)) ?? null;
if (companyItem_Agent != null)
Berthing_Company_Agent = AccountMgr.CreateCompany_Mobile(companyItem_Agent);
SlmWebServiceItemData companyItem_Customer = companyItems?.Find(item=>item.GetIdValue(nameof(SlmCompany.Id)).Equals(BerthingToUpdate.CompanyIdCustomer)) ?? null;
if (companyItem_Customer != null)
Berthing_Company_Customer = AccountMgr.CreateCompany_Mobile(companyItem_Customer);
}
}
catch (Exception exc) { Logger.Debug(fn + " " + exc.GetLogMessage(6)); }
if (BerthingToUpdate == null)
{
CloseFormWithAlert("Failed to retrieve Berthing data.");
return;
}
if (Berthing_Vessel == null)
{
CloseFormWithAlert("Failed to retrieve Vessel data.");
return;
}
if (SysId.IsValid(BerthingToUpdate.CompanyIdAgent) && Berthing_Company_Agent == null)
{
CloseFormWithAlert("Failed to retrieve Agent data.");
return;
}
if (SysId.IsValid(BerthingToUpdate.CompanyIdCustomer) && Berthing_Company_Customer == null)
{
CloseFormWithAlert("Failed to retrieve Customer data.");
return;
}
if (taskDataPrepareData_Local.IsCancellationRequested) return;
Device.BeginInvokeOnMainThread(() =>
{
// Initialise form.
InitialiseComponents();
});
}
//-------------------------------------------------------------------
// I n i t i a l i s e
//-------------------------------------------------------------------
private void InitialiseComponents ()
{
// Asset Repair form.
gridProperties.BackgroundColor = Color.Transparent;
FormBodyView.Content = gridProperties;
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
//---------------------------------------------------------------
// Vessel.
AddControlViewToGrid(gridProperties, berthingComponents.PickerVessel);
// Companies.
AddControlViewToGrid(gridProperties, berthingComponents.PickerAgent);
AddControlViewToGrid(gridProperties, berthingComponents.PickerCustomer);
// Notes.
AddControlViewToGrid(gridProperties, berthingComponents.EditorNotes);
// Tasks panel.
SlmPanel_Bulk_BerthingTasks.Config berthingTasksPanelConfig = new SlmPanel_Bulk_BerthingTasks.Config();
berthingTasksPanelConfig.BerthingForm = this;
berthingTasksPanel = new SlmPanel_Bulk_BerthingTasks(berthingTasksPanelConfig);
int rowIdx = gridProperties.RowDefinitions.Count;
gridProperties.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
gridProperties.Children.Add(berthingTasksPanel, 0, rowIdx);
Grid.SetColumnSpan(berthingTasksPanel, 3);
//---------------------------------------------------------------
// Populate properties to components.
berthingComponents.PopulateToControls(Berthing_Vessel?.GetData() ?? new SlmVessel.Data());
berthingComponents.PopulateToControls(BerthingToUpdate?.GetData() ?? new SlmBerthing.Data());
// Complete page configuration.
SetControlActivity();
Changed = false;
}
//-------------------------------------------------------------------
// C o n t r o l A c t i v i t y
//-------------------------------------------------------------------
protected override void SetControlActivity ()
{
base.SetControlActivity();
}
protected override void SetControlsReadOnly ()
{
}
//-------------------------------------------------------------------
// N a v i g a t i o n E v e n t s
//-------------------------------------------------------------------
protected override bool SaveFormData ()
{
return true;
}
//-------------------------------------------------------------------
protected override bool QueryCancelForm ()
{
if (!base.QueryCancelForm()) return false;
// Cancel data preparation - in case user has closed form during process.
taskDataPrepareData.TriggerCancellation();
return true;
}
//-------------------------------------------------------------------
// P r o p e r t y E v e n t s
//-------------------------------------------------------------------
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,123 @@
using Sarand.Core.Base;
using Sarand.Core.Bus;
using Sarand.Core.Tasks;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Forms.Components.Bulk;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Bulk
{
//=======================================================================
public class SlmFormPage_Bulk_BerthingTask : SlmFormPage
{
//-------------------------------------------------------------------
// Definitions.
public new class Config : SlmFormPage.Config
{
public Config (SysId berthingId)
{
BerthingId = berthingId;
}
public SysId BerthingId { get; set; }
public SlmBerthingTask.Data BerthingTaskToUpdate { get; set; }
}
//-------------------------------------------------------------------
// Data members.
private readonly Config config;
private SlmBerthingTask.Data newBerthingTaskData = null;
private SlmGrid gridProperties = new SlmGrid();
private SlmComponents_BerthingTask berthingTaskComponents = new SlmComponents_BerthingTask();
//-------------------------------------------------------------------
// Construction.
public SlmFormPage_Bulk_BerthingTask (Config config) : base(config)
{
this.config = config;
AddMode = (config.BerthingTaskToUpdate == null);
Title = "Berthing Task";
InitialiseComponents();
}
//-------------------------------------------------------------------
// Properties.
public SlmBerthingTask.Data NewBerthingTaskData { get { return newBerthingTaskData; } }
//-------------------------------------------------------------------
// I n i t i a l i s e
//-------------------------------------------------------------------
private void InitialiseComponents ()
{
// Asset Repair form.
FormBodyView.Content = gridProperties;
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Star });
gridProperties.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
// Controls.
AddControlViewToGrid(gridProperties, berthingTaskComponents.PickerTaskType);
AddControlViewToGrid(gridProperties, berthingTaskComponents.DatePickerStarted);
AddControlViewToGrid(gridProperties, berthingTaskComponents.DatePickerCompleted);
AddControlViewToGrid(gridProperties, berthingTaskComponents.EntryRemarks);
if (AddMode)
{
}
else
{
berthingTaskComponents.PopulateToControls(config.BerthingTaskToUpdate);
}
}
//-------------------------------------------------------------------
// C o n f i g u r e C o n t r o l s
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// C o n t r o l A c t i v i t y
//-------------------------------------------------------------------
protected override void SetControlActivity ()
{
SetControlsReadOnly();
}
protected override void SetControlsReadOnly ()
{
}
//-------------------------------------------------------------------
// N a v i g a t i o n E v e n t s
//-------------------------------------------------------------------
protected override bool SaveFormData ()
{
SlmBerthingTask.Data berthingTaskData = (AddMode ? new SlmBerthingTask.Data() : config.BerthingTaskToUpdate.Clone());
berthingTaskComponents.PopulateFromControls(berthingTaskData);
if (!berthingTaskComponents.IsDataValid(berthingTaskData))
return false;
if (AddMode)
{
newBerthingTaskData = berthingTaskData;
}
else
{
berthingTaskComponents.PopulateFromControls(config.BerthingTaskToUpdate);
}
return true;
}
protected override bool QueryCancelForm ()
{
if (berthingTaskComponents.Changed) Changed = true;
if (!base.QueryCancelForm()) return false;
return true;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -1,7 +1,7 @@
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Panels;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets;
using System;
using System.Collections.Generic;
using System.Text;
@@ -16,7 +16,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets
// Definitions.
public new class Config : SlmPanel_AssociatedItems.Config
{
public SlmPage_Assets_Repair AssetRepairPage { get; set; }
public SlmFormPage_Assets_Repair AssetRepairPage { get; set; }
}
//-------------------------------------------------------------------
@@ -37,7 +37,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets
//-------------------------------------------------------------------
// Properties.
public List<SlmAssetRepairImage.Data> RepairImages => new List<SlmAssetRepairImage.Data>(repairImages);
public List<SlmAssetRepairImage.Data> RepairImages { get { return new List<SlmAssetRepairImage.Data>(repairImages); } }
//-------------------------------------------------------------------
// I n i t i a l i s e
@@ -86,8 +86,8 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets
//-------------------------------------------------------------------
protected async override void ButtonAddItem_Clicked (object sender, EventArgs e)
{
SlmPage_Assets_RepairImage.Config pageConfig = new SlmPage_Assets_RepairImage.Config(config.AssetRepairPage.CompanyId);
SlmPage_Assets_RepairImage page = new SlmPage_Assets_RepairImage(pageConfig);
SlmFormPage_Assets_RepairImage.Config pageConfig = new SlmFormPage_Assets_RepairImage.Config(config.AssetRepairPage.CompanyId);
SlmFormPage_Assets_RepairImage page = new SlmFormPage_Assets_RepairImage(pageConfig);
page.Disappearing += (sender2, e2) =>
{
if (!page.Cancelled)
@@ -3,7 +3,7 @@ using Sarand.Core.Mobile.Utils;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Panels;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets;
using System;
using System.Collections.Generic;
using System.Text;
@@ -18,7 +18,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets
// Definitions.
public new class Config : SlmPanel_AssociatedItems.Config
{
public SlmPage_Assets_Repair AssetRepairPage { get; set; }
public SlmFormPage_Assets_Repair AssetRepairPage { get; set; }
}
//-------------------------------------------------------------------
@@ -39,7 +39,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets
//-------------------------------------------------------------------
// Properties.
public List<SlmAssetRepairJob.Data> RepairJobs => new List<SlmAssetRepairJob.Data>(repairJobs);
public List<SlmAssetRepairJob.Data> RepairJobs { get { return new List<SlmAssetRepairJob.Data>(repairJobs); } }
//-------------------------------------------------------------------
// I n i t i a l i s e
@@ -106,9 +106,9 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets
buttonUpdate.Pressed += (sender, evt) =>
{
// Update job.
SlmPage_Assets_RepairJob.Config pageConfig = new SlmPage_Assets_RepairJob.Config(config.AssetRepairPage.CompanyId);
SlmFormPage_Assets_RepairJob.Config pageConfig = new SlmFormPage_Assets_RepairJob.Config(config.AssetRepairPage.CompanyId);
pageConfig.AssetRepairJobToUpdate = repairJob;
SlmPage_Assets_RepairJob page = new SlmPage_Assets_RepairJob(pageConfig);
SlmFormPage_Assets_RepairJob page = new SlmFormPage_Assets_RepairJob(pageConfig);
page.Disappearing += (sender2, e2) =>
{
if (page.Cancelled) return;
@@ -140,8 +140,8 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Assets
//-------------------------------------------------------------------
protected override void ButtonAddItem_Clicked (object sender, EventArgs e)
{
SlmPage_Assets_RepairJob.Config pageConfig = new SlmPage_Assets_RepairJob.Config(config.AssetRepairPage.CompanyId);
SlmPage_Assets_RepairJob page = new SlmPage_Assets_RepairJob(pageConfig);
SlmFormPage_Assets_RepairJob.Config pageConfig = new SlmFormPage_Assets_RepairJob.Config(config.AssetRepairPage.CompanyId);
SlmFormPage_Assets_RepairJob page = new SlmFormPage_Assets_RepairJob(pageConfig);
page.Disappearing += (sender2, e2) =>
{
if (!page.Cancelled)
@@ -0,0 +1,280 @@
using Sarand.Core.App;
using Sarand.Core.Base;
using Sarand.Core.Bus;
using Sarand.Core.Mobile.Forms.Controls;
using Sarand.Core.Tasks;
using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Core.WebService;
using Sarand.LogisticsMgr.Mobile.Core.App;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Panels;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Bulk;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Bulk
{
//=======================================================================
public class SlmPanel_Bulk_BerthingTasks : SlmPanel_AssociatedItems
{
//-------------------------------------------------------------------
// Definitions.
public new class Config : SlmPanel_AssociatedItems.Config
{
public SlmFormPage_Bulk_Berthing BerthingForm { get; set; }
}
//-------------------------------------------------------------------
// Data members.
private Config config;
private readonly List<TypeCodeDesc> berthingTaskTypes;
private List<SlmBerthingTask.Data> berthingTaskDataList = new List<SlmBerthingTask.Data>();
private SlmLabel labelSummary = new SlmLabel();
//private SlmGrid gridDetails = new SlmGrid();
private SlmWebView webViewDetails = new SlmWebView();
private String berthingTaskUpdatePrefix = "BthTskUpdate_";
//-------------------------------------------------------------------
// Construction.
public SlmPanel_Bulk_BerthingTasks (Config config) :
base(config)
{
this.config = config;
berthingTaskTypes = SlmSystem.GetCodesOfType(Slm.SystemCode.BerthingTaskType);
InitialiseComponents();
PopulateBerthingTasks();
}
//-------------------------------------------------------------------
// Properties.
public List<SlmBerthingTask.Data> BerthingTasks { get { return new List<SlmBerthingTask.Data>(berthingTaskDataList); } }
//-------------------------------------------------------------------
// I n i t i a l i s e
//-------------------------------------------------------------------
private void InitialiseComponents ()
{
Caption = "Berthing Tasks";
// Summary panel.
labelSummary.HorizontalOptions = LayoutOptions.FillAndExpand;
SummaryPanel.Content = labelSummary;
// Details panel.
webViewDetails.HorizontalOptions = LayoutOptions.StartAndExpand;
webViewDetails.VerticalOptions = LayoutOptions.StartAndExpand;
webViewDetails.AppNavigating += WebViewDetails_AppNavigating;
DetailsPanel.Content = webViewDetails;
RefreshPanels();
}
//-------------------------------------------------------------------
// P o p u l a t i o n
//-------------------------------------------------------------------
private SacsTaskData taskDataPrepareData = new SacsTaskData(null);
private void PopulateBerthingTasks ()
{
String fn = GetType().Name + ".PopulateBerthingTasks";
if (!SysId.IsValid(config.BerthingForm.BerthingId)) return;
Task.Run(async () =>
{
try
{
await PopulateBerthingTasks(taskDataPrepareData);
}
catch (Exception exc)
{
if (SacsSystem.DebugMode) Logger.Warn(fn + " " + ExceptionUtil.GetLogMessage(exc));
ErrorStateMessage = nameof(exc) + " on population - " + exc.Message;
}
}, taskDataPrepareData.CancellationToken)
.ContinueWith(task =>
{
taskDataPrepareData.Dispose();
});
}
//-------------------------------------------------------------------
private async Task PopulateBerthingTasks (SacsTaskData taskDataPrepareData_Local)
{
String fn = GetType().Name + ".PopulateBerthingTasks";
// Berthing Task filter.
SlmBerthingTask.Params prmBerthingTask = new SlmBerthingTask.Params();
prmBerthingTask.BerthingId = config.BerthingForm.BerthingId;
prmBerthingTask.StatusCat = SlmBerthingTask.StatusCat.NotDeleted;
// Retrieve Berthing Tasks.
List<SlmBerthingTask> berthingTasks = await BerthingMgr.GetBerthingTaskList_Mobile(prmBerthingTask, taskDataPrepareData_Local);
// Populate berthing tasks.
foreach (SlmBerthingTask berthingTask in berthingTasks)
{
if (taskDataPrepareData_Local.IsCancellationRequested) return;
berthingTaskDataList.Add(berthingTask.GetData());
}
if (taskDataPrepareData_Local.IsCancellationRequested) return;
Device.BeginInvokeOnMainThread(() =>
{
// Update panel with revised task info.
RefreshPanels();
});
}
//-------------------------------------------------------------------
// R e f r e s h
//-------------------------------------------------------------------
private void RefreshPanels ()
{
RefreshSummaryPanel();
RefreshDetailsPanel();
}
//-------------------------------------------------------------------
private void RefreshSummaryPanel ()
{
if (berthingTaskDataList.Count == 0)
labelSummary.Text = "No tasks defined";
else if (berthingTaskDataList.Count == 1)
labelSummary.Text = "1 task defined";
else
labelSummary.Text = berthingTaskDataList.Count + " tasks defined";
}
//-------------------------------------------------------------------
private void RefreshDetailsPanel ()
{
List<String> html = new List<string>();
html.Add("<html><head>" + GetItemListStyles().Concat("\n") + GetItemListScripts().Concat("\n") + "</head><body>");
foreach (SlmBerthingTask.Data item in berthingTaskDataList)
{
html.Add("<div id='BthTsk-" + SysId.ToString(item.Id) + "' class='item' ondblclick='slm.openBerthingTask(" + SysId.ToString(item.Id) + ")'>");
html.Add("<table class='fullwidth'>");
html.Add(" <tr>");
html.Add(" <td class='label'>Type</td><td class='value'>" + berthingTaskTypes.GetDescForType((int)item.BerthingTaskType) + "</td>");
html.Add(" <td class='label'>Status</td><td class='value'>" + SacsSystem.GetStatusDesc(item.Status) + "</td>");
html.Add(" </tr>");
html.Add(" <tr>");
html.Add(" <td class='label'>Started</td><td class='value'>" + DateUtil.Format(item.Started, "ddd d-MMM-yyyy") + "</td>");
html.Add(" <td class='label'>Completed</td><td class='value'>" + DateUtil.Format(item.Completed, "ddd d-MMM-yyyy") + "</td>");
html.Add(" </tr>");
html.Add(" <tr>");
html.Add(" <td class='label'>Arrived</td><td class='value' colspan='3'>" + item.Remarks.ReplaceAll("\n","<br/>") + "</td>");
html.Add(" </tr>");
if (SacsSystem.DebugMode)
{
html.Add(" <tr>");
html.Add(" <td class='label'>BerthingId</td><td class='value'>" + SysId.ToString(item.BerthingId) + "</td>");
html.Add(" <td class='label'>Id</td><td class='value'>" + SysId.ToString(item.Id) + "</td>");
html.Add(" </tr>");
}
html.Add("</table>");
html.Add("</div>");
}
html.Add("</body></html>");
webViewDetails.Html = html.Concat("\n");
}
private List<String> GetItemListStyles ()
{
return new List<string>()
{
"<style>" + SlmResourceConsole.GetTextResource(SlmResourceConsole.TextResource.JQueryUiCss) + "</style>",
"<style>" + SlmResourceConsole.GetTextResource(SlmResourceConsole.TextResource.SaBaseCss) + "</style>",
"<style>" + SlmResourceConsole.GetTextResource(SlmResourceConsole.TextResource.SlmBaseCss) + "</style>",
"<style>",
"body{padding:4px;font-size:" + SlmMobile.HtmlFontSize + ";border:1px solid #808080;border-radius:8px;overflow-y:auto;}",
"td{padding:2px;}",
"tr.other th, tr.other td{background-color:#f0f0f0;}",
"div.item{margin:0 0 4px 0;padding:4px;background-color:#f8f8f8;border:2px solid #808080;border-radius:8px;}",
"</style>"
};
}
private List<String> GetItemListScripts ()
{
return new List<string>()
{
"<script>" + SlmResourceConsole.GetTextResource(SlmResourceConsole.TextResource.JQueryJs) + "</script>",
"<script>" + SlmResourceConsole.GetTextResource(SlmResourceConsole.TextResource.JQueryUiJs) + "</script>",
"<script>" + SlmResourceConsole.GetTextResource(SlmResourceConsole.TextResource.SaBaseJs) + "</script>",
"<script>" + SlmResourceConsole.GetTextResource(SlmResourceConsole.TextResource.SlmBaseJs) + "</script>",
"<script>",
"slm.openBerthingTask=function(id)",
"{",
//" alert('slm.openBerthing Id: '+id)",
" document.location=\"" + SaxWebView.AppActionPrefix + berthingTaskUpdatePrefix + "\"+id;",
"}",
"$(function()",
"{",
" ",
"});",
"</script>"
};
}
//-------------------------------------------------------------------
// P a n e l E v e n t s
//-------------------------------------------------------------------
protected override void ButtonAddItem_Clicked (object sender, EventArgs e)
{
SlmFormPage_Bulk_BerthingTask.Config formConfig = new SlmFormPage_Bulk_BerthingTask.Config(config.BerthingForm.BerthingId);
SlmFormPage_Bulk_BerthingTask berthingTaskForm = new SlmFormPage_Bulk_BerthingTask(formConfig);
berthingTaskForm.Disappearing += (sender2, e2) =>
{
if (!berthingTaskForm.Cancelled)
{
SlmBerthingTask.Data berthingTaskData = berthingTaskForm.NewBerthingTaskData;
if (berthingTaskData != null)
{
berthingTaskDataList.Add(berthingTaskData);
RefreshPanels();
DropDown();
}
}
};
Application.Current.MainPage.Navigation.PushModalAsync(berthingTaskForm, false);
}
//-------------------------------------------------------------------
private void WebViewDetails_AppNavigating (object sender, SaxWebView.AppNavigatingEventArgs eventArgs)
{
String fn = GetType().Name + ".WebViewDetails_AppNavigating";
if (SacsSystem.DebugMode) Logger.Debug(fn + " AppAction: " + eventArgs.AppAction);
if (eventArgs.AppAction.StartsWithCI(berthingTaskUpdatePrefix))
{
SysId berthingTaskId = new SysId(StringUtil.ToInt(eventArgs.AppAction.Right(eventArgs.AppAction.Length - berthingTaskUpdatePrefix.Length)));
if (!SysId.IsValid(berthingTaskId))
{
DisplayAlert(Caption, "Invalid berthing task selected.", "OK");
return;
}
SlmBerthingTask.Data berthingTaskData = berthingTaskDataList.Find(item => item.Id.Equals(berthingTaskId));
if (!SysId.IsValid(berthingTaskId))
{
DisplayAlert(Caption, "Failed to retrieve berthing task.", "OK");
return;
}
// Show Berthing Task form.
SlmFormPage_Bulk_BerthingTask.Config formConfig = new SlmFormPage_Bulk_BerthingTask.Config(config.BerthingForm.BerthingId);
formConfig.BerthingTaskToUpdate = berthingTaskData;
SlmFormPage_Bulk_BerthingTask berthingTaskForm = new SlmFormPage_Bulk_BerthingTask(formConfig);
berthingTaskForm.Disappearing += (sender2, e2) =>
{
if (!berthingTaskForm.Cancelled)
{
berthingTaskDataList.Add(berthingTaskData);
RefreshPanels();
DropDown();
}
};
Application.Current.MainPage.Navigation.PushModalAsync(berthingTaskForm, false);
}
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -8,13 +8,13 @@ using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Core.WebService;
using Sarand.LogisticsMgr.Mobile.Core.App;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Assets;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Assets;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main.Assets
{
//=======================================================================
public class SlmMainPanel_AssetMovements : SlmMainPanel_ItemList
@@ -145,19 +145,19 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
}
public SlmAssetMovement.Params GetAssetMovementParams (uint pageNo, ushort pageLength)
{
SlmAssetMovement.Params assetMovementParams = new SlmAssetMovement.Params();
SlmAssetMovement.Params prmAssetMovement = new SlmAssetMovement.Params();
// Filter.
assetMovementParams.AssetCodePartial = HeaderPanel.PanelFilter.GetFilterPropertyValue((int)FilterProperty.Code);
assetMovementParams.AssetSizeCodePartial = HeaderPanel.PanelFilter.GetFilterPropertyValue((int)FilterProperty.Size);
assetMovementParams.MovementRefPartial = HeaderPanel.PanelFilter.GetFilterPropertyValue((int)FilterProperty.Reference);
assetMovementParams.StatusCat = SlmAssetMovement.StatusCat.NotDeleted;
prmAssetMovement.AssetCodePartial = HeaderPanel.PanelFilter.GetFilterPropertyValue((int)FilterProperty.Code);
prmAssetMovement.AssetSizeCodePartial = HeaderPanel.PanelFilter.GetFilterPropertyValue((int)FilterProperty.Size);
prmAssetMovement.MovementRefPartial = HeaderPanel.PanelFilter.GetFilterPropertyValue((int)FilterProperty.Reference);
prmAssetMovement.StatusCat = SlmAssetMovement.StatusCat.NotDeleted;
// Paging.
assetMovementParams.ResultsPaging.PageNo = pageNo;
assetMovementParams.ResultsPaging.PageLength = pageLength;
prmAssetMovement.ResultsPaging.PageNo = pageNo;
prmAssetMovement.ResultsPaging.PageLength = pageLength;
// Mode.
if (config.Mode == PanelMode.InProgress)
assetMovementParams.StatusCat = SlmAssetMovement.StatusCat.NotClosed;
return assetMovementParams;
prmAssetMovement.StatusCat = SlmAssetMovement.StatusCat.NotClosed;
return prmAssetMovement;
}
private SacsTaskData taskDataRefreshList = null;
protected override void RefreshItemList (uint pageNo = 1)
@@ -192,7 +192,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
// Configure request.
SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
configRequest.DataType = SlmWebServiceRequest.DataType.AssetMovement;
configRequest.RequestType = SlmWebServiceRequest.RequestType.List;
configRequest.RequestType = SlmWebServiceRequest.RequestType.QueryList;
configRequest.Context.SiteDefinition = SlmGlobals_Mobile.SessionProfile.SiteDefinition;
configRequest.Context.Debug = SacsSystem.DebugMode;
// Filter.
@@ -220,8 +220,8 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
};
// Request User profile.
if (SacsSystem.DebugMode) Logger.Debug(fn + " Querying data - START");
SlmWebServiceClient.ItemListResponseData responseData =
await new SlmWebServiceClient().GetItemList(configRequest, filter, queryColumns, taskDataRefreshList_Local);
SlmWebServiceClient.QueryListResponseData responseData =
await new SlmWebServiceClient().RequestQueryList(configRequest, filter, queryColumns, taskDataRefreshList_Local);
if (SacsSystem.DebugMode) Logger.Debug(fn + " Querying data - END Items: " + (responseData?.Items.Count.ToString() ?? "None") + (taskDataRefreshList_Local.IsCancellationRequested ? " [Cancelled]" : ""));
// Display item list.
@@ -244,7 +244,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
}
//-------------------------------------------------------------------
protected override void DisplayItemList (SlmWebServiceClient.ItemListResponseData responseData, SacsMessage message = null)
protected override void DisplayItemList (SlmWebServiceClient.QueryListResponseData responseData, SacsMessage message = null)
{
// Refresh paging properties.
if (responseData != null)
@@ -278,8 +278,8 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
html += "<div id='AssMov-" + SysId.ToString(item.GetIdValue(cols.Id.DataName)) + "' class='item' ondblclick='slm.openAssetMovement(" + SysId.ToString(item.GetIdValue(cols.Id.DataName)) + ")'>";
html += "<table class='fullwidth'>";
html += " <tr>";
html += " <td class='label'>Container</td><td class='value bold'>"+item.GetValue(cols.Asset_Code.DataName)+"</td>";
html += " <td class='label'>Size</td><td class='value'>"+item.GetValue(cols.AssetSizeCode.DataName)+"</td>";
html += " <td class='label'>Container</td><td class='value bold'>" + item.GetValue(cols.Asset_Code.DataName) + "</td>";
html += " <td class='label'>Size</td><td class='value'>" + item.GetValue(cols.AssetSizeCode.DataName) + "</td>";
html += " </tr>";
html += " <tr>";
html += " <td class='label'>Customer</td><td class='value'>" + item.GetValue(cols.Customer.DataName) + "</td>";
@@ -318,11 +318,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
"<style>" + SlmResourceConsole.GetTextResource(SlmResourceConsole.TextResource.SlmBaseCss) + "</style>",
"<style>",
"body{padding:4px;font-size:" + SlmMobile.HtmlFontSize + ";border:1px solid #808080;border-radius:8px;overflow-y:auto;}",
"div.msg{margin-bottom:4px;padding:4px;border:1px solid #C0C0C0;border-radius:4px;}",
"div.msg.inf{color:green;}",
"div.msg.wrn{color:orange;}",
"div.msg.err{color:red;}",
"td{padding:4px 4px;}",
"td{padding:2px;}",
"tr.other th, tr.other td{background-color:#f0f0f0;}",
"div.item{margin:0 0 4px 0;padding:4px;background-color:#f8f8f8;border:2px solid #808080;border-radius:8px;}",
"</style>"
@@ -353,115 +349,30 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
//-------------------------------------------------------------------
// P a n e l E v e n t s
//-------------------------------------------------------------------
private SacsTaskData taskDataAppAction;
/// <summary>'App' navigation events on Item List web view control.</summary>
protected override void ItemListWebView_AppNavigating (object sender, SaxWebView.AppNavigatingEventArgs eventArgs)
{
String fn = GetType().Name + ".ItemListWebView_AppNavigating";
if (SacsSystem.DebugMode) Logger.Debug(fn + " AppAction: " + eventArgs.AppAction);
// Cancel previous action.
if (taskDataAppAction != null)
{
taskDataAppAction.TriggerCancellation();
taskDataAppAction = null;
}
taskDataAppAction = new SacsTaskData(null);
if (eventArgs.AppAction.StartsWithCI(assetMovementDoubleClickedPrefix))
{
SacsTaskData taskDataAppAction_Local = taskDataAppAction;
SysId assetMovementId = new SysId(StringUtil.ToInt(eventArgs.AppAction.Right(eventArgs.AppAction.Length - assetMovementDoubleClickedPrefix.Length)));
Task.Run(async () =>
if (!SysId.IsValid(assetMovementId))
{
try
{
await showAssetMovementForm(assetMovementId, taskDataAppAction_Local);
}
catch (Exception exc) { if (SacsSystem.DebugMode) Logger.Warn(fn + " " + ExceptionUtil.GetLogMessage(exc)); }
}, taskDataAppAction_Local.CancellationToken)
.ContinueWith(task =>
{
taskDataAppAction_Local.Dispose();
if (taskDataAppAction == taskDataAppAction_Local)
taskDataAppAction = null;
});
}
}
//-------------------------------------------------------------------
private async Task showAssetMovementForm (SysId assetMovementId, SacsTaskData taskDataAppAction_Local)
{
String fn = GetType().Name + ".ItemListWebView_AppNavigating";
if (!SysId.IsValid(assetMovementId))
{
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert("Asset Movement", "Invalid asset movement selected.", "OK");
});
return;
}
// Retrieve Asset Movement and associated details.
SlmAssetMovement assetMovement = null;
SlmContainer container = null;
try
{
SacsTaskData taskData = new SacsTaskData(null) { Debug = SacsSystem.DebugMode };
// Retrieve Asset Movement.
SlmAssetMovement.Params prmAssetMovement = new SlmAssetMovement.Params();
prmAssetMovement.IncludedIds.Add(assetMovementId);
prmAssetMovement.StatusCat = SlmAssetMovement.StatusCat.Any;
assetMovement = await AssetMgr.GetAssetMovement_Mobile(prmAssetMovement, taskData);
// Retrieve Container.
if (assetMovement != null)
{
if (assetMovement.AssetItemType == Slm.AssetItemType.Container)
{
SlmContainer.Params prmContainer = new SlmContainer.Params();
prmContainer.IncludedIds.Add(assetMovement.AssetItemId);
prmContainer.StatusCat = SlmContainer.StatusCat.Any;
container = await AssetMgr.GetContainer_Mobile(prmContainer, taskData);
}
}
}
catch (Exception exc) { Logger.Debug(fn + " " + exc.GetLogMessage(6)); }
if (assetMovement == null)
{
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert("Asset Movement", "Failed to retrieve Asset movement data.", "OK");
});
return;
}
if (assetMovement.AssetItemType == Slm.AssetItemType.Container)
{
if (container == null)
{
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert("Asset Movement", "Failed to retrieve Container data.", "OK");
});
DisplayAlert(HeaderCaption, "Invalid asset movement selected.", "OK");
return;
}
}
else
{
await DisplayAlert("Asset Movement", "Unrecognised asset type: " + assetMovement.AssetItemType.ToString() + ".", "OK");
return;
}
Device.BeginInvokeOnMainThread(async () =>
{
// Configure Asset Movement page.
SlmPage_Assets_Movement.Config pageConfig = new SlmPage_Assets_Movement.Config();
pageConfig.AssetMovementToUpdate = assetMovement;
pageConfig.AssetMovement_Container = container;
// Data will be retrieved and validated by the page.
SlmFormPage_Assets_Movement.Config pageConfig = new SlmFormPage_Assets_Movement.Config();
pageConfig.AssetMovementIdToUpdate = assetMovementId;
pageConfig.ReadOnly = true;
if (pageConfig.ReadOnly) pageConfig.NavigationMode = Core.Forms.Base.SlmFormPage.NavigationMode.Close;
SlmPage_Assets_Movement assetRepairForm = new SlmPage_Assets_Movement (pageConfig);
assetRepairForm.Disappearing += (sender2, e2) =>
{
};
await SlmGlobals_Mobile.Application.MainPage.Navigation.PushModalAsync(assetRepairForm, false);
});
SlmFormPage_Assets_Movement assetRepairForm = new SlmFormPage_Assets_Movement (pageConfig);
//assetRepairForm.Disappearing += (sender2, e2) => { };
SlmGlobals_Mobile.Application.MainPage.Navigation.PushModalAsync(assetRepairForm, false);
}
}
//-------------------------------------------------------------------
@@ -8,19 +8,17 @@ using Sarand.LogisticsMgr.Core.App;
using Sarand.LogisticsMgr.Core.Bus;
using Sarand.LogisticsMgr.Core.WebService;
using Sarand.LogisticsMgr.Mobile.Core.App;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Forms.Components;
using Sarand.LogisticsMgr.Mobile.Core.Bus;
using Sarand.LogisticsMgr.Mobile.Forms.Pages.Forms.Bulk;
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main.Bulk
{
//=======================================================================
public class SlmMainPanel_ShipFile : SlmMainPanel_ItemList
public class SlmMainPanel_Bulk_Berthings : SlmMainPanel_ItemList
{
//-------------------------------------------------------------------
// Definitions.
@@ -30,11 +28,15 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
}
public enum PanelMode
{
Last2Weeks
Last2Weeks,
Last2Months,
}
public new class Config : SlmMainPanel_ItemList.Config
{
public PanelMode Mode { get; set; } = PanelMode.Last2Weeks;
public Config ()
{
}
public PanelMode Mode { get; set; } = PanelMode.Last2Months;
}
//-------------------------------------------------------------------
@@ -63,7 +65,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
//-------------------------------------------------------------------
// Construction.
public SlmMainPanel_ShipFile (Config config) :
public SlmMainPanel_Bulk_Berthings (Config config) :
base(config)
{
this.config = config;
@@ -71,10 +73,10 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
cols.Id = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.Id);
cols.VesselId = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.VesselId);
cols.VesselName = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.Vessel_Name);
cols.AgentId = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.AgentId);
cols.AgentName = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.Agent_Name);
cols.CustomerId = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.CustomerId);
cols.CustomerName = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.Customer_Name);
cols.AgentId = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.CompanyIdAgent);
cols.AgentName = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.CompanyAgent_Name);
cols.CustomerId = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.CompanyIdCustomer);
cols.CustomerName = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.CompanyCustomer_Name);
cols.Berth = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.Berth);
cols.Bollard = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.Bollard);
cols.Expected = BerthingMgr.GetBerthingColumnDfn(SlmBerthing.Column.Expected);
@@ -137,19 +139,27 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
filterPropertyTypes.Add(new SacsFilterPropertyType((int)FilterProperty.Vessel, "Vessel") { Mode = SacsFilterPropertyType.FilterMode.Text });
return filterPropertyTypes;
}
public SlmBerthing.Params GetBerthingParams (uint pageNo, ushort pageLength)
public SlmBerthing_Mobile.Params GetBerthingParams (uint pageNo, ushort pageLength)
{
SlmBerthing.Params berthingParams = new SlmBerthing.Params();
SlmBerthing_Mobile.Params prmBerthing = new SlmBerthing_Mobile.Params();
// Filter.
berthingParams.VesselPartial = HeaderPanel.PanelFilter.GetFilterPropertyValue((int)FilterProperty.Vessel);
berthingParams.StatusCat = SlmBerthing.StatusCat.NotDeleted;
prmBerthing.VesselPartial = HeaderPanel.PanelFilter.GetFilterPropertyValue((int)FilterProperty.Vessel);
prmBerthing.StatusCat = SlmBerthing.StatusCat.NotDeleted;
// Paging.
berthingParams.ResultsPaging.PageNo = pageNo;
berthingParams.ResultsPaging.PageLength = pageLength;
prmBerthing.ResultsPaging.PageNo = pageNo;
prmBerthing.ResultsPaging.PageLength = pageLength;
// Mode.
if (config.Mode == PanelMode.Last2Weeks)
berthingParams.ArrivedFrom = DateUtil.IncrementDate(DateTime.Today, -14);
return berthingParams;
{
prmBerthing.ArrivedFrom = DateUtil.IncrementDate(DateTime.Today, -14);
prmBerthing.IncludeAllCurrent = true;
}
else if (config.Mode == PanelMode.Last2Months)
{
prmBerthing.ArrivedFrom = DateUtil.IncrementDate(DateTime.Today, -60);
prmBerthing.IncludeAllCurrent = true;
}
return prmBerthing;
}
private SacsTaskData taskDataRefreshList = null;
protected override void RefreshItemList (uint pageNo = 1)
@@ -169,7 +179,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
// Refresh the list.
RefreshItemList(GetBerthingParams(pageNo, ItemsPerPage), taskDataRefreshList = new SacsTaskData(null));
}
private void RefreshItemList (SlmBerthing.Params berthingParams, SacsTaskData taskDataRefreshList_Local)
private void RefreshItemList (SlmBerthing_Mobile.Params berthingParams, SacsTaskData taskDataRefreshList_Local)
{
String fn = GetType().Name + ".RefreshItemList";
@@ -184,7 +194,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
// Configure request.
SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
configRequest.DataType = SlmWebServiceRequest.DataType.Berthing;
configRequest.RequestType = SlmWebServiceRequest.RequestType.List;
configRequest.RequestType = SlmWebServiceRequest.RequestType.QueryList;
configRequest.Context.SiteDefinition = SlmGlobals_Mobile.SessionProfile.SiteDefinition;
configRequest.Context.Debug = SacsSystem.DebugMode;
// Filter.
@@ -210,8 +220,8 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
};
// Request User profile.
if (SacsSystem.DebugMode) Logger.Debug(fn + " Querying data - START");
SlmWebServiceClient.ItemListResponseData responseData =
await new SlmWebServiceClient().GetItemList(configRequest, filter, queryColumns, taskDataRefreshList_Local);
SlmWebServiceClient.QueryListResponseData responseData =
await new SlmWebServiceClient().RequestQueryList(configRequest, filter, queryColumns, taskDataRefreshList_Local);
if (SacsSystem.DebugMode) Logger.Debug(fn + " Querying data - END Items: " + (responseData?.Items.Count.ToString() ?? "None") + (taskDataRefreshList_Local.IsCancellationRequested ? " [Cancelled]" : ""));
// Display item list.
@@ -234,7 +244,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
}
//-------------------------------------------------------------------
protected override void DisplayItemList (SlmWebServiceClient.ItemListResponseData responseData, SacsMessage message = null)
protected override void DisplayItemList (SlmWebServiceClient.QueryListResponseData responseData, SacsMessage message = null)
{
// Refresh paging properties.
if (responseData != null)
@@ -262,18 +272,18 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
{ }
else if (responseData.Items.Count > 0)
{
//html += "<div class='msg inf'>Movements found: " + responseData.Items.Count + "</div>";
//html += "<div class='msg inf'>Berthings found: " + responseData.Items.Count + "</div>";
foreach (var item in responseData.Items)
{
html += "<div id='AssMov-" + SysId.ToString(item.GetIdValue(cols.Id.DataName)) + "' class='item' ondblclick='slm.openBerthing(" + SysId.ToString(item.GetIdValue(cols.Id.DataName)) + ")'>";
html += "<div id='Bth-" + SysId.ToString(item.GetIdValue(cols.Id.DataName)) + "' class='item' ondblclick='slm.openBerthing(" + SysId.ToString(item.GetIdValue(cols.Id.DataName)) + ")'>";
html += "<table class='fullwidth'>";
html += " <tr>";
html += " <td class='label'>Vessel</td><td class='value bold'>" + item.GetValue(cols.VesselName.DataName) + "</td>";
html += " <td class='label'>Agent</td><td class='value'>" + item.GetValue(cols.AgentName.DataName) + "</td>";
html += " <td class='label'></td><td class='value'>" + "</td>";
html += " </tr>";
html += " <tr>";
html += " <td class='label'>Customer</td><td class='value'>" + item.GetValue(cols.CustomerName.DataName) + "</td>";
html += " <td class='label'></td><td class='value'>" + "</td>";
html += " <td class='label'>Agent</td><td class='value'>" + item.GetValue(cols.AgentName.DataName) + "</td>";
html += " </tr>";
html += " <tr>";
html += " <td class='label'>Berth</td><td class='value'>" + item.GetValue(cols.Berth.DataName) + "</td>";
@@ -298,7 +308,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
html += "</div>";
}
}
else html += "<div class='msg inf'>No movements found</div>";
else html += "<div class='msg inf'>No Berthings found</div>";
html += "</body></html>";
ItemListWebView.Html = html;
//Logger.Debug("HTML: " + html);
@@ -312,11 +322,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
"<style>" + SlmResourceConsole.GetTextResource(SlmResourceConsole.TextResource.SlmBaseCss) + "</style>",
"<style>",
"body{padding:4px;font-size:" + SlmMobile.HtmlFontSize + ";border:1px solid #808080;border-radius:8px;overflow-y:auto;}",
"div.msg{margin-bottom:4px;padding:4px;border:1px solid #C0C0C0;border-radius:4px;}",
"div.msg.inf{color:green;}",
"div.msg.wrn{color:orange;}",
"div.msg.err{color:red;}",
"td{padding:4px 4px;}",
"td{padding:2px;}",
"tr.other th, tr.other td{background-color:#f0f0f0;}",
"div.item{margin:0 0 4px 0;padding:4px;background-color:#f8f8f8;border:2px solid #808080;border-radius:8px;}",
"</style>"
@@ -333,7 +339,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
"<script>",
"slm.openBerthing=function(id)",
"{",
//" alert('slm.openAssetMovement Id: '+id)",
//" alert('slm.openBerthing Id: '+id)",
" document.location=\"" + SaxWebView.AppActionPrefix + berthingDoubleClickedPrefix + "\"+id;",
"}",
"$(function()",
@@ -347,109 +353,30 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
//-------------------------------------------------------------------
// P a n e l E v e n t s
//-------------------------------------------------------------------
private SacsTaskData taskDataAppAction;
/// <summary>'App' navigation events on Item List web view control.</summary>
protected override void ItemListWebView_AppNavigating (object sender, SaxWebView.AppNavigatingEventArgs eventArgs)
{
String fn = GetType().Name + ".ItemListWebView_AppNavigating";
if (SacsSystem.DebugMode) Logger.Debug(fn + " AppAction: " + eventArgs.AppAction);
// Cancel previous action.
if (taskDataAppAction != null)
{
taskDataAppAction.TriggerCancellation();
taskDataAppAction = null;
}
taskDataAppAction = new SacsTaskData(null);
if (eventArgs.AppAction.StartsWithCI(berthingDoubleClickedPrefix))
{
SacsTaskData taskDataAppAction_Local = taskDataAppAction;
SysId berthingId = new SysId(StringUtil.ToInt(eventArgs.AppAction.Right(eventArgs.AppAction.Length - berthingDoubleClickedPrefix.Length)));
Task.Run(async () =>
if (!SysId.IsValid(berthingId))
{
try
{
await showBerthingForm(berthingId, taskDataAppAction_Local);
}
catch (Exception exc) { if (SacsSystem.DebugMode) Logger.Warn(fn + " " + ExceptionUtil.GetLogMessage(exc)); }
}, taskDataAppAction_Local.CancellationToken)
.ContinueWith(task =>
{
taskDataAppAction_Local.Dispose();
if (taskDataAppAction == taskDataAppAction_Local)
taskDataAppAction = null;
});
}
}
//-------------------------------------------------------------------
private async Task showBerthingForm (SysId berthingId, SacsTaskData taskDataAppAction_Local)
{
String fn = GetType().Name + ".ItemListWebView_AppNavigating";
if (!SysId.IsValid(berthingId))
{
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert("Ship File", "Invalid berthing selected.", "OK");
});
return;
}
// Retrieve Berthing and associated details.
SlmBerthing berthing = null;
SlmVessel vessel = null;
try
{
SacsTaskData taskData = new SacsTaskData(null) { Debug = SacsSystem.DebugMode };
// Retrieve Berthing.
SlmBerthing.Params prmBerthing = new SlmBerthing.Params();
prmBerthing.IncludedIds.Add(berthingId);
prmBerthing.StatusCat = SlmBerthing.StatusCat.Any;
// ToDo berthing = await BerthingMgr.GetBerthing_Mobile(prmBerthing, taskData);
// Retrieve Vessel.
if (berthing != null)
{
if (SysId.IsValid(berthing.VesselId))
{
SlmVessel.Params prmVessel = new SlmVessel.Params();
prmVessel.IncludedIds.Add(berthing.VesselId);
prmVessel.StatusCat = SlmVessel.StatusCat.Any;
// ToDo vessel = await BerthingMgr.GetVessel_Mobile(prmVessel, taskData);
}
DisplayAlert(HeaderCaption, "Invalid berthing selected.", "OK");
return;
}
}
catch (Exception exc) { Logger.Debug(fn + " " + exc.GetLogMessage(6)); }
if (berthing == null)
{
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert("Ship File", "Failed to retrieve Berthing data.", "OK");
});
return;
}
if (vessel == null)
{
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert("Ship File", "Failed to retrieve Vessel data.", "OK");
});
return;
}
Device.BeginInvokeOnMainThread(async () =>
{
// ToDo Configure Asset Movement page.
/*
SlmPage_ShipFile_Berthing.Config pageConfig = new SlmPage_ShipFile_Berthing.Config();
pageConfig.BerthingToUpdate = berthing;
pageConfig.Berthing_Vessel = vessel;
// Show Berthing page.
// Data will be retrieved and validated by the page.
SlmFormPage_Bulk_Berthing.Config pageConfig = new SlmFormPage_Bulk_Berthing.Config();
pageConfig.BerthingIdToUpdate = berthingId;
pageConfig.ReadOnly = true;
if (pageConfig.ReadOnly) pageConfig.NavigationMode = Core.Forms.Base.SlmFormPage.NavigationMode.Close;
SlmPage_ShipFile_Berthing assetRepairForm = new SlmPage_ShipFile_Berthing (pageConfig);
assetRepairForm.Disappearing += (sender2, e2) =>
{
};
await SlmGlobals_Mobile.Application.MainPage.Navigation.PushModalAsync(assetRepairForm, false);
*/
});
SlmFormPage_Bulk_Berthing assetRepairForm = new SlmFormPage_Bulk_Berthing (pageConfig);
//assetRepairForm.Disappearing += (sender2, e2) => { };
SlmGlobals_Mobile.Application.MainPage.Navigation.PushModalAsync(assetRepairForm, false);
}
}
//-------------------------------------------------------------------
@@ -95,7 +95,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
//-------------------------------------------------------------------
protected abstract List<SacsFilterPropertyType> GetFilterPropertyTypes ();
protected abstract void RefreshItemList (uint pageNo = 1);
protected abstract void DisplayItemList (SlmWebServiceClient.ItemListResponseData responseData, SacsMessage message = null);
protected abstract void DisplayItemList (SlmWebServiceClient.QueryListResponseData responseData, SacsMessage message = null);
//-------------------------------------------------------------------
// P a n e l A c t i o n s
@@ -174,7 +174,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
// Configure Web Service request data.
SlmWebServiceRequest.Config configRequest = new SlmWebServiceRequest.Config();
configRequest.DataType = SlmWebServiceRequest.DataType.UserProfile;
configRequest.RequestType = SlmWebServiceRequest.RequestType.Data;
configRequest.RequestType = SlmWebServiceRequest.RequestType.Item;
configRequest.Context.SiteDefinition = siteDefinition;
configRequest.Context.Debug = SacsSystem.DebugMode;
// User filter.
@@ -182,7 +182,7 @@ namespace Sarand.LogisticsMgr.Mobile.Forms.Panels.Main
filter.Add("EmailAddress", emailAddress);
filter.Add("IncludeSecurityProfile", "true");
// Request User profile.
return await webServiceClient.GetItemData(configRequest, filter, taskData);
return await webServiceClient.RequestItemData(configRequest, filter, taskData);
}
//-------------------------------------------------------------------
@@ -28,6 +28,15 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Bus
// A s s o c i a t e d D a t a
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// P a r a m e t e r s
//-------------------------------------------------------------------
public new class Params : SlmBerthing.Params
{
public bool IncludeVessel { get; set; }
public bool IncludeCompanies { get; set; }
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -176,7 +176,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.CodeTypes
taskData.ThrowIfCancellationRequested();
// Configure Web Service request data.
SlmWebServiceRequest.Config configRequest = GetRequestConfig(SlmWebServiceRequest.DataType.CodeType, SlmWebServiceRequest.RequestType.List, taskData.Debug);
SlmWebServiceRequest.Config configRequest = GetRequestConfig(SlmWebServiceRequest.DataType.CodeType, SlmWebServiceRequest.RequestType.QueryList, taskData.Debug);
// Code type filter.
Dictionary<String, String> filter = new Dictionary<string, string>();
@@ -200,8 +200,8 @@ namespace Sarand.LogisticsMgr.Mobile.Core.CodeTypes
columns.Add(column.ToString());
// Request item list.
SlmWebServiceClient.ItemListResponseData responseData =
await webServiceClient.GetItemList(configRequest, filter, columns, taskData);
SlmWebServiceClient.QueryListResponseData responseData =
await webServiceClient.RequestQueryList(configRequest, filter, columns, taskData);
taskData.ThrowIfCancellationRequested();
foreach (SlmWebServiceItemData itemData in responseData.Items)
@@ -247,7 +247,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.CodeTypes
taskData.ThrowIfCancellationRequested();
// Configure Web Service request data.
SlmWebServiceRequest.Config configRequest = GetRequestConfig(SlmWebServiceRequest.DataType.Code, SlmWebServiceRequest.RequestType.List, refreshTaskData.Debug);
SlmWebServiceRequest.Config configRequest = GetRequestConfig(SlmWebServiceRequest.DataType.Code, SlmWebServiceRequest.RequestType.QueryList, refreshTaskData.Debug);
// Code filter.
Dictionary<String, String> filter = new Dictionary<string, string>();
@@ -271,8 +271,8 @@ namespace Sarand.LogisticsMgr.Mobile.Core.CodeTypes
columns.Add(column.ToString());
// Request item list.
SlmWebServiceClient.ItemListResponseData responseData =
await webServiceClient.GetItemList(configRequest, filter, columns, taskData);
SlmWebServiceClient.QueryListResponseData responseData =
await webServiceClient.RequestQueryList(configRequest, filter, columns, taskData);
taskData.ThrowIfCancellationRequested();
foreach (SlmWebServiceItemData itemData in responseData.Items)
@@ -10,7 +10,7 @@ using Xamarin.Forms;
namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Base
{
//=======================================================================
public class SlmControlView : SlmContentView
public abstract class SlmControlView : SlmContentView
{
//-------------------------------------------------------------------
// Definitions.
@@ -48,6 +48,9 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Base
//-------------------------------------------------------------------
// Properties.
// Label.
public SlmLabel Label { get; } = new SlmLabel() { Text = "" };
public String LabelText { get { return Label.Text; } set { if (Label.Text.Equals(value)) return; Label.Text = value; } }
// Styling.
public Thickness BorderThickness
{
@@ -17,21 +17,20 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Base
//-------------------------------------------------------------------
// Data members.
private readonly SlmDatePicker datePicker = new SlmDatePicker();
//-------------------------------------------------------------------
// Construction.
public SlmDatePickerView (SlmDatePicker suppliedPicker = null)
{
// Control configuration.
if (suppliedPicker != null) datePicker = suppliedPicker;
datePicker.BackgroundColor = Color.Transparent;
if (suppliedPicker != null) DatePicker = suppliedPicker;
DatePicker.BackgroundColor = Color.Transparent;
// Control events.
datePicker.BackgroundColor = Color.Transparent;
datePicker.DateSelected += DatePicker_DateSelected;
datePicker.Focused += DatePicker_Focused;
datePicker.Unfocused += DatePicker_Unfocused;
DatePicker.BackgroundColor = Color.Transparent;
DatePicker.DateSelected += DatePicker_DateSelected;
DatePicker.Focused += DatePicker_Focused;
DatePicker.Unfocused += DatePicker_Unfocused;
ConfigureComponents();
SetControlActivity();
@@ -39,11 +38,11 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Base
//-------------------------------------------------------------------
// Properties.
protected SlmDatePicker DatePicker { get { return datePicker; } }
protected SlmDatePicker DatePicker { get; } = new SlmDatePicker();
public DateTime Date
{
get { return datePicker.Date; }
set { if (datePicker.Date == value) return; datePicker.Date = value; }
get { return DatePicker.Date; }
set { if (DatePicker.Date == value) return; DatePicker.Date = value; }
}
//-------------------------------------------------------------------
@@ -66,7 +65,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Base
protected override void SetControlsReadOnly ()
{
base.SetControlsReadOnly();
if (!ReadOnly) Content = datePicker;
if (!ReadOnly) Content = DatePicker;
}
//-------------------------------------------------------------------
@@ -107,7 +106,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Base
public event EventHandler<DateChangedEventArgs> DateSelected;
private void DatePicker_DateSelected (object sender, DateChangedEventArgs e)
{
ReadOnlyText = datePicker.Date != null ? DateUtil.Format(datePicker.Date, datePicker.Format) : "";
ReadOnlyText = DatePicker.FormattedDate;
if (ReadOnly) return;
if (DateSelected != null) DateSelected.Invoke(sender, e);
}
@@ -1,4 +1,5 @@
using Sarand.Core.Mobile.Forms.Controls;
using Sarand.LogisticsMgr.Core.WebService;
using Sarand.LogisticsMgr.Mobile.Core.App;
using Sarand.LogisticsMgr.Mobile.Core.Mgr;
using System;
@@ -29,8 +30,10 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Base
//-------------------------------------------------------------------
// Data members.
private readonly Config config;
private SlmAccountMgr_Mobile accountMgr = null;
private SlmAssetMgr_Mobile assetMgr = null;
private SlmAccountMgr_Mobile accountMgr;
private SlmBerthingMgr_Mobile berthingMgr;
private SlmAssetMgr_Mobile assetMgr;
private SlmWebServiceClient webServiceClient;
// Main grid.
private SlmGrid gridPage = new SlmGrid();
// Caption bar.
@@ -57,14 +60,34 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Base
//-------------------------------------------------------------------
// Properties.
protected virtual String MessageTitle { get { return Title; } }
protected virtual String DataPreparationMessage { get { return "Loading data. Please wait ..."; } }
// Session.
protected SlmUserContext_Mobile UserContext { get { return SlmGlobals_Mobile.SessionProfile.UserContext_Mobile; } }
protected SlmSessionContext_Mobile SessionContext { get { return SlmGlobals_Mobile.SessionProfile.SessionContext_Mobile; } }
// Layout.
protected SlmContentView FormBodyView { get { return contentViewBody; } }
// Process control.
public bool AddMode { get; protected set; } = true;
public bool Changed { get; protected set; } = false;
public bool Cancelled { get; private set; } = true;
// Managers.
protected SlmAccountMgr_Mobile AccountMgr { get { if (accountMgr == null) accountMgr = new SlmAccountMgr_Mobile(SessionContext); return accountMgr; } }
protected SlmBerthingMgr_Mobile BerthingMgr { get { if (berthingMgr == null) berthingMgr = new SlmBerthingMgr_Mobile(SessionContext); return berthingMgr; } }
protected SlmAssetMgr_Mobile AssetMgr { get { if (assetMgr == null) assetMgr = new SlmAssetMgr_Mobile(SessionContext); return assetMgr; } }
public SlmWebServiceClient WebServiceClient { get { if (webServiceClient == null) webServiceClient = new SlmWebServiceClient(); return webServiceClient; } }
//-------------------------------------------------------------------
// C l o s e F o r m
//-------------------------------------------------------------------
protected void CloseFormWithAlert (String message)
{
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert(MessageTitle, message, "OK");
await Navigation.PopModalAsync();
});
}
//-------------------------------------------------------------------
// I n i t i a l i s e
@@ -120,6 +143,20 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Base
buttonClose.Clicked += ButtonClose_Clicked;
}
//-------------------------------------------------------------------
/// <summary>
/// Add label and control to form grid.
/// <para>NB Control takes up 2 rows by default to allow for control pairs (control + button etc).</para>
/// </summary>
protected static void AddControlViewToGrid (SlmGrid grid, SlmControlView controlView)
{
int rowIdx = grid.RowDefinitions.Count;
grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
grid.Children.Add(controlView.Label, 0, rowIdx);
grid.Children.Add(controlView, 1, rowIdx);
Grid.SetColumnSpan(controlView, 2);
}
//-------------------------------------------------------------------
// C o n f i g u r e F o r m
//-------------------------------------------------------------------
@@ -1,7 +1,9 @@
using Sarand.Core.App;
using Sarand.Core.Mobile.Utils;
using Sarand.LogisticsMgr.Core.WebService;
using Sarand.LogisticsMgr.Mobile.Core.App;
using Sarand.LogisticsMgr.Mobile.Core.Forms.Base;
using Sarand.LogisticsMgr.Mobile.Core.Mgr;
using System;
using System.Collections.Generic;
using System.Text;
@@ -21,6 +23,11 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Panels
//-------------------------------------------------------------------
// Data members.
private Config config;
private SlmAccountMgr_Mobile accountMgr;
private SlmBerthingMgr_Mobile berthingMgr;
private SlmAssetMgr_Mobile assetMgr;
private SlmWebServiceClient webServiceClient;
// Layout.
private SlmFrame viewPanel = new SlmFrame();
private SlmStackLayout stackLayout = new SlmStackLayout() { Orientation = StackOrientation.Vertical };
private SlmGrid gridCaption = new SlmGrid();
@@ -111,8 +118,18 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Forms.Panels
get { return labelCaption.Text; }
set { if (labelCaption.Text.Equals(value)) return; labelCaption.Text = value; }
}
// Session.
protected SlmUserContext_Mobile UserContext { get { return SlmGlobals_Mobile.SessionProfile.UserContext_Mobile; } }
protected SlmSessionContext_Mobile SessionContext { get { return SlmGlobals_Mobile.SessionProfile.SessionContext_Mobile; } }
// Layout.
protected SlmPanel SummaryPanel { get { return panelSummary; } }
protected SlmPanel DetailsPanel { get { return panelDetails; } }
protected String ErrorStateMessage { get; set; }
// Managers.
protected SlmAccountMgr_Mobile AccountMgr { get { if (accountMgr == null) accountMgr = new SlmAccountMgr_Mobile(SessionContext); return accountMgr; } }
protected SlmBerthingMgr_Mobile BerthingMgr { get { if (berthingMgr == null) berthingMgr = new SlmBerthingMgr_Mobile(SessionContext); return berthingMgr; } }
protected SlmAssetMgr_Mobile AssetMgr { get { if (assetMgr == null) assetMgr = new SlmAssetMgr_Mobile(SessionContext); return assetMgr; } }
public SlmWebServiceClient WebServiceClient { get { if (webServiceClient == null) webServiceClient = new SlmWebServiceClient(); return webServiceClient; } }
//-------------------------------------------------------------------
// I t e m s T o g g l e
@@ -37,7 +37,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
String fn = GetType().Name + ".GetAddress_Mobile";
// Request item data.
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.GetItemData(GetAddressRequestConfig(SlmWebServiceRequest.RequestType.Data, taskData.Debug), GetAddressQueryFilter_Mobile(prmAddress), taskData);
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.RequestItemData(GetAddressRequestConfig(SlmWebServiceRequest.RequestType.Item, taskData.Debug), GetAddressQueryFilter_Mobile(prmAddress), taskData);
XElement dataElement = responseData.DataElement;
if (dataElement == null) throw new NotSupportedException("No data element found in Address data response.");
@@ -246,7 +246,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
public async Task<long> GetCAddressCount_Mobile (SlmAddress.Params prmAddress, SacsTaskData taskData)
{
ClearErrorState();
SlmWebServiceClient.ItemCountResponseData responseData = await webServiceClient.GetItemCount(GetAddressRequestConfig(SlmWebServiceRequest.RequestType.Count, taskData.Debug), GetAddressQueryFilter_Mobile(prmAddress), taskData);
SlmWebServiceClient.ItemCountResponseData responseData = await webServiceClient.RequestItemCount(GetAddressRequestConfig(SlmWebServiceRequest.RequestType.Count, taskData.Debug), GetAddressQueryFilter_Mobile(prmAddress), taskData);
return responseData.ItemCount;
}
@@ -344,7 +344,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
foreach (SlmAddress.Column column in addressColumns)
columns.Add(column.ToString());
SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetAddressRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetAddressQueryFilter_Mobile(prmAddress), columns, taskData);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetAddressRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetAddressQueryFilter_Mobile(prmAddress), columns, taskData);
return responseData.Items;
}
@@ -57,22 +57,25 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
public async Task<SlmCompany> GetCompany_Mobile (SlmCompany.Params prmCompany, SacsTaskData taskData)
{
ClearErrorState();
List<SlmCompany> companies = new List<SlmCompany>();
String fn = GetType().Name + ".GetCompany_Mobile";
// Request item data.
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.GetItemData(GetCompanyRequestConfig(SlmWebServiceRequest.RequestType.Data, taskData.Debug), GetCompanyQueryFilter_Mobile(prmCompany), taskData);
XElement dataElement = responseData.DataElement;
if (dataElement == null) throw new NotSupportedException("No data element found in Company data response.");
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.RequestItemData(GetCompanyRequestConfig(SlmWebServiceRequest.RequestType.Item, taskData.Debug), GetCompanyQueryFilter_Mobile(prmCompany), taskData);
if (responseData.DataElement == null) throw new NotSupportedException("No data element found in Company data response.");
if (responseData.ItemElement == null) throw new NotSupportedException("No item element found in Company data response.");
if (responseData.Item == null) throw new NotSupportedException("No item extracted from Company data response.");
return CreateCompany_Mobile(responseData.Item);
}
public SlmCompany_Mobile CreateCompany_Mobile (SlmWebServiceItemData itemData)
{
// Item construction properties.
SysId id = new SysId(StringUtil.ToInt(dataElement.GetChildText(SlmCompany.Column.Id.ToString())));
Slm.CompanyType companyType = EnumUtil.ParseEnum(dataElement.GetChildText(SlmCompany.Column.CompanyType.ToString()), Slm.CompanyType.Unknown);
ushort flags = (ushort)StringUtil.ToInt(dataElement.GetChildText(SlmCompany.Column.Id.ToString()));
SysId id = itemData.GetIdValue(nameof(SlmCompany.Id));
Slm.CompanyType companyType = EnumUtil.ParseEnum(itemData.GetValue(nameof(SlmCompany.CompanyType)), Slm.CompanyType.Unknown);
ushort flags = (ushort)itemData.GetIntValue(nameof(SlmCompany.Flags));
// Create item.
SlmCompany_Mobile company = new SlmCompany_Mobile(Site, id, companyType, flags);
// Populate item properties.
PopulateFrom(dataElement, company);
PopulateFrom(itemData, company);
return company;
}
@@ -130,55 +133,43 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo (XElement companyElement, SlmCompany company, DbUpdateInfo dbUpdateInfo)
private void PopulateTo (XElement companyElement, SlmCompany company, List<String> excludedProperties, DbUpdateInfo dbUpdateInfo)
{
companyElement.AppendElement("Id", SysId.ToString(company.Id));
companyElement.AppendElement("Type", company.CompanyType.ToString());
companyElement.AppendElement("Code", company.Code);
companyElement.AppendElement("Sort", company.Sort);
companyElement.AppendElement("Name", company.Name);
companyElement.AppendElement("DataSource", company.DataSource.ToString());
companyElement.AppendElement("WebAuthorise", company.WebAuthorise);
companyElement.AppendElement("DisplayColour", company.DisplayColour);
companyElement.AppendElement("Phone", company.Phone);
companyElement.AppendElement("Fax", company.Fax);
companyElement.AppendElement("Contact", company.Contact);
companyElement.AppendElement("InvoicingProfile", company.InvoicingProfileData);
companyElement.AppendElement("MaintenanceProfile", company.MaintenanceProfileData);
companyElement.AppendElement(nameof(SlmCompany.Id), SysId.ToString(company.Id));
companyElement.AppendElement(nameof(SlmCompany.CompanyType), company.CompanyType.ToString());
companyElement.AppendElement(nameof(SlmCompany.Code), company.Code);
companyElement.AppendElement(nameof(SlmCompany.Sort), company.Sort);
companyElement.AppendElement(nameof(SlmCompany.Name), company.Name);
companyElement.AppendElement(nameof(SlmCompany.DataSource), company.DataSource.ToString());
companyElement.AppendElement(nameof(SlmCompany.WebAuthorise), company.WebAuthorise);
companyElement.AppendElement(nameof(SlmCompany.DisplayColour), company.DisplayColour);
companyElement.AppendElement(nameof(SlmCompany.Phone), company.Phone);
companyElement.AppendElement(nameof(SlmCompany.Fax), company.Fax);
companyElement.AppendElement(nameof(SlmCompany.Contact), company.Contact);
if (!excludedProperties.ContainsCI(nameof(SlmCompany.InvoicingProfileData)))
companyElement.AppendElement(nameof(SlmCompany.InvoicingProfileData), company.InvoicingProfileData);
if (!excludedProperties.ContainsCI(nameof(SlmCompany.MaintenanceProfileData)))
companyElement.AppendElement(nameof(SlmCompany.MaintenanceProfileData), company.MaintenanceProfileData);
// Common properties.
companyElement.AppendElement("Notes", company.Notes);
companyElement.AppendElement("Status", SacsSystem.GetStatusCode(company.Status));
companyElement.AppendElement("Flags", company.Flags.ToString());
if (!SysId.IsValid(company.Id))
{
companyElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
companyElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
companyElement.AppendElement("CreateHost", dbUpdateInfo.Host);
}
companyElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
companyElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
companyElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
this.PopulateCommonPropertiesTo(companyElement, company, excludedProperties, dbUpdateInfo);
}
private void PopulateFrom (XElement companyElement, SlmCompany company)
private void PopulateFrom (SlmWebServiceItemData itemData, SlmCompany company)
{
//company.Id = new SysId(StringUtil.ToInt(companyElement.GetChildText("Id")));
//company.Type = EnumUtil.ParseEnum(companyElement.GetChildText("Type"), Slm.CompanyType.Unknown);
company.Code = companyElement.GetChildText("Code");
company.Sort = companyElement.GetChildText("Sort");
company.Name = companyElement.GetChildText("Name");
company.DataSource = EnumUtil.ParseEnum(companyElement.GetChildText("DataSource"), Slm.DataSourceType.Unknown);
company.WebAuthorise = companyElement.GetChildText("WebAuthorise");
company.DisplayColour = companyElement.GetChildText("DisplayColour");
company.Phone = companyElement.GetChildText("Phone");
company.Fax = companyElement.GetChildText("Fax");
company.Contact = companyElement.GetChildText("Contact");
company.InvoicingProfileData = companyElement.GetChildText("InvoicingProfile");
company.MaintenanceProfileData = companyElement.GetChildText("MaintenanceProfile");
//company.Id = new SysId(StringUtil.ToInt(companyElement.GetChildText(nameof(SlmCompany.Id))));
//company.CompanyType = EnumUtil.ParseEnum(companyElement.GetChildText(nameof(SlmCompany.CompanyType)), Slm.CompanyType.Unknown);
company.Code = itemData.GetValue(nameof(SlmCompany.Code));
company.Sort = itemData.GetValue(nameof(SlmCompany.Sort));
company.Name = itemData.GetValue(nameof(SlmCompany.Name));
company.DataSource = EnumUtil.ParseEnum(itemData.GetValue(nameof(SlmCompany.DataSource)), Slm.DataSourceType.Unknown);
company.WebAuthorise = itemData.GetValue(nameof(SlmCompany.WebAuthorise));
company.DisplayColour = itemData.GetValue(nameof(SlmCompany.DisplayColour));
company.Phone = itemData.GetValue(nameof(SlmCompany.Phone));
company.Fax = itemData.GetValue(nameof(SlmCompany.Fax));
company.Contact = itemData.GetValue(nameof(SlmCompany.Contact));
company.InvoicingProfileData = itemData.GetValue(nameof(SlmCompany.InvoicingProfileData));
company.MaintenanceProfileData = itemData.GetValue(nameof(SlmCompany.MaintenanceProfileData));
// Common properties.
company.Notes = companyElement.GetChildText("Notes");
company.Status = SacsSystem.GetStatusForCode(companyElement.GetChildText("Status"));
company.SetCreateStamp(DateUtil.ParseXmlDateTime(companyElement.GetChildText("CreateOn")), new SysId(StringUtil.ToInt(companyElement.GetChildText("CreateBy"))), companyElement.GetChildText("CreateHost"));
company.SetUpdateStamp(DateUtil.ParseXmlDateTime(companyElement.GetChildText("UpdateOn")), new SysId(StringUtil.ToInt(companyElement.GetChildText("UpdateBy"))), companyElement.GetChildText("UpdateHost"));
this.PopulateCommonPropertiesFrom(itemData, company);
company.AcceptChanges();
}
@@ -254,7 +245,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
public async Task<long> GetCompanyCount_Mobile (SlmCompany.Params prmCompany, SacsTaskData taskData)
{
ClearErrorState();
SlmWebServiceClient.ItemCountResponseData responseData = await webServiceClient.GetItemCount(GetCompanyRequestConfig(SlmWebServiceRequest.RequestType.Count, taskData.Debug), GetCompanyQueryFilter_Mobile(prmCompany), taskData);
SlmWebServiceClient.ItemCountResponseData responseData = await webServiceClient.RequestItemCount(GetCompanyRequestConfig(SlmWebServiceRequest.RequestType.Count, taskData.Debug), GetCompanyQueryFilter_Mobile(prmCompany), taskData);
return responseData.ItemCount;
}
@@ -262,73 +253,16 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
// Company list.
public override List<SlmCompany> GetCompanyList (SlmCompany.Params prmCompany)
{
List<SlmCompany> companies = new List<SlmCompany>();
throw new NotImplementedException();
}
public async Task<List<SlmCompany>> GetCompanyList_Mobile (SlmCompany.Params prmCompany, SacsTaskData taskData)
{
ClearErrorState();
List<SlmCompany> companies = new List<SlmCompany>();
String fn = GetType().Name + ".GetCompanyList_Mobile";
// Company columns.
List<SlmCompany.Column> columns = new List<SlmCompany.Column>()
{
SlmCompany.Column.Id,
SlmCompany.Column.CompanyType,
SlmCompany.Column.Code,
SlmCompany.Column.Sort,
SlmCompany.Column.Name,
SlmCompany.Column.DataSource,
SlmCompany.Column.WebAuthorise,
SlmCompany.Column.DisplayColour,
SlmCompany.Column.Phone,
SlmCompany.Column.Fax,
SlmCompany.Column.Contact,
SlmCompany.Column.InvoicingProfileData,
SlmCompany.Column.MaintenanceProfileData,
SlmCompany.Column.Notes,
SlmCompany.Column.Flags,
SlmCompany.Column.Status
};
List<SlmWebServiceItemData> itemDataList = await ExecuteCompanyQuery_Mobile(columns, prmCompany, taskData);
foreach (SlmWebServiceItemData itemData in itemDataList)
{
taskData.ThrowIfCancellationRequested();
// Item construction properties.
SysId id = itemData.GetIdValue(SlmCompany.Column.Id);
Slm.CompanyType companyType = EnumUtil.ParseEnum(itemData.GetValue(SlmCompany.Column.CompanyType), Slm.CompanyType.Unknown);
ushort flags = (ushort)itemData.GetIntValue(SlmCompany.Column.Flags);
// Create item.
SlmCompany_Mobile company = new SlmCompany_Mobile(Site, id, companyType, flags);
// Populate item properties.
foreach (SlmCompany.Column column in columns)
{
String value = itemData.GetValue(column);
switch (column)
{
case SlmCompany.Column.Code: company.Code = value; break;
case SlmCompany.Column.Sort: company.Sort = value; break;
case SlmCompany.Column.Name: company.Name = value; break;
case SlmCompany.Column.DataSource: company.DataSource = EnumUtil.ParseEnum(value, Slm.DataSourceType.Unknown); break;
case SlmCompany.Column.WebAuthorise: company.WebAuthorise = value; break;
case SlmCompany.Column.DisplayColour: company.DisplayColour = value; break;
case SlmCompany.Column.Phone: company.Phone = value; break;
case SlmCompany.Column.Fax: company.Fax = value; break;
case SlmCompany.Column.Contact: company.Contact = value; break;
case SlmCompany.Column.InvoicingProfileData: company.InvoicingProfileData = value; break;
case SlmCompany.Column.MaintenanceProfileData: company.MaintenanceProfileData = value; break;
case SlmCompany.Column.Notes: company.Notes = value; break;
case SlmCompany.Column.Status: company.Status = SacsSystem.GetStatusForCode(value); break;
}
}
companies.Add(company);
}
taskData.ThrowIfCancellationRequested();
if (taskData.Debug) Logger.Debug(fn + " Companies: " + companies.Count);
return companies;
List<SlmCompany> berthings = new List<SlmCompany>();
SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.RequestItemList(GetCompanyRequestConfig(SlmWebServiceRequest.RequestType.ItemList, taskData.Debug), GetCompanyQueryFilter_Mobile(prmCompany), taskData);
foreach (SlmWebServiceItemData itemData in responseData.Items)
berthings.Add(CreateCompany_Mobile(itemData));
return berthings;
}
//-------------------------------------------------------------------
@@ -347,7 +281,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
foreach (SlmCompany.Column column in companyColumns)
columns.Add(column.ToString());
SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetCompanyRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetCompanyQueryFilter_Mobile(prmCompany), columns, taskData);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetCompanyRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetCompanyQueryFilter_Mobile(prmCompany), columns, taskData);
return responseData.Items;
}
@@ -72,7 +72,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
String fn = GetType().Name + ".GetAssetMovement_Mobile";
// Request item data.
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.GetItemData(GetAssetMovementRequestConfig(SlmWebServiceRequest.RequestType.Data, taskData.Debug), GetAssetMovementQueryFilter_Mobile(prmAssetMovement), taskData);
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.RequestItemData(GetAssetMovementRequestConfig(SlmWebServiceRequest.RequestType.Item, taskData.Debug), GetAssetMovementQueryFilter_Mobile(prmAssetMovement), taskData);
if (responseData.DataElement == null) throw new NotSupportedException("No data element found in AssetMovement data response.");
if (responseData.ItemElement == null) throw new NotSupportedException("No item element found in AssetMovement data response.");
if (responseData.Item == null) throw new NotSupportedException("No item extracted from AssetMovement data response.");
@@ -438,7 +438,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
public async Task<long> GetAssetMovementCount_Mobile (SlmAssetMovement.Params prmAssetMovement, SacsTaskData taskData)
{
ClearErrorState();
SlmWebServiceClient.ItemCountResponseData responseData = await webServiceClient.GetItemCount(GetAssetMovementRequestConfig(SlmWebServiceRequest.RequestType.Count, taskData.Debug), GetAssetMovementQueryFilter_Mobile(prmAssetMovement), taskData);
SlmWebServiceClient.ItemCountResponseData responseData = await webServiceClient.RequestItemCount(GetAssetMovementRequestConfig(SlmWebServiceRequest.RequestType.Count, taskData.Debug), GetAssetMovementQueryFilter_Mobile(prmAssetMovement), taskData);
return responseData.ItemCount;
}
@@ -597,7 +597,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
foreach (SlmAssetMovement.Column column in assetMovementColumns)
columns.Add(column.ToString());
SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetAssetMovementRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetAssetMovementQueryFilter_Mobile(prmAssetMovement), columns, taskData);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetAssetMovementRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetAssetMovementQueryFilter_Mobile(prmAssetMovement), columns, taskData);
return responseData.Items;
}
@@ -44,7 +44,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
String fn = GetType().Name + ".GetAssetRepair_Mobile";
// Request item data.
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.GetItemData(GetAssetRepairRequestConfig(SlmWebServiceRequest.RequestType.Data, taskData.Debug), GetAssetRepairQueryFilter_Mobile(prmAssetRepair), taskData);
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.RequestItemData(GetAssetRepairRequestConfig(SlmWebServiceRequest.RequestType.Item, taskData.Debug), GetAssetRepairQueryFilter_Mobile(prmAssetRepair), taskData);
if (responseData.Item == null) SetErrorState("Asset Repair not present in response.");
return GetAssetRepair(responseData.Item);
}
@@ -253,7 +253,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
public async Task<long> GetCAssetRepairCount_Mobile (SlmAssetRepair.Params prmAssetRepair, SacsTaskData taskData)
{
ClearErrorState();
SlmWebServiceClient.ItemCountResponseData responseData = await webServiceClient.GetItemCount(GetAssetRepairRequestConfig(SlmWebServiceRequest.RequestType.Count, taskData.Debug), GetAssetRepairQueryFilter_Mobile(prmAssetRepair), taskData);
SlmWebServiceClient.ItemCountResponseData responseData = await webServiceClient.RequestItemCount(GetAssetRepairRequestConfig(SlmWebServiceRequest.RequestType.Count, taskData.Debug), GetAssetRepairQueryFilter_Mobile(prmAssetRepair), taskData);
return responseData.ItemCount;
}
@@ -352,7 +352,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
foreach (SlmAssetRepair.Column column in assetRepairColumns)
columns.Add(column.ToString());
SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.GetItemList(GetAssetRepairRequestConfig(SlmWebServiceRequest.RequestType.List, taskData.Debug), GetAssetRepairQueryFilter_Mobile(prmAssetRepair), columns, taskData);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetAssetRepairRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetAssetRepairQueryFilter_Mobile(prmAssetRepair), columns, taskData);
return responseData.Items;
}
@@ -51,7 +51,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
String fn = GetType().Name + ".GetContainer_Mobile";
// Request item data.
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.GetItemData(GetContainerRequestConfig(SlmWebServiceRequest.RequestType.Data, taskData.Debug), GetContainerQueryFilter_Mobile(prmContainer), taskData);
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.RequestItemData(GetContainerRequestConfig(SlmWebServiceRequest.RequestType.Item, taskData.Debug), GetContainerQueryFilter_Mobile(prmContainer), taskData);
if (responseData.DataElement == null) throw new NotSupportedException("No data element found in Container data response.");
if (responseData.ItemElement == null) throw new NotSupportedException("No item element found in Container data response.");
if (responseData.Item == null) throw new NotSupportedException("No item extracted from Container data response.");
@@ -275,7 +275,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetBerthingCostRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetBerthingCostQueryFilter_Mobile(prmBerthingCost), columns, taskData);
return responseData.Items;
}
@@ -292,46 +292,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -291,7 +291,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetBerthingResourceRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetBerthingResourceQueryFilter_Mobile(prmBerthingResource), columns, taskData);
return responseData.Items;
}
@@ -308,40 +308,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -25,10 +25,8 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
// BerthingTask exists.
public override bool BerthingTaskExistsById (SysId id)
{
ClearErrorState();
throw new NotImplementedException();
}
// Create BerthingTask.
public override SlmBerthingTask CreateBerthingTask (SysId berthingId ,Slm.BerthingTaskType berthingTaskType)
{
@@ -40,14 +38,37 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
// Get BerthingTask.
public override SlmBerthingTask GetBerthingTask (SlmBerthingTask.Params prmBerthingTask)
{
ClearErrorState();
throw new NotImplementedException();
}
public override SlmBerthingTask GetBerthingTaskById (SysId id)
{
ClearErrorState();
throw new NotImplementedException();
}
public async Task<SlmBerthingTask> GetBerthingTask_Mobile (SlmBerthingTask_Mobile.Params prmBerthingTask, SacsTaskData taskData)
{
ClearErrorState();
String fn = GetType().Name + ".GetBerthingTask_Mobile";
// Request item data.
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.RequestItemData(GetBerthingTaskRequestConfig(SlmWebServiceRequest.RequestType.Item, taskData.Debug), GetBerthingTaskQueryFilter_Mobile(prmBerthingTask), taskData);
if (responseData.DataElement == null) throw new NotSupportedException("No data element found in BerthingTask data response.");
if (responseData.ItemElement == null) throw new NotSupportedException("No item element found in BerthingTask data response.");
if (responseData.Item == null) throw new NotSupportedException("No item extracted from BerthingTask data response.");
return CreateBerthingTask_Mobile(responseData.Item);
}
public SlmBerthingTask_Mobile CreateBerthingTask_Mobile (SlmWebServiceItemData itemData)
{
// Item construction properties.
SysId id = itemData.GetIdValue(nameof(SlmBerthingTask.Id));
SysId berthingid = itemData.GetIdValue(nameof(SlmBerthingTask.BerthingId));
Slm.BerthingTaskType berthingTaskType = EnumUtil.ParseEnum(itemData.GetValue(nameof(SlmBerthingTask.BerthingTaskType)),Slm.BerthingTaskType.Unknown);
ushort flags = (ushort)itemData.GetIntValue(nameof(SlmBerthingTask.Flags));
// Create item.
SlmBerthingTask_Mobile berthingTask = new SlmBerthingTask_Mobile(Site, id, berthingid, berthingTaskType, flags);
PopulateFrom(itemData, berthingTask);
return berthingTask;
}
//-------------------------------------------------------------------
// Validate BerthingTask.
@@ -95,39 +116,27 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo (XElement berthingTaskElement, SlmBerthingTask berthingTask, DbUpdateInfo dbUpdateInfo)
private void PopulateTo (XElement berthingTaskElement, SlmBerthingTask berthingTask, List<String> excludedProperties, 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);
berthingTaskElement.AppendElement(nameof(SlmBerthingTask.Id), SysId.ToString(berthingTask.Id));
berthingTaskElement.AppendElement(nameof(SlmBerthingTask.BerthingId), SysId.ToString(berthingTask.BerthingId));
berthingTaskElement.AppendElement(nameof(SlmBerthingTask.BerthingTaskType), berthingTask.BerthingTaskType.ToString());
berthingTaskElement.AppendElement(nameof(SlmBerthingTask.Started), DateUtil.FormatXmlDateTime(berthingTask.Started));
berthingTaskElement.AppendElement(nameof(SlmBerthingTask.Completed), DateUtil.FormatXmlDateTime(berthingTask.Completed));
berthingTaskElement.AppendElement(nameof(SlmBerthingTask.Remarks), berthingTask.Remarks);
// Common properties.
this.PopulateCommonPropertiesTo(berthingTaskElement, berthingTask, excludedProperties, dbUpdateInfo);
}
private void PopulateFrom (XElement berthingTaskElement, SlmBerthingTask berthingTask)
private void PopulateFrom (SlmWebServiceItemData itemData, 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.Id = itemData.GetIdValue(nameof(SlmBerthingTask.Id));
//berthingTask.BerthingId = itemData.GetIdValue(nameof(SlmBerthingTask.BerthingId));
//berthingTask.BerthingTaskType = EnumUtil.ParseEnum(itemData.GetValue(nameof(SlmBerthingTask.BerthingTaskType)), Slm.BerthingTaskType.Unknown);
berthingTask.Started = itemData.GetDateTimeValue(nameof(SlmBerthingTask.Started));
berthingTask.Completed = itemData.GetDateTimeValue(nameof(SlmBerthingTask.Completed));
berthingTask.Remarks = itemData.GetValue(nameof(SlmBerthingTask.Remarks));
// Common properties.
this.PopulateCommonPropertiesFrom(itemData, berthingTask);
berthingTask.AcceptChanges();
}
@@ -155,29 +164,29 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
Dictionary<String, String> filter = new Dictionary<string, string>();
// BerthingTask Id.
if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(","));
if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(","));
// Berthing Id.
if (SysId.IsValid(prm.BerthingId)) filter.Add("BerthingId", SysId.ToString(prm.BerthingId));
if (SysId.IsValid(prm.BerthingId)) filter.Add(nameof(prm.BerthingId), SysId.ToString(prm.BerthingId));
// BerthingTask type.
if ((int)prm.BerthingTaskType > 0) filter.Add("BerthingTaskType", ((int)prm.BerthingTaskType).ToString());
if ((int)prm.BerthingTaskType > 0) filter.Add(nameof(prm.BerthingTaskType), ((int)prm.BerthingTaskType).ToString());
// Started.
if (DateUtil.IsValid(prm.Started)) filter.Add("Started", DateUtil.FormatXmlDate(prm.Started));
if (DateUtil.IsValid(prm.Started)) filter.Add(nameof(prm.Started), DateUtil.FormatXmlDate(prm.Started));
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add(nameof(prm.NotesPartial), prm.NotesPartial);
// Status.
filter.Add("StatusCat", prm.StatusCat.ToString());
filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString());
// Paging.
if (prm.ResultsPaging.Paged)
{
filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString());
filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString());
}
return filter;
@@ -206,56 +215,13 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
public async Task<List<SlmBerthingTask>> GetBerthingTaskList_Mobile (SlmBerthingTask.Params prmBerthingTask, SacsTaskData taskData)
{
ClearErrorState();
List<SlmBerthingTask> companies = new List<SlmBerthingTask>();
String fn = GetType().Name + ".GetBerthingTaskList_Mobile";
// BerthingTask columns.
List<SlmBerthingTask.Column> columns = new List<SlmBerthingTask.Column>()
{
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<SlmWebServiceItemData> 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.Flags);
// 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;
List<SlmBerthingTask> berthingTasks = new List<SlmBerthingTask>();
SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.RequestItemList(GetBerthingTaskRequestConfig(SlmWebServiceRequest.RequestType.ItemList, taskData.Debug), GetBerthingTaskQueryFilter_Mobile(prmBerthingTask), taskData);
foreach (SlmWebServiceItemData itemData in responseData.Items)
berthingTasks.Add(CreateBerthingTask_Mobile(itemData));
return berthingTasks;
}
//-------------------------------------------------------------------
// BerthingTask query execution.
public override DbResultSet ExecuteBerthingTaskQuery (List<ColumnDfn> columns, SlmBerthingTask.Params prm)
@@ -272,7 +238,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetBerthingTaskRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetBerthingTaskQueryFilter_Mobile(prmBerthingTask), columns, taskData);
return responseData.Items;
}
@@ -289,40 +255,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -25,10 +25,8 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
// Berthing exists.
public override bool BerthingExistsById (SysId id)
{
ClearErrorState();
throw new NotImplementedException();
}
// Create Berthing.
public override SlmBerthing CreateBerthing ()
{
@@ -40,14 +38,35 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
// Get Berthing.
public override SlmBerthing GetBerthing (SlmBerthing.Params prmBerthing)
{
ClearErrorState();
throw new NotImplementedException();
}
public override SlmBerthing GetBerthingById (SysId id)
{
ClearErrorState();
throw new NotImplementedException();
}
public async Task<SlmBerthing> GetBerthing_Mobile (SlmBerthing_Mobile.Params prmBerthing, SacsTaskData taskData)
{
ClearErrorState();
String fn = GetType().Name + ".GetBerthing_Mobile";
// Request item data.
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.RequestItemData(GetBerthingRequestConfig(SlmWebServiceRequest.RequestType.Item, taskData.Debug), GetBerthingQueryFilter_Mobile(prmBerthing), taskData);
if (responseData.DataElement == null) throw new NotSupportedException("No data element found in Berthing data response.");
if (responseData.ItemElement == null) throw new NotSupportedException("No item element found in Berthing data response.");
if (responseData.Item == null) throw new NotSupportedException("No item extracted from Berthing data response.");
return CreateBerthing_Mobile(responseData.Item);
}
public SlmBerthing_Mobile CreateBerthing_Mobile (SlmWebServiceItemData itemData)
{
// Item construction properties.
SysId id = itemData.GetIdValue(nameof(SlmBerthing.Id));
ushort flags = (ushort)itemData.GetIntValue(nameof(SlmBerthing.Flags));
// Create item.
SlmBerthing_Mobile berthing = new SlmBerthing_Mobile(Site, id, flags);
PopulateFrom(itemData, berthing);
return berthing;
}
//-------------------------------------------------------------------
// Validate Berthing.
@@ -95,12 +114,12 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo (XElement berthingElement, SlmBerthing berthing, DbUpdateInfo dbUpdateInfo)
private void PopulateTo (XElement berthingElement, SlmBerthing berthing, List<String> excludedProperties, DbUpdateInfo dbUpdateInfo)
{
berthingElement.AppendElement(nameof(berthing.Id), SysId.ToString(berthing.Id));
berthingElement.AppendElement(nameof(berthing.VesselId), SysId.ToString(berthing.VesselId));
berthingElement.AppendElement(nameof(berthing.AgentId), SysId.ToString(berthing.AgentId));
berthingElement.AppendElement(nameof(berthing.CustomerId), SysId.ToString(berthing.CustomerId));
berthingElement.AppendElement(nameof(berthing.CompanyIdAgent), SysId.ToString(berthing.CompanyIdAgent));
berthingElement.AppendElement(nameof(berthing.CompanyIdCustomer), SysId.ToString(berthing.CompanyIdCustomer));
berthingElement.AppendElement(nameof(berthing.Berth), berthing.Berth);
berthingElement.AppendElement(nameof(berthing.Bollard), berthing.Bollard);
berthingElement.AppendElement(nameof(berthing.Expected), DateUtil.FormatXmlDateTime(berthing.Expected));
@@ -118,46 +137,34 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
berthingElement.AppendElement(nameof(berthing.RateQuayside), berthing.RateQuayside.ToString("N3"));
berthingElement.AppendElement(nameof(berthing.RateOvertime), berthing.RateOvertime.ToString("N3"));
berthingElement.AppendElement(nameof(berthing.SpecialInstr), berthing.SpecialInstr);
berthingElement.AppendElement(nameof(berthing.Notes), berthing.Notes);
berthingElement.AppendElement(nameof(berthing.Status), SacsSystem.GetStatusCode(berthing.Status));
berthingElement.AppendElement(nameof(berthing.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);
// Common properties.
this.PopulateCommonPropertiesTo(berthingElement, berthing, excludedProperties, dbUpdateInfo);
}
private void PopulateFrom (XElement berthingElement, SlmBerthing berthing)
private void PopulateFrom (SlmWebServiceItemData itemData, SlmBerthing berthing)
{
//berthing.Id = new SysId(StringUtil.ToInt(berthingElement.GetChildText("Id")));
berthing.VesselId = new SysId(StringUtil.ToInt(berthingElement.GetChildText(nameof(berthing.VesselId))));
berthing.AgentId = new SysId(StringUtil.ToInt(berthingElement.GetChildText(nameof(berthing.AgentId))));
berthing.CustomerId = new SysId(StringUtil.ToInt(berthingElement.GetChildText(nameof(berthing.CustomerId))));
berthing.Berth = berthingElement.GetChildText(nameof(berthing.Berth));
berthing.Bollard = berthingElement.GetChildText(nameof(berthing.Bollard));
berthing.Expected = DateUtil.ParseXmlDateTime(berthingElement.GetChildText(nameof(berthing.Expected)));
berthing.CompletionEst = DateUtil.ParseXmlDateTime(berthingElement.GetChildText(nameof(berthing.CompletionEst)));
berthing.Arrived = DateUtil.ParseXmlDateTime(berthingElement.GetChildText(nameof(berthing.Arrived)));
berthing.Completed = DateUtil.ParseXmlDateTime(berthingElement.GetChildText(nameof(berthing.Completed)));
berthing.Departed = DateUtil.ParseXmlDateTime(berthingElement.GetChildText(nameof(berthing.Departed)));
berthing.Cargo = berthingElement.GetChildText(nameof(berthing.Cargo));
berthing.Holds = decimal.ToByte(StringUtil.ToDecimal((berthingElement.GetChildText(nameof(berthing.Holds)))));
berthing.TotalDischarge = StringUtil.ToDecimal(berthingElement.GetChildText(nameof(berthing.TotalDischarge)));
berthing.HoursWorked = StringUtil.ToShort(berthingElement.GetChildText(nameof(berthing.HoursWorked)));
berthing.StatsData = berthingElement.GetChildText(nameof(berthing.StatsData));
berthing.RateConveyor = StringUtil.ToDecimal(berthingElement.GetChildText(nameof(berthing.RateConveyor)));
berthing.RateLorry = StringUtil.ToDecimal(berthingElement.GetChildText(nameof(berthing.RateLorry)));
berthing.RateQuayside = StringUtil.ToDecimal(berthingElement.GetChildText(nameof(berthing.RateQuayside)));
berthing.RateOvertime = StringUtil.ToDecimal(berthingElement.GetChildText(nameof(berthing.RateOvertime)));
berthing.SpecialInstr = berthingElement.GetChildText(nameof(berthing.SpecialInstr));
berthing.Notes = berthingElement.GetChildText(nameof(berthing.Notes));
berthing.Status = SacsSystem.GetStatusForCode(berthingElement.GetChildText(nameof(berthing.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.Id = itemData.GetIdValue(nameof(SlmBerthing.Id));
berthing.VesselId = itemData.GetIdValue(nameof(SlmBerthing.VesselId));
berthing.CompanyIdAgent = itemData.GetIdValue(nameof(SlmBerthing.CompanyIdAgent));
berthing.CompanyIdCustomer = itemData.GetIdValue(nameof(SlmBerthing.CompanyIdCustomer));
berthing.Berth = itemData.GetValue(nameof(SlmBerthing.Berth));
berthing.Bollard = itemData.GetValue(nameof(SlmBerthing.Bollard));
berthing.Expected = itemData.GetDateTimeValue(nameof(SlmBerthing.Expected));
berthing.CompletionEst = itemData.GetDateTimeValue(nameof(SlmBerthing.CompletionEst));
berthing.Arrived = itemData.GetDateTimeValue(nameof(SlmBerthing.Arrived));
berthing.Completed = itemData.GetDateTimeValue(nameof(SlmBerthing.Completed));
berthing.Departed = itemData.GetDateTimeValue(nameof(SlmBerthing.Departed));
berthing.Cargo = itemData.GetValue(nameof(SlmBerthing.Cargo));
berthing.Holds = (byte)itemData.GetIntValue(nameof(SlmBerthing.Holds));
berthing.TotalDischarge = itemData.GetDecimalValue(nameof(SlmBerthing.TotalDischarge));
berthing.HoursWorked = (short)itemData.GetIntValue(nameof(SlmBerthing.HoursWorked));
berthing.StatsData = itemData.GetValue(nameof(SlmBerthing.StatsData));
berthing.RateConveyor = itemData.GetDecimalValue(nameof(SlmBerthing.RateConveyor));
berthing.RateLorry = itemData.GetDecimalValue(nameof(SlmBerthing.RateLorry));
berthing.RateQuayside = itemData.GetDecimalValue(nameof(SlmBerthing.RateQuayside));
berthing.RateOvertime = itemData.GetDecimalValue(nameof(SlmBerthing.RateOvertime));
berthing.SpecialInstr = itemData.GetValue(nameof(SlmBerthing.SpecialInstr));
// Common properties.
this.PopulateCommonPropertiesFrom(itemData, berthing);
berthing.AcceptChanges();
}
@@ -176,148 +183,113 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
//-------------------------------------------------------------------
// Berthing query filter.
public override List<string> GetBerthingQueryFilter (SlmBerthing.Params prm)
public override List<string> GetBerthingQueryFilter (SlmBerthing.Params prmBerthing)
{
throw new NotImplementedException();
}
public Dictionary<String, String> GetBerthingQueryFilter_Mobile (SlmBerthing.Params prm)
public Dictionary<String, String> GetBerthingQueryFilter_Mobile (SlmBerthing_Mobile.Params prmBerthing)
{
Dictionary<String, String> filter = new Dictionary<string, string>();
// Berthing Id.
if (prm.IncludedIds.Count > 0) filter.Add(nameof(prm.IncludedIds), prm.IncludedIds.Concat(","));
if (prm.ExcludedIds.Count > 0) filter.Add(nameof(prm.ExcludedIds), prm.ExcludedIds.Concat(","));
if (prmBerthing.IncludedIds.Count > 0) filter.Add(nameof(prmBerthing.IncludedIds), prmBerthing.IncludedIds.Concat(","));
if (prmBerthing.ExcludedIds.Count > 0) filter.Add(nameof(prmBerthing.ExcludedIds), prmBerthing.ExcludedIds.Concat(","));
// Vessel Id.
if (SysId.IsValid(prm.VesselId)) filter.Add(nameof(prm.VesselId), SysId.ToString(prm.VesselId));
if (SysId.IsValid(prmBerthing.VesselId)) filter.Add(nameof(prmBerthing.VesselId), SysId.ToString(prmBerthing.VesselId));
// Agent Id.
if (SysId.IsValid(prm.AgentId)) filter.Add(nameof(prm.AgentId), SysId.ToString(prm.AgentId));
if (SysId.IsValid(prmBerthing.AgentId)) filter.Add(nameof(prmBerthing.AgentId), SysId.ToString(prmBerthing.AgentId));
// Customer Id.
if (SysId.IsValid(prm.CustomerId)) filter.Add(nameof(prm.CustomerId), SysId.ToString(prm.CustomerId));
if (SysId.IsValid(prmBerthing.CustomerId)) filter.Add(nameof(prmBerthing.CustomerId), SysId.ToString(prmBerthing.CustomerId));
// Customer.
if (!StringUtil.IsEmpty(prm.CustomerPartial)) filter.Add(nameof(prm.CustomerPartial), prm.CustomerPartial);
if (!StringUtil.IsEmpty(prmBerthing.CustomerPartial)) filter.Add(nameof(prmBerthing.CustomerPartial), prmBerthing.CustomerPartial);
// Arrived.
if (DateUtil.IsValid(prm.ArrivedFrom)) filter.Add(nameof(prm.ArrivedFrom), DateUtil.FormatXmlDate(prm.ArrivedFrom));
if (DateUtil.IsValid(prm.ArrivedTo)) filter.Add(nameof(prm.ArrivedTo), DateUtil.FormatXmlDate(prm.ArrivedTo));
if (DateUtil.IsValid(prmBerthing.ArrivedFrom)) filter.Add(nameof(prmBerthing.ArrivedFrom), DateUtil.FormatXmlDate(prmBerthing.ArrivedFrom));
if (DateUtil.IsValid(prmBerthing.ArrivedTo)) filter.Add(nameof(prmBerthing.ArrivedTo), DateUtil.FormatXmlDate(prmBerthing.ArrivedTo));
// 'Include all current'.
if (prmBerthing.IncludeAllCurrent) filter.Add(nameof(prmBerthing.IncludeAllCurrent), prmBerthing.IncludeAllCurrent.ToString());
// Completed.
if (DateUtil.IsValid(prm.CompletedFrom)) filter.Add(nameof(prm.CompletedFrom), DateUtil.FormatXmlDate(prm.CompletedFrom));
if (DateUtil.IsValid(prm.CompletedTo)) filter.Add(nameof(prm.CompletedTo), DateUtil.FormatXmlDate(prm.CompletedTo));
if (DateUtil.IsValid(prmBerthing.CompletedFrom)) filter.Add(nameof(prmBerthing.CompletedFrom), DateUtil.FormatXmlDate(prmBerthing.CompletedFrom));
if (DateUtil.IsValid(prmBerthing.CompletedTo)) filter.Add(nameof(prmBerthing.CompletedTo), DateUtil.FormatXmlDate(prmBerthing.CompletedTo));
// Berth.
if (!StringUtil.IsEmpty(prm.Berth)) filter.Add(nameof(prm.Berth), prm.Berth);
if (!StringUtil.IsEmpty(prmBerthing.Berth)) filter.Add(nameof(prmBerthing.Berth), prmBerthing.Berth);
// Bollard.
if (!StringUtil.IsEmpty(prm.Bollard)) filter.Add(nameof(prm.Bollard), prm.Bollard);
if (!StringUtil.IsEmpty(prmBerthing.Bollard)) filter.Add(nameof(prmBerthing.Bollard), prmBerthing.Bollard);
// Vessel.
if (!StringUtil.IsEmpty(prm.VesselPartial)) filter.Add(nameof(prm.VesselPartial), prm.VesselPartial);
if (!StringUtil.IsEmpty(prmBerthing.VesselPartial)) filter.Add(nameof(prmBerthing.VesselPartial), prmBerthing.VesselPartial);
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add(nameof(prm.NotesPartial), prm.NotesPartial);
if (!StringUtil.IsEmpty(prmBerthing.NotesPartial)) filter.Add(nameof(prmBerthing.NotesPartial), prmBerthing.NotesPartial);
// Status.
filter.Add(nameof(prm.StatusCat), prm.StatusCat.ToString());
filter.Add(nameof(prmBerthing.StatusCat), prmBerthing.StatusCat.ToString());
// Associated data.
if (prmBerthing.IncludeVessel) filter.Add(nameof(prmBerthing.IncludeVessel), "true");
if (prmBerthing.IncludeCompanies) filter.Add(nameof(prmBerthing.IncludeCompanies), "true");
// Paging.
if (prm.ResultsPaging.Paged)
if (prmBerthing.ResultsPaging.Paged)
{
filter.Add(nameof(prm.ResultsPaging.PageNo), prm.ResultsPaging.PageNo.ToString());
filter.Add(nameof(prm.ResultsPaging.PageLength), prm.ResultsPaging.PageLength.ToString());
filter.Add(nameof(prmBerthing.ResultsPaging.PageNo), prmBerthing.ResultsPaging.PageNo.ToString());
filter.Add(nameof(prmBerthing.ResultsPaging.PageLength), prmBerthing.ResultsPaging.PageLength.ToString());
}
return filter;
}
// Berthing sort columns.
public List<String> GetBerthingSortColumns (SlmBerthing.Params prm)
public List<String> GetBerthingSortColumns (SlmBerthing.Params prmBerthing)
{
throw new NotImplementedException();
}
//-------------------------------------------------------------------
// Berthing count.
public override long GetBerthingCount (SlmBerthing.Params prm)
public override long GetBerthingCount (SlmBerthing.Params prmBerthing)
{
ClearErrorState();
throw new NotImplementedException();
}
public async Task<long> GetBerthingCount_Mobile (SlmBerthing_Mobile.Params prmBerthing, SacsTaskData taskData)
{
ClearErrorState();
SlmWebServiceClient.ItemCountResponseData responseData = await webServiceClient.RequestItemCount(GetBerthingRequestConfig(SlmWebServiceRequest.RequestType.Count, taskData.Debug), GetBerthingQueryFilter_Mobile(prmBerthing), taskData);
return responseData.ItemCount;
}
//-------------------------------------------------------------------
// Berthing list.
public override List<SlmBerthing> GetBerthingList (SlmBerthing.Params prm)
public override List<SlmBerthing> GetBerthingList (SlmBerthing.Params prmBerthing)
{
List<SlmCompany> companies = new List<SlmCompany>();
throw new NotImplementedException();
}
public async Task<List<SlmBerthing>> GetBerthingList_Mobile (SlmBerthing.Params prmBerthing, SacsTaskData taskData)
public async Task<List<SlmBerthing>> GetBerthingList_Mobile (SlmBerthing_Mobile.Params prmBerthing, SacsTaskData taskData)
{
ClearErrorState();
List<SlmBerthing> companies = new List<SlmBerthing>();
String fn = GetType().Name + ".GetBerthingList_Mobile";
// Berthing columns.
List<SlmBerthing.Column> columns = new List<SlmBerthing.Column>(EnumUtil.GetValues<SlmBerthing.Column>());
List<SlmWebServiceItemData> 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.Flags);
// 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;
List<SlmBerthing> berthings = new List<SlmBerthing>();
SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.RequestItemList(GetBerthingRequestConfig(SlmWebServiceRequest.RequestType.ItemList, taskData.Debug), GetBerthingQueryFilter_Mobile(prmBerthing), taskData);
foreach (SlmWebServiceItemData itemData in responseData.Items)
berthings.Add(CreateBerthing_Mobile(itemData));
return berthings;
}
//-------------------------------------------------------------------
// Berthing query execution.
public override DbResultSet ExecuteBerthingQuery (List<ColumnDfn> columns, SlmBerthing.Params prm)
public override DbResultSet ExecuteBerthingQuery (List<ColumnDfn> columns, SlmBerthing.Params prmBerthing)
{
ClearErrorState();
throw new NotImplementedException();
}
public async Task<List<SlmWebServiceItemData>> ExecuteBerthingQuery_Mobile (List<SlmBerthing.Column> berthingColumns, SlmBerthing.Params prmBerthing, SacsTaskData taskData)
public async Task<List<SlmWebServiceItemData>> ExecuteBerthingQuery_Mobile (List<SlmBerthing.Column> berthingColumns, SlmBerthing_Mobile.Params prmBerthing, SacsTaskData taskData)
{
ClearErrorState();
@@ -326,7 +298,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetBerthingRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetBerthingQueryFilter_Mobile(prmBerthing), columns, taskData);
return responseData.Items;
}
@@ -343,40 +315,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -396,7 +396,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetCruiseBerthingRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetCruiseBerthingQueryFilter_Mobile(prmCruiseBerthing), columns, taskData);
return responseData.Items;
}
@@ -413,40 +413,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -281,7 +281,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetDischargeHoldRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetDischargeHoldQueryFilter_Mobile(prmDischargeHold), columns, taskData);
return responseData.Items;
}
@@ -298,40 +298,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -301,7 +301,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetDischargeRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetDischargeQueryFilter_Mobile(prmDischarge), columns, taskData);
return responseData.Items;
}
@@ -318,40 +318,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -48,6 +48,30 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
ClearErrorState();
throw new NotImplementedException();
}
public async Task<SlmVessel> GetVessel_Mobile (SlmVessel_Mobile.Params prmVessel, SacsTaskData taskData)
{
ClearErrorState();
String fn = GetType().Name + ".GetVessel_Mobile";
// Request item data.
SlmWebServiceClient.ItemDataResponseData responseData = await webServiceClient.RequestItemData(GetVesselRequestConfig(SlmWebServiceRequest.RequestType.Item, taskData.Debug), GetVesselQueryFilter_Mobile(prmVessel), taskData);
if (responseData.DataElement == null) throw new NotSupportedException("No data element found in Vessel data response.");
if (responseData.ItemElement == null) throw new NotSupportedException("No item element found in Vessel data response.");
if (responseData.Item == null) throw new NotSupportedException("No item extracted from Vessel data response.");
return CreateVessel_Mobile(responseData.Item);
}
public SlmVessel_Mobile CreateVessel_Mobile (SlmWebServiceItemData itemData)
{
// Item construction properties.
SysId id = itemData.GetIdValue(nameof(SlmVessel.Id));
Slm.VesselCategory vesselCategory = EnumUtil.ParseEnum(itemData.GetValue(nameof(SlmVessel.VesselCategory)), Slm.VesselCategory.Unknown);
ushort flags = (ushort)itemData.GetIntValue(nameof(SlmVessel.Flags));
// Create item.
SlmVessel_Mobile vessel = new SlmVessel_Mobile(Site, id, vesselCategory, flags);
PopulateFrom(itemData, vessel);
return vessel;
}
//-------------------------------------------------------------------
// Validate Vessel.
@@ -95,51 +119,39 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo (XElement vesselElement, SlmVessel vessel, DbUpdateInfo dbUpdateInfo)
private void PopulateTo (XElement vesselElement, SlmVessel vessel, List<String> excludedProperties, 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);
vesselElement.AppendElement(nameof(SlmVessel.Id), SysId.ToString(vessel.Id));
vesselElement.AppendElement(nameof(SlmVessel.VesselCategory), vessel.VesselCategory.ToString());
vesselElement.AppendElement(nameof(SlmVessel.Name), vessel.Name);
vesselElement.AppendElement(nameof(SlmVessel.VesselType), vessel.VesselType);
vesselElement.AppendElement(nameof(SlmVessel.Owner), vessel.Owner);
vesselElement.AppendElement(nameof(SlmVessel.Abbreviation), vessel.Abbreviation);
vesselElement.AppendElement(nameof(SlmVessel.Length), vessel.Length.ToString("N3"));
vesselElement.AppendElement(nameof(SlmVessel.Breadth), vessel.Breadth.ToString("N3"));
vesselElement.AppendElement(nameof(SlmVessel.Draught), vessel.Draught.ToString("N3"));
vesselElement.AppendElement(nameof(SlmVessel.Depth), vessel.Depth.ToString("N3"));
vesselElement.AppendElement(nameof(SlmVessel.Displacement), vessel.Displacement.ToString("N3"));
vesselElement.AppendElement(nameof(SlmVessel.CompanyIdCruiseLine), SysId.ToString(vessel.CompanyIdCruiseLine));
// Common properties.
this.PopulateCommonPropertiesTo(vesselElement, vessel, excludedProperties, dbUpdateInfo);
}
private void PopulateFrom (XElement vesselElement, SlmVessel vessel)
private void PopulateFrom (SlmWebServiceItemData itemData, 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.Id = itemData.GetIdValue(nameof(SlmVessel.Id));
//vessel.VesselCategory = EnumUtil.ParseEnum(itemData.GetValue(nameof(SlmVessel.VesselCategory)), Slm.VesselCategory.Unknown);
vessel.Name = itemData.GetValue(nameof(SlmVessel.Name));
vessel.VesselType = itemData.GetValue(nameof(SlmVessel.VesselType));
vessel.Owner = itemData.GetValue(nameof(SlmVessel.Owner));
vessel.Abbreviation = itemData.GetValue(nameof(SlmVessel.Abbreviation));
vessel.Length = itemData.GetDecimalValue(nameof(SlmVessel.Length));
vessel.Breadth = itemData.GetDecimalValue(nameof(SlmVessel.Breadth));
vessel.Draught= itemData.GetDecimalValue(nameof(SlmVessel.Draught));
vessel.Depth = itemData.GetDecimalValue(nameof(SlmVessel.Depth));
vessel.Displacement = itemData.GetDecimalValue(nameof(SlmVessel.Displacement));
vessel.CompanyIdCruiseLine = itemData.GetIdValue(nameof(SlmVessel.CompanyIdCruiseLine));
// Common properties.
this.PopulateCommonPropertiesFrom(itemData, vessel);
vessel.AcceptChanges();
}
@@ -158,137 +170,85 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
//-------------------------------------------------------------------
// Vessel query filter.
public override List<string> GetVesselQueryFilter (SlmVessel.Params prm)
public override List<string> GetVesselQueryFilter (SlmVessel.Params prmVessel)
{
throw new NotImplementedException();
}
public Dictionary<String, String> GetVesselQueryFilter_Mobile (SlmVessel.Params prm)
public Dictionary<String, String> GetVesselQueryFilter_Mobile (SlmVessel.Params prmVessel)
{
Dictionary<String, String> filter = new Dictionary<string, string>();
// Vessel Id.
if (prm.IncludedIds.Count > 0) filter.Add("IncludedIds", prm.IncludedIds.Concat(","));
if (prm.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prm.ExcludedIds.Concat(","));
if (prmVessel.IncludedIds.Count > 0) filter.Add("IncludedIds", prmVessel.IncludedIds.Concat(","));
if (prmVessel.ExcludedIds.Count > 0) filter.Add("ExcludedIds", prmVessel.ExcludedIds.Concat(","));
// Vessel Category.
if ((int)prm.VesselCategory > 0) filter.Add("VesselCategory", ((int)prm.VesselCategory).ToString());
if ((int)prmVessel.VesselCategory > 0) filter.Add("VesselCategory", ((int)prmVessel.VesselCategory).ToString());
// Company Id Cruise Line
if (SysId.IsValid(prm.CompanyIdCruiseLine)) filter.Add("CompanyIdCruiseLine", SysId.ToString(prm.CompanyIdCruiseLine));
if (SysId.IsValid(prmVessel.CompanyIdCruiseLine)) filter.Add("CompanyIdCruiseLine", SysId.ToString(prmVessel.CompanyIdCruiseLine));
// Name.
if (!StringUtil.IsEmpty(prm.Name)) filter.Add("Name", prm.Name);
if (!StringUtil.IsEmpty(prm.NamePartial)) filter.Add("NamePartial", prm.NamePartial);
if (!StringUtil.IsEmpty(prmVessel.Name)) filter.Add("Name", prmVessel.Name);
if (!StringUtil.IsEmpty(prmVessel.NamePartial)) filter.Add("NamePartial", prmVessel.NamePartial);
// Type.
if (!StringUtil.IsEmpty(prm.TypePartial)) filter.Add("TypePartial", prm.TypePartial);
if (!StringUtil.IsEmpty(prmVessel.TypePartial)) filter.Add("TypePartial", prmVessel.TypePartial);
// Notes.
if (!StringUtil.IsEmpty(prm.NotesPartial)) filter.Add("NotesPartial", prm.NotesPartial);
if (!StringUtil.IsEmpty(prmVessel.NotesPartial)) filter.Add("NotesPartial", prmVessel.NotesPartial);
// Status.
filter.Add("StatusCat", prm.StatusCat.ToString());
filter.Add("StatusCat", prmVessel.StatusCat.ToString());
// Paging.
if (prm.ResultsPaging.Paged)
if (prmVessel.ResultsPaging.Paged)
{
filter.Add("PageNo", prm.ResultsPaging.PageNo.ToString());
filter.Add("PageLength", prm.ResultsPaging.PageLength.ToString());
filter.Add("PageNo", prmVessel.ResultsPaging.PageNo.ToString());
filter.Add("PageLength", prmVessel.ResultsPaging.PageLength.ToString());
}
return filter;
}
// Vessel sort columns.
public List<String> GetVesselSortColumns (SlmVessel.Params prm)
public List<String> GetVesselSortColumns (SlmVessel.Params prmVessel)
{
throw new NotImplementedException();
}
//-------------------------------------------------------------------
// Vessel count.
public override long GetVesselCount (SlmVessel.Params prm)
public override long GetVesselCount (SlmVessel.Params prmVessel)
{
throw new NotImplementedException();
}
public async Task<long> GetVesselCount_Mobile (SlmVessel.Params prmVessel, SacsTaskData taskData)
{
ClearErrorState();
throw new NotImplementedException();
SlmWebServiceClient.ItemCountResponseData responseData = await webServiceClient.RequestItemCount(GetVesselRequestConfig(SlmWebServiceRequest.RequestType.Count, taskData.Debug), GetVesselQueryFilter_Mobile(prmVessel), taskData);
return responseData.ItemCount;
}
//-------------------------------------------------------------------
// Vessel list.
public override List<SlmVessel> GetVesselList (SlmVessel.Params prm)
public override List<SlmVessel> GetVesselList (SlmVessel.Params prmVessel)
{
List<SlmCompany> companies = new List<SlmCompany>();
throw new NotImplementedException();
}
public async Task<List<SlmVessel>> GetVesselList_Mobile (SlmVessel.Params prmVessel, SacsTaskData taskData)
{
ClearErrorState();
List<SlmVessel> companies = new List<SlmVessel>();
String fn = GetType().Name + ".GetVesselList_Mobile";
// Vessel columns.
List<SlmVessel.Column> columns = new List<SlmVessel.Column>()
{
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<SlmWebServiceItemData> 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.Flags);
// 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;
List<SlmVessel> vessels = new List<SlmVessel>();
SlmWebServiceClient.ItemListResponseData responseData = await webServiceClient.RequestItemList(GetVesselRequestConfig(SlmWebServiceRequest.RequestType.ItemList, taskData.Debug), GetVesselQueryFilter_Mobile(prmVessel), taskData);
foreach (SlmWebServiceItemData itemData in responseData.Items)
vessels.Add(CreateVessel_Mobile(itemData));
return vessels;
}
//-------------------------------------------------------------------
// Vessel query execution.
public override DbResultSet ExecuteVesselQuery (List<ColumnDfn> columns, SlmVessel.Params prm)
public override DbResultSet ExecuteVesselQuery (List<ColumnDfn> columns, SlmVessel.Params prmVessel)
{
ClearErrorState();
throw new NotImplementedException();
}
public async Task<List<SlmWebServiceItemData>> ExecuteVesselQuery_Mobile (List<SlmVessel.Column> vesselColumns, SlmVessel.Params prmVessel, SacsTaskData taskData)
@@ -300,7 +260,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetVesselRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetVesselQueryFilter_Mobile(prmVessel), columns, taskData);
return responseData.Items;
}
@@ -317,46 +277,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -288,7 +288,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetChecklistItemRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetChecklistItemQueryFilter_Mobile(prmChecklistItem), columns, taskData);
return responseData.Items;
}
@@ -305,40 +305,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -260,7 +260,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetChecklistRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetChecklistQueryFilter_Mobile(prmChecklist), columns, taskData);
return responseData.Items;
}
@@ -277,40 +277,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -294,7 +294,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetItemChecklistItemRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetItemChecklistItemQueryFilter_Mobile(prmItemChecklistItem), columns, taskData);
return responseData.Items;
}
@@ -311,40 +311,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -278,7 +278,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetItemChecklistRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetItemChecklistQueryFilter_Mobile(prmItemChecklist), columns, taskData);
return responseData.Items;
}
@@ -295,40 +295,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -301,7 +301,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetCommodityRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetCommodityQueryFilter_Mobile(prmCommodity), columns, taskData);
return responseData.Items;
}
@@ -318,39 +318,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -277,7 +277,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetCommodityLocationRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetCommodityLocationQueryFilter_Mobile(prmCommodityLocation), columns, taskData);
return responseData.Items;
}
@@ -294,39 +294,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -286,7 +286,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStockLevelRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStockLevelQueryFilter_Mobile(prmStockLevel), columns, taskData);
return responseData.Items;
}
@@ -303,39 +303,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -267,7 +267,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStockLoadingRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStockLoadingQueryFilter_Mobile(prmStockLoading), columns, taskData);
return responseData.Items;
}
@@ -284,39 +284,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -274,7 +274,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStockLocationRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStockLocationQueryFilter_Mobile(prmStockLocation), columns, taskData);
return responseData.Items;
}
@@ -291,39 +291,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -304,7 +304,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStockMovementRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStockMovementQueryFilter_Mobile(prmStockMovement), columns, taskData);
return responseData.Items;
}
@@ -321,39 +321,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -261,7 +261,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetDataItemValueRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetDataItemValueQueryFilter_Mobile(prmDataItemValue), columns, taskData);
return responseData.Items;
}
@@ -278,59 +278,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -0,0 +1,54 @@
using Sarand.Core.App;
using Sarand.Core.Base;
using Sarand.Core.Bus;
using Sarand.Core.Dbas.Base;
using Sarand.Core.Xml;
using Sarand.LogisticsMgr.Core.Mgr;
using Sarand.LogisticsMgr.Core.WebService;
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Linq;
namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
{
//=======================================================================
public static class SlmMobileMgrUtil
{
//-------------------------------------------------------------------
/// <summary>
/// Populate common properties to XML element.
/// </summary>
public static void PopulateCommonPropertiesTo (this SlmItemMgr mgr, XElement itemElement, SacsHierarchyItem item, List<String> excludedProperties, DbUpdateInfo dbUpdateInfo)
{
if (!excludedProperties.ContainsCI(nameof(item.Notes)))
itemElement.AppendElement(nameof(item.Notes), item.Notes);
if (!excludedProperties.ContainsCI(nameof(item.Status)))
itemElement.AppendElement(nameof(item.Status), SacsSystem.GetStatusCode(item.Status));
if (!excludedProperties.ContainsCI(nameof(item.Flags)))
itemElement.AppendElement(nameof(item.Flags), item.Flags.ToString());
if (!SysId.IsValid(item.Id) && !excludedProperties.ContainsCI("CreateStamp"))
{
itemElement.AppendElement("CreateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
itemElement.AppendElement("CreateBy", SysId.ToString(dbUpdateInfo.UserId));
itemElement.AppendElement("CreateHost", dbUpdateInfo.Host);
}
if (!excludedProperties.ContainsCI("UpdateStamp"))
{
itemElement.AppendElement("UpdateOn", DateUtil.FormatXmlDateTime(DateTime.Now));
itemElement.AppendElement("UpdateBy", SysId.ToString(dbUpdateInfo.UserId));
itemElement.AppendElement("UpdateHost", dbUpdateInfo.Host);
}
}
public static void PopulateCommonPropertiesFrom (this SlmItemMgr mgr, SlmWebServiceItemData itemData, SacsHierarchyItem item)
{
item.Notes = itemData.GetValue(nameof(item.Notes));
item.Status = SacsSystem.GetStatusForCode(itemData.GetValue(nameof(item.Status)));
item.SetCreateStamp(itemData.GetDateTimeValue("CreateOn"), itemData.GetIdValue("CreateBy"), itemData.GetValue("CreateHost"));
item.SetUpdateStamp(itemData.GetDateTimeValue("UpdateOn"), itemData.GetIdValue("UpdateBy"), itemData.GetValue("UpdateHost"));
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -262,7 +262,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStaffAllocationRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStaffAllocationQueryFilter_Mobile(prmStaffAllocation), columns, taskData);
return responseData.Items;
}
@@ -279,40 +279,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -280,7 +280,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStaffJobRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStaffJobQueryFilter_Mobile(prmStaffJob), columns, taskData);
return responseData.Items;
}
@@ -297,39 +297,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -260,7 +260,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStaffMemberAvailabilityRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStaffMemberAvailabilityQueryFilter_Mobile(prmStaffMemberAvailability), columns, taskData);
return responseData.Items;
}
@@ -277,40 +277,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -259,7 +259,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStaffMemberSkillRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStaffMemberSkillQueryFilter_Mobile(prmStaffMemberSkill), columns, taskData);
return responseData.Items;
}
@@ -276,40 +276,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -314,7 +314,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStaffMemberRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStaffMemberQueryFilter_Mobile(prmStaffMember), columns, taskData);
return responseData.Items;
}
@@ -331,39 +331,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -259,7 +259,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStaffTaskSkillRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStaffTaskSkillQueryFilter_Mobile(prmStaffTaskSkill), columns, taskData);
return responseData.Items;
}
@@ -276,40 +276,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -285,7 +285,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetStaffTaskRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetStaffTaskQueryFilter_Mobile(prmStaffTask), columns, taskData);
return responseData.Items;
}
@@ -302,39 +302,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -315,7 +315,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetRequirementRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetRequirementQueryFilter_Mobile(prmRequirement), columns, taskData);
return responseData.Items;
}
@@ -332,39 +332,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================
@@ -288,7 +288,7 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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);
SlmWebServiceClient.QueryListResponseData responseData = await webServiceClient.RequestQueryList(GetTransactionRequestConfig(SlmWebServiceRequest.RequestType.QueryList, taskData.Debug), GetTransactionQueryFilter_Mobile(prmTransaction), columns, taskData);
return responseData.Items;
}
@@ -305,39 +305,6 @@ namespace Sarand.LogisticsMgr.Mobile.Core.Mgr
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;
}
//-------------------------------------------------------------------
}
//=======================================================================