Untitled

mail@pastecode.io avatarunknown
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();

    //}

}