| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- using System;
- using System.Linq;
- using System.Threading.Tasks;
- using Comal.Classes;
- using InABox.Configuration;
- using InABox.Core;
- using InABox.Mobile;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- namespace PRS.Mobile
- {
-
- public class RequisitionListSettings : ILocalConfigurationSettings
- {
- public String FilterName { get; set; }
- }
-
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class RequisitionList : MobilePage
- {
- private RequisitionListSettings _settings;
- private CoreFilterDefinitions _filters;
- private RequisitionModel _model;
- private JobShell? _job;
- private RequisitionEditMode _mode;
- public RequisitionList(JobShell? job, RequisitionEditMode mode)
- {
- _job = job;
- _mode = mode;
- _model = new RequisitionModel(App.Data,
- () => _job != null ? new Filter<Requisition>(x=>x.JobLink.ID).IsEqualTo(_job.ID) : null);
- var _setup = new Task[]
- {
- Task.Run(() => { _settings = new LocalConfiguration<RequisitionListSettings>(_mode.ToString()).Load(); }),
- Task.Run(() => { _filters = _model.AvailableFilters(); }),
- };
-
- InitializeComponent();
-
- Task.WaitAll(_setup);
-
- _filter.Items.Clear();
- foreach (var group in _model.AvailableFilters())
- {
- var item = new MobileMenuItem() { Text = group.Name };
- item.Clicked += (sender, args) =>
- {
- var text = (sender as MobileMenuItem)?.Text ?? string.Empty;
- _settings.FilterName = text;
- new LocalConfiguration<RequisitionListSettings>(_mode.ToString()).Save(_settings);
- RefreshData(true, false);
- };
- _filter.Items.Add(item);
- }
- _filter.IsVisible = _filter.Items.Any();
- Title = _job?.DisplayName ?? "Site Requis";
-
- }
- protected override void OnAppearing()
- {
- base.OnAppearing();
- RefreshData(true,true);
- }
- private void RefreshData(bool force, bool async)
- {
- _model.SelectFilter(_settings.FilterName);
- var modulename = _mode == RequisitionEditMode.EditRequest
- ? "Site Requis"
- : "Picking Lists";
- Title = String.IsNullOrWhiteSpace(_settings.FilterName)
- ? modulename
- : $"{modulename} - {_settings.FilterName}";
-
- if (async)
- _model.Refresh(force, () => Device.BeginInvokeOnMainThread(RefreshList));
- else
- {
- _model.Refresh(force);
- RefreshList();
- }
- }
- private void RefreshList()
- {
- _model.Search(FilterShell);
- _requisitions.ItemsSource ??= _model.Items;
- }
-
- private bool FilterShell(RequisitionShell shell)
- {
- bool bOK = (String.IsNullOrWhiteSpace(_currentfilter)
- || shell.Number.ToString().ToUpper().Contains(_currentfilter)
- || shell.Title.ToUpper().Contains(_currentfilter)
- || String.Join("\n",shell.Notes).ToUpper().Contains(_currentfilter)
- );
- return bOK;
- }
- private String _currentfilter = "";
-
- private void _search_OnTextChanged(object sender, MobileSearchBarTextChangedArgs args)
- {
- _currentfilter = args.Text?.ToUpper() ?? string.Empty;
- RefreshList();
- }
-
- private void _requisitions_OnRefresh(object sender, MobileListRefreshEventArgs args)
- {
- RefreshData(true,false);
- }
- private async void _requisitions_Selected(object sender, EventArgs e)
- {
- var requi = (sender as MobileCard)?.BindingContext as RequisitionShell;
- if (requi == null)
- return;
- var page = new RequisitionEdit()
- {
- Item = requi,
- Mode = this._mode
- };
- Navigation.PushAsync(page);
- }
-
- private async void AddRequisition_Clicked(object sender, MobileMenuButtonClickedEventArgs args)
- {
- var requi = _model.AddItem();
- requi.RequestedByID = App.Data.Me.ID;
- requi.RequestedByName = App.Data.Me.Name;
- requi.Due = DateTime.Today;
- requi.JobID = _job?.ID ?? Guid.Empty;
- requi.JobName = _job?.Name ?? string.Empty;
- requi.JobNumber = _job?.JobNumber ?? string.Empty;
- var page = new RequisitionEdit()
- {
- Item = requi,
- Mode = this._mode
- };
- Navigation.PushAsync(page);
- }
- }
- }
|