public ActionResult FunctiesToekennen(LidFunctiesModel model, int id, int groepID) { // TODO (#1036): Dit moet een atomaire operatie zijn, om concurrencyproblemen te vermijden. try { ServiceHelper.CallService <ILedenService>(l => l.FunctiesVervangen(id, model.FunctieIDs)); VeelGebruikt.FunctieProblemenResetten(groepID); TempData["succes"] = Resources.WijzigingenOpgeslagenFeedback; } catch (FaultException <FoutNummerFault> ex) { var lidInfo = ServiceHelper.CallService <ILedenService, PersoonLidInfo>(svc => svc.DetailsOphalen(id)); string naam = lidInfo.PersoonDetail.VolledigeNaam; string persoonlijk = lidInfo.PersoonDetail.Geslacht == GeslachtsType.Vrouw ? "haar" : "hem"; string bezittelijk = lidInfo.PersoonDetail.Geslacht == GeslachtsType.Vrouw ? "haar" : "zijn"; switch (ex.Detail.FoutNummer) { case FoutNummer.EMailVerplicht: TempData["fout"] = String.Format(Resources.EmailVoorContactOntbreekt, naam, persoonlijk); break; case FoutNummer.ContactMoetNieuwsBriefKrijgen: TempData["fout"] = String.Format(Resources.ContactMoetNieuwsBriefKrijgen, naam, bezittelijk); break; default: throw; } } return(RedirectToAction("Bewerken", "Personen", new { groepID, id = model.Persoon.GelieerdePersoonID })); }
public ActionResult PlaatsBewerken(int groepID, int id, UitstapPlaatsBewerkenModel model) { // Als het adres buitenlands is, neem dan de woonplaats over uit het // vrij in te vullen veld. if (String.Compare(model.Land, Properties.Resources.Belgie, true) != 0) { model.WoonPlaatsNaam = model.WoonPlaatsBuitenLand; } try { // De service zal model.NieuwAdres.ID negeren; dit wordt // steeds opnieuw opgezocht. Adressen worden nooit // gewijzigd, enkel bijgemaakt (en eventueel verwijderd.) ServiceHelper.CallService <IUitstappenService>(l => l.PlaatsBewaren(id, model.Uitstap.PlaatsNaam, model.Uitstap.Adres)); VeelGebruikt.BivakStatusResetten(groepID); return(RedirectToAction("Bekijken", new { groepID, id })); } catch (FaultException <OngeldigObjectFault> ex) { BaseModelInit(model, groepID); new ModelStateWrapper(ModelState).BerichtenToevoegen(ex.Detail, String.Empty); model.BeschikbareWoonPlaatsen = VeelGebruikt.WoonPlaatsenOphalen(model.PostNr); model.AlleLanden = VeelGebruikt.LandenOphalen(); model.Titel = model.Uitstap.Naam; return(View(model)); } }
/// <summary> /// Stelt de deelnemer met ID <paramref name="id"/> in als contact voor de uitstap waaraan /// hij deelneemt. /// </summary> /// <param name="groepID">ID van groep die momenteel actief is</param> /// <param name="id"></param> /// <returns>Redirect naar overzicht uitstap</returns> public ActionResult ContactInstellen(int groepID, int id) { int uitstapID = ServiceHelper.CallService <IUitstappenService, int>(svc => svc.ContactInstellen(id)); VeelGebruikt.BivakStatusResetten(groepID); return(RedirectToAction("Bekijken", new { id = uitstapID })); }
public ActionResult AdresBewerken(int groepID) { var model = new GroepsAdresModel(); BaseModelInit(model, groepID); model.Adres = ServiceHelper.CallService <IGroepenService, GroepDetail>(svc => svc.DetailOphalen(groepID)).Adres ?? new AdresInfo { LandNaam = Properties.Resources.Belgie }; // Als het adres buitenlands is, dan moeten we de woonplaats nog eens overnemen in // WoonPlaatsBuitenland. Dat is nodig voor de AdresBewerkenControl, die een beetje // raar ineen zit. if (String.Compare(model.Adres.LandNaam, Properties.Resources.Belgie, StringComparison.OrdinalIgnoreCase) != 0) { model.WoonPlaatsBuitenLand = model.Adres.WoonPlaatsNaam; } model.Titel = Properties.Resources.AdresLokalen; model.AlleLanden = VeelGebruikt.LandenOphalen(); model.BeschikbareWoonPlaatsen = VeelGebruikt.WoonPlaatsenOphalen(model.Adres.PostNr); return(View(model)); }
public ActionResult PlaatsBewerken(int groepID, int id) { var model = new UitstapPlaatsBewerkenModel(); BaseModelInit(model, groepID); model.Uitstap = ServiceHelper.CallService <IUitstappenService, UitstapOverzicht>(svc => svc.DetailsOphalen(id)); if (model.Uitstap.Adres == null) { model.Uitstap.Adres = new AdresInfo { LandNaam = Properties.Resources.Belgie }; } // Als het adres buitenlands is, dan moeten we de woonplaats nog eens overnemen in // WoonPlaatsBuitenland. Dat is nodig voor de AdresBewerkenControl, die een beetje // raar ineen zit. if (String.Compare(model.Uitstap.Adres.LandNaam, Properties.Resources.Belgie, true) != 0) { model.WoonPlaatsBuitenLand = model.Uitstap.Adres.WoonPlaatsNaam; } model.Titel = model.Uitstap.Naam; model.AlleLanden = VeelGebruikt.LandenOphalen(); model.BeschikbareWoonPlaatsen = VeelGebruikt.WoonPlaatsenOphalen(model.Uitstap.Adres.PostNr); return(View(model)); }
public ActionResult AdresBewerken(int groepID, GroepsAdresModel model) { // Als het adres buitenlands is, neem dan de woonplaats over uit het // vrij in te vullen veld. if (String.Compare(model.Land, Properties.Resources.Belgie, StringComparison.OrdinalIgnoreCase) != 0) { model.WoonPlaatsNaam = model.WoonPlaatsBuitenLand; } try { // De service zal model.Adres.ID negeren; dit wordt // steeds opnieuw opgezocht. Adressen worden nooit // gewijzigd, enkel bijgemaakt (en eventueel verwijderd.) ServiceHelper.CallService <IGroepenService>(l => l.AdresInstellen(groepID, model.Adres)); return(RedirectToAction("Index")); } catch (FaultException <OngeldigObjectFault> ex) { BaseModelInit(model, groepID); new ModelStateWrapper(ModelState).BerichtenToevoegen(ex.Detail, String.Empty); model.BeschikbareWoonPlaatsen = VeelGebruikt.WoonPlaatsenOphalen(model.PostNr); model.AlleLanden = VeelGebruikt.LandenOphalen(); model.Titel = Properties.Resources.AdresLokalen; return(View(model)); } }
public ActionResult LoonVerliesVerzekeren(BevestigingsModel model, int groepID, int id) { try { ServiceHelper.CallService <ILedenService, int>(svc => svc.LoonVerliesVerzekeren(id)); TempData["succes"] = Resources.WijzigingenOpgeslagenFeedback; } catch (FaultException <FoutNummerFault> ex) { switch (ex.Detail.FoutNummer) { case FoutNummer.GroepInactief: TempData["fout"] = String.Format(Resources.GroepInactief); break; case FoutNummer.ChronologieFout: var url = Url.Action("Index", "JaarOvergang"); var werkJaar = VeelGebruikt.GroepsWerkJaarOphalen(groepID).WerkJaar; TempData["fout"] = String.Format(Resources.WerkJaarInOvergang, werkJaar + 1, werkJaar + 2, url); break; default: throw; } } catch (FaultException <BestaatAlFault <String> > ) { TempData["fout"] = String.Format(Resources.VerzekeringBestaatAl); } // TODO (#1031): DetailsOphalen is eigenlijk overkill; we hebben enkel de volledige naam en het GelieerdePersoonID nodig. var info = ServiceHelper.CallService <ILedenService, PersoonInfo>(svc => svc.PersoonOphalen(id)); return(RedirectToAction("Bewerken", "Personen", new { id = info.GelieerdePersoonID })); }
public override ActionResult Index([DefaultParameterValue(0)] int dummyint) { ActionResult r; try { if (VeelGebruikt.UniekeGroepGav(User.Identity.Name) != 0) { // Redirect naar personenlijst van gevraagde groep; r = RedirectToAction("Index", new { Controller = "Handleiding", groepID = VeelGebruikt.UniekeGroepGav(User.Identity.Name) }); } else { var model = new GavModel(); BaseModelInit(model, null); // null: nog geen groep gekozen model.Titel = "Kies je Chirogroep"; // Als we hier crashen, kill dan de backend eens, zodat die wordt herstart. model.GroepenLijst = ServiceHelper.CallService <IGroepenService, IEnumerable <GroepInfo> > (g => g.MijnGroepenOphalen()); r = View("Index", model); } } catch (FaultException <FoutNummerFault> ex) { r = RedirectToAction(ex.Detail.FoutNummer == FoutNummer.GeenDatabaseVerbinding ? "GeenVerbinding" : "Index", "Error"); } return(r); }
public JsonResult WoonPlaatsenOphalen(int postNummer) { var resultaat = (from g in VeelGebruikt.WoonPlaatsenOphalen() where g.PostNummer == postNummer orderby g.Naam select g); return(Json(resultaat, JsonRequestBehavior.AllowGet)); }
public ActionResult TerugDraaien(MasterViewModel model, int groepID) { BaseModelInit(model, groepID); ServiceHelper.CallService <IGroepenService>( svc => svc.JaarOvergangTerugDraaien(VeelGebruikt.GroepsWerkJaarOphalen(groepID).WerkJaarID)); // Clear cache voor groep. VeelGebruikt.AllesResetten(groepID); return(RedirectToAction("Index", "Leden", new { groepID })); }
public ActionResult PostNrVoorstellen(string gemeente) { var tags = VeelGebruikt.WoonPlaatsenOphalen().Where(x => x.Naam.Equals(gemeente, StringComparison.CurrentCultureIgnoreCase)); // Select the tags that match the query, and get the // number or tags specified by the limit. var retValue = tags .Select(r => r.PostNummer).FirstOrDefault(); // Return the result set as JSON return(Json(retValue)); }
public override ActionResult Index(int groepID) { var gwj = VeelGebruikt.GroepsWerkJaarOphalen(groepID); var werkjaarID = gwj.WerkJaarID; var model = new GroepsInstellingenModel { Titel = Properties.Resources.GroepsInstellingenTitel, Detail = ServiceHelper.CallService <IGroepenService, GroepDetail>(svc => svc.DetailOphalen(groepID)), NonActieveAfdelingen = ServiceHelper.CallService <IGroepenService, List <AfdelingInfo> >( svc => svc.OngebruikteAfdelingenOphalen(werkjaarID)), IsLive = VeelGebruikt.IsLive() }; BaseModelInit(model, groepID); return(View(model)); }
public JsonResult TypeToggle(int id, int groepID) { var nieuwLidId = 0; // TODO (#1812): Feedback van callbackfunctie standaardiseren. try { nieuwLidId = ServiceHelper.CallService <ILedenService, int>(svc => svc.TypeToggle(id)); VeelGebruikt.LedenProblemenResetten(groepID); VeelGebruikt.FunctieProblemenResetten(groepID); } catch (FaultException <FoutNummerFault> ex) { return(Json("{\"fout\" : \"" + ex.Message + "\"}")); // moet met strip tags?? } return(Json("{ \"succes\" : \"" + nieuwLidId + "\"}")); }
public ActionResult GemeentesVoorstellen(String q, int limit) { if (limit == 0) { limit = Settings.Default.AutoSuggestieStandaardLimiet; } var gemeenteLijst = VeelGebruikt.WoonPlaatsenOphalen(); var tags = (from g in gemeenteLijst orderby g.Naam select new { Tag = g.Naam }) .Where(x => x.Tag.StartsWith(q, StringComparison.CurrentCultureIgnoreCase)) .Distinct() .Take(limit) .ToList(); // Return the result set as JSON return(Json(tags)); }
public ActionResult Download([RouteValue] int id, [QueryStringValue] int afdelingID, [QueryStringValue] int functieID, [RouteValue] int groepID, [QueryStringValue] LidInfoModel.SpecialeLedenLijst ledenLijst, [QueryStringValue] LidEigenschap sortering) { WerkJaarInfo werkJaarInfo; int groepsWerkJaarID; // Als geen groepswerkjaar gegeven is: haal recentste op if (id == 0) { var gwj = VeelGebruikt.GroepsWerkJaarOphalen(groepID); werkJaarInfo = new WerkJaarInfo { WerkJaar = gwj.WerkJaar, ID = gwj.WerkJaarID }; groepsWerkJaarID = werkJaarInfo.ID; } else { var gwjs = ServiceHelper.CallService <IGroepenService, IEnumerable <WerkJaarInfo> >(svc => svc.WerkJarenOphalen(groepID)); werkJaarInfo = (from wj in gwjs where wj.ID == id select wj).FirstOrDefault(); groepsWerkJaarID = id; } // Haal de op te lijsten leden op; de filter wordt bepaald uit de method parameters. var leden = ServiceHelper.CallService <ILedenService, IList <PersoonLidInfo> >( svc => svc.LijstZoekenPersoonLidInfo( FilterMaken(afdelingID, functieID, ledenLijst, groepsWerkJaarID))); // Alle afdelingen is eigenlijk overkill. De actieve zou genoeg zijn. Maar meestal // zal daar niet zo' n verschil opzitten. var alleAfdelingen = ServiceHelper.CallService <IGroepenService, IList <AfdelingInfo> >( svc => svc.AlleAfdelingenOphalen(groepID)); const string bestandsNaam = "leden.xlsx"; var pkg = GapExcelManip.LidExcelDocument(leden, alleAfdelingen); return(new ExcelResult(pkg, bestandsNaam)); }
public ActionResult NaamWijzigen(GroepInfoModel model, int groepID) { BaseModelInit(model, groepID); try { ServiceHelper.CallService <IGroepenService>(e => e.Bewaren(model.Info)); TempData["succes"] = Properties.Resources.WijzigingenOpgeslagenFeedback; // Aangemaakt om de gecachte naam te kunnen leegmaken. Zie bug #1270 VeelGebruikt.GroepsWerkJaarResetten(groepID); return(RedirectToAction("Index")); } catch (FaultException <FoutNummerFault> ex) { ModelState.AddModelError("fout", ex.Detail.Bericht); model.Titel = "Groepsnaam wijzigen"; return(View("NaamWijzigen", model)); } }
public ActionResult Nieuw(UitstapModel model, int groepID) { var validator = new PeriodeValidator(); if (!validator.Valideer(model.Uitstap)) { ModelState.AddModelError("Uitstap.DatumVan", string.Format(Properties.Resources.VanTotUitstap)); ModelState.AddModelError("Uitstap.DatumTot", string.Format(Properties.Resources.VanTotUitstap)); } BaseModelInit(model, groepID); model.Titel = Properties.Resources.NieuweUitstap; if (ModelState.IsValid) { int uitstapID = ServiceHelper.CallService <IUitstappenService, int>(svc => svc.Bewaren(groepID, model.Uitstap)); VeelGebruikt.BivakStatusResetten(groepID); return(RedirectToAction("Bekijken", new { groepID, id = uitstapID })); } return(View("Bewerken", model)); }
/// <summary> /// Schrijft via de backend de gelieerde personen met gegeven <paramref name="gelieerdePersoonIDs"/> uit /// uit de groep met gegeven <paramref name="groepID"/>. /// </summary> /// <param name="gelieerdePersoonIDs">ID's uit te schrijven gelieerde personen</param> /// <param name="groepID">ID van groep waarvoor uit te schrijven</param> /// <param name="succesboodschap">Feedback die gegeven zal worden bij succes</param> protected void GelieerdePersonenUitschrijven(IList <int> gelieerdePersoonIDs, int groepID, string succesboodschap) { // Ik vind het een beetje vreemd dat het succesbericht hier een parameter is. var fouten = String.Empty; // TODO (#1035): fouten opvangen ServiceHelper.CallService <ILedenService>(l => l.Uitschrijven(gelieerdePersoonIDs, out fouten)); // TODO (#1035): beter manier om problemen op te vangen dan via een string if (fouten == String.Empty) { TempData["succes"] = succesboodschap; VeelGebruikt.FunctieProblemenResetten(groepID); VeelGebruikt.LedenProblemenResetten(groepID); } else { // TODO (#1035): vermijden dat output van de back-end rechtstreeks zichtbaar wordt voor de user. TempData["fout"] = fouten; } }
public ActionResult Bewerken(UitstapModel model, int groepID, int id) { var validator = new PeriodeValidator(); if (!validator.Valideer(model.Uitstap)) { ModelState.AddModelError("Uitstap.DatumVan", string.Format(Properties.Resources.VanTotUitstap)); ModelState.AddModelError("Uitstap.DatumTot", string.Format(Properties.Resources.VanTotUitstap)); } BaseModelInit(model, groepID); // neem uitstapID over uit url, want ik denk dat daarvoor geen field is voorzien. model.Uitstap.ID = id; model.Titel = model.Uitstap.Naam; if (ModelState.IsValid) { var uitstapID = ServiceHelper.CallService <IUitstappenService, int>(svc => svc.Bewaren(groepID, model.Uitstap)); VeelGebruikt.BivakStatusResetten(groepID); return(RedirectToAction("Bekijken", new { groepID, id = uitstapID })); } return(View("Bewerken", model)); }
public ActionResult LedenproblemenHertellen(int groepID) { VeelGebruikt.LedenProblemenResetten(groepID); return(RedirectToAction("Index", groepID)); }
protected void BaseModelInit(MasterViewModel model, int?groepID) { // Werken we op test of live? string login = User == null ? null : User.Identity.Name; model.IsLive = VeelGebruikt.IsLive(); model.DeveloperMode = Authenticator.WieBenIk().DeveloperMode; int adnr = Authenticator.WieBenIk().AdNr; model.Ik = VeelGebruikt.GebruikersDetail(adnr); if (!groepID.HasValue) { // De Gekozen groep is nog niet gekend, zet defaults model.GroepsNaam = Resources.GroepsnaamDefault; model.Plaats = Resources.GroepPlaatsDefault; model.StamNummer = Resources.StamNrDefault; model.MeerdereGroepen = false; // model.GroepsCategorieen = new List<SelectListItem>(); } else { #region gekozen groep en werkJaar var gwjDetail = VeelGebruikt.GroepsWerkJaarOphalen((int)groepID); model.GroepsNaam = gwjDetail.GroepNaam; model.GroepsNiveau = gwjDetail.GroepNiveau; model.Plaats = gwjDetail.GroepPlaats; model.StamNummer = gwjDetail.GroepCode; model.GroepID = gwjDetail.GroepID; model.HuidigWerkJaar = gwjDetail.WerkJaar; model.WerkJaarStatus = gwjDetail.Status; #endregion #region GAV over meerdere groepen? // Als UniekeGroepGav een waarde heeft, is er maar één groep. Bij 0 zijn er meerdere. model.MeerdereGroepen = (VeelGebruikt.UniekeGroepGav(login) == 0); #endregion #region Mededelingen // Eerst algemene mededelingen if (gwjDetail.Status == WerkJaarStatus.InOvergang) { var url = Url.Action("Index", "JaarOvergang"); model.Mededelingen.Add(new Mededeling { Type = MededelingsType.Probleem, Info = String.Format( Resources.WerkJaarInOvergang, gwjDetail.WerkJaar + 1, gwjDetail.WerkJaar + 2, url) }); } var bivakstatus = VeelGebruikt.BivakStatusHuidigWerkjaarOphalen((int)groepID); VoegBivakStatusMededelingenToe(bivakstatus, model.Mededelingen); // Problemen opvragen var functieProblemen = VeelGebruikt.FunctieProblemenOphalen(gwjDetail.GroepID); var ledenProblemen = VeelGebruikt.LedenProblemenOphalen(gwjDetail.GroepID); // Problemen vertalen naar model if (functieProblemen != null) { foreach (var p in functieProblemen) { var bekijkMetFunctieUrl = Url.Action("Functie", "Leden", new { groepsWerkJaarID = gwjDetail.WerkJaarID, id = p.ID, groepID = groepID, }); // Eerst een paar specifieke en veelvoorkomende problemen apart behandelen. if (p.MinAantal > 0 && p.EffectiefAantal == 0) { var statusToekennenUrl = Url.Action("ZelfFunctiesToekennen", "Leden", new { groepID = groepID, }); model.Mededelingen.Add(new Mededeling { Type = MededelingsType.Probleem, Info = string.Format(Resources.FunctieOntbreekt, p.Naam, p.Code, bekijkMetFunctieUrl, statusToekennenUrl) }); } else if (p.MaxAantal == 1 && p.EffectiefAantal > 1) { model.Mededelingen.Add(new Mededeling { Type = MededelingsType.Probleem, Info = string.Format(Resources.FunctieMeerdereKeren, p.Naam, p.Code, p.EffectiefAantal, bekijkMetFunctieUrl) }); } // Dan de algemene foutmeldingen else if (p.MinAantal > p.EffectiefAantal) { model.Mededelingen.Add(new Mededeling { Type = MededelingsType.Probleem, Info = string.Format(Resources.FunctieTeWeinig, p.Naam, p.Code, p.EffectiefAantal, p.MinAantal, bekijkMetFunctieUrl) }); } else if (p.EffectiefAantal > p.MaxAantal) { model.Mededelingen.Add(new Mededeling { Type = MededelingsType.Probleem, Info = string.Format(Resources.FunctieTeVeel, p.Naam, p.Code, p.EffectiefAantal, p.MinAantal, bekijkMetFunctieUrl) }); } } } if (ledenProblemen != null) { foreach (var p in ledenProblemen) { string boodschap = String.Empty; string url = String.Empty; switch (p.Probleem) { case LidProbleem.AdresOntbreekt: boodschap = Resources.LedenZonderAdres; url = Url.Action("ZonderAdres", "Leden"); break; case LidProbleem.EmailOntbreekt: boodschap = Resources.LeidingZonderEmail; url = Url.Action("LeidingZonderMail", "Leden"); break; case LidProbleem.EmailIsVerdacht: boodschap = Resources.LedenMetVerdachteEmail; url = Url.Action("LedenMetVerdachteEmail", "Leden"); break; case LidProbleem.TelefoonNummerOntbreekt: boodschap = Resources.LedenZonderTelefoonNummer; url = Url.Action("ZonderTelefoon", "Leden"); break; default: Debug.Assert(false); break; } model.Mededelingen.Add(new Mededeling { Type = MededelingsType.Probleem, Info = String.Format(boodschap, p.Aantal, url) }); } } #endregion } }
public ActionResult Stap2AfdelingsJarenVerdelen(JaarOvergangAfdelingsJaarModel model, int groepID) { // Als alles goed loopt, hebben we deze straks nodig. int vorigGwjID = ServiceHelper.CallService <IGroepenService, int>(svc => svc.RecentsteGroepsWerkJaarIDGet(groepID)); // We gebruiken de modelstate om te laten zien dat het model al dan niet geldig is. Die verificatie // gebeurt op dit moment gedeeltelijk door de backend, dus moeten we eerst de backend aanroepen. try { ServiceHelper.CallService <IGroepenService>(s => s.JaarOvergangUitvoeren(model.Afdelingen, groepID)); } catch (FaultException <FoutNummerFault> ex) { switch (ex.Detail.FoutNummer) { case FoutNummer.OngeldigeGeboorteJarenVoorAfdeling: ModelState.AddModelError("NieuwWerkjaar", Properties.Resources.OngeldigeGeboorteJarenVoorAfdeling); break; default: ModelState.AddModelError("NieuwWerkJaar", ex.Detail.Bericht); break; } } if (!ModelState.IsValid) { // Model herstellen op basis van ingevulde gegevens. BaseModelInit(model, groepID); model.NieuwWerkjaar = ServiceHelper.CallService <IGroepenService, int>(g => g.NieuwWerkJaarOphalen(groepID)); model.OfficieleAfdelingen = ServiceHelper.CallService <IGroepenService, IEnumerable <OfficieleAfdelingDetail> >( e => e.OfficieleAfdelingenOphalen()).ToArray(); var alleAfdelingen = ServiceHelper.CallService <IGroepenService, IList <AfdelingInfo> >( svc => svc.AlleAfdelingenOphalen(groepID)); // De meeste gegevens in model.Afdelingen komen mooi terug uit het form. We moeten // enkel de namen van de afdelingen terug invullen. foreach (var aj in model.Afdelingen) { aj.AfdelingNaam = (from afd in alleAfdelingen where afd.ID == aj.AfdelingID select afd.Naam).FirstOrDefault(); } return(View("Stap2AfdelingsJarenVerdelen", model)); } VeelGebruikt.AllesResetten(groepID); if (!model.LedenMeteenInschrijven) { return(RedirectToAction("Index", "Leden")); } return(RedirectToAction("Herinschrijven", "Personen", new { groepID, groepsWerkJaarID = vorigGwjID })); }
/// <summary> /// Alle landen in een json lijst. /// </summary> /// <returns>JsonResult.</returns> public JsonResult LandenVoorstellen() { List <LandInfo> landen = VeelGebruikt.LandenOphalen(); return(Json(landen, JsonRequestBehavior.AllowGet)); }