Commit 71a58332 authored by Bart Boone's avatar Bart Boone 🤞🏼

Merge branch 'dev' of gitlab.chiro.be:gap/gap into dev

parents c04af720 90869540
Pipeline #1517 failed with stages
in 1 minute and 5 seconds
......@@ -40,16 +40,16 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\tools\Chiro.LoginService\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll</HintPath>
<HintPath>..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f, processorArchitecture=MSIL">
<HintPath>..\..\tools\Chiro.LoginService\packages\Unity.4.0.1\lib\net45\Microsoft.Practices.Unity.dll</HintPath>
<HintPath>..\packages\Unity.4.0.1\lib\net45\Microsoft.Practices.Unity.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f, processorArchitecture=MSIL">
<HintPath>..\..\tools\Chiro.LoginService\packages\Unity.4.0.1\lib\net45\Microsoft.Practices.Unity.Configuration.dll</HintPath>
<HintPath>..\packages\Unity.4.0.1\lib\net45\Microsoft.Practices.Unity.Configuration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.Unity.RegistrationByConvention, Version=4.0.0.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f, processorArchitecture=MSIL">
<HintPath>..\..\tools\Chiro.LoginService\packages\Unity.4.0.1\lib\net45\Microsoft.Practices.Unity.RegistrationByConvention.dll</HintPath>
<HintPath>..\packages\Unity.4.0.1\lib\net45\Microsoft.Practices.Unity.RegistrationByConvention.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
......
......@@ -167,6 +167,14 @@ private IEnumerable<LidOverzicht> Sorteren(IEnumerable<LidOverzicht> rij, LidEig
// Bewaar gekozen filters in model, zodat de juiste items in de dropdownlijsten geselecteerd worden
// AspisZonderEmail wordt gekozen zonder dat de afdeling geselecteerd is, maar die afdelingID moeten we dus ook nog meenemen.
if (ledenLijst == LidInfoModel.SpecialeLedenLijst.AspisZonderEmail)
{
afdelingID = (from afd in model.AfdelingsInfoDictionary
where afd.Value.OfficieleAfdelingID == (int)NationaleAfdeling.Aspis
select afd.Value.AfdelingID).FirstOrDefault();
}
model.AfdelingID = afdelingID;
model.FunctieID = functieID;
model.SpecialeLijst = ledenLijst;
......@@ -192,6 +200,8 @@ private IEnumerable<LidOverzicht> Sorteren(IEnumerable<LidOverzicht> rij, LidEig
Resources.LijstLeidingZonderEmail);
model.SpecialeLijsten.Add(LidInfoModel.SpecialeLedenLijst.LedenMetVerdachteEmail,
Resources.LijstLedenMetVerdachteEmail);
model.SpecialeLijsten.Add(LidInfoModel.SpecialeLedenLijst.AspisZonderEmail,
Resources.LijstAspisZonderEmail);
model.SpecialeLijsten.Add(
LidInfoModel.SpecialeLedenLijst.Alles,
Resources.LijstAlles);
......@@ -248,19 +258,19 @@ private IEnumerable<LidOverzicht> Sorteren(IEnumerable<LidOverzicht> rij, LidEig
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 =
{
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 =
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
};
HeeftEmailAdres = (ledenLijst == LidInfoModel.SpecialeLedenLijst.LeidingZonderEmail || ledenLijst == LidInfoModel.SpecialeLedenLijst.AspisZonderEmail) ? (bool?)false : null,
HeeftVerdachtEmailAdres = (ledenLijst == LidInfoModel.SpecialeLedenLijst.LedenMetVerdachteEmail) ? (bool?)true : null,
LidType = (ledenLijst == LidInfoModel.SpecialeLedenLijst.LeidingZonderEmail) ? LidType.Leiding : LidType.Alles
};
}
/// <summary>
......@@ -450,7 +460,7 @@ private ActionResult ToepassenOpSelectie(LidInfoModel model, int groepID)
new { groepID });
case 2:
GelieerdePersonenUitschrijven(model.SelectieGelieerdePersoonIDs, groepID, Resources.LedenUitgeschreven);
return RedirectToAction("Index", new {groepID});
return RedirectToAction("Index", new { groepID });
case 3:
return AfdelingenBewerken(model.SelectieGelieerdePersoonIDs, groepID);
case 4:
......@@ -488,15 +498,15 @@ public ActionResult Download([RouteValue]int id, [QueryStringValue]int afdelingI
if (id == 0)
{
var gwj = VeelGebruikt.GroepsWerkJaarOphalen(groepID);
werkJaarInfo = new WerkJaarInfo {WerkJaar = gwj.WerkJaar, ID = gwj.WerkJaarID};
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();
where wj.ID == id
select wj).FirstOrDefault();
groepsWerkJaarID = id;
}
......@@ -514,7 +524,7 @@ public ActionResult Download([RouteValue]int id, [QueryStringValue]int afdelingI
const string bestandsNaam = "leden.xlsx";
var pkg = GapExcelManip.LidExcelDocument(leden, alleAfdelingen);
return new ExcelResult(pkg, bestandsNaam);
}
......@@ -564,7 +574,7 @@ public JsonResult AfdelingBewerken(int lidID, int groepID)
else
{
model.Titel = String.Format(Resources.AfdelingenAanpassen, model.Info.VolledigeNaam);
return Json(model,JsonRequestBehavior.AllowGet);
return Json(model, JsonRequestBehavior.AllowGet);
}
}
......@@ -675,20 +685,20 @@ public ActionResult LoonVerliesVerzekeren(int groepID, int id)
[HandleError]
public ActionResult LoonVerliesVerzekeren(BevestigingsModel model, int groepID, int id)
{
try
try
{
ServiceHelper.CallService<ILedenService, int>(svc => svc.LoonVerliesVerzekeren(id));
TempData["succes"] = Resources.WijzigingenOpgeslagenFeedback;
TempData["succes"] = Resources.WijzigingenOpgeslagenFeedback;
}
catch (FaultException<FoutNummerFault> ex)
catch (FaultException<FoutNummerFault> ex)
{
switch (ex.Detail.FoutNummer)
switch (ex.Detail.FoutNummer)
{
case FoutNummer.GroepInactief:
TempData["fout"] = String.Format(Resources.GroepInactief);
break;
case FoutNummer.ChronologieFout:
var url = Url.Action("Index","JaarOvergang");
var url = Url.Action("Index", "JaarOvergang");
var werkJaar = VeelGebruikt.GroepsWerkJaarOphalen(groepID).WerkJaar;
TempData["fout"] = String.Format(Resources.WerkJaarInOvergang, werkJaar + 1, werkJaar + 2, url);
break;
......@@ -696,7 +706,7 @@ public ActionResult LoonVerliesVerzekeren(BevestigingsModel model, int groepID,
throw;
}
}
catch (FaultException<BestaatAlFault<String>>)
catch (FaultException<BestaatAlFault<String>>)
{
TempData["fout"] = String.Format(Resources.VerzekeringBestaatAl);
}
......@@ -713,7 +723,7 @@ public ActionResult ZelfFunctiesToekennen(int groepID)
{
return RedirectToAction("Lijst", new { id = 0 });
}
return RedirectToAction("FunctiesToekennen", new {id = lidId.Value});
return RedirectToAction("FunctiesToekennen", new { id = lidId.Value });
}
/// <summary>
......
......@@ -25,8 +25,8 @@ public class LidInfoModel : LedenLijstModel
{
public enum SpecialeLedenLijst
{
Geen, Alles, Probeerleden, VerjaardagsLijst, OntbrekendAdres, OntbrekendTelefoonNummer, LeidingZonderEmail, LedenMetVerdachteEmail
}
Geen, Alles, Probeerleden, VerjaardagsLijst, OntbrekendAdres, OntbrekendTelefoonNummer, LeidingZonderEmail, LedenMetVerdachteEmail, AspisZonderEmail
}
public LidInfoModel()
{
......
......@@ -423,4 +423,7 @@ Je kunt dit nog steeds doen door onder 'leden' te klikken op het vorige werkjaar
<data name="LijstLedenMetVerdachteEmail" xml:space="preserve">
<value>Leden met verdacht mailadres</value>
</data>
<data name="LijstAspisZonderEmail" xml:space="preserve">
<value>Aspi's zonder mailadres</value>
</data>
</root>
\ No newline at end of file
......@@ -19,7 +19,7 @@ namespace Chiro.Gap.WebApp.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class Resources {
......@@ -618,6 +618,15 @@ public class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Aspi&apos;s zonder mailadres.
/// </summary>
public static string LijstAspisZonderEmail {
get {
return ResourceManager.GetString("LijstAspisZonderEmail", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Leden met verdacht mailadres.
/// </summary>
......
......@@ -543,7 +543,28 @@ public Lid NieuwInschrijven(LidVoorstel voorstelLid, bool isJaarOvergang)
}
else
{
throw new FoutNummerException(foutNummer.Value, Resources.LidProbleem);
// OPM: hierboven staat dat al de rest in client side validation zit, maar dat lijkt al zeker op n plaats niet te kloppen.
// Als je een lid zonder mailadres leiding wilt maken, krijg je een foutmelding met de tekst 'Algemeen probleem' (zie #5430).
// De regels hieronder fiksen dat, maar het is misschien geen goede manier om dat hier en op deze manier aan te pakken.
string boodschap;
switch (foutNummer.Value)
{
case FoutNummer.LidTypeVerkeerd:
boodschap = Resources.OngeldigLidType;
break;
case FoutNummer.EMailVerplicht:
boodschap = Resources.EMailVerplicht;
break;
case FoutNummer.AdresOntbreekt:
boodschap = Resources.AdresVerplicht;
break;
default:
boodschap = Resources.LidProbleem;
break;
}
throw new FoutNummerException(foutNummer.Value, boodschap);
}
}
......@@ -916,8 +937,8 @@ public bool IsAangesloten(Lid lid)
// TODO: Dit lijkt te hard op de functie hierboven.
var aangeslotenGelieerdePersonen = (from gp in lid.GelieerdePersoon.Persoon.GelieerdePersoon
where gp.Lid.Any(l2 => l2.GroepsWerkJaar.WerkJaar == lid.GroepsWerkJaar.WerkJaar && l2.IsAangesloten)
select gp);
where gp.Lid.Any(l2 => l2.GroepsWerkJaar.WerkJaar == lid.GroepsWerkJaar.WerkJaar && l2.IsAangesloten)
select gp);
return aangeslotenGelieerdePersonen.FirstOrDefault() != null;
}
......@@ -934,16 +955,16 @@ where gp.Lid.Any(l2 => l2.GroepsWerkJaar.WerkJaar == lid.GroepsWerkJaar.WerkJaar
public Lid[] AanTeSluitenLedenOphalen(IQueryable<Lid> lidQueryable, int werkjaar, DateTime vandaag, int? limit)
{
var query = (from l in lidQueryable
where
// maak memberships voor niet-aangesloten leden
!l.IsAangesloten &&
// maak enkel memberships voor huidig werkjaar
l.GroepsWerkJaar.WerkJaar == werkjaar &&
// actieve leden waarvan de instapperiode voorbij is
l.EindeInstapPeriode < vandaag && !l.NonActief &&
// enkel als de groep nog actief was wanneer instapperiode verviel (#4528)
(l.GroepsWerkJaar.Groep.StopDatum == null || l.GroepsWerkJaar.Groep.StopDatum > l.EindeInstapPeriode)
select l);
where
// maak memberships voor niet-aangesloten leden
!l.IsAangesloten &&
// maak enkel memberships voor huidig werkjaar
l.GroepsWerkJaar.WerkJaar == werkjaar &&
// actieve leden waarvan de instapperiode voorbij is
l.EindeInstapPeriode < vandaag && !l.NonActief &&
// enkel als de groep nog actief was wanneer instapperiode verviel (#4528)
(l.GroepsWerkJaar.Groep.StopDatum == null || l.GroepsWerkJaar.Groep.StopDatum > l.EindeInstapPeriode)
select l);
if (limit.HasValue)
{
query = query.Take(limit.Value);
......@@ -958,16 +979,16 @@ public Lid[] AanTeSluitenLedenOphalen(IQueryable<Lid> lidQueryable, int werkjaar
// met IsAangesloten = true. Dan worden ze in de toekomst niet iedere keer opnieuw bekeken.
// TODO: Fix issue #4966
return (from lid in nietAangeslotenLeden
// Als er al betaald is voor het membership, dan gaat het membership niet opnieuw naar CiviCRM, zodat in
// het membership de aanvrager dezelfde blijft als de betaler.
where !IsBetalendAangesloten(lid)
// Als deze aansluiting gratis is, en het lid is al ergens anders aangesloten, dan moet er niets meer
// gebeuren aan het membership in CiviCRM.
where !GratisAansluiting(lid) || !IsAangesloten(lid)
// Als de groep al een werkjaar heeft dat recenter is dan dat van het lid, dan sluiten we het lid niet
// meer aan in het oude werkjaar.
where IsVanHuidigWerkjaar(lid)
select lid).ToArray();
// Als er al betaald is voor het membership, dan gaat het membership niet opnieuw naar CiviCRM, zodat in
// het membership de aanvrager dezelfde blijft als de betaler.
where !IsBetalendAangesloten(lid)
// Als deze aansluiting gratis is, en het lid is al ergens anders aangesloten, dan moet er niets meer
// gebeuren aan het membership in CiviCRM.
where !GratisAansluiting(lid) || !IsAangesloten(lid)
// Als de groep al een werkjaar heeft dat recenter is dan dat van het lid, dan sluiten we het lid niet
// meer aan in het oude werkjaar.
where IsVanHuidigWerkjaar(lid)
select lid).ToArray();
}
}
}
......@@ -13,9 +13,6 @@
<alias alias="PerServiceHostBase" type="Chiro.Cdf.UnityWcfExtensions.UnityServiceHostBaseLifetimeManager, Chiro.Cdf.UnityWcfExtensions" />
<container>
<register type="Chiro.CiviCrm.ClientInterfaces.ICiviCrmClient, Chiro.CiviCrm.ClientInterfaces" mapTo="Chiro.CiviCrm.Client.CiviCrmClient, Chiro.CiviCrm.Client">
<lifetime type="PerOperationContext" />
</register>
<register type="Chiro.Gap.Log.IMiniLog, Chiro.Gap.Log" mapTo="Chiro.Gap.Log.MiniLog, Chiro.Gap.Log">
<lifetime type="PerOperationContext" />
</register>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment