using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using ValasztasGUI.View;
namespace ValasztasGUI
{
///
/// Interaction logic for MainWindow.xaml
///
public static class Eredmeny
{
public static List kepviselok = null;
}
public class Kepviselo
{
public int Kerulet;
public int Szavazat;
public string VezetekNev;
public string KeresztNev;
public string Part;
public Kepviselo(int kerulet, int szavazat,
string vezetekNev, string keresztNev,
string part)
{
this.Kerulet = kerulet;
this.Szavazat = szavazat;
this.VezetekNev = vezetekNev;
this.KeresztNev = keresztNev;
this.Part = part.Trim();
}
public string TeljesNev()
{
return $"{this.VezetekNev} {this.KeresztNev}";
}
public static List LoadFromTxt(string path)
{
List kepviselok = new List();
FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
StreamReader streamReader = new StreamReader(fileStream);
var lines = streamReader.ReadToEnd().Split('\n');
foreach (var item in lines)
{
string[] data = item.Split(' ');
Kepviselo kepviselo = new Kepviselo(Convert.ToInt32(data[0]), Convert.ToInt32(data[1]), data[2], data[3], data[4]);
kepviselok.Add(kepviselo);
}
streamReader.Close();
fileStream.Close();
return kepviselok;
}
public static void SzavazatKiir(List kepviselok, string[] nev)
{
foreach (var item in kepviselok)
{
if (item.VezetekNev == nev[0] && item.KeresztNev == nev[1])
{
Console.WriteLine($"{item.VezetekNev} {item.KeresztNev} nevű képviselőjelölt {item.Szavazat} darab szavazatot kapott.");
return;
}
}
Console.WriteLine("Ilyen nevű képviselőjelölt nem szerepel a nyilvántartásban!");
}
public static void Legtobb(List kepviselok)
{
List legjobbkepviselok = new List();
Kepviselo kepviselo = kepviselok[0];
foreach (var item in kepviselok)
{
if (item.Szavazat > kepviselo.Szavazat)
{
kepviselo = item;
}
}
legjobbkepviselok.Add(kepviselo);
foreach (var item in kepviselok)
{
if (item.Szavazat == kepviselo.Szavazat && item.KeresztNev != kepviselo.KeresztNev && item.VezetekNev != kepviselo.VezetekNev)
{
legjobbkepviselok.Add(item);
}
}
string fuggetlen = "független";
foreach (var item in legjobbkepviselok)
{
Console.WriteLine($"" +
$"A legtöbb szavazatot kapta: " +
$"\t{item.VezetekNev} {item.KeresztNev} {(item.Part == "-" ? fuggetlen : item.Part)}");
}
}
public static void ValosztokeruletiGyoztesek(List kepviselok)
{
var asd = kepviselok.OrderBy(x => x.Szavazat).OrderBy(x => x.Kerulet).GroupBy(x => x.Kerulet);
StreamWriter streamWriter = new StreamWriter("nyertesek.txt", false);
foreach (var item in asd)
{
Kepviselo kepviselo = item.Last();
streamWriter.WriteLine($"{kepviselo.Kerulet} {kepviselo.VezetekNev} {kepviselo.KeresztNev} {kepviselo.Part}");
}
streamWriter.Close();
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void informatoin_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Helyhatósági választásokat elemző program", "Névjegy");
}
private void jeloltekListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Kepviselo kepviselo = Eredmeny.kepviselok[jeloltekListBox.SelectedIndex];
nevTextBox.Text = $"{kepviselo.VezetekNev} {kepviselo.KeresztNev}";
valasztokeruletSzamaTextBox.Text = $"{kepviselo.Kerulet}";
partTextBox.Text = $"{(kepviselo.Part == "-" ? "független" : kepviselo.Part)}";
szavazatokSzamaTextBox.Text = $"{kepviselo.Szavazat}";
}
private void keruletButton_Click(object sender, RoutedEventArgs e)
{
keruletListBox.Items.Clear();
foreach (var item in Eredmeny.kepviselok)
{
if (item.Kerulet == Convert.ToInt32(valasztokeruletSzamaTextBox.Text))
{
keruletListBox.Items.Add(item.TeljesNev());
}
}
}
private void open_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.ShowDialog();
string path = dialog.FileName;
Eredmeny.kepviselok = Kepviselo.LoadFromTxt(path);
foreach (var item in Eredmeny.kepviselok)
{
jeloltekListBox.Items.Add(item.TeljesNev());
}
}
private void jeloltekListBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
}
private void Nyertesek_Click(object sender, RoutedEventArgs e)
{
Kepviselo.ValosztokeruletiGyoztesek(Eredmeny.kepviselok);
}
private void Statisztika_Click(object sender, RoutedEventArgs e)
{
if (Eredmeny.kepviselok != null)
{
Statisztika statisztika = new Statisztika();
statisztika.Show();
return;
}
MessageBox.Show("Az adatok nem kerültek importálásra!", "Hiba", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}