using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; using Xamarin.Essentials; using Xamarin.Forms; namespace comal.timesheets { public delegate void RequestSendError(string message); public class MobileLogging { public MobileLogging(LogType type, string entitytype, string message, string page) { SaveLog(type, entitytype, message, page); } private void SaveLog(LogType type, string entitytype, string message, string page) { var log = CreateMessage(type, entitytype, message, page); try { const string errorFileName = "Errorscache.log"; string libraryPath = ""; if (Device.RuntimePlatform.Equals(Device.iOS)) libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Resources); else libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal); var errorFilePath = Path.Combine(libraryPath, errorFileName); var errorMessage = ""; if (File.Exists(errorFilePath)) { errorMessage = File.ReadAllText(errorFilePath); } errorMessage = errorMessage + System.Environment.NewLine + log + System.Environment.NewLine; File.WriteAllText(errorFilePath, errorMessage); } catch { } } public async void OpenEmail(string log) { var message = new EmailMessage { Subject = "Error Logs from " + GlobalVariables.EmpName, Body = log, To = new List { "support@prsdigital.com.au" } }; await Email.ComposeAsync(message); } private bool TestTeam() { if (App.DBSettings.UserID == "Peter" || App.DBSettings.UserID == "frank" || App.DBSettings.UserID == "Dijkstra" || App.DBSettings.UserID == "TAN" || App.DBSettings.UserID == "shirley" || App.DBSettings.UserID == "FRANK" || App.DBSettings.UserID == "KENRIC" || App.DBSettings.UserID == "NICK" || App.DBSettings.UserID == "PETER" ) return true; else return false; } private string CreateMessage(LogType type, string entitytype, string message, string page) { return ConnectionType(type) + Area(entitytype) + Date() + Page(page) + Message(message) + End(); } private string Area(string entitytype) { return "Area: " + entitytype + System.Environment.NewLine; } private string ConnectionType(LogType type) { return "Connection Type: " + type.ToString() + System.Environment.NewLine; } private string Date() { return "Date: " + DateTime.Now.ToString("HH:mm dd-MMM-yy") + System.Environment.NewLine; } private string Page(string page) { return "Page: " + page + System.Environment.NewLine; } private string Message(string message) { return "Error Message: " + message + Environment.NewLine; } private string End() { return "END" + Environment.NewLine; } } public enum LogType { Query, Save, Delete, Validate, UIUpdate, BackgroundProcess } }