123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- using System;
- using System.Threading.Tasks;
- using InABox.Configuration;
- using InABox.Core;
- using InABox.Mobile;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- namespace PRS.Mobile
- {
-
- public class PurchaseOrderModuleSettings : ILocalConfigurationSettings
- {
- public String FilterName { get; set; }
- }
-
- // public class PurchaseOrderFilterConfigurationEventArgs : EventArgs
- // {
- // public CoreFilterDefinitions Filters { get; private set; }
- //
- // public String SelectedFilter { get; private set; }
- //
- // public PurchaseOrderFilterConfigurationEventArgs(CoreFilterDefinitions filters, String selectedfilter)
- // {
- // Filters = filters;
- // SelectedFilter = selectedfilter;
- // }
- // }
-
- // public delegate void PurchaseOrderFilterConfigurationEvent(object sender,
- // PurchaseOrderFilterConfigurationEventArgs args);
-
- public class PurchaseOrderSelectedEventArgs : EventArgs
- {
- public PurchaseOrderShell Order { get; private set; }
- public PurchaseOrderSelectedEventArgs(PurchaseOrderShell order)
- {
- Order = order;
- }
- }
-
- public delegate void PurchaseOrderSelectedEvent(object sender, PurchaseOrderSelectedEventArgs args);
- public class PurchaseOrderStatusConverter : AbstractConverter<PurchaseOrderShell, String>
- {
- protected override string? Convert(PurchaseOrderShell? value, object? parameter = null)
- {
- return value == null
- ? string.Empty
- : !value.CancelledDate.IsEmpty()
- ? "Cancelled"
- : !value.ClosedDate.IsEmpty()
- ? "Closed"
- : !value.IssuedDate.IsEmpty()
- ? !value.Unreceived.IsEffectivelyEqual(0.0)
- ? !value.Received.IsEffectivelyEqual(0.0)
- ? "Backorder"
- : "Issued"
- : "Received"
- : "Draft";
- }
- }
-
-
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class PurchaseOrderListView
- {
-
- private PurchaseOrderModuleSettings _settings;
-
- //public event PurchaseOrderFilterConfigurationEvent ConfigureFilters;
- public event PurchaseOrderSelectedEvent PurchaseOrderSelected;
- private CoreFilterDefinitions _filters;
- public CoreFilterDefinitions Filters => _filters;
- public String CurrentFilter => _settings?.FilterName ?? string.Empty;
-
- public PurchaseOrderListView()
- {
-
- var _setup = new []
- {
- Task.Run(() => { _settings = new LocalConfiguration<PurchaseOrderModuleSettings>().Load(); }),
- Task.Run(() => { _filters = App.Data.PurchaseOrders.AvailableFilters(); }),
- };
- InitializeComponent();
-
- Task.WaitAll(_setup);
- //ConfigureFilters?.Invoke(this,new PurchaseOrderFilterConfigurationEventArgs(_filters, _settings.FilterName));
-
- RefreshData(false,true);
- }
- public void SelectFilter(string filter)
- {
- _settings.FilterName = filter;
- new LocalConfiguration<PurchaseOrderModuleSettings>().Save(_settings);
- RefreshData(true, false);
- }
- private void RefreshData(bool force, bool async)
- {
- App.Data.PurchaseOrders.SelectFilter(_settings.FilterName);
- if (async)
- App.Data.PurchaseOrders.Refresh(force, () => Dispatcher.BeginInvokeOnMainThread(Refresh));
- else
- {
- App.Data.PurchaseOrders.Refresh(force);
- Refresh();
- }
- }
- private void Refresh()
- {
- App.Data.PurchaseOrders.Search(FilterShell);
- _list.ItemsSource ??= App.Data.PurchaseOrders.Items;
- }
- private String _currentFilter;
- private bool FilterShell(PurchaseOrderShell shell)
- {
- try
- {
- return String.IsNullOrWhiteSpace(_currentFilter)
- || (shell.SupplierName?.ToUpper().Contains(_currentFilter) == true)
- || (shell.Notes?.ToUpper().Contains(_currentFilter) == true)
- || (shell.PONumber?.ToUpper().Contains(_currentFilter) == true);
- }
- catch (Exception)
- {
- return true;
- }
- }
-
- private void _search_OnTextChanged(object sender, MobileSearchBarTextChangedArgs args)
- {
- _currentFilter = args.Text.ToUpper();
- Refresh();
- }
- private void _list_ItemTapped(object sender, EventArgs e)
- {
- if ((sender as Frame)?.BindingContext is PurchaseOrderShell shell)
- PurchaseOrderSelected?.Invoke(this,new PurchaseOrderSelectedEventArgs(shell));
- }
- private void _list_OnRefreshRequested(object sender, MobileListRefreshEventArgs args)
- {
- RefreshData(true,false);
- }
- }
- }
|