private void GlobalStats_Shown(object sender, EventArgs e) { // no vote record is currently in database voteAppEntities dbContext = DbUtils.AppEntities; if (dbContext.Votes.Any() == false) { return; } if (_mapTotalVote.Count == 0) { // map total vote foreach (Partido partie in dbContext.Partidos) { long totalVote = dbContext.Votes.Where(v => v.idPartido == partie.Id && v.provinceId == _user.ProvinceId) .Sum(v => v.voteData); _mapTotalVote.Add(partie.Id, totalVote); } } listViewGlobalStats.BeginUpdate(); foreach (Partido partie in DbUtils.AppEntities.Partidos) { // ignore disabled parties if (partie.Enabled == false) { continue; } ListViewItem lvi = new ListViewItem(partie.Name) { Tag = partie, }; listViewGlobalStats.Items.Add(lvi); } if (comboBoxDisplayResultBy.Items.Count > 0) { comboBoxDisplayResultBy.SelectedIndex = 0; } listViewGlobalStats.EndUpdate(); }
public Main(User loginUser) { InitializeComponent(); FormClosed += Main_FormClosed; textBoxInvalidVote.KeyDown += UIUtils.TextBoxKeyDownHandler; textBoxRegistered.KeyDown += UIUtils.TextBoxKeyDownHandler; textBoxVote.KeyDown += UIUtils.TextBoxKeyDownHandler; DbContext = DbUtils.AppEntities; _loginUser = loginUser; #if !DEBUG groupBoxAddVote.Enabled = loginUser.Type == TypeUser.Admin; #endif InitUI(); //this.listViewVotes.rectangle //buttonAddVote.Paint += (o, args) => ButtonAddVote_Paint(o, args); }
private void InitUI(TypeUser typsUser) { LayoutButtons(); if (typsUser == TypeUser.SuperAdmin) { labelProvince.Enabled = false; labelProvince.Visible = false; comboBoxProvince.Enabled = false; comboBoxProvince.Visible = false; } else { using (voteAppEntities dbContext = new voteAppEntities()) { foreach (Province province in dbContext.Provinces) { comboBoxProvince.Items.Add(new DisplayItem <Province>(province)); } } } }
public LoginForm() { InitializeComponent(); DbContext = DbUtils.AppEntities; // try fixing problem, control not redrawing itself. Shown += delegate { //Invalidate(); Refresh(); }; // directoryEntry1 // var result = directorySearcher1.FindOne(); #if DEBUG foreach (CheckBox checkbox in groupBox1.Controls.OfType <CheckBox>()) { checkbox.Enabled = true; checkbox.CheckedChanged += Checkbox_CheckedChanged; } #endif }
static DbUtils() { AppEntities = new voteAppEntities(); BuildPreDefinedDataBase(); }
private void ButtonSubmit_Click(object sender, EventArgs e) { // validation string userName = textBoxUserName.Text; string fullName = textBoxFullName.Text; string password = textBoxPassword.Text; string passwordConfirm = textBoxConfirmPassword.Text; if (!DataValidator.IsValidUserName(userName)) { return; } if (!DataValidator.IsValidFullName(fullName)) { return; } if (!DataValidator.IsValidPassword(password, passwordConfirm)) { return; } bool isProvinceAdmin = _configs.TypeUser == TypeUser.Admin; if (isProvinceAdmin && comboBoxProvince.SelectedItem == null) { return; } (string hashPassword, string salt) = PwdUtils.GetSaltyPassword(password); // create new super admin User newUser = new User { DateCreation = DateTime.Now, FullName = fullName, Password = hashPassword, Salt = salt, Enabled = true, Name = userName, Type = isProvinceAdmin ? TypeUser.Admin : TypeUser.SuperAdmin, OwnerId = 0, ProvinceId = isProvinceAdmin ? ((DisplayItem <Province>)comboBoxProvince.SelectedItem).Item.Id : 0 }; using (voteAppEntities dbContext = new voteAppEntities()) { // check if admin for the selected province doesn't already exits if (_configs.TypeUser == TypeUser.Admin) { if (dbContext.Users.Any(user => user.ProvinceId == newUser.ProvinceId)) { MessageBox.Show("Province already contain a admin, please choose another province"); // deselect selected province return; } } dbContext.Users.Add(newUser); dbContext.SaveChanges(); User = newUser; } MessageBox.Show("User added succesfully", "User added with success", MessageBoxButtons.OK, MessageBoxIcon.Information); if (_configs.TypeUser == TypeUser.SuperAdmin) { ButtonButtonOK_Click(null, null); } else { ClearControls(); } }
// ReSharper disable once InconsistentNaming private void InitUI() { // banners panelBanner.BackColor = Configurations.PartieInfo.PrimaryColor; statusStripBanner.BackColor = Configurations.PartieInfo.SecondaryColor; voteAppEntities dbContext = DbUtils.AppEntities; // init combobox province comboBoxByProvince.BeginUpdate(); // linq doesn't support init with param //comboBoxByProvince.Items.AddRange(dbContext.Provinces.OrderBy(p => p.Name).Select(p => new DisplayItem<Province>(p)).ToArray()); foreach (Province item in dbContext.Provinces.OrderBy(p => p.Name)) { comboBoxByProvince.Items.Add(new DisplayItem <Province>(item)); } comboBoxByProvince.SelectedIndexChanged -= ComboBoxByProvince_SelectedIndexChanged; // sel first item if (comboBoxByProvince.Items.Count > 0) { comboBoxByProvince.SelectedIndex = 0; } comboBoxByProvince.EndUpdate(); comboBoxByProvince.SelectedIndexChanged += ComboBoxByProvince_SelectedIndexChanged; #region ListView listViewLegislative.BeginUpdate(); listViewLegislative.Columns.Clear(); listViewLegislative.Items.Clear(); listViewLegislative.Columns.Add(new ColumnHeader() { Text = "Partido", Width = 108, }); foreach (Province province in dbContext.Provinces.OrderBy(p => p.Id)) { listViewLegislative.Columns.Add(new ColumnHeader() { Text = province.Name, Width = 108, }); } // add parties //var items = dbContext.Partidos.Select(p => new ListViewItem(p.Name) { Tag = p }).ToArray(); foreach (IGrouping <int, Vote> item in dbContext.Votes.GroupBy(v => v.idPartido)) { Partido partie = dbContext.Partidos.FirstOrDefault(p => p.Id == item.Key); if (partie == null) { continue; } ListViewItem lvi = new ListViewItem(partie.Name) { Tag = partie.Id }; foreach (IGrouping <int, Vote> vote in item.OrderBy(i => i.provinceId).GroupBy(v => v.provinceId)) { int numberOfMpPerProvine = vote.Sum(v => v.voteData) / _mpPerElectoralCircle; lvi.SubItems.Add(numberOfMpPerProvine.ToString()); } listViewLegislative.Items.Add(lvi); } listViewLegislative.EndUpdate(); #endregion #region Chart UpdateChart(); #endregion }
private void UpdateChart() { if (DbUtils.AppEntities.Votes.Any() == false) { return; } voteAppEntities dbContext = DbUtils.AppEntities; chart1.BeginInit(); Series series = chart1.Series.FirstOrDefault(); series.Points.Clear(); if (series == null) { Debug.WriteLine("NO SERIE FOUND!"); return; } Province selProvince = ((DisplayItem <Province>)comboBoxByProvince.SelectedItem).Item; // calculate top 5 partie with more MP (deputados) IGrouping <int, Vote> provinceVote = dbContext.Votes.GroupBy(v => v.provinceId).FirstOrDefault(g => g.Key == selProvince.Id); // find top five partie with more vote var topFivePartieWithMoreVote = provinceVote.GroupBy(v => v.idPartido) .Select(v => new { PartieId = v.Key, TotalVote = v.Sum(vt => vt.voteData) }) .OrderByDescending(t => t.TotalVote) .Take(5); // variante #1 double totalVotePerSelProvince = dbContext.Votes.Where(v => v.provinceId == selProvince.Id) .Sum(v => v.voteData); // variante #2 double totalMPInSelProvince = dbContext.Votes.Where(v => v.provinceId == selProvince.Id) .Sum(v => v.voteData) / _mpPerElectoralCircle; foreach (var topFivePartie in topFivePartieWithMoreVote) { Partido partie = dbContext.Partidos.First(p => p.Id == topFivePartie.PartieId); //double partieTotalVoteInSelProvince = dbContext.Votes // .Where(v => v.provinceId == selProvince.Id && v.idPartido == partie.Id) // .Sum(v => v.voteData); double partieTotalMPInProvince = dbContext.Votes .Where(v => v.provinceId == selProvince.Id && v.idPartido == partie.Id) .Sum(v => v.voteData) / totalMPInSelProvince; DataPoint dp = new DataPoint() { LegendText = partie.Name, // name displayed in legend column Label = $"{partie.Name} - {partieTotalMPInProvince / totalMPInSelProvince * Math.Pow(10, 3):00.00} %", // name display in cicle }; dp.SetValueY(topFivePartie.TotalVote); series.Points.Add(dp); } //series.Points.ad chart1.EndInit(); }
/// <summary> /// Available only for user that statistic user /// </summary> /// <param name="displayType"></param> private void UpdateListViewColumns(DisplayType displayType) { // NO VOTE IN DB! if (DbUtils.AppEntities.Votes.Any() == false) { return; } /* NOT REALLY! * if (displayType == DisplayType.None) * { * listViewGlobalStats.BeginUpdate(); * listViewGlobalStats.Items.Clear(); * listViewGlobalStats.EndUpdate(); * return; * } */ listViewGlobalStats.BeginUpdate(); listViewGlobalStats.Columns.Clear(); // ! listViewGlobalStats.Items.Clear(); listViewGlobalStats.Columns.Add("Partidos", 108, HorizontalAlignment.Center); // TODO: Keep this static! foreach (Partido partie in DbUtils.AppEntities.Partidos) { listViewGlobalStats.Items.Add(new ListViewItem(partie.Name) { Tag = partie }); } //var gfx = listViewGlobalStats.CreateGraphics(); voteAppEntities dbContext = DbUtils.AppEntities; bool displayAll = _user.Type == TypeUser.SuperAdmin || _user.Type == TypeUser.Standard; IQueryable <Region> regions = dbContext.Regions.Where(r => r.idProvince == _user.ProvinceId || displayAll); switch (displayType) { case DisplayType.Província: // init columns foreach (Province province in DbUtils.AppEntities.Provinces.OrderBy(p => p.Id)) { //var size = gfx.MeasureString(province.Name, listViewGlobalStats.Font); //var width = (int)Math.Round(size.Width + 4.5); listViewGlobalStats.Columns.Add(province.Name, 108, HorizontalAlignment.Center); } listViewGlobalStats.Columns.Add("Total", (int)Math.Round(108 * 1.5), HorizontalAlignment.Center); // add datas foreach (ListViewItem itemPartie in listViewGlobalStats.Items) { Partido partie = itemPartie.Tag as Partido; long totalSum = dbContext.Votes.Where(v => v.idPartido == partie.Id).Sum(v => v.voteData); itemPartie.SubItems.Add(totalSum.ToString()); } break; case DisplayType.Região: // add columns region foreach (Region region in regions.OrderBy(r => r.Id)) { listViewGlobalStats.Columns.Add(region.Name, 108, HorizontalAlignment.Center); } listViewGlobalStats.Columns.Add("Total", (int)Math.Round(108 * 1.5), HorizontalAlignment.Center); foreach (ListViewItem itemPartie in listViewGlobalStats.Items) { Partido partie = itemPartie.Tag as Partido; foreach (IGrouping <int, Vote> voteGroup in dbContext.Votes.Where(v => v.provinceId == _user.ProvinceId || displayAll).GroupBy(v => v.idRegion)) { int sum = voteGroup.Where(v => v.idPartido == partie.Id).OrderBy(vote => vote.idRegion).Sum(v => v.voteData); itemPartie.SubItems.Add(sum.ToString()); } itemPartie.SubItems.Add(_mapTotalVote[partie.Id].ToString()); } break; case DisplayType.Sector: foreach (Region item in regions) { foreach (Sector sector in item.sectors.OrderBy(sector => sector.Id)) { listViewGlobalStats.Columns.Add(sector.Name, 108, HorizontalAlignment.Center); } } listViewGlobalStats.Columns.Add("Total", (int)Math.Round(108 * 1.5), HorizontalAlignment.Center); //foreach (var sector in regions.Sectors.Where(sec => sec.Region.idProvince == _user.ProvinceId || displayAll).OrderBy(sector => sector.Id)) //{ // //var size = gfx.MeasureString(sector.Name, listViewGlobalStats.Font); // //var width = (int)Math.Round(size.Width + 4.5); // listViewGlobalStats.Columns.Add(sector.Name, 108, HorizontalAlignment.Center); // //listViewGlobalStats.Columns.Insert(listViewGlobalStats.Columns.Count, sector.Name); //} foreach (ListViewItem itemPartie in listViewGlobalStats.Items) { Partido partie = itemPartie.Tag as Partido; foreach (IGrouping <int, Vote> voteGroup in dbContext.Votes.Where(v => v.provinceId == _user.ProvinceId || displayAll).GroupBy(v => v.idSector)) { // voteGroup.Key == region int result = voteGroup.Where(v => v.idPartido == partie.Id).OrderBy(vote => vote.idSector).Sum(v => v.voteData); itemPartie.SubItems.Add(result.ToString()); } itemPartie.SubItems.Add(_mapTotalVote[partie.Id].ToString()); } //foreach (ListViewItem item in listViewGlobalStats.Items) //{ // var partie = (Partido)item.Tag; // var totalVote = dbContext.Votes.Where(v => v.Id == partie.Id).Sum(v => v.voteData); // item.SubItems.Add(totalVote.ToString()); //} break; case DisplayType.CE: foreach (CE ce in regions.SelectMany(s => s.sectors).SelectMany(ce => ce.CEs).OrderBy(ce => ce.Id)) { //var size = gfx.MeasureString(ce.Name, listViewGlobalStats.Font); //var width = (int)Math.Round(size.Width + 4.5); listViewGlobalStats.Columns.Add(ce.Name, 108, HorizontalAlignment.Center); //listViewGlobalStats.Columns.Insert(listViewGlobalStats.Columns.Count, ce.Name); } listViewGlobalStats.Columns.Add("Total", (int)Math.Round(108 * 1.5), HorizontalAlignment.Center); foreach (ListViewItem itemPartie in listViewGlobalStats.Items) { Partido partie = itemPartie.Tag as Partido; foreach (IGrouping <int, Vote> voteGroup in dbContext.Votes.Where(v => v.provinceId == _user.ProvinceId || displayAll).GroupBy(v => v.idCE)) { // voteGroup.Key == region int result = voteGroup.Where(v => v.idPartido == partie.Id).OrderBy(vote => vote.idCE).Sum(v => v.voteData); itemPartie.SubItems.Add(result.ToString()); } itemPartie.SubItems.Add(_mapTotalVote[partie.Id].ToString()); } break; case DisplayType.Mesa: foreach (VoteTable table in regions.SelectMany(s => s.sectors).SelectMany(ce => ce.CEs).OrderBy(ce => ce.Id).SelectMany(ce => ce.voteTables).OrderBy(vt => vt.Id)) { //var size = gfx.MeasureString(table.Name, listViewGlobalStats.Font); //var width = (int)Math.Round(size.Width + 4.5); listViewGlobalStats.Columns.Add(table.Name, 108, HorizontalAlignment.Center); //listViewGlobalStats.Columns.Insert(listViewGlobalStats.Columns.Count, table.Name); } listViewGlobalStats.Columns.Add("Total", (int)Math.Round(108 * 1.5), HorizontalAlignment.Center); foreach (ListViewItem itemPartie in listViewGlobalStats.Items) { Partido partie = itemPartie.Tag as Partido; foreach (IGrouping <int, Vote> voteGroup in dbContext.Votes.Where(v => v.provinceId == _user.ProvinceId || displayAll).GroupBy(v => v.idVoteTable)) { // voteGroup.Key == region int result = voteGroup.Where(v => v.idPartido == partie.Id).OrderBy(vote => vote.idVoteTable).Sum(v => v.voteData); itemPartie.SubItems.Add(result.ToString()); } itemPartie.SubItems.Add(_mapTotalVote[partie.Id].ToString()); } //foreach (ListViewItem item in listViewGlobalStats.Items) //{ // var partie = (Partido)item.Tag; // var totalVote = dbContext.Votes.Where(v => v.Id == partie.Id).Sum(v => v.voteData); // item.SubItems.Add(totalVote.ToString()); //} break; } listViewGlobalStats.EndUpdate(); }