KanbanForms.xaml.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Comal.Classes;
  7. using InABox.Core;
  8. using InABox.Mobile.Shared;
  9. using Xamarin.Forms;
  10. using Xamarin.Forms.Xaml;
  11. using XF.Material.Forms.UI.Dialogs;
  12. namespace PRS.Mobile
  13. {
  14. [XamlCompilation(XamlCompilationOptions.Compile)]
  15. public partial class KanbanForms
  16. {
  17. public KanbanForms()
  18. {
  19. InitializeComponent();
  20. _forms.DataModel = App.Data.KanbanForms;
  21. _forms.AppliesTo = "Kanban";
  22. _forms.Property = model => App.Data.KanbanForms.Forms;
  23. _forms.RefreshData(false,true);
  24. }
  25. private void AddForm_Clicked(object sender, EventArgs e)
  26. {
  27. var selector = new NewForms() { AppliesTo = _forms.AppliesTo };
  28. selector.ItemSelected += CreateNewForm;
  29. Navigation.PushAsync(selector);
  30. }
  31. private async void CreateNewForm(object sender, NewFormSelectedArgs args)
  32. {
  33. KanbanShell kanban;
  34. KanbanFormShell form;
  35. using (await (MaterialDialog.Instance.LoadingDialogAsync("Creating Form")))
  36. {
  37. kanban = App.Data.Kanbans.AddItem();
  38. kanban.EmployeeID = App.Data.Me.ID;
  39. kanban.ManagerID = App.Data.Me.ID;
  40. kanban.Title = args.Form.Description;
  41. //kanban.Save("Created on Mobile Device");
  42. form = App.Data.KanbanForms.AddItem();
  43. form.FormID = args.Form.ID;
  44. form.FormCode = args.Form.Code;
  45. form.FormDescription = args.Form.Description;
  46. form.ParentID = kanban.ID;
  47. //form.Save("Created on Mobile Device");
  48. }
  49. Dispatcher.BeginInvokeOnMainThread(() =>
  50. {
  51. var model = new DigitalFormHostModel<Kanban, KanbanLink, KanbanForm>();
  52. model.LoadItems(kanban.Entity, form.FormID, form.Entity, null);
  53. var host = new DigitalFormHost(model);
  54. host.OnClosing += (_, _) => _forms.RefreshData(true, false);
  55. Navigation.PushAsync(host);
  56. //_forms.RefreshData(false,false);
  57. //_forms.EditForm<Kanban,KanbanLink,KanbanForm>(form,kanban.Entity);
  58. });
  59. }
  60. private void _forms_OnFormTapped(object sender, ExistingFormTappedEventArgs args)
  61. {
  62. Kanban entity = null;
  63. ProgressVisible = true;
  64. Task.Run(() =>
  65. {
  66. entity = App.Data.Kanbans.FirstOrDefault(x => x.ID == args.Shell.ParentID)?.Entity;
  67. if (entity == null)
  68. {
  69. var model = new KanbanModel(App.Data,
  70. () => new Filter<Kanban>(x => x.ID).IsEqualTo(args.Shell.ParentID));
  71. model.Refresh(true);
  72. entity = model.FirstOrDefault().Entity;
  73. }
  74. }).BeginInvokeOnMainThread((_) =>
  75. {
  76. if (entity != null)
  77. _forms.EditForm<Kanban,KanbanLink,KanbanForm>(args.Shell,entity);
  78. ProgressVisible = false;
  79. });
  80. }
  81. }
  82. }