Example #1
0
        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");
                }
            }
        }
Example #2
0
        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");
            }
        }