Untitled
plain_text
a month ago
19 kB
3
Indexable
Never
using Newtonsoft.Json; using RestSharp; using System.Net; using System.Text; using TOK_MOBILE.Models; namespace LoginFlow.Views; public partial class StatisticsPage : ContentPage { public ITStatistika? Statistika { get; set; } private List<ITVaucer> vauceri; private List<ITGosti> gosti; private List<DrzaveMUP> drzave; public List<ITVaucer> Vauceri { get => vauceri; set { vauceri = value; OnPropertyChanged(nameof(Vauceri)); } } public List<ITGosti> Gosti { get => gosti; set { gosti = value; OnPropertyChanged(nameof(Gosti)); } } public List<DrzaveMUP> Drzave { get => drzave; set { drzave = value; OnPropertyChanged(nameof(Drzave)); } } public StatisticsPage() { InitializeComponent(); Statistika = new ITStatistika(); BindingContext = Statistika; datePickerDo.MinimumDate = datePickerOd.Date; } public async void LoadAgencyID() { //string a = await SecureStorage.GetAsync("AgencyID").Result.ToString(); } private void CheckedChangedRadioButton(object sender, CheckedChangedEventArgs e) { if (sender is RadioButton radioButton && radioButton.IsChecked) { if (radioButton == naDanRadioButton) { Statistika.isNaDanSelected = true; Statistika.isPeriodSelected = false; datePickerDo.IsEnabled = false; } else if (radioButton == zaPeriodRadioButton) { Statistika.isNaDanSelected = false; Statistika.isPeriodSelected = true; datePickerDo.IsEnabled = true; } } } private void DatePickerOdDateSelected(object sender, DateChangedEventArgs e) { DateTime newDate = e.NewDate; datePickerDo.MinimumDate = newDate; } public async Task LoadVauceri() { try { ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; var client = new RestClient("http://10.0.0.63:8088"); var request = new RestRequest("api/ITVaucer", Method.Get); RestResponse response = await client.ExecuteAsync(request); if (response.IsSuccessful) { string json = response.Content; List<ITVaucer> vauceri = JsonConvert.DeserializeObject<List<ITVaucer>>(json); Vauceri = vauceri; OnPropertyChanged(nameof(Vauceri)); } else { Console.WriteLine($"API Error: {response.StatusCode} - {response.ErrorMessage}"); } } catch (Exception ex) { // Handle exception } } public async Task LoadGosti() { try { ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; var client = new RestClient("http://10.0.0.63:8088"); var request = new RestRequest("api/ITGosti", Method.Get); RestResponse response = await client.ExecuteAsync(request); if (response.IsSuccessful) { string json = response.Content; List<ITGosti> gosti = JsonConvert.DeserializeObject<List<ITGosti>>(json); Gosti = gosti; OnPropertyChanged(nameof(Gosti)); } else { Console.WriteLine($"API Error: {response.StatusCode} - {response.ErrorMessage}"); } } catch (Exception ex) { // Handle exception } } public async Task LoadDrzave() { try { ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; var client = new RestClient("http://10.0.0.63:8088"); var request = new RestRequest("api/DrzaveMUP", Method.Get); RestResponse response = await client.ExecuteAsync(request); if (response.IsSuccessful) { string json = response.Content; List<DrzaveMUP> drzave = JsonConvert.DeserializeObject<List<DrzaveMUP>>(json); Drzave = drzave; OnPropertyChanged(nameof(Drzave)); } else { Console.WriteLine($"API Error: {response.StatusCode} - {response.ErrorMessage}"); } } catch (Exception ex) { // Handle exception } } private async void GenerateReportButton_Clicked(object sender, EventArgs e) { var client = new HttpClient(); var url = "http://10.0.0.63:8088/api/"; if (brojOsobaAutobusRadioButton.IsChecked || brojOsobaBrodRadioButton.IsChecked) { var bus = brojOsobaAutobusRadioButton.IsChecked; var bytes = Array.Empty<byte>(); var filename = ""; if (LoginPage.AgencyID > 0) { if (naDanRadioButton.IsChecked) { bytes = await client.GetByteArrayAsync(url + $"Report/Vauceri/?bus={bus}&startDate={datePickerOd.Date}&endDate={datePickerOd.Date}&AgencijaID={LoginPage.AgencyID}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_Vauceri_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } else { bytes = await client.GetByteArrayAsync(url + $"Report/Vauceri/?bus={bus}&startDate={datePickerOd.Date}&endDate={datePickerDo.Date.AddDays(1)}&AgencijaID={LoginPage.AgencyID}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_Vauceri_{datePickerOd.Date.ToString("dd.MM.yyyy.")}_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } } else { if (naDanRadioButton.IsChecked) { bytes = await client.GetByteArrayAsync(url + $"Report/Vauceri/?bus={bus}&startDate={datePickerOd.Date}&endDate={datePickerOd.Date}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_Vauceri_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } else { bytes = await client.GetByteArrayAsync(url + $"Report/Vauceri/?bus={bus}&startDate={datePickerOd.Date}&endDate={datePickerDo.Date.AddDays(1)}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_Vauceri_{datePickerOd.Date.ToString("dd.MM.yyyy.")}_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } } await File.WriteAllBytesAsync(filename, bytes); bool openReport = await DisplayAlert("Report Generated", "Do you want to open the report?", "Yes", "No"); if (openReport) { await Launcher.OpenAsync(new OpenFileRequest { File = new ReadOnlyFile(filename) }); } //await LoadVauceri(); //var filteredVauceri = GetFilteredVauceri(); //string report = GenerateReportString(filteredVauceri); //string fileName = "report.txt"; //string filePath = Path.Combine(FileSystem.CacheDirectory, fileName); //File.WriteAllText(filePath, report); //bool openReport = await DisplayAlert("Report Generated", "Do you want to open the report?", "Yes", "No"); //if (openReport) //{ // await Launcher.OpenAsync(new OpenFileRequest // { // File = new ReadOnlyFile(filePath) // }); //} } else if (brojOsobaNacionalnostimaRadioButton.IsChecked) { var bytes = Array.Empty<byte>(); var filename = ""; if (LoginPage.AgencyID > 0) { if (naDanRadioButton.IsChecked) { bytes = await client.GetByteArrayAsync(url + $"Report/DrzavaGosti/?startDate={datePickerOd.Date}&endDate={datePickerOd.Date}&AgencijaID={LoginPage.AgencyID}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_GostiPoNacionalnostima_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } else { bytes = await client.GetByteArrayAsync(url + $"Report/DrzavaGosti/?&startDate={datePickerOd.Date}&endDate={datePickerDo.Date.AddDays(1)}&AgencijaID={LoginPage.AgencyID}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_GostiPoNacionalnostima_{datePickerOd.Date.ToString("dd.MM.yyyy.")}_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } } else { if (naDanRadioButton.IsChecked) { bytes = await client.GetByteArrayAsync(url + $"Report/DrzavaGosti/?startDate={datePickerOd.Date}&endDate={datePickerOd.Date}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_GostiPoNacionalnostima_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } else { bytes = await client.GetByteArrayAsync(url + $"Report/DrzavaGosti/?&startDate={datePickerOd.Date}&endDate={datePickerDo.Date.AddDays(1)}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_GostiPoNacionalnostima_{datePickerOd.Date.ToString("dd.MM.yyyy.")}_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } } await File.WriteAllBytesAsync(filename, bytes); bool openReport = await DisplayAlert("Report Generated", "Do you want to open the report?", "Yes", "No"); if (openReport) { await Launcher.OpenAsync(new OpenFileRequest { File = new ReadOnlyFile(filename) }); } } else if (finansijskaKarticaStavkeRadioButton.IsChecked) { var bytes = Array.Empty<byte>(); var filename = ""; if (LoginPage.AgencyID > 0) { if (naDanRadioButton.IsChecked) { bytes = await client.GetByteArrayAsync(url + $"Report/FinansijskaKarticaPoStavkama/?startDate={datePickerOd.Date}&endDate={datePickerOd.Date}&AgencijaID={LoginPage.AgencyID}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_FinansijskaKarticaPoStavkama_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } else { bytes = await client.GetByteArrayAsync(url + $"Report/FinansijskaKarticaPoStavkama/?&startDate={datePickerOd.Date}&endDate={datePickerDo.Date.AddDays(1)}&AgencijaID={LoginPage.AgencyID}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_FinansijskaKarticaPoStavkama_{datePickerOd.Date.ToString("dd.MM.yyyy.")}_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } } else { if (naDanRadioButton.IsChecked) { bytes = await client.GetByteArrayAsync(url + $"Report/FinansijskaKarticaPoStavkama/?startDate={datePickerOd.Date}&endDate={datePickerOd.Date}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_FinansijskaKarticaPoStavkama_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } else { bytes = await client.GetByteArrayAsync(url + $"Report/FinansijskaKarticaPoStavkama/?&startDate={datePickerOd.Date}&endDate={datePickerDo.Date.AddDays(1)}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_FinansijskaKarticaPoStavkama_{datePickerOd.Date.ToString("dd.MM.yyyy.")}_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } } await File.WriteAllBytesAsync(filename, bytes); bool openReport = await DisplayAlert("Report Generated", "Do you want to open the report?", "Yes", "No"); if (openReport) { await Launcher.OpenAsync(new OpenFileRequest { File = new ReadOnlyFile(filename) }); } } else if (finansijskaKarticaSumarnoRadioButton.IsChecked) { var bytes = Array.Empty<byte>(); var filename = ""; if (LoginPage.AgencyID > 0) { if (naDanRadioButton.IsChecked) { bytes = await client.GetByteArrayAsync(url + $"Report/FinansijskaKarticaSumarno/?startDate={datePickerOd.Date}&endDate={datePickerOd.Date}&AgencijaID={LoginPage.AgencyID}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_FinansijskaKarticaSumarno_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } else { bytes = await client.GetByteArrayAsync(url + $"Report/FinansijskaKarticaSumarno/?&startDate={datePickerOd.Date}&endDate={datePickerDo.Date.AddDays(1)}&AgencijaID={LoginPage.AgencyID}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_FinansijskaKarticaSumarno_{datePickerOd.Date.ToString("dd.MM.yyyy.")}_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } } else { if (naDanRadioButton.IsChecked) { bytes = await client.GetByteArrayAsync(url + $"Report/FinansijskaKarticaSumarno/?startDate={datePickerOd.Date}&endDate={datePickerOd.Date}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_FinansijskaKarticaSumarno_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } else { bytes = await client.GetByteArrayAsync(url + $"Report/FinansijskaKarticaSumarno/?&startDate={datePickerOd.Date}&endDate={datePickerDo.Date.AddDays(1)}"); filename = $"{FileSystem.CacheDirectory}/Izvjestaj_FinansijskaKarticaSumarno_{datePickerOd.Date.ToString("dd.MM.yyyy.")}_{datePickerOd.Date.ToString("dd.MM.yyyy.")}.pdf"; } } await File.WriteAllBytesAsync(filename, bytes); bool openReport = await DisplayAlert("Report Generated", "Do you want to open the report?", "Yes", "No"); if (openReport) { await Launcher.OpenAsync(new OpenFileRequest { File = new ReadOnlyFile(filename) }); } } } public class DrzavaGosti { public string NazivDrzave { get; set; } public int BrojGostiPoDrzavi { get; set; } public ITGosti Gosti { get; set; } public DrzavaGosti(string nazivDrzave, int brojGostiPoDrzavi) { NazivDrzave = nazivDrzave; BrojGostiPoDrzavi = brojGostiPoDrzavi; } } protected override bool OnBackButtonPressed() { Shell.Current.GoToAsync("///home"); return true; } //private List<ITVaucer> GetFilteredVauceri() //{ // if (brojOsobaAutobusRadioButton.IsChecked) // { // return vauceri.Where(v => v.Sredstvo == true).ToList(); // } // else if (brojOsobaBrodRadioButton.IsChecked) // { // return vauceri.Where(v => v.Sredstvo == false).ToList(); // } // else // { // return vauceri; // } //} //private string GenerateReportStringNationality(List<ITGosti> gosti) //{ // StringBuilder reportBuilder = new StringBuilder(); // reportBuilder.AppendLine("Nationality, Number of People:"); // List<DrzavaGosti> drzGost = new List<DrzavaGosti>(); // if (Statistika.isNaDanSelected == true) // { // foreach (var d in Drzave) // { // int brojGostijuZaDrzavu = Gosti.Where(x => x.DrzavaID == d.DrzavaID && (x.InsertDate.Date == Statistika.DatumOd.Value.Date)).Sum(x => x.BrojOsoba); // drzGost.Add(new DrzavaGosti(d.Naziv, brojGostijuZaDrzavu)); // } // foreach (var drzavaGost in drzGost) // { // reportBuilder.AppendLine($"{drzavaGost.NazivDrzave}, {drzavaGost.BrojGostiPoDrzavi}"); // } // } // else if (Statistika.isPeriodSelected == true) // { // foreach (var d in Drzave) // { // int brojGostijuZaDrzavu = Gosti.Where(x => x.DrzavaID == d.DrzavaID && // (x.InsertDate.Date >= (Statistika.DatumOd?.Date ?? DateTime.Now) && x.InsertDate.Date <= (Statistika.DatumDo?.Date ?? DateTime.Now))).Sum(x => x.BrojOsoba); // drzGost.Add(new DrzavaGosti(d.Naziv, brojGostijuZaDrzavu)); // } // foreach (var drzavaGost in drzGost) // { // reportBuilder.AppendLine($"{drzavaGost.NazivDrzave}, {drzavaGost.BrojGostiPoDrzavi}"); // } // } // return reportBuilder.ToString(); //} //private string GenerateReportString(List<ITVaucer> vauceri) //{ // StringBuilder reportBuilder = new StringBuilder(); // reportBuilder.AppendLine("Vauceri:"); // if (brojOsobaAutobusRadioButton.IsChecked) // { // if (Statistika.isNaDanSelected == true) // { // var vauceriNaDan = vauceri.Where(v => v.Datum.Date == Statistika.DatumOd.Value.Date).ToList(); // int totalVauceriNaDan = vauceriNaDan.Count; // reportBuilder.AppendLine($"Total number of Vaucheri: {totalVauceriNaDan}"); // foreach (var vaucer in vauceriNaDan) // { // reportBuilder.AppendLine($"ID: {vaucer.ID}, Datum: {vaucer.Datum}, Taksa: {vaucer.Taksa}, BrojOsoba: {vaucer.BrojOsoba}"); // } // } // else if (Statistika.isPeriodSelected == true) // { // var vauceriZaPeriod = vauceri.Where(v => v.Datum.Date >= (Statistika.DatumOd?.Date ?? DateTime.Now) && v.Datum.Date <= (Statistika.DatumDo?.Date ?? DateTime.Now)).ToList(); // int totalVauceriZaPeriod = vauceriZaPeriod.Count; // reportBuilder.AppendLine($"Total number of Vaucheri: {totalVauceriZaPeriod}"); // foreach (var vaucer in vauceriZaPeriod) // { // reportBuilder.AppendLine($"ID: {vaucer.ID}, Datum: {vaucer.Datum}, Taksa: {vaucer.Taksa}, BrojOsoba: {vaucer.BrojOsoba}"); // } // } // } // else if (brojOsobaBrodRadioButton.IsChecked) // { // if (Statistika.isNaDanSelected == true) // { // var vauceriNaDan = vauceri.Where(v => v.Datum.Date == Statistika.DatumOd.Value.Date).ToList(); // int totalVauceriNaDan = vauceriNaDan.Count; // reportBuilder.AppendLine($"Total number of Vaucheri: {totalVauceriNaDan}"); // foreach (var vaucer in vauceriNaDan) // { // reportBuilder.AppendLine($"ID: {vaucer.ID}, Datum: {vaucer.Datum}, Taksa: {vaucer.Taksa}, BrojOsoba: {vaucer.BrojOsoba}"); // } // } // else if (Statistika.isPeriodSelected == true) // { // var vauceriZaPeriod = vauceri.Where(v => v.Datum.Date >= (Statistika.DatumOd?.Date ?? DateTime.Now) && v.Datum.Date <= (Statistika.DatumDo?.Date ?? DateTime.Now)).ToList(); // int totalVauceriZaPeriod = vauceriZaPeriod.Count; // reportBuilder.AppendLine($"Total number of Vaucheri: {totalVauceriZaPeriod}"); // foreach (var vaucer in vauceriZaPeriod) // { // reportBuilder.AppendLine($"ID: {vaucer.ID}, Datum: {vaucer.Datum}, Taksa: {vaucer.Taksa}, BrojOsoba: {vaucer.BrojOsoba}"); // } // } // } // return reportBuilder.ToString(); //} }