<commit_before>/*
 * Copyright 2008-2013 the GAP developers. See the NOTICE file at the 
 * top-level directory of this distribution, and at
 * https://develop.chiro.be/gap/wiki/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 System.Collections.Generic;
using System.Linq;

using System.Transactions; // NIET VERWIJDEREN!!
// als de define KIPDORP is gezet (voor publieke test/live), gebruiken we wel transacties

using AutoMapper;
using Chiro.Cdf.Poco;
using Chiro.Gap.Domain;
using Chiro.Gap.Poco.Model;
using Chiro.Gap.Poco.Model.Exceptions;
using Chiro.Gap.ServiceContracts;
using Chiro.Gap.ServiceContracts.DataContracts;
using Chiro.Gap.Services.Properties;
using Chiro.Gap.SyncInterfaces;
using Chiro.Gap.WorkerInterfaces;

namespace Chiro.Gap.Services
{
    // OPM: als je de naam van de class "GelieerdePersonenService" hier verandert, moet je ook de sectie "Services" in web.config aanpassen.

    // *BELANGRIJK*: Als het debuggen hier stopt owv een autorisatiefout, kijk dan na of de gebruiker waarmee
    // je aangemeld bent, op je lokale computer in de groep CgUsers zit.

    /// <summary>
    /// Service voor operaties op gelieerde personen
    /// </summary>
    public class GelieerdePersonenService : IGelieerdePersonenService, IDisposable
    {
        // Repositories, verantwoordelijk voor data access.

        private readonly IRepository<CommunicatieVorm> _communicatieVormRepo;
        private readonly IRepository<GelieerdePersoon> _gelieerdePersonenRepo;

        private readonly IRepository<Groep> _groepenRepo;
        private readonly IRepository<Categorie> _categorieenRepo;
        private readonly IRepository<CommunicatieType> _communicatieTypesRepo;
        private readonly IRepository<Adres> _adressenRepo;
        private readonly IRepository<PersoonsAdres> _persoonsAdressenRepo;
        private readonly IRepository<StraatNaam> _straatNamenRepo;
        private readonly IRepository<WoonPlaats> _woonPlaatsenRepo;
        private readonly IRepository<Land> _landenRepo;

        // Managers voor niet-triviale businesslogica

        private readonly IAutorisatieManager _autorisatieMgr;
        private readonly ICommunicatieVormenManager _communicatieVormenMgr;
        private readonly IGebruikersRechtenManager _gebruikersRechtenMgr;
        private readonly IGelieerdePersonenManager _gelieerdePersonenMgr;
        private readonly IAdressenManager _adressenMgr;
        private readonly IPersonenManager _personenMgr;

        // Sync-interfaces

        private readonly ICommunicatieSync _communicatieSync;
        private readonly IAdressenSync _adressenSync;

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="repositoryProvider">De repositoryprovider levert de te
        /// gebruiken context en repository op.</param>
        /// <param name="autorisatieMgr">Logica m.b.t. autorisatie</param>
        /// <param name="communicatieVormenMgr">Logica m.b.t. communicatievormen</param>
        /// <param name="gebruikersRechtenMgr">Logica m.b.t. gebruikersrechten</param>
        /// <param name="gelieerdePersonenMgr">Logica m.b.t. gelieerde personen</param>
        /// <param name="adressenManager">Logica m.b.t. adressen</param>
        /// <param name="personenManager">Logica m.b.t. personen (geeuw)</param>
        /// <param name="communicatieSync">Voor synchronisatie van communicatie met Kipadmin</param>
        /// <param name="personenSync">Voor synchronisatie van personen naar Kipadmin</param>
        /// <param name="adressenSync">Voor synchronisatie van adressen naar Kipadmin</param>
        public GelieerdePersonenService(IRepositoryProvider repositoryProvider, IAutorisatieManager autorisatieMgr,
                                        ICommunicatieVormenManager communicatieVormenMgr,
                                        IGebruikersRechtenManager gebruikersRechtenMgr,
                                        IGelieerdePersonenManager gelieerdePersonenMgr,
                                        IAdressenManager adressenManager,
                                        IPersonenManager personenManager,
                                        ICommunicatieSync communicatieSync,
                                        IPersonenSync personenSync,
                                        IAdressenSync adressenSync)
        {
            _communicatieVormRepo = repositoryProvider.RepositoryGet<CommunicatieVorm>();
            _gelieerdePersonenRepo = repositoryProvider.RepositoryGet<GelieerdePersoon>();
            repositoryProvider.RepositoryGet<GroepsWerkJaar>();
            _groepenRepo = repositoryProvider.RepositoryGet<Groep>();
            _categorieenRepo = repositoryProvider.RepositoryGet<Categorie>();
            _communicatieTypesRepo = repositoryProvider.RepositoryGet<CommunicatieType>();

            _adressenRepo = repositoryProvider.RepositoryGet<Adres>();
            _persoonsAdressenRepo = repositoryProvider.RepositoryGet<PersoonsAdres>();
            _straatNamenRepo = repositoryProvider.RepositoryGet<StraatNaam>();
            _woonPlaatsenRepo = repositoryProvider.RepositoryGet<WoonPlaats>();
            _landenRepo = repositoryProvider.RepositoryGet<Land>();

            _autorisatieMgr = autorisatieMgr;
            _communicatieVormenMgr = communicatieVormenMgr;
            _gebruikersRechtenMgr = gebruikersRechtenMgr;
            _gelieerdePersonenMgr = gelieerdePersonenMgr;
            _adressenMgr = adressenManager;
            _personenMgr = personenManager;

            _communicatieSync = communicatieSync;
            _adressenSync = adressenSync;<commit_msg>Refs #1436 ... ik had een foutje gemaakt bij het mergen.<commit_after>/*
 * Copyright 2008-2013 the GAP developers. See the NOTICE file at the 
 * top-level directory of this distribution, and at
 * https://develop.chiro.be/gap/wiki/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 System.Collections.Generic;
using System.Linq;

using System.Transactions; // NIET VERWIJDEREN!!
// als de define KIPDORP is gezet (voor publieke test/live), gebruiken we wel transacties

using AutoMapper;
using Chiro.Cdf.Poco;
using Chiro.Gap.Domain;
using Chiro.Gap.Poco.Model;
using Chiro.Gap.Poco.Model.Exceptions;
using Chiro.Gap.ServiceContracts;
using Chiro.Gap.ServiceContracts.DataContracts;
using Chiro.Gap.Services.Properties;
using Chiro.Gap.SyncInterfaces;
using Chiro.Gap.WorkerInterfaces;

namespace Chiro.Gap.Services
{
    // OPM: als je de naam van de class "GelieerdePersonenService" hier verandert, moet je ook de sectie "Services" in web.config aanpassen.

    // *BELANGRIJK*: Als het debuggen hier stopt owv een autorisatiefout, kijk dan na of de gebruiker waarmee
    // je aangemeld bent, op je lokale computer in de groep CgUsers zit.

    /// <summary>
    /// Service voor operaties op gelieerde personen
    /// </summary>
    public class GelieerdePersonenService : IGelieerdePersonenService, IDisposable
    {
        // Repositories, verantwoordelijk voor data access.

        private readonly IRepository<CommunicatieVorm> _communicatieVormRepo;
        private readonly IRepository<GelieerdePersoon> _gelieerdePersonenRepo;

        private readonly IRepository<Groep> _groepenRepo;
        private readonly IRepository<Categorie> _categorieenRepo;
        private readonly IRepository<CommunicatieType> _communicatieTypesRepo;
        private readonly IRepository<Adres> _adressenRepo;
        private readonly IRepository<PersoonsAdres> _persoonsAdressenRepo;
        private readonly IRepository<StraatNaam> _straatNamenRepo;
        private readonly IRepository<WoonPlaats> _woonPlaatsenRepo;
        private readonly IRepository<Land> _landenRepo;

        // Managers voor niet-triviale businesslogica

        private readonly IAutorisatieManager _autorisatieMgr;
        private readonly ICommunicatieVormenManager _communicatieVormenMgr;
        private readonly IGebruikersRechtenManager _gebruikersRechtenMgr;
        private readonly IGelieerdePersonenManager _gelieerdePersonenMgr;
        private readonly IAdressenManager _adressenMgr;
        private readonly IPersonenManager _personenMgr;

        // Sync-interfaces

        private readonly ICommunicatieSync _communicatieSync;
        private readonly IAdressenSync _adressenSync;
        private readonly IPersonenSync _personenSync;

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="repositoryProvider">De repositoryprovider levert de te
        /// gebruiken context en repository op.</param>
        /// <param name="autorisatieMgr">Logica m.b.t. autorisatie</param>
        /// <param name="communicatieVormenMgr">Logica m.b.t. communicatievormen</param>
        /// <param name="gebruikersRechtenMgr">Logica m.b.t. gebruikersrechten</param>
        /// <param name="gelieerdePersonenMgr">Logica m.b.t. gelieerde personen</param>
        /// <param name="adressenManager">Logica m.b.t. adressen</param>
        /// <param name="personenManager">Logica m.b.t. personen (geeuw)</param>
        /// <param name="communicatieSync">Voor synchronisatie van communicatie met Kipadmin</param>
        /// <param name="personenSync">Voor synchronisatie van personen naar Kipadmin</param>
        /// <param name="adressenSync">Voor synchronisatie van adressen naar Kipadmin</param>
        public GelieerdePersonenService(IRepositoryProvider repositoryProvider, IAutorisatieManager autorisatieMgr,
                                        ICommunicatieVormenManager communicatieVormenMgr,
                                        IGebruikersRechtenManager gebruikersRechtenMgr,
                                        IGelieerdePersonenManager gelieerdePersonenMgr,
                                        IAdressenManager adressenManager,
                                        IPersonenManager personenManager,
                                        ICommunicatieSync communicatieSync,
                                        IPersonenSync personenSync,
                                        IAdressenSync adressenSync)
        {
            _communicatieVormRepo = repositoryProvider.RepositoryGet<CommunicatieVorm>();
            _gelieerdePersonenRepo = repositoryProvider.RepositoryGet<GelieerdePersoon>();
            repositoryProvider.RepositoryGet<GroepsWerkJaar>();
            _groepenRepo = repositoryProvider.RepositoryGet<Groep>();
            _categorieenRepo = repositoryProvider.RepositoryGet<Categorie>();
            _communicatieTypesRepo = repositoryProvider.RepositoryGet<CommunicatieType>();

            _adressenRepo = repositoryProvider.RepositoryGet<Adres>();
            _persoonsAdressenRepo = repositoryProvider.RepositoryGet<PersoonsAdres>();
            _straatNamenRepo = repositoryProvider.RepositoryGet<StraatNaam>();
            _woonPlaatsenRepo = repositoryProvider.RepositoryGet<WoonPlaats>();
            _landenRepo = repositoryProvider.RepositoryGet<Land>();

            _autorisatieMgr = autorisatieMgr;
            _communicatieVormenMgr = communicatieVormenMgr;
            _gebruikersRechtenMgr = gebruikersRechtenMgr;
            _gelieerdePersonenMgr = gelieerdePersonenMgr;
            _adressenMgr = adressenManager;
            _personenMgr = personenManager;

            _communicatieSync = communicatieSync;
            _adressenSync = adressenSync;
            _personenSync = personenSync;
{'fraction_non_alphanumeric': 0.07241627367916234, 'fraction_numerical': 0.002238030533130845, 'mean_word_length': 2.9771137952956135, 'pattern_counts': {'":': 0, '<': 93, '<?xml version=': 0, '>': 93, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 16, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3520008', 'n_tokens_mistral': 3431, 'n_tokens_neox': 3479, 'n_words': 824}