feat(email): Ajoute la suppression et la restauration des emails.

This commit is contained in:
Serreau Jovann
2025-09-27 13:49:17 +02:00
parent 38acaf3dbb
commit 384a61717e
3 changed files with 51 additions and 1 deletions

View File

@@ -13,10 +13,37 @@ export class ConfirmModal extends HTMLAnchorElement{
if(element.getAttribute('type') == "delete-customer") {
this.deleteCustomer(modalConfirm,element.getAttribute('href'));
}
if(element.getAttribute('type') == "delete-email") {
this.deleteEmail(modalConfirm,element.getAttribute('href'));
}
document.body.appendChild(modalConfirm);
})
}
deleteEmail(modalConfirm,link) {
let message = document.createElement('h2');
message.innerText = "Confirmer la suppression de l'email";
modalConfirm.querySelector('.confirm-modal-content').appendChild(message);
let grid = document.createElement('div')
grid.classList = "grid grid-cols-1 gap-4 md:grid-cols-2";
modalConfirm.querySelector('.confirm-modal-content').appendChild(grid);
let buttonOk = document.createElement('button');
buttonOk.classList = "bg-green-600 hover:bg-green-700 text-white px-3 py-1 rounded";
buttonOk.innerText = "Oui";
buttonOk.addEventListener('click',()=>{
modalConfirm.remove()
location.href = link;
})
let buttonKo = document.createElement('button');
buttonKo.classList = "bg-red-600 hover:bg-red-700 text-white px-3 py-1 rounded";
buttonKo.innerText = "Non";
buttonKo.addEventListener('click',()=>modalConfirm.remove())
grid.appendChild(buttonOk)
grid.appendChild(buttonKo)
}
deleteCustomer(modalConfirm,link) {
let message = document.createElement('h2');
message.innerText = "Confirmer la suppression du client";

View File

@@ -278,6 +278,16 @@ class CustomerController extends AbstractController
return $this->redirectToRoute('artemis_intranet_customer_view',['id'=>$customer->getId(),'current'=>'order','currentOrder'=>'d']);
}
}
if($request->query->has('idEmailDelete')) {
$emailDelete = $entityManager->getRepository(CustomerDnsEmail::class)->find($request->query->get('idEmailDelete'));
$emailDelete->setIsDeleted(true);
$entityManager->persist($emailDelete);
$entityManager->flush();
$loggerService->log("DELETE","Suppression de la boite mail - ".$emailDelete->getEmail());
$this->addFlash("success","Email supprimer");
return $this->redirectToRoute('artemis_intranet_customer_view',['id'=>$customer->getId(),'current'=>'email','idNdd'=>$emailDelete->getDns()->getId()]);
}
if($request->query->has('idNddSync')) {
$customerNdd = $customerDnsRepository->find($request->get('idNddSync'));
if($customerNdd->getRegistar() == "ovh") {

View File

@@ -18,12 +18,25 @@
</thead>
<tbody class="divide-y divide-gray-200 dark:divide-gray-700">
{% for email in nddEmails %}
<tr class="hover:bg-gray-100 dark:hover:bg-gray-700">
<tr class="hover:bg-gray-100 dark:hover:bg-gray-700 relative">
<td class="px-6 py-4 whitespace-nowrap font-medium text-blue-600 dark:text-blue-400"><a href="mailto:{{ email.email }}@{{ email.dns.ndd }}">{{ email.email }}@{{ email.dns.ndd }}</a></td>
<td class="px-6 py-4 whitespace-nowrap font-medium text-blue-600 dark:text-blue-400">{{ email.storage|skFormat }}</td>
<td class="px-6 py-4 whitespace-nowrap font-medium text-blue-600 dark:text-blue-400">{{ email.createAt|date('d/m/Y') }}</td>
<td class="px-6 py-4 whitespace-nowrap font-medium text-blue-600 dark:text-blue-400">
<a is="confirm-modal" type="delete-email" data-turbo="false" href="{{ path('artemis_intranet_customer_view',{id:customer.id,current:'email',idNdd:email.dns.id,idEmailDelete:email.id}) }}" class="bg-red-600 hover:bg-red-700 text-white px-3 py-1 rounded">Supprimer</a>
</td>
{% if email.isDeleted %}
<td colspan="4" class="absolute inset-0 z-20 rounded">
<!-- fond noir semi-transparent -->
<div class="absolute inset-0 bg-black bg-opacity-70 rounded"></div>
<!-- contenu non transparent -->
<div class="relative flex items-center justify-center h-full text-white text-lg font-semibold space-x-4">
<span>Email supprimé</span>
<a href="{{ path('artemis_intranet_customer_view',{id:customer.id,current:'email',idNdd:email.dns.id,idEmailRestore:email.id}) }}" class="bg-purple-600 hover:bg-purple-700 text-white px-3 py-1 rounded">Restaurer</a>
</div>
</td>
{% endif %}
</tr>
{% endfor %}
</tbody>