MobileLogging.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Xamarin.Essentials;
  8. using Xamarin.Forms;
  9. namespace comal.timesheets
  10. {
  11. public delegate void RequestSendError(string message);
  12. public class MobileLogging
  13. {
  14. public MobileLogging(LogType type, string entitytype, string message, string page)
  15. {
  16. SaveLog(type, entitytype, message, page);
  17. }
  18. private void SaveLog(LogType type, string entitytype, string message, string page)
  19. {
  20. var log = CreateMessage(type, entitytype, message, page);
  21. try
  22. {
  23. const string errorFileName = "Errorscache.log";
  24. string libraryPath = "";
  25. if (Device.RuntimePlatform.Equals(Device.iOS))
  26. libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Resources);
  27. else
  28. libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
  29. var errorFilePath = Path.Combine(libraryPath, errorFileName);
  30. var errorMessage = "";
  31. if (File.Exists(errorFilePath))
  32. {
  33. errorMessage = File.ReadAllText(errorFilePath);
  34. }
  35. errorMessage = errorMessage + System.Environment.NewLine + log + System.Environment.NewLine;
  36. File.WriteAllText(errorFilePath, errorMessage);
  37. }
  38. catch
  39. {
  40. }
  41. }
  42. public async void OpenEmail(string log)
  43. {
  44. var message = new EmailMessage
  45. {
  46. Subject = "Error Logs from " + GlobalVariables.EmpName,
  47. Body = log,
  48. To = new List<string> { "support@prsdigital.com.au" }
  49. };
  50. await Email.ComposeAsync(message);
  51. }
  52. private bool TestTeam()
  53. {
  54. if (App.DBSettings.UserID == "Peter"
  55. || App.DBSettings.UserID == "frank"
  56. || App.DBSettings.UserID == "Dijkstra"
  57. || App.DBSettings.UserID == "TAN"
  58. || App.DBSettings.UserID == "shirley"
  59. || App.DBSettings.UserID == "FRANK"
  60. || App.DBSettings.UserID == "KENRIC"
  61. || App.DBSettings.UserID == "NICK"
  62. || App.DBSettings.UserID == "PETER"
  63. )
  64. return true;
  65. else
  66. return false;
  67. }
  68. private string CreateMessage(LogType type, string entitytype, string message, string page)
  69. {
  70. return ConnectionType(type)
  71. + Area(entitytype)
  72. + Date()
  73. + Page(page)
  74. + Message(message)
  75. + End();
  76. }
  77. private string Area(string entitytype)
  78. {
  79. return "Area: " + entitytype + System.Environment.NewLine;
  80. }
  81. private string ConnectionType(LogType type)
  82. {
  83. return "Connection Type: " + type.ToString() + System.Environment.NewLine;
  84. }
  85. private string Date()
  86. {
  87. return "Date: " + DateTime.Now.ToString("HH:mm dd-MMM-yy") + System.Environment.NewLine;
  88. }
  89. private string Page(string page)
  90. {
  91. return "Page: " + page + System.Environment.NewLine;
  92. }
  93. private string Message(string message)
  94. {
  95. return "Error Message: " + message + Environment.NewLine;
  96. }
  97. private string End()
  98. {
  99. return "END" + Environment.NewLine;
  100. }
  101. }
  102. public enum LogType
  103. {
  104. Query,
  105. Save,
  106. Delete,
  107. Validate,
  108. UIUpdate,
  109. BackgroundProcess
  110. }
  111. }