using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; using Xamarin.Forms; using InABox.Core; using InABox.Clients; using InABox.Mobile; using Comal.Classes; using comal.timesheets.CustomControls; using PRSSecurity = InABox.Core.Security; using Plugin.LocalNotification; namespace comal.timesheets { public delegate void MainPageNotificationsChanged(); public delegate void RefreshScreen(); public delegate void RequestUserInputForTask(Guid taskID); public delegate void TaskTitleChanged(string title); public static class MainPageUtils { public static event MainPageNotificationsChanged OnMainPageNotificationsChanged; public static event RequestUserInputForTask OnRequestUserInput; public static event TaskTitleChanged OnTaskTitleChanged; #region Notifications // public static Page DetermineCorrectPage(Plugin.LocalNotification.EventArgs.NotificationActionEventArgs e) // { // string data = e.Request.ReturningData; // int index = data.IndexOf("$"); // Guid ID = Guid.Parse(data.Remove(index)); // string type = data.Substring(index + 1); // if (type == "Comal.Classes.Kanban") // return new AddEditTask(ID); // else if (type == "Comal.Classes.Delivery") // return new DeliveryDetails(ID); // else // return null; // } // // private static void CheckNotificationsPushed(CoreTable table) // { // try // { // if (!Application.Current.Properties.ContainsKey("LastPushedNotifications")) // { // Application.Current.Properties.Add("LastPushedNotifications", DateTime.Now); // } // DateTime lastPushed = DateTime.Parse(Application.Current.Properties["LastPushedNotifications"].ToString()); // List toNotify = new List(); // foreach (CoreRow row in table.Rows) // { // List list = row.Values; // DateTime created = DateTime.Parse(list[3].ToString()); // if (created > new DateTime(2022, 8, 22)) // prevent spam from buildup of old notifications before this is released // { // if (created > lastPushed) // { // if (list[1] == null) list[1] = ""; // if (list[2] == null) list[2] = ""; // if (list[3] == null) list[3] = DateTime.MinValue; // if (list[4] == null) list[4] = ""; // if (list[5] == null) list[5] = ""; // if (list[6] == null) list[6] = Guid.Empty; // // NotificationShell shell = new NotificationShell // { // ID = Guid.Parse(list[0].ToString()), // Sender = list[1].ToString(), // Title = list[2].ToString(), // Created = DateTime.Parse(list[3].ToString()), // EntityType = list[5].ToString(), // EntityID = Guid.Parse(list[6].ToString()) // }; // toNotify.Add(shell); //add notification to be pushed // } // } // } // if (toNotify.Count > 0) // PushNotificationsAsync(toNotify); // } // catch { } // } // // private static async Task PushNotificationsAsync(string title, ) // { // try // { // int count = 1; // // foreach (NotificationShell shell in shells) // { // var notification = new NotificationRequest // { // BadgeNumber = 1, // Description = title, // Title = "New PRS Notification: ", // ReturningData = shell.EntityID.ToString() + "$" + shell.EntityType, // NotificationId = count, // }; // count++; // NotificationImage img = new NotificationImage(); // img.ResourceName = "icon16.png"; // notification.Image = img; // // await LocalNotificationCenter.Current.Show(notification); // } // Application.Current.Properties["LastPushedNotifications"] = DateTime.Now; // } // catch { } // } #endregion } }