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); }
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 } }