public ActionResult Lijst( [RouteValue] int id, [QueryStringValue] int afdelingID, [QueryStringValue] int functieID, [QueryStringValue] LidInfoModel.SpecialeLedenLijst ledenLijst, [QueryStringValue] LidEigenschap sortering, [RouteValue] int groepID) { Debug.Assert(Request.Url != null); // Er wordt een nieuwe lijst opgevraagd, dus wordt deze vanaf hier bijgehouden als de lijst om terug naar te springen ClientState.VorigeLijst = Request.Url.ToString(); var model = Zoeken(id, groepID, sortering, afdelingID, functieID, ledenLijst); return(model == null?TerugNaarVorigeLijst() : View("Index", model)); }
private static LidFilter FilterMaken(int afdelingID, int functieID, LidInfoModel.SpecialeLedenLijst ledenLijst, int groepsWerkJaarID) { return(new LidFilter { GroepsWerkJaarID = groepsWerkJaarID, AfdelingID = (afdelingID == 0) ? null : (int?)afdelingID, FunctieID = (functieID == 0) ? null : (int?)functieID, ProbeerPeriodeNa = (ledenLijst == LidInfoModel.SpecialeLedenLijst.Probeerleden) ? (DateTime?)DateTime.Today : null, HeeftVoorkeurAdres = (ledenLijst == LidInfoModel.SpecialeLedenLijst.OntbrekendAdres) ? (bool?)false : null, HeeftTelefoonNummer = (ledenLijst == LidInfoModel.SpecialeLedenLijst.OntbrekendTelefoonNummer) ? (bool?)false : null, HeeftEmailAdres = (ledenLijst == LidInfoModel.SpecialeLedenLijst.LeidingZonderEmail) ? (bool?)false : null, HeeftVerdachtEmailAdres = (ledenLijst == LidInfoModel.SpecialeLedenLijst.LedenMetVerdachteEmail) ? (bool?)true : null, LidType = (ledenLijst == LidInfoModel.SpecialeLedenLijst.LeidingZonderEmail) ? LidType.Leiding : LidType.Alles }); }
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)); }
/// <summary> /// Voert een zoekopdracht uit op de leden, en plaatst het resultaat in een LidInfoModel. /// Levert normaal geen adressen op. /// </summary> /// <param name="gwjID">ID van het groepswerkjaar waarvoor een ledenlijst wordt gevraagd. /// Indien 0, het recentste groepswerkjaar van de groep met ID <paramref name="groepID"/>.</param> /// <param name="groepID">Groep waaruit de leden opgehaald moeten worden.</param> /// <param name="sortering">Bepaalt op welke eigenschap de lijst gesorteerd moet worden</param> /// <param name="afdelingID">Als verschillend van 0, worden enkel de leden uit de afdeling met /// dit AfdelingID getoond.</param> /// <param name="functieID">Als verschillend van 0, worden enkel de leden met de functie met /// dit FunctieID getoond.</param> /// <param name="ledenLijst">Hiermee kan je speciale lijsten opzoeken</param> /// <returns>Een LidInfoModel, met in member LidInfoLijst de gevonden leden. Null als de groep en groepswerkjaar niet geassocieerd zijn</returns> private LidInfoModel Zoeken( int gwjID, int groepID, LidEigenschap sortering, int afdelingID, int functieID, LidInfoModel.SpecialeLedenLijst ledenLijst) { // Het sorteren gebeurt nu in de webapp, en niet in de backend. Sorteren is immers presentatie, dus de service // moet zich daar niet mee bezig houden. // // Voor de personenlijst ligt dat anders. Als je daar een pagina opvraagt, dan is die // pagina afhankelijk van de gekozen sortering. Daarom moet het sorteren voor personen // wel door de service gebeuren. (Maar hier, bij de leden, is dat niet van toepassing.) // Als geen groepswerkjaar gegeven is: haal recentste op var groepsWerkJaarID = gwjID == 0 ? ServiceHelper.CallService <IGroepenService, int>(svc => svc.RecentsteGroepsWerkJaarIDGet(groepID)) : gwjID; var model = LijstModelInitialiseren(groepsWerkJaarID, groepID, sortering); if (model == null) // Groep en gwj matchen niet { TempData["fout"] = Resources.GroepNietBijGroepsWerKjaar; return(null); } model.KanLedenBewerken = groepsWerkJaarID == (from wj in model.WerkJaarInfos orderby wj.WerkJaar descending select wj.ID).FirstOrDefault(); // Bewaar gekozen filters in model, zodat de juiste items in de dropdownlijsten geselecteerd worden model.AfdelingID = afdelingID; model.FunctieID = functieID; model.SpecialeLijst = ledenLijst; // Bouw het lijstje met speciale lijsten op if ((model.GroepsNiveau & (Niveau.Gewest | Niveau.Verbond)) == 0) { model.SpecialeLijsten.Add( LidInfoModel.SpecialeLedenLijst.Probeerleden, Resources.LijstProbeerLeden); } model.SpecialeLijsten.Add( LidInfoModel.SpecialeLedenLijst.VerjaardagsLijst, Resources.LijstVerjaardagen); model.SpecialeLijsten.Add( LidInfoModel.SpecialeLedenLijst.OntbrekendAdres, Resources.LijstOntbrekendAdres); model.SpecialeLijsten.Add( LidInfoModel.SpecialeLedenLijst.OntbrekendTelefoonNummer, Resources.LijstOntbrekendTelefoonNummer); model.SpecialeLijsten.Add( LidInfoModel.SpecialeLedenLijst.LeidingZonderEmail, Resources.LijstLeidingZonderEmail); model.SpecialeLijsten.Add(LidInfoModel.SpecialeLedenLijst.LedenMetVerdachteEmail, Resources.LijstLedenMetVerdachteEmail); model.SpecialeLijsten.Add( LidInfoModel.SpecialeLedenLijst.Alles, Resources.LijstAlles); // Haal de op te lijsten leden op; de filter wordt bepaald uit de method parameters. model.LidInfoLijst = ServiceHelper.CallService <ILedenService, IList <LidOverzicht> >( svc => svc.LijstZoekenLidOverzicht( FilterMaken(afdelingID, functieID, ledenLijst, groepsWerkJaarID), false)); // false om geen adressen op te halen. if (functieID != 0) { // Naam van de functie opzoeken, zodat we ze kunnen invullen in de paginatitel var functieNaam = (from fi in model.FunctieInfoDictionary where fi.Key == functieID select fi).First().Value.Naam; model.Titel = String.Format(Resources.AfdelingsLijstTitel, functieNaam, model.JaartalGetoondGroepsWerkJaar, model.JaartalGetoondGroepsWerkJaar + 1); } else if (afdelingID != 0) { var af = (from a in model.AfdelingsInfoDictionary.AsQueryable() where a.Value.AfdelingID == afdelingID select a.Value).FirstOrDefault(); if (af == null) { model.Titel = String.Format( Resources.AfdelingBestondNiet, model.JaartalGetoondGroepsWerkJaar, model.JaartalGetoondGroepsWerkJaar + 1); } else { model.Titel = String.Format(Resources.AfdelingsLijstTitel, af.AfdelingNaam, model.JaartalGetoondGroepsWerkJaar, model.JaartalGetoondGroepsWerkJaar + 1); } } else { model.Titel = String.Format(Resources.LedenOverzicht, model.JaartalGetoondGroepsWerkJaar, model.JaartalGetoondGroepsWerkJaar + 1); } model.LidInfoLijst = Sorteren(model.LidInfoLijst, sortering).ToList(); return(model); }