src/Controller/TrashEnquiriesController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\TrashCrmEnquiries;
  4. use App\Entity\CrmEnquiryQuotes;
  5. use App\Entity\CrmEnquiriesJobBooked;
  6. use App\Entity\CrmEnquiryPriorities;
  7. use App\Entity\CrmEnquiriesPaymentSchedule;
  8. use App\Entity\CrmFollowup;
  9. use App\Entity\CrmEnquiryScheduleSms;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use App\Repository\EnquiriesRepository;
  16. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  17. use App\Form\Filters\EnquiriesPageFilter;
  18. #[Route('/trash-enquiries')]
  19. class TrashEnquiriesController extends AbstractController
  20. {
  21.     #[Route('/customer-view/{id}'name'trash_enquiries_customer_view'methods: ['GET'])]
  22.     public function view(TrashCrmEnquiries $crmEnquiriesEntityManagerInterface $entityManager): Response
  23.     {
  24.         return $this->render('trash-enquiries/customer-view.html.twig', [
  25.             'enquiries' => $crmEnquiries,
  26.         ]);
  27.     }
  28.     #[Route('/view-quote/{id}'name'trash_quote_view'methods: ['GET'])]
  29.     public function viewQuote(TrashCrmEnquiries $crmEnquiriesEntityManagerInterface $entityManager,$id): Response
  30.     {
  31.         $crmEnquiryQuotes $entityManager->getRepository(\App\Entity\TrashCrmEnquiryQuotes::class)->findOneBy(array('enquiryId' => $id));
  32.         return $this->render('trash-enquiries/view-quote-enquiry.html.twig', [
  33.             'quote' => $crmEnquiryQuotes,
  34.             'enquiries' => $crmEnquiries,
  35.             
  36.         ]);
  37.     }
  38.     #[Route('/view-job/{id}'name'trash_job_view'methods: ['GET'])]
  39.     public function viewJob(TrashCrmEnquiries $crmEnquiries,  EntityManagerInterface $entityManager,$id): Response
  40.     {
  41.         $crmEnquiriesJobBooked $entityManager->getRepository(\App\Entity\TrashCrmEnquiriesJobBooked::class)->findBy(array('enquiryId' => $id));
  42.         
  43.         return $this->render('trash-enquiries/view-job-enquiry.html.twig', [
  44.             'job' => $crmEnquiriesJobBooked,
  45.             'enquiries' => $crmEnquiries,
  46.         ]);
  47.     }
  48.     #[Route('/view-priority/{id}'name'trash_priority_view'methods: ['GET'])]
  49.     public function viewPriority(TrashCrmEnquiries $crmEnquiriesEntityManagerInterface $entityManager,$id): Response
  50.     {
  51.         $crmEnquiryPriorities $entityManager->getRepository(\App\Entity\TrashCrmEnquiryPriorities::class)->findBy(array('enquiryId' => $id));
  52.         return $this->render('trash-enquiries/view-priority-enquiry.html.twig', [
  53.             'priority' => $crmEnquiryPriorities,
  54.             'enquiries' => $crmEnquiries,
  55.         ]);
  56.     }
  57.     #[Route('/job-summary/{id}'name'trash_job_summary'methods: ['GET'])]
  58.     public function viewJobSummary(TrashCrmEnquiries $crmEnquiries,  EntityManagerInterface $entityManager,$id): Response
  59.     {
  60.         $enquiryDescriptions $entityManager->getRepository(\App\Entity\TrashCrmEnquiryDescriptions::class)->findBy(array('enquiryId' => $id));
  61.         
  62.         return $this->render('trash-enquiries/view-job-summary.html.twig', [
  63.             'summary' => $enquiryDescriptions,
  64.             'enquiries' => $crmEnquiries,
  65.         ]);
  66.     }
  67.     #[Route('/payment-schedule/{id}'name'trash_payment_schedule'methods: ['GET'])]
  68.     public function viewPaymentSchedule(TrashCrmEnquiries $crmEnquiries,  EntityManagerInterface $entityManager,$id): Response
  69.     {
  70.         $paymentSchedule $entityManager->getRepository(\App\Entity\TrashCrmEnquiriesPaymentSchedule::class)->findBy(array('enquiryId' => $id));
  71.         
  72.         return $this->render('trash-enquiries/view-payment-schedule.html.twig', [
  73.             'trash_payment_schedule' => $paymentSchedule,
  74.             'enquiries' => $crmEnquiries,
  75.         ]);
  76.     }
  77.     #[Route('/view-followup/{id}'name'trash_followup_view'methods: ['GET'])]
  78.     public function viewFollowup(TrashCrmEnquiries $crmEnquiries,  EntityManagerInterface $entityManager,$id): Response
  79.     {
  80.         $crmFollowup $entityManager->getRepository(\App\Entity\TrashCrmFollowup::class)->findBy(array('enquiryId' => $id));
  81.         return $this->render('trash-enquiries/view-followup-enquiry.html.twig', [
  82.             'followup' => $crmFollowup,
  83.             'enquiries' => $crmEnquiries,
  84.         ]);
  85.     }
  86.     #[Route('/view-sms/{id}'name'trash_sms_view'methods: ['GET'])]
  87.     public function viewSms($idTrashCrmEnquiries $crmEnquiries,  EntityManagerInterface $entityManager): Response
  88.     {
  89.         $crmEnquiryScheduleSms $entityManager->getRepository(\App\Entity\TrashCrmEnquiryScheduleSms::class)->findBy(array('enquiryId' => $id));
  90.         return $this->render('trash-enquiries/view-sms-enquiry.html.twig', [
  91.             'sms_data' => $crmEnquiryScheduleSms,
  92.             'enquiries' => $crmEnquiries,
  93.         ]);
  94.     }
  95.     #[Route('/view-email/{id}'name'trash_email_view'methods: ['GET'])]
  96.     public function viewEmail($idTrashCrmEnquiries $crmEnquiries,  EntityManagerInterface $entityManager): Response
  97.     {
  98.        
  99.         $listMailData =[];
  100.         $mailLogs = [];
  101.         $crmId $crmEnquiries->getCrmId();
  102.         
  103.         $welcomeEmails $entityManager->getRepository(\App\Entity\TrashCrmEnquiryWelcomeMails::class)->findBy(array('crmId' => $crmId'enquiryId' => $id));
  104.         foreach($welcomeEmails as $item){
  105.             $mailTo ='';
  106.             $body unserialize(base64_decode($item->getBody()),[]);
  107.             $emailTo unserialize($item->getRecipientEmail(),[]);
  108.             if (is_string($emailTo)){
  109.                 $mailTo $emailTo;
  110.             }else{
  111.                 $mailTo implode(',',$emailTo);
  112.             }
  113.             
  114.             $mailLogs[] = array(
  115.                 'id' => $item->getId(),
  116.                 'enquiryId' => $item->getEnquiryId(),
  117.                 'settingId' => 0,
  118.                 'sentDate' => $item->getSentDate(),
  119.                 'date' => $item->getSentDate()->format('Y-m-d H:i:s'),
  120.                 'time' => $item->getSentDate()->format('H:i:s'),
  121.                 //'responsible' => isset($body['user_id']) ? $entityManager->getRepository(\App\Entity\User::class)->findUserByField('userId',$body['user_id'], 'snap') : '',
  122.                 'type' => 'general',
  123.                 'templateId' => $body['mail_template'],
  124.                 'subject' => $body['mail_subject'],
  125.                 'body' => str_replace('&nbsp;',' ',strip_tags($body['mail_body'])),
  126.                 'emails' => $mailTo
  127.             );
  128.         }
  129.        
  130.             
  131.         $invoiceMails $entityManager->getRepository(\App\Entity\TrashCrmInvoiceMails::class)->findBy(array('crmId' => $crmId,'enquiryId' => $id));
  132.        
  133.         foreach($invoiceMails as $item){
  134.          
  135.             $body unserialize(base64_decode($item->getBody()),[]);
  136.             
  137.             $templateId 0;
  138.             $responsible '';
  139.             $passign $entityManager->getRepository(\App\Entity\TrashCrmEnquiriesPaymentAssigned::class)->findOneBy(array('scheduleId' => $item->getPaymentId()));
  140.             if($passign){
  141.                 $responsible $passign->getPaymentAssigned();
  142.             }
  143.             $responsible $item->getUserId();
  144.             $invSubject '';
  145.             $invBody '';
  146.             if($item->getType() == 'invoice'){
  147.                 if(isset($body['pdfData']['params']['reqData']['mail_data']['h_mail_template'])){
  148.                     $templateId $body['pdfData']['params']['reqData']['mail_data']['h_mail_template'];
  149.                     $invSubject $body['pdfData']['params']['reqData']['mail_data']['h_mail_subject'];
  150.                     $invBody $body['pdfData']['params']['reqData']['mail_data']['h_mail_body'];
  151.                 }
  152.                 $type 'invoice';
  153.             }else{
  154.                 if(isset($body['mail_data']['templateId'])){
  155.                     $templateId $body['mail_data']['templateId'];
  156.                     $invSubject $body['mail_data']['subject'];
  157.                     $invBody $body['mail_data']['body'];
  158.                 }
  159.                 $type 'payment_receipt';
  160.             }
  161.             
  162.             if(!empty($item->getSentDate())){
  163.                 $emailTo unserialize($item->getRecipientEmail(),[]);
  164.                 $mailLogs[] = array(
  165.                     'date' => $item->getSentDate(),
  166.                     'time' => $item->getSentDate(),
  167.                     //'responsible' => $entityManager->getRepository(\App\Entity\User::class)->findUserByField('userId',$responsible, 'snap'),
  168.                     'type' => $type,
  169.                     'templateId' => $templateId,
  170.                     'user_id' => $item->getUserId(),
  171.                     'subject' => $invSubject,
  172.                     'body' => str_replace('&nbsp;',' ',strip_tags($invBody)),
  173.                     'emails' => implode(',',$emailTo)
  174.                 );
  175.             }
  176.         }
  177.         $quoteMails $entityManager->getRepository(\App\Entity\TrashCrmEnquiryMails::class)->findBy(array('enquiryId' => $id));
  178.         
  179.         foreach($quoteMails as $item){
  180.             $body unserialize(base64_decode($item->getBody()),[]);
  181.             $templateId 0;
  182.             $responsible '';
  183.             if(isset($body['mail_data']['h_mail_template'])){
  184.                 $templateId $body['mail_data']['h_mail_template'];
  185.             }
  186.             if(isset($body['quoteResponsibleId'])){
  187.                 $responsible $body['quoteResponsibleId'];
  188.             }
  189.             $quote_user_id '';
  190.             if(isset($body['items']['user_id'])){
  191.                 $quote_user_id $body['items']['user_id'];
  192.             }
  193.             $templateTitle '';
  194.             $quote $entityManager->getRepository(\App\Entity\TrashCrmEnquiryQuotes::class)
  195.                     ->findOneBy(array('enquiryId' => $id'crmId' => $crmId));
  196.             $bodyContent str_replace('&nbsp;',' ',strip_tags($body['mail_data']['h_mail_body']));
  197.             $bodyContent str_replace('p {margin:0px;}'''$bodyContent);
  198.             $bodyContent str_replace('&nbsp;'' '$bodyContent);
  199.             $emailTo unserialize($item->getRecipientEmail(),[]);
  200.             $template $entityManager>getRepository(\App\Entity\TrashCrmMailTemplate::class)->findOneBy(array('id' =>$templateId'crmId' => $crmId));
  201.                 if ($template) {
  202.                     $templateTitle $template->getTitle();
  203.                 } 
  204.             $mailLogs[] = array(
  205.                 'date' => $item->getSentDate(),
  206.                 'time' => $item->getSentDate(),
  207.                 //'responsible' => $quote ?  $entityManager->getRepository(\App\Entity\User::class)->findUserByField('userId', $quote->getArrangedBy(), 'snap') : '',
  208.                 'type' => 'quote',
  209.                 'templateId' => $templateId,
  210.                 'templateTitle' => $templateTitle,
  211.                 'user_id' => $quote_user_id,
  212.                 'subject' => $body['mail_data']['h_mail_subject'],
  213.                 'body' => $bodyContent,
  214.                 'emails' => implode(',',$emailTo)
  215.             );
  216.         }
  217.         $followupEmails $entityManager->getRepository(\App\Entity\TrashCrmEmailFollowup::class)->findBy(array('enquiryId' => $id));
  218.         foreach($followupEmails as $item){
  219.             $setting $entityManager->getRepository(\App\Entity\TrashCrmFollowupEmailSettings::class)
  220.             ->findOneBy(array('crmId' => $crmId'settingId' => $item->getSettingId()));
  221.             $followupSubject '';
  222.             $followupBody '';
  223.             $crmFollowMailBody="";
  224.             if($setting){
  225.                 //getbody 
  226.                 $crmFollowMailBody $entityManager->getRepository(\App\Entity\SiteMailLogs::class)->findBy(array('crmId' => $crmId'templateId' => $setting->getTemplateId(), 'sourceId' => $item->getId()));
  227.                 
  228.                 if(!$crmFollowMailBody){
  229.                     $crmFollowMailTemplate $entityManager->getRepository(\App\Entity\TrashCrmMailTemplate::class)->findOneBy(array('crmId' => $crmId'id' => $setting->getTemplateId()));
  230.                     $followupSubject $crmFollowMailTemplate->getSubject();
  231.                     $followupBody $crmFollowMailTemplate->getBody();
  232.                 }
  233.             }
  234.             $templateTitle '';
  235.             if($setting){
  236.                 
  237.                 $template $entityManager>getRepository(\App\Entity\TrashCrmMailTemplate::class)->findOneBy(array('id' => $setting->getTemplateId(), 'crmId' => $crmId));
  238.                 if ($template) {
  239.                     $templateTitle $template->getTitle();
  240.                 } 
  241.             }
  242.             
  243.             if($crmFollowMailBody){
  244.                 foreach ($crmFollowMailBody as $mailBody) {
  245.                     $body =  unserialize(base64_decode($mailBody->getBody()))['body'];
  246.                     $body str_replace('p {margin:0px;}'''$body);
  247.                     $mailLogs[] = array(
  248.                         'date' => $item->getSentDate(),
  249.                         'time' => $item->getSentDate(),
  250.                         'type' => 'follow-up',
  251.                         'responsible' => '',
  252.                         'templateId' => $setting $setting->getTemplateId() : 0,
  253.                         'isExpired' => $item->getIsExpired(),
  254.                         'subject' => $followupSubject,
  255.                         //'body' => $body['body'],
  256.                         'body' => str_replace('&nbsp;',' ',strip_tags($body)),
  257.                         'templateTitle' => $templateTitle,
  258.                         'emails' => ''
  259.                     );
  260.                 }
  261.             } else{
  262.                 $mailLogs[] = array(
  263.                     'date' => $item->getSentDate(),
  264.                     'time' => $item->getSentDate(),
  265.                     'type' => 'follow-up',
  266.                     'responsible' => '',
  267.                     'templateId' => $setting $setting->getTemplateId() : 0,
  268.                     'isExpired' => $item->getIsExpired(),
  269.                     'subject' => $followupSubject,
  270.                     //'body' => $body['body'],
  271.                     'body' => str_replace('&nbsp;',' ',strip_tags($followupBody)),
  272.                     'templateTitle' => $templateTitle,
  273.                     'emails' => ""
  274.                 );
  275.             }
  276.             
  277.         }
  278.         $jobEmails $entityManager->getRepository(\App\Entity\TrashCrmJobConfirmationMails::class)->findBy(array('enquiryId' => $id));
  279.         foreach($jobEmails as $item){
  280.             $body unserialize(base64_decode($item->getBody()),[]);
  281.             $emailTo unserialize($item->getRecipientEmail(),[]);
  282.             $mailLogs[] = array(
  283.                 'date' => $item->getSentDate(),
  284.                 'time' => $item->getSentDate(),
  285.                 //'responsible' =>  isset($body['responsible']) ?   $entityManager->getRepository(\App\Entity\User::class)->findUserByField('userId', $body['responsible'], 'snap') : '',
  286.                 'type' => 'job',
  287.                 'templateId' => $body['mail_template'],
  288.                 'subject' => $body['mail_subject'],
  289.                 'body' => str_replace('&nbsp;',' ',str_replace('&nbsp;',' ',strip_tags($body['mail_body']))),
  290.                 'emails' => implode(',',$emailTo)
  291.             );
  292.         }
  293.         $listMailData $mailLogs;
  294.         return $this->render('trash-enquiries/view-email-enquiry.html.twig', [
  295.             'email_data' => $listMailData,
  296.             'enquiries' => $crmEnquiries,
  297.         ]);
  298.     }
  299. }