Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
90.54% covered (success)
90.54%
67 / 74
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
TreatmentCloner
90.54% covered (success)
90.54%
67 / 74
0.00% covered (danger)
0.00%
0 / 1
17.24
0.00% covered (danger)
0.00%
0 / 1
 cloneReferentForCollectivity
90.54% covered (success)
90.54%
67 / 74
0.00% covered (danger)
0.00%
0 / 1
17.24
1<?php
2
3/**
4 * This file is part of the MADIS - RGPD Management application.
5 *
6 * @copyright Copyright (c) 2018-2019 Soluris - Solutions Numériques Territoriales Innovantes
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Affero General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
22declare(strict_types=1);
23
24namespace App\Domain\Admin\Cloner;
25
26use App\Domain\Registry\Model as RegistryModel;
27use App\Domain\User\Model as UserModel;
28
29class TreatmentCloner extends AbstractCloner
30{
31    /**
32     * @param RegistryModel\Treatment $referent
33     *
34     * @throws \Exception
35     */
36    protected function cloneReferentForCollectivity($referent, UserModel\Collectivity $collectivity): RegistryModel\Treatment
37    {
38        $treatment = new RegistryModel\Treatment();
39
40        $treatment->setName($referent->getName());
41        $treatment->setGoal($referent->getGoal());
42        $treatment->setManager($referent->getManager());
43        $treatment->setDpoMessage($referent->getDpoMessage());
44        $treatment->setPublic($referent->getPublic());
45        $treatment->setCoordonneesResponsableTraitement($referent->getCoordonneesResponsableTraitement());
46        $treatment->setExemptAIPD($referent->getExemptAIPD());
47        $treatment->setInnovativeUse($referent->isInnovativeUse());
48        $treatment->setOtherCollectingMethod($referent->getOtherCollectingMethod());
49        $treatment->setSoftware($referent->getSoftware());
50        // Do not duplicate tools. Fixes https://gitlab.adullact.net/soluris/madis/-/issues/888
51        // $treatment->setTools($referent->getTools());
52        $treatment->setPaperProcessing($referent->isPaperProcessing());
53        $treatment->setLegalBasis($referent->getLegalBasis());
54        $treatment->setLegalBasisJustification($referent->getLegalBasisJustification());
55        $treatment->setObservation($referent->getObservation());
56        if (null !== $referent->getConcernedPeopleParticular()) {
57            $treatment->setConcernedPeopleParticular($referent->getConcernedPeopleParticular());
58        }
59        if (null !== $referent->getConcernedPeopleUser()) {
60            $treatment->setConcernedPeopleUser($referent->getConcernedPeopleUser());
61        }
62        if (null !== $referent->getConcernedPeopleAgent()) {
63            $treatment->setConcernedPeopleAgent($referent->getConcernedPeopleAgent());
64        }
65        if (null !== $referent->getConcernedPeopleElected()) {
66            $treatment->setConcernedPeopleElected($referent->getConcernedPeopleElected());
67        }
68        if (null !== $referent->getConcernedPeopleCompany()) {
69            $treatment->setConcernedPeopleCompany($referent->getConcernedPeopleCompany());
70        }
71        if (null !== $referent->getConcernedPeoplePartner()) {
72            $treatment->setConcernedPeoplePartner($referent->getConcernedPeoplePartner());
73        }
74        if (null !== $referent->getConcernedPeopleUsager()) {
75            $treatment->setConcernedPeopleUsager($referent->getConcernedPeopleUsager());
76        }
77        if (null !== $referent->getConcernedPeopleOther()) {
78            $treatment->setConcernedPeopleOther($referent->getConcernedPeopleOther());
79        }
80        $treatment->setDataCategories($referent->getDataCategories());
81        $treatment->setDataCategoryOther($referent->getDataCategoryOther());
82        $treatment->setDataOrigin($referent->getDataOrigin());
83        $treatment->setRecipientCategory($referent->getRecipientCategory());
84        if ($referent->getShelfLifes()) {
85            foreach ($referent->getShelfLifes() as $sl) {
86                /** @var RegistryModel\ShelfLife $sl */
87                $newsl = new RegistryModel\ShelfLife();
88                $newsl->setName($sl->getName());
89                $newsl->setDuration(is_null($sl->getDuration()) ? '' : $sl->getDuration());
90                $newsl->setUltimateFate($sl->getUltimateFate());
91                $newsl->setTreatment($treatment);
92                $treatment->addShelfLife($newsl);
93            }
94        }
95        if (null !== $referent->getSecurityAccessControl()) {
96            $treatment->setSecurityAccessControl($referent->getSecurityAccessControl());
97        }
98        if (null !== $referent->getSecurityUpdate()) {
99            $treatment->setSecurityUpdate($referent->getSecurityUpdate());
100        }
101        if (null !== $referent->getSecuritySaving()) {
102            $treatment->setSecuritySaving($referent->getSecuritySaving());
103        }
104        if (null !== $referent->getSecurityTracability()) {
105            $treatment->setSecurityTracability($referent->getSecurityTracability());
106        }
107        if (null !== $referent->getSecurityOther()) {
108            $treatment->setSecurityOther($referent->getSecurityOther());
109        }
110        $treatment->setStatut($referent->getStatut());
111        $treatment->setLargeScaleCollection($referent->isLargeScaleCollection());
112        $treatment->setDataCrossing($referent->isDataCrossing());
113        $treatment->setAutomatedDecisionsWithLegalEffect($referent->isAutomatedDecisionsWithLegalEffect());
114        $treatment->setEvaluationOrRating($referent->isEvaluationOrRating());
115        $treatment->setAutomaticExclusionService($referent->isAutomaticExclusionService());
116        $treatment->setVulnerablePeople($referent->isVulnerablePeople());
117        $treatment->setSystematicMonitoring($referent->isSystematicMonitoring());
118        $treatment->setActive($referent->isActive());
119        $treatment->setSecurityEntitledPersons($referent->isSecurityEntitledPersons());
120        $treatment->setSecurityOpenAccounts($referent->isSecurityOpenAccounts());
121        $treatment->setSecuritySpecificitiesDelivered($referent->isSecuritySpecificitiesDelivered());
122        $treatment->setAuthor($referent->getAuthor());
123        $treatment->setCollectingMethod($referent->getCollectingMethod());
124        $treatment->setEstimatedConcernedPeople($referent->getEstimatedConcernedPeople());
125        $treatment->setLegalMentions($referent->getLegalMentions());
126        $treatment->setConsentRequest($referent->getConsentRequest());
127        $treatment->setConsentRequestFormat($referent->getConsentRequestFormat());
128
129        $treatment->setCollectivity($collectivity);
130        $treatment->setClonedFrom($referent);
131
132        return $treatment;
133    }
134}