Commit 1823e02d authored by Johan Vervloet's avatar Johan Vervloet

Refs #5676 - Een method om e-mail/communicatievormen te verwijderen.

parent 5bade37d
......@@ -101,6 +101,7 @@ public enum FoutNummer
CategorieNietGekoppeld,
OvergangTeVroeg,
KoppelingLoginPersoonOntbreekt,
CommunicatieVormNietGevonden
#endregion
}
}
......@@ -40,6 +40,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CommunicatieVormModel.cs" />
<Compile Include="FoutAdModel.cs" />
<Compile Include="GroepModel.cs" />
<Compile Include="AansluitingModel.cs" />
......
/*
* Copyright 2017 Chirojeugd-Vlaanderen vzw. See the NOTICE file at the
* top-level directory of this distribution, and at
* https://gapwiki.chiro.be/copyright
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace Chiro.Gap.UpdateApi.Models
{
public class CommunicatieVormModel
{
public int AdNummer { get; set; }
public int CommunicatieTypeId { get; set; }
public string Nummer { get; set; }
}
}
\ No newline at end of file
......@@ -93,6 +93,7 @@
<ItemGroup>
<Compile Include="Bootstrapper.cs" />
<Compile Include="Modules\AansluitingModule.cs" />
<Compile Include="Modules\CommunicatieVormModule.cs" />
<Compile Include="Modules\FoutAdModule.cs" />
<Compile Include="Modules\GroepModule.cs" />
<Compile Include="Modules\PersoonModule.cs" />
......
/*
* Copyright 2017 Chirojeugd-Vlaanderen vzw. See the NOTICE file at the
* top-level directory of this distribution, and at
* https://gapwiki.chiro.be/copyright
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using Chiro.Gap.Domain;
using Chiro.Gap.Poco.Model.Exceptions;
using Chiro.Gap.UpdateApi.Models;
using Chiro.Gap.UpdateApi.Workers;
using Nancy;
using Nancy.ModelBinding;
namespace Chiro.Gap.UpdateApi.Modules
{
public class CommunicatieVormModule: NancyModule, IDisposable
{
private readonly IGapUpdater _gapUpdater;
public CommunicatieVormModule(IGapUpdater gapUpdater)
{
_gapUpdater = gapUpdater;
// curl -X DELETE -d AdNummer=xx -d CommunicatieTypeId=3 -d Nummer=blabla@example.com localhost:50673/groep
Delete["/communicatievorm"] = _ =>
{
CommunicatieVormModel model = this.Bind();
try
{
_gapUpdater.CommunicatieVormVerwijderen(model);
}
catch (FoutNummerException e)
{
if (e.FoutNummer == FoutNummer.CommunicatieVormNietGevonden)
{
return HttpStatusCode.NotFound;
}
throw;
}
return HttpStatusCode.OK;
};
}
public void Dispose()
{
_gapUpdater?.Dispose();
}
}
}
\ No newline at end of file
......@@ -594,6 +594,28 @@ public void Bijwerken(AansluitingModel model)
model.StamNummer);
}
/// <summary>
/// Verwijdert een gegeven communicatievorm.
/// </summary>
/// <param name="model">Gegevens die moeten toelaten de communicatievorm te verwijderen.</param>
public void CommunicatieVormVerwijderen(CommunicatieVormModel model)
{
var gevonden = (from cv in _communicatieVormenRepo.Select()
where cv.GelieerdePersoon.Persoon.AdNummer == model.AdNummer
&& cv.CommunicatieType.ID == model.CommunicatieTypeId
&& cv.Nummer == model.Nummer
select cv);
if (!gevonden.Any())
{
throw new FoutNummerException(FoutNummer.CommunicatieVormNietGevonden, String.Empty);
}
_communicatieVormenRepo.Delete(gevonden.ToList());
_communicatieVormenRepo.SaveChanges();
Console.WriteLine("Communicatie {0} (type {1}, AD-nr {2}) verwijderd", model.Nummer,
model.CommunicatieTypeId, model.AdNummer);
}
/// <summary>
/// Levert een lijst op van alle stamnummer-adnummer-combinaties van het huidige
/// werkjaar. Zal gebruikt worden voor monitoring. (#4326, #4268)
......
/*
* Copyright 2014-2015 the GAP developers. See the NOTICE file at the
* Copyright 2014-2015, 2017 the GAP developers. See the NOTICE file at the
* top-level directory of this distribution, and at
* https://gapwiki.chiro.be/copyright
*
......@@ -102,5 +102,11 @@ public interface IGapUpdater: IDisposable
/// </summary>
/// <param name="model">Gegevens over bij te werken werkjaar.</param>
void Bijwerken(AansluitingModel model);
/// <summary>
/// Verwijdert een gegeven communicatievorm.
/// </summary>
/// <param name="model">Gegevens die moeten toelaten de communicatievorm te verwijderen.</param>
void CommunicatieVormVerwijderen(CommunicatieVormModel model);
}
}
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