private async Task RefreshCommandEvent() { try { List <SavedReport> reports = new List <SavedReport>(); bool permissionGranted = await AskForPermission(new Permissions.StorageRead()); if (permissionGranted) { string folderpath = DependencyService.Get <IFileHelper>().GetLocalFilePath(""); if (Directory.Exists(folderpath)) { string[] files = Directory.GetFiles(folderpath, "*.csv"); foreach (var file in files) { SavedReport savedReport = new SavedReport() { FilePath = file, FileName = Path.GetFileName(file), FileCreatedOn = File.GetCreationTime(file), }; reports.Add(savedReport); } Reports = reports.OrderByDescending(r => r.FileCreatedOn).ToList(); } } } catch (Exception ex) { await BaseContent.DisplayAlert("Error", ex.Message, "Ok"); } }
private async Task DeleteCommandEvent(SavedReport savedReport) { bool shouldDelete = await BaseContent.DisplayAlert("Delete Report", "Are you sure you want to delete " + savedReport.FileName, "Yes", "No"); if (shouldDelete) { if (File.Exists(savedReport.FilePath)) { File.Delete(savedReport.FilePath); } RefreshCommand.Execute(null); } }
private async Task SaveNewInterruptionCommandEvent() { try { if (!Validate()) { return; } InterruptionDbModel interruptionDbModel = new InterruptionDbModel() { Comment = CurrentInterruption.Comment, Feeder = CurrentInterruption.Feeder.Name, InterruprionType = CurrentInterruption.InterruprionType, ReportedDate = CurrentInterruption.ReportedDate.ToString("yyyy-MM-dd"), ReportTimeFrom = CurrentInterruption.ReportTimeFrom, ReportTimeTo = CurrentInterruption.ReportTimeTo, SubDivision = CurrentInterruption.SubDivision.Name, SubStation = CurrentInterruption.SubStation.Name, }; if (BaseContent.Title.ToLower() == "edit interruption") { interruptionDbModel.ID = interruptionID; } await App.Database.SaveItemAsync(interruptionDbModel); if (BaseContent.Title.ToLower() == "edit interruption") { await BaseContent.Navigation.PopAsync(); } else { ResetInterruption(); await BaseContent.DisplayAlert("Save", "Interruption Added successfully", "Ok"); } } catch (Exception ex) { if (ex.Message.ToLower() == "constraint") { UserDialogs.Instance.Toast("Interruption already exist"); } else { await BaseContent.DisplayAlert("Save", ex.Message, "Ok"); } } }
public async Task <bool> AskForPermission <T>(T permission) where T : BasePermission { try { var status = await permission.CheckStatusAsync(); if (status != PermissionStatus.Granted) { status = await permission.RequestAsync(); } return(status == PermissionStatus.Granted); } catch (Exception ex) { await BaseContent.DisplayAlert("Error:", ex.Message, "OK"); return(false); } }
private async Task CustomQueryCommandEvent() { tapCount++; if (tapCount <= 6) { return; } tapCount = 0; string query = await BaseContent.DisplayPromptAsync("Query Data", "Query Database for custom operation", "Apply", "Cancel", "Query"); if (!string.IsNullOrEmpty(query)) { try { bool resilt = await App.Database.CustomQueryAsync(query); UserDialogs.Instance.Toast("Query Successful"); } catch (Exception ex) { await BaseContent.DisplayAlert("Query Error", ex.Message, "Ok"); } } }
private async Task ExportDatabaseCommandEvent() { try { if (!Validate()) { return; } if (BaseContent.Title.ToLower() == "filter") { //FilteredRecords = await GetFilteredItems(); await BaseContent.Navigation.PopAsync(); } else { string filename = await BaseContent.DisplayPromptAsync("Report Name", "Enter Report name to save with", "Save", "Cancel", "Report Name"); if (string.IsNullOrEmpty(filename)) { if (filename != null) { UserDialogs.Instance.Toast("Please enter valid report name"); } return; } bool permissionGranted = await AskForPermission(new Permissions.StorageWrite()); if (permissionGranted) { string downloadPath = DependencyService.Get <IFileHelper>().GetLocalFilePath(filename.Trim() + ".csv"); if (!string.IsNullOrEmpty(downloadPath)) { IEnumerable <InterruptionDbModel> data = await GetFilteredItems(); double totalMinutes = 0; List <InterruptionReportModel> items = new List <InterruptionReportModel>(); foreach (var item in data) { double timeDifference = item.ReportTimeTo.TotalMinutes - item.ReportTimeFrom.TotalMinutes; if (timeDifference < 0) { timeDifference = (60 * 24) + timeDifference; } TimeSpan workMin = TimeSpan.FromMinutes(timeDifference); string workHours = workMin.ToString(@"hh\:mm"); InterruptionReportModel interruptionReport = new InterruptionReportModel() { Comment = item.Comment, Feeder = item.Feeder, InterruprionType = item.InterruprionType, ReportedDate = DateTime.Parse(item.ReportedDate).ToString("dd/MM/yyyy"), ReportTimeFrom = item.ReportTimeFrom.ToString(), ReportTimeTo = item.ReportTimeTo.ToString(), SubDivision = item.SubDivision, SubStation = item.SubStation, Hours = workHours, }; totalMinutes += timeDifference; items.Add(interruptionReport); } TimeSpan totalWorkMin = TimeSpan.FromMinutes(totalMinutes); string totalWorkHours = totalWorkMin.ToString(@"hh\:mm"); InterruptionReportModel totalHoursInterruption = new InterruptionReportModel() { Hours = totalWorkHours, }; items.Add(totalHoursInterruption); string jsonData = JsonConvert.SerializeObject(items); if (!string.IsNullOrEmpty(jsonData)) { XmlNode xml = JsonConvert.DeserializeXmlNode("{records:{record:" + jsonData + "}}"); XmlDocument xmldoc = new XmlDocument(); //Create XmlDoc Object xmldoc.LoadXml(xml.InnerXml); //Create XML Steam var xmlReader = new XmlNodeReader(xmldoc); DataSet dataSet = new DataSet(); //Load Dataset with Xml dataSet.ReadXml(xmlReader); //return single table inside of dataset string csv = ToCSV(dataSet.Tables[0]); if (!string.IsNullOrEmpty(csv)) { SaveDataToDownloadFolder(downloadPath, csv); UserDialogs.Instance.Toast("Database saved to your download folder."); } else { await BaseContent.DisplayAlert("Export Database", "Unable to save data to storage.", "Ok"); } } else { await BaseContent.DisplayAlert("Export Database", "Unable to prepare report.", "Ok"); } } else { await BaseContent.DisplayAlert("Export Database", "Download path is invalid.", "Ok"); } } else { await BaseContent.DisplayAlert("Export Database", "Allow permission to store data, you can chance permissions from settings anytime", "Ok"); } } } catch (Exception ex) { await BaseContent.DisplayAlert("Prepare Records", ex.Message, "Ok"); } }