using System; using System.Linq; using InABox.Core; using InABox.Mobile; using Xamarin.Forms.Xaml; using ZXing; namespace PRS.Mobile { [XamlCompilation(XamlCompilationOptions.Compile)] public partial class RequisitionEditItemsView : RequisitionEditView { public RequisitionEditItemsView() { InitializeComponent(); } public override void Refresh() { } private void Complete_Clicked(object sender, MobileButtonClickEventArgs args) { DoChanged(nameof(RequisitionShell.Filled)); } private void ScanView_OnScanResult(ZXing.Result result) { } public void AddItem() { if (ViewModel.Mode == RequisitionEditMode.PickStock) AddScannerItems(); else AddSiteItems(); } private void RequisitionItem_Clicked(object sender, EventArgs e) { if ((sender as MobileCard)?.BindingContext is RequisitionItemShell item) { if (ViewModel.Mode == RequisitionEditMode.PickStock) EditScannerItem(item); else EditSiteItem(item); } } private void EditScannerItem(RequisitionItemShell item) { var editor = new RequisitionItemScanner(item); editor.OnSave += (sender, args) => { SaveScannerItem(item, args); item.Save("Updated on Mobile Device"); }; Navigation.PushAsync(editor); } private void AddScannerItems() { var editor = new RequisitionItemScanner(null); editor.OnSave += (sender, args) => { var item = ViewModel.Items.AddItem(); item.RequisitionID = ViewModel.Item.ID; item.RequisitionJobID = ViewModel.Item.JobID; SaveScannerItem(item, args); item.Save("Created on Mobile Device"); }; Navigation.PushAsync(editor); } private static void SaveScannerItem(RequisitionItemShell item, RequisitionItemScannerSaveArgs args) { item.ProductID = args.Holding.ProductID; item.ProductCode = args.Holding.ProductCode; item.ProductName = args.Holding.ProductName; item.StyleID = args.Holding.StyleID; item.StyleCode = args.Holding.StyleCode; item.StyleDescription = args.Holding.StyleDescription; item.DimensionsUnitID = args.Holding.DimensionsUnitID; item.DimensionsHeight = args.Holding.DimensionsHeight; item.DimensionsLength = args.Holding.DimensionsLength; item.DimensionsWidth = args.Holding.DimensionsWidth; item.DimensionsWeight = args.Holding.DimensionsWeight; item.DimensionsQuantity = args.Holding.DimensionsQuantity; item.DimensionsValue = args.Holding.DimensionsValue; item.DimensionsUnitSize = args.Holding.DimensionsUnitSize; item.TargetJRI = args.JobRequisitionItemID; item.LocationID = args.Holding.LocationID; item.ActualQuantity = args.Quantity; } private void AddSiteItems() { var editor = new RequisitionItemEditor(null); editor.Saving += (sender, args) => { var item = ViewModel.Items.AddItem(); item.RequisitionID = ViewModel.Item.ID; item.RequisitionJobID = ViewModel.Item.JobID; SaveSiteItem(item,args); }; Navigation.PushAsync(editor); } private void EditSiteItem(RequisitionItemShell item) { var editor = new RequisitionItemEditor(item); editor.Saving += (sender, args) => { SaveSiteItem(item,args); }; Navigation.PushAsync(editor); } private void SaveSiteItem(RequisitionItemShell item, RequisitionItemEditorSaveArgs args) { if (args.Product != null) { item.ProductID = args.Product.ID; item.ProductCode = args.Product.Code; item.ProductName = args.Product.Name; item.StyleID = args.Product.DefaultStyleID; item.StyleCode = args.Product.DefaultStyleCode; item.StyleDescription = args.Product.DefaultStyleDescription; item.DimensionsUnitID = args.Product.DimensionsUnitID; item.DimensionsHeight = args.Product.DimensionsHeight; item.DimensionsLength = args.Product.DimensionsLength; item.DimensionsWidth = args.Product.DimensionsWidth; item.DimensionsWeight = args.Product.DimensionsWeight; item.DimensionsQuantity = args.Product.DimensionsQuantity; item.DimensionsValue = args.Product.DimensionsValue; item.DimensionsUnitSize = args.Product.DimensionsUnitSize; if (args.Product.ImageID != Guid.Empty) { item.ImageID = args.Product.ImageID; if (item.ImageID != Guid.Empty) ViewModel.Items.Images[item.ImageID] = args.Image; } else item.ImageID = SaveRequisitionImage(args); } else { item.ProductID = Guid.Empty; item.ProductCode = ""; item.ProductName = ""; item.StyleID = Guid.Empty; item.StyleCode = ""; item.StyleDescription = ""; item.DimensionsUnitID = Guid.Empty; item.DimensionsHeight = 0.0F; item.DimensionsLength = 0.0F; item.DimensionsWidth = 0.0F; item.DimensionsWeight = 0.0F; item.DimensionsQuantity = 0.0F; item.DimensionsValue = 0.0F; item.DimensionsUnitSize = ""; item.ImageID = SaveRequisitionImage(args); } item.Description = args.Description ?? string.Empty; item.Quantity = args.Quantity; item.Save("Created on Mobile Device"); ViewModel.Items.Refresh(false); } private Guid SaveRequisitionImage(RequisitionItemEditorSaveArgs args) { if ((args.ImageID == Guid.Empty) && (args.Image?.Any() == true)) { var docmodel = new DocumentModel(App.Data, () => new Filter().None()); docmodel.Refresh(true); var doc = docmodel.AddItem(); doc.Data = args.Image; doc.FileName = $"Requisition Item{DateTime.Now:yyyy-MM-dd-hh-mm-ss.zzz}.jpg"; doc.CRC = CoreUtils.CalculateCRC(args.Image); doc.TimeStamp = DateTime.Now; doc.Save("Created on Mobile Device"); ViewModel.Items.Images[doc.ID] = args.Image; return doc.ID; } return args.ImageID; } } }