private StemmingenListVM GetStemmingData(StemmingenListVM stemmingenlistVM) { string level = " "; string msg = " "; string title = " "; DateTime stemdatum = stemmingenlistVM.StemDatum; string wetid = stemmingenlistVM.WetID; // Date + Wetid are given, get from the database what's there already var wetten = db.Wetten.Find(wetid); if (wetten == null) { //return stemmingenlistVM; TempData["BCmessage"] = "Wet '" + wetid.Trim() + "' is onbekend..."; TempData["BCerrorlevel"] = stemmingenlistVM.MessageSection.Error; RedirectToAction("Error"); } // Determine which parties were active at that time var query1 = from p in db.Partijen join j1 in db.PartijZetels on p.PartijID equals j1.PartijID where ((j1.VanDatum <= stemdatum) && (j1.TotDatum >= stemdatum)) select new { p.PartijID, p.PartijNaam, j1.AantalZetels, j1.VanDatum, j1.TotDatum }; var actievepartijen = query1.ToList(); stemmingenlistVM.ModelOk = true; if (actievepartijen.Count == 0) { level = stemmingenlistVM.MessageSection.Error; msg = "Op de gegeven datum zijn geen partijen actief in de Tweede Kamer"; stemmingenlistVM.MessageSection.SetMessage(title, level, msg); StemObject so = new StemObject { WetID = wetten.WetID, WetNaam = wetten.WetNaam, WetLink = wetten.WetLink, WetOmschrijving = wetten.WetOmschrijving, WetType = wetten.WetType }; List <StemObject> sl = new List <StemObject>(); sl.Add(so); stemmingenlistVM.Fill(sl); stemmingenlistVM.ModelOk = false; stemmingenlistVM.ZetelsOk = false; return(stemmingenlistVM); } // Check if the active parties have exactly 150 seats in total stemmingenlistVM.ZetelsOk = true; int totalseats = 0; foreach (var activeparty in actievepartijen) { totalseats = totalseats + activeparty.AantalZetels; } if (totalseats != 150) { level = stemmingenlistVM.MessageSection.Error; msg = "Op de opgegeven datum hebben de gezamenlijke partijen " + totalseats.ToString() + " zetels i.p.v. 150. Corrigeer dit eerst!"; stemmingenlistVM.MessageSection.SetMessage(title, level, msg); stemmingenlistVM.ZetelsOk = false; } var query3 = from s in db.Stemmingen where (s.WetID == wetid) && (s.StemDatum == stemdatum) select new { PartijID = s.PartijID, StemDatum = s.StemDatum, Voor = s.Voor, Tegen = s.Tegen, Blanco = s.Blanco }; var bestaandestemmingen = query3.ToList(); var combine = from a in actievepartijen join b in bestaandestemmingen on a.PartijID equals b.PartijID into joinedList from sub in joinedList.DefaultIfEmpty() select new StemObject { StemDatum = stemdatum, WetID = wetten.WetID, WetLink = wetten.WetLink, WetNaam = wetten.WetNaam, WetType = wetten.WetType, WetOmschrijving = wetten.WetOmschrijving, PartijID = a.PartijID, PartijNaam = a.PartijNaam, PartijZetels = a.AantalZetels, Voor = sub == null ? 0 : sub.Voor, Tegen = sub == null ? 0 : sub.Tegen, Blanco = sub == null ? 0 : sub.Blanco }; List <StemObject> vmlist = combine.ToList(); stemmingenlistVM.Fill(vmlist); int tot = stemmingenlistVM.TotaalBlanco + stemmingenlistVM.TotaalVoor + stemmingenlistVM.TotaalTegen; if (tot == 0) { title = "Stemming TOEVOEGEN"; } else { title = "BESTAANDE stemming WIJZIGEN"; } if (stemmingenlistVM.ZetelsOk) { level = stemmingenlistVM.MessageSection.Info; msg = "Vul de stemgegevens in voor elke partij bij deze wet en selecteer OPSLAAN"; stemmingenlistVM.MessageSection.SetMessage(title, level, msg); } return(stemmingenlistVM); }
// GET: Stemmingen/Create/5 public ActionResult Create(string wetid, DateTime stemdatum) { StemmingenListVM stemmingenlistVM = new StemmingenListVM(); stemmingenlistVM.WetID = wetid; stemmingenlistVM.StemDatum = stemdatum; string title = "Stemming toevoegen of wijzigen"; string msg = " "; string level = " "; if (wetid == null) { TempData["BCmessage"] = "Specificeer een geldige WetID"; TempData["BCerrorlevel"] = stemmingenlistVM.MessageSection.Error; return(RedirectToAction("Error")); } Wetten wet = db.Wetten.Find(wetid); if (wet == null) { TempData["BCmessage"] = "WetID '" + wetid.Trim() + "' is niet gevonden"; TempData["BCerrorlevel"] = stemmingenlistVM.MessageSection.Error; return(RedirectToAction("Error")); } // if date not given, prompt for it if (stemdatum == DateTime.MinValue) { msg = "Specificeer de stemdatum voor deze wet"; level = stemmingenlistVM.MessageSection.Info; stemmingenlistVM.WetID = wetid; stemmingenlistVM.StemDatum = DateTime.Now; StemObject so = new StemObject { WetID = wet.WetID, WetNaam = wet.WetNaam, WetType = wet.WetType, WetLink = wet.WetLink, WetOmschrijving = wet.WetOmschrijving }; List <StemObject> sl = new List <StemObject>(); sl.Add(so); stemmingenlistVM.Fill(sl); stemmingenlistVM.MessageSection.SetMessage(title, level, msg); return(View("Create", stemmingenlistVM)); } else // Date is given, so present directly the edit screen for Stemming { stemmingenlistVM = GetStemmingData(stemmingenlistVM); if ((stemmingenlistVM.ModelOk) || (stemmingenlistVM.ZetelsOk)) { return(View("CreatEdit", stemmingenlistVM)); } else { return(View(stemmingenlistVM)); } } }