using System; using System.Collections.Generic; using Xamarin.Forms; using InABox.Core; using Comal.Classes; using System.Linq; using System.Threading.Tasks; using Syncfusion.XForms.PopupLayout; using Xamarin.Essentials; using System.Windows.Input; using InABox.Mobile; using InABox.Mobile.Shared; using XF.Material.Forms.UI.Dialogs; using LogType = InABox.Core.LogType; using PRSSecurity = InABox.Core.Security; namespace PRS.Mobile { public partial class StaffStatusPage { public StaffStatusPage() { InitializeComponent(); ProgressVisible = true; _staff.Columns .BeginUpdate() .Clear(); if (!PRSSecurity.IsAllowed()) _staff.Columns.Add(new MobileGridImageColumn() { Column = x =>x.In, Width = 30, Margin = 6, Header = ImageSource.FromFile("circle_gray")}); _staff.Columns.Add(new MobileGridTextColumn() { Column = x => x.Name, Alignment = TextAlignment.Start, Width = GridLength.Star }); if (PRSSecurity.IsAllowed()) _staff.Columns .Add(new MobileGridTimeColumn() { Column = x => x.Start, Width = 50 }) .Add(new MobileGridTimeColumn() { Column = x => x.Finish, Width = 50 }); _staff.Columns.Add(new MobileGridImageColumn() { Column = x => x.Call, Width = 30, Margin = 6, Tapped = CallEmployee, Header= ImageSource.FromFile("phone") }); _staff.Columns.EndUpdate(); RefreshData(false,true); } private async void CallEmployee(IMobileGridColumn column, object shell) { if (shell is InOutShell inout) { if (!String.IsNullOrWhiteSpace(inout.Mobile)) { var confirm = await MaterialDialog.Instance.ConfirmAsync(message: inout.Mobile, title: "Contact Details", confirmingText: "Call", dismissiveText: "Cancel"); if (confirm == true) PhoneDialer.Open(inout.Mobile); } } } private void RefreshData(bool force, bool async) { if (async) App.Data.InOut.Refresh(force, RefreshList); else { App.Data.InOut.Refresh(force); RefreshList(); } } private void RefreshList() { _staff.ItemsSource ??= App.Data.InOut.Items; _staff.LastUpdated = App.Data.InOut.LastUpdated; ProgressVisible = false; } private void _staff_OnRefreshRequested(object sender, MobileGridRefreshRequestArgs args) { RefreshData(true, false); } } }