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 }));
        }
示例#2
0
        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 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 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));
        }
        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
            }
        }