StaffStatusPage.xaml.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using System;
  2. using System.Collections.Generic;
  3. using Xamarin.Forms;
  4. using InABox.Core;
  5. using Comal.Classes;
  6. using System.Linq;
  7. using System.Threading.Tasks;
  8. using Syncfusion.XForms.PopupLayout;
  9. using Xamarin.Essentials;
  10. using System.Windows.Input;
  11. using InABox.Mobile;
  12. using InABox.Mobile.Shared;
  13. using XF.Material.Forms.UI.Dialogs;
  14. using LogType = InABox.Core.LogType;
  15. using PRSSecurity = InABox.Core.Security;
  16. namespace PRS.Mobile
  17. {
  18. public partial class StaffStatusPage
  19. {
  20. public StaffStatusPage()
  21. {
  22. InitializeComponent();
  23. ProgressVisible = true;
  24. _staff.Columns
  25. .BeginUpdate()
  26. .Clear();
  27. if (!PRSSecurity.IsAllowed<CanViewMobileInOutBoardDetails>())
  28. _staff.Columns.Add(new MobileGridImageColumn<InOutShell>() { Column = x =>x.In, Width = 30, Margin = 6, Header = ImageSource.FromFile("circle_gray")});
  29. _staff.Columns.Add(new MobileGridTextColumn<InOutShell>() { Column = x => x.Name, Alignment = TextAlignment.Start, Width = GridLength.Star });
  30. if (PRSSecurity.IsAllowed<CanViewMobileInOutBoardDetails>())
  31. _staff.Columns
  32. .Add(new MobileGridTimeColumn<InOutShell>() { Column = x => x.Start, Width = 50 })
  33. .Add(new MobileGridTimeColumn<InOutShell>() { Column = x => x.Finish, Width = 50 });
  34. _staff.Columns.Add(new MobileGridImageColumn<InOutShell>() { Column = x => x.Call, Width = 30, Margin = 6, Tapped = CallEmployee, Header= ImageSource.FromFile("phone") });
  35. _staff.Columns.EndUpdate();
  36. RefreshData(false,true);
  37. }
  38. private async void CallEmployee(IMobileGridColumn column, object shell)
  39. {
  40. if (shell is InOutShell inout)
  41. {
  42. if (!String.IsNullOrWhiteSpace(inout.Mobile))
  43. {
  44. var confirm = await MaterialDialog.Instance.ConfirmAsync(message: inout.Mobile,
  45. title: "Contact Details",
  46. confirmingText: "Call",
  47. dismissiveText: "Cancel");
  48. if (confirm == true)
  49. PhoneDialer.Open(inout.Mobile);
  50. }
  51. }
  52. }
  53. private void RefreshData(bool force, bool async)
  54. {
  55. if (async)
  56. App.Data.InOut.Refresh(force, RefreshList);
  57. else
  58. {
  59. App.Data.InOut.Refresh(force);
  60. RefreshList();
  61. }
  62. }
  63. private void RefreshList()
  64. {
  65. _staff.ItemsSource ??= App.Data.InOut.Items;
  66. _staff.LastUpdated = App.Data.InOut.LastUpdated;
  67. ProgressVisible = false;
  68. }
  69. private void _staff_OnRefreshRequested(object sender, MobileGridRefreshRequestArgs args)
  70. {
  71. RefreshData(true, false);
  72. }
  73. }
  74. }