<?php
namespace App\Controller\RCA;
use App\Controller\BaseController;
use App\Entity\Alert\AlertSettings;
use App\Entity\RCA\ManualExpireNotification;
use App\Message\ExportRcaManualExpire;
use App\Model\RCA\ManualExpireNotificationModel;
use App\Service\ExportService;
use App\Service\RcaAdminService;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class RCAManualExpireNotificationController extends BaseController
{
/**
* @return Response
*/
public function indexAction(): Response
{
return $this->render('@templates/AdminCustom/Grid/RCA/manual-expire-gird.html.twig', [
'alerts' => $this->getEntityManager()->getRepository(AlertSettings::class)->findAlertSettingsForRcaManual(),
'manualExpireImportedFrom' => RcaAdminService::getManualExpireNotificationImportedFromTypes()
]);
}
/**
* @param Request $request
* @return Response
*/
public function importCsvRowAction(Request $request): Response
{
$row = $request->get('row');
$importFrom = (int)$request->get('importFrom', ManualExpireNotification::IMPORTED_FROM_CMS_ID);
$result = false;
$flashbag = $this->get('session')->getFlashBag();
if ($row) {
$result = RcaAdminService::tryToImportCsvRowInManualExpireNotification(
$row, $this->getEntityManager(), $flashbag, $importFrom
);
}
if ($flashbag && !$flashbag->has('success')) {
$flashbag->add('success', 'Fisier uploadat cu succes. Atentie! Datele deja existente sunt ignorate.');
}
return new Response(json_encode($result));
}
/**
* @param Request $request
* @return Response
*/
public function sendManualRcaCustomerAlertAction(Request $request): Response
{
$manualExpireNotificationId = $request->get('notificationId');
$notificationType = intval($request->get('type'));
$result = false;
if ($manualExpireNotificationId) {
if ($notificationType == AlertSettings::EMAIL_ALERT_TYPE) {
$result = RcaAdminService::sendManualRcaAlertToCustomer($manualExpireNotificationId, $this->getEntityManager(), $this->container->get('templating'));
} else if ($notificationType == AlertSettings::SMS_ALERT_TYPE) {
$result = RcaAdminService::sendManualRcaSMSAlertToCustomer($manualExpireNotificationId, $this->getEntityManager(), $this->getContainer());
}
if ($result) {
$this->addFlash('success', 'Alerta trimisa cu success');
} else {
$this->addFlash('error', 'Fie a intervenit o eroare, fie notificarea selectata nu se incadreaza in intervalul de trimitere');
}
}
return new Response(json_encode($result));
}
/**
* @param Request $request
* @return Response
*/
public function retrieveData(Request $request): Response
{
$adminGridService = $this->getContainer()->get('app.service.rca.admin_grid');
return new Response(json_encode($adminGridService->retrieveGridDataForRcaManualExpireNotification()));
}
/**
* @param Request $request
* @return Response
*/
public function changeSubscriptionStatus(Request $request): Response
{
$response = json_encode('fail');
if (ManualExpireNotificationModel::updateSubscriptionStatus($request, $this->getEntityManager())) {
$response = json_encode('success');
$this->addFlash('success', 'Modificarea a avut succes');
} else {
$this->addFlash('error', 'A intervenit o eroare');
}
return new Response($response);
}
public function exportWithDateRanges(Request $request)
{
$adminGridService = $this->getContainer()->get('app.service.rca.admin_grid');
$from = $request->get('from');
$to = $request->get('to');
if ($data = $adminGridService->retrieveAllRcaManualExpireNotificationWithDateRanges($from, $to)) {
$adminGridService = $this->getContainer()->get('app.service.rca.admin_grid');
$data = $adminGridService->removeDuplicateNotifications($data);
ExportService::parseRcaExpireManualDataForExport($data, $this->getEntityManager());
ExportService::exportArray($data);
} else {
$this->addFlash('error', 'A intervenit o eroare. Verificati intervalul de date selectat.');
}
return $this->redirectToRoute('app_admin_rca_manual_expire_notification_index');
}
public function exportWithoutValidFrom(Request $request)
{
$this->getContainer()->get('message_bus')
->dispatch(
new ExportRcaManualExpire(
ExportRcaManualExpire::EXPORT_TYPE_WITHOUT_VALID_FROM,
$request->get('email'),
$request->get('importedFrom')
));
$this->addFlash('success', 'Cererea dmv a fost adaugata in lista de procesare, documentul o sa fie generat si transmis pe email');
return new Response(json_encode(array('status' => 1)));
}
public function exportWithoutValidFromViaServer(Request $request)
{
$this->getContainer()->get('message_bus')
->dispatch(
new ExportRcaManualExpire(
ExportRcaManualExpire::EXPORT_TYPE_WITHOUT_VALID_FROM_TO_SERVER,
$request->get('exportServerMail'),
$request->get('importedFrom')
)
);
$this->addFlash('success', 'Cererea dmv a fost adaugata in lista de procesare, documentul o sa fie generat si stocat pe server, in momentul finalizarii se va transmite un mail catre adresa tranmisa');
return new Response(json_encode(array('status' => 1)));
}
}