| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using InABox.Core;
- using Comal.Classes;
- using Syncfusion.Data;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- using XF.Material.Forms.UI.Dialogs;
- namespace PRS.Mobile
- {
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class SiteITPForms
- {
-
- private JobITPFormModel _formmodel;
- private JobITPModel _itpmodel;
- private Guid _itpid;
- private JobITPShell _itp => _itpmodel?.FirstOrDefault(x => x.ID == _itpid);
-
- public SiteITPForms(JobITPModel itps, JobITPFormModel forms, Guid itp)
- {
- _itpmodel = itps;
- _formmodel = forms;
- _itpid = itp;
- InitializeComponent();
- ProgressVisible = true;
- _forms.DataModel = _formmodel;
- _forms.AppliesTo = "JobITP";
- _forms.Property = model => _formmodel.Items.OfType<IDigitalFormInstanceShell>().ToArray();
-
- RefreshData(false, true);
- }
-
- protected void RefreshData(bool force, bool async)
- {
- Task[] tasks = new Task[]
- {
- Task.Run(() => _itpmodel.Refresh(force)),
- Task.Run(() => _formmodel.Refresh(force))
- };
- if (async)
- Task.WhenAll(tasks).ContinueWith((_) => Device.BeginInvokeOnMainThread(RefreshScreen));
- else
- {
- Task.WaitAll(tasks);
- RefreshScreen();
- }
- }
- private void RefreshScreen()
- {
- Title = _itpmodel.FirstOrDefault((x=>x.ID == _itpid))?.Description ?? "No ITP Selected";
- _forms.Refresh();
- ProgressVisible = false;
- }
-
- private bool _forms_OnSearch(object sender, ExistingFormSearchEventArgs args)
- {
- return args.Shell.ParentID == _itp.ID;
- }
-
- private void Add_Clicked(object sender, EventArgs e)
- {
- var shell = _formmodel.AddItem();
- shell.ParentID = _itp.ID;
- shell.FormID = _itp.FormID;
- shell.FormCode = _itp.FormCode;
- shell.FormDescription = _itp.FormName;
- shell.Save("Created on Mobile Device");
-
- _formmodel.Search(null);
- _forms.RefreshData(false,false);
-
- }
-
- private void _forms_OnFormTapped(object sender, ExistingFormTappedEventArgs args)
- {
- if (args.Shell is JobITPFormShell shell)
- {
- // Pretty sure this can be replaced with _forms.EditFormAsync<>(shell, _itp.Entity)
- // Only difference is that calls RefreshData(true, true)
-
- var model = new DigitalFormHostModel<JobITP, JobITPLink, JobITPForm>();
- model.LoadItems(_itp.Entity, shell.FormID, shell.ID, null);
- var host = new DigitalFormHost(model);
- host.OnClosing += (o, args) =>
- {
- if (args.Changed)
- {
- //instance.Completed = !model.DigitalFormDataModel.Instance.FormCompleted.IsEmpty();
- }
- };
- Navigation.PushAsync(host);
- }
- }
- private void _forms_OnRefreshRequested(object sender, ExistingFormRefreshEventArgs args)
- {
- RefreshData(true,false);
- args.Cancel = true;
- }
- }
- }
|