diff --git a/src/app/entity/controllers/EntityController.php b/src/app/entity/controllers/EntityController.php index 2dcaa7e989a79cd44f9087affbb4ac8aad5efc95..6e5c6ec5784c7eae4f41aec1fa1dcaa195438ada 100755 --- a/src/app/entity/controllers/EntityController.php +++ b/src/app/entity/controllers/EntityController.php @@ -180,6 +180,7 @@ class EntityController $entity['users'] = EntityModel::getUsersById(['id' => $entity['entity_id'], 'select' => ['users.id','users.user_id', 'users.firstname', 'users.lastname', 'users.status']]); $children = EntityModel::get(['select' => [1], 'where' => ['parent_entity_id = ?'], 'data' => [$args['id']]]); + $entity['contact'] = $this->getContactLinkCount($entity['id']); $entity['hasChildren'] = count($children) > 0; $documents = ResModel::get(['select' => [1], 'where' => ['destination = ?'], 'data' => [$args['id']]]); $entity['documents'] = count($documents); @@ -195,6 +196,12 @@ class EntityController return $response->withJson(['entity' => $entity]); } + public function getContactLinkCount(int $id) + { + $linkCount = count(ResourceContactModel::get(['select' => ['distinct res_id'], 'where' => ['item_id = ?', 'type = ?'], 'data' => [$id, 'entity']])); + return $linkCount; + } + public function create(Request $request, Response $response) { if (!PrivilegeController::hasPrivilege(['privilegeId' => 'manage_entities', 'userId' => $GLOBALS['id']])) { @@ -532,9 +539,20 @@ class EntityController 'data' => ['"'.$dyingEntity['id'].'"'] ]); //ResourceContact - ResourceContactModel::update(['set' => ['item_id' => $successorEntity['id']], 'where' => ['item_id = ?', 'type = ?'], 'data' => [$dyingEntity['id'], 'entity']]); + $dyingOcc = ResourceContactModel::get(['select' => ['id', 'res_id', 'item_id', 'mode'], 'where' => ['type = ?', 'item_id = ?'], 'data' => ['entity', $dyingEntity['id']]]); + $succOcc = ResourceContactModel::get(['select' => ['id', 'res_id', 'item_id', 'mode'], 'where' => ['type = ?', 'item_id = ?', 'res_id in (?)'], 'data' => ['entity', $successorEntity['id'], array_uniq(array_column($dyingOcc, 'res_id'))]]); + $dyingIds = array_column($dyingOcc, 'id'); + $idsToDelete = []; + foreach ($dyingOcc as $d) { + foreach ($succOcc as $s) { + if ($d['mode'] == $s['mode'] && $d['res_id'] == $s['res_id']) { + $idsToDelete[] = $d['id']; + } + } + } + ResourceContactModel::delete(['where' => ['id in (?)'], 'data' => [$idsToDelete]]); + ResourceContactModel::update(['set' => ['item_id' => $successorEntity['id']], 'where' => ['id in (?)'], 'data' => [$dyingIds]]); - EntityModel::delete(['where' => ['entity_id = ?'], 'data' => [$aArgs['id']]]); HistoryController::add([ 'tableName' => 'entities', 'recordId' => $aArgs['id'], diff --git a/src/frontend/app/administration/entity/entities-administration-redirect-modal.component.html b/src/frontend/app/administration/entity/entities-administration-redirect-modal.component.html index 74b00ae55061530ff86da4a4d58eadb70d2df312..e0b6250c756a34deae67d5a8e816f176c32bb4aa 100755 --- a/src/frontend/app/administration/entity/entities-administration-redirect-modal.component.html +++ b/src/frontend/app/administration/entity/entities-administration-redirect-modal.component.html @@ -15,6 +15,12 @@ <b>{{data.entity.entity_label}}</b> {{'lang.isCopyTo' | translate}} <b>{{data.entity.instances}}</b> {{'lang.documents' | translate}}</p> </mat-list-item> + <mat-list-item *ngIf="data.entity.contact > 0"> + <mat-icon color="primary" mat-list-icon class="fa fa-address-book fa-2x"></mat-icon> + <p mat-line> + <b>{{data.entity.entity_label}}</b> {{'lang.isLinkedTo' | translate | lowercase}} + <b>{{data.entity.contact}}</b> {{'lang.contactsEntity' | translate | lowercase}}</p> + </mat-list-item> <mat-list-item *ngIf="data.entity.users.length > 0"> <mat-icon color="primary" mat-list-icon class="fa fa-user fa-2x"></mat-icon> <p mat-line> @@ -40,4 +46,4 @@ (click)="dialogRef.close(data.entity)" [disabled]="data.entity.redirectEntity === undefined || data.entity.redirectEntity == data.entity.entity_id">{{'lang.delete' | translate}}</button> </mat-dialog-actions> -</div> \ No newline at end of file +</div> diff --git a/src/lang/lang-fr.json b/src/lang/lang-fr.json index f3d8af58c73dfb025c6a7d76faa869fb5f1b2623..d528f114861b4cd696dcfc71743da47cd4c6ff7b 100644 --- a/src/lang/lang-fr.json +++ b/src/lang/lang-fr.json @@ -376,6 +376,7 @@ "contacts": "Contacts", "contactsAdmin": "Administration des contacts", "contactsAlt": "Contact(s)", + "contactsEntity": "courrier(s) en tant que contact", "contactsFillingAdministration": "Complétude des informations contacts", "contactsFillingCriteria": "Critères de complétude", "contactsFillingRate": "Taux de complétude",