Beispiel #1
0
        // 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);
        }
Beispiel #3
0
        /// <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));
        }
Beispiel #4
0
        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 }));
        }