// Geef een lijst weer van alle beschikbare afdelingen, waaruit de groep kan kiezen welke afdelingen ze volgend jaar zullen hebben // (ze kunnen er ook nieuwe bijmaken) // Als de groep een kadergroep is, dan slaan we de afdelingsstappen over private ActionResult Stap1AfdelingenSelecteren(int groepID) { var model = new JaarOvergangAfdelingsModel(); BaseModelInit(model, groepID); // Als we met een gewest/verbond te doen hebben, dan zijn de afdelingen niet relevant if (model.GroepsNiveau.HeeftNiveau(Niveau.KaderGroep)) { // Een 'gewone' groep krijgt eerst de mogelijkheid om zijn afdelingsjaren te // definieren, en krijgt dan de mogelijkheid om meteen voor alle leden te bevestigen // of ze opnieuw ingeschreven moeten worden of niet. // Een gewest of verbond heeft geen afdelingen, dus we kunnen deze stap gerust overslaan. // We schakelen wel direct door naar het scherm dat toelaat de in te schrijven leden // aan te vinken; voor een gewest/verbond is dat typisch niet veel werk, en // het aansluitingsgeld is toch onafhankelijk van het aantal ploegleden. var postmodel = new JaarOvergangAfdelingsJaarModel(); postmodel.LedenMeteenInschrijven = true; return(Stap2AfdelingsJarenVerdelen(postmodel, groepID)); } model.Titel = "Jaarovergang stap 1: welke afdelingen heeft je groep volgend jaar?"; model.Afdelingen = ServiceHelper.CallService <IGroepenService, IEnumerable <AfdelingInfo> >(g => g.AlleAfdelingenOphalen(groepID)); return(View("Stap1AfdelingenSelecteren", model)); }
public void Stap2AfdelingsJarenVerdelenTest() { Factory.InstantieRegistreren(_veelGebruiktMock.Object); var groepenServiceMock = new Mock <IGroepenService>(); groepenServiceMock.Setup(svc => svc.AlleAfdelingenOphalen(GROEP_ID)).Returns(new List <AfdelingInfo> { new AfdelingInfo { ID = AFDELING_ID, Naam = AFDELING_NAAM } }); var channelProviderMock = new Mock <IChannelProvider>(); channelProviderMock.Setup(mock => mock.GetChannel <IGroepenService>()).Returns(groepenServiceMock.Object); Factory.InstantieRegistreren(channelProviderMock.Object); var target = Factory.Maak <JaarOvergangController>(); var model = new JaarOvergangAfdelingsJaarModel { Afdelingen = new List <AfdelingDetail> { new AfdelingDetail { AfdelingID = 1, OfficieleAfdelingID = 1, GeboorteJaarVan = 0, // foute geboortejaren, GeboorteJaarTot = 0, // ik doe maar iets Geslacht = GeslachtsType.Gemengd } } }; // zorg ervoor dat de controller actie zodadelijk weet dat er iets mis is target.ViewData.ModelState.AddModelError("Afdelingen[0].GeboorteJaarVan", Properties.Resources.OngeldigeGeboorteJarenVoorAfdeling); var actual = target.Stap2AfdelingsJarenVerdelen(model, GROEP_ID); var actualModel = ((ViewResult)actual).ViewData.Model as JaarOvergangAfdelingsJaarModel; Assert.IsNotNull(actualModel); var afdelingDetail = actualModel.Afdelingen.FirstOrDefault(); Assert.IsNotNull(afdelingDetail); Assert.AreEqual(afdelingDetail.AfdelingNaam, AFDELING_NAAM); }
/// <summary> /// Deze actie vertrekt van de afdelingID's van de afdelingen die volgend jaar actief moeten zijn, /// en toont het scherm met de voorgestelde afdelingsjaren van volgend jaar (geboortedata, geslacht) /// </summary> /// <param name="gekozenAfdelingsIDs">ID's van de afdelingen waarvoor afdelingsjaren gedefinieerd moeten worden</param> /// <param name="groepID">ID van de groep waarin we werken</param> /// <returns>De view 'Stap2AfdelingsJarenVerdelen'</returns> private ActionResult Stap2AfdelingsJarenVerdelen(int[] gekozenAfdelingsIDs, int groepID) { var model = new JaarOvergangAfdelingsJaarModel(); BaseModelInit(model, groepID); model.Titel = "Jaarovergang stap 2: instellingen van je afdelingen"; model.NieuwWerkjaar = ServiceHelper.CallService <IGroepenService, int>(g => g.NieuwWerkJaarOphalen(groepID)); model.LedenMeteenInschrijven = true; model.OfficieleAfdelingen = ServiceHelper.CallService <IGroepenService, IEnumerable <OfficieleAfdelingDetail> >( e => e.OfficieleAfdelingenOphalen()).ToArray(); model.Afdelingen = ServiceHelper.CallService <IGroepenService, IList <AfdelingDetail> >( svc => svc.NieuweAfdelingsJarenVoorstellen(gekozenAfdelingsIDs, groepID)); // TODO extra info pagina voor jaarovergang // TODO kan validatie in de listhelper worden bijgecodeerd? return(View("Stap2AfdelingsJarenVerdelen", model)); }
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 })); }