File: /var/www/ipsremont-demo/app/Http/Controllers/EmailsController.php
<?php
namespace App\Http\Controllers;
use App\Http\Requests\Email\IdRequest;
use App\Http\Requests\Email\IndexRequest;
use App\Http\Requests\Email\UpdateEmailTemplatesRequest;
use App\Models\EmailLetter;
use App\Services\Email\EmailsService;
use App\Services\Email\EmailTemplatesService;
use Illuminate\Http\Request;
class EmailsController extends Controller
{
protected EmailTemplatesService $email_template_service;
protected EmailsService $emails_service;
public function __construct()
{
parent::__construct();
$this->email_template_service = new EmailTemplatesService();
$this->emails_service = new EmailsService();
}
public function list(IndexRequest $request)
{
$data = $this->emails_service->search($request);
$columns = EmailLetter::columns();
return view('emails.letters.list', compact('data', 'columns'));
}
public function show(IdRequest $request)
{
$letter = EmailsService::getById($request->id);
return view('emails.letters.show', compact('letter'));
}
public function users()
{
$events = EmailsService::getUserEvents();
$group = 'users';
return view('emails.events', compact('events', 'group'));
}
public function orders()
{
$events = EmailsService::getOrderEvents();
$group = 'orders';
return view('emails.events', compact('events', 'group'));
}
public function repairs()
{
$events = EmailsService::getRepairEvents();
$group = 'repairs';
return view('emails.events', compact('events', 'group'));
}
public function address()
{
$events = EmailsService::getAddressEvents();
$group = 'address';
return view('emails.events', compact('events', 'group'));
}
public function acttc()
{
$events = EmailsService::getActtcEvents();
$group = 'acttc';
return view('emails.events', compact('events', 'group'));
}
public function shipment()
{
$events = EmailsService::getShipmentEvents();
$group = 'shipment';
return view('emails.events', compact('events', 'group'));
}
public function edit(Request $request)
{
$currentLang = $request->lang ?: 'ru';
$user_events = EmailsService::getUserEvents();
$order_events = EmailsService::getOrderEvents();
$repair_events = EmailsService::getRepairEvents();
$address_events = EmailsService::getAddressEvents();
$acttc_events = EmailsService::getActtcEvents();
$shipment_events = EmailsService::getShipmentEvents();
if (array_key_exists($request->event, $user_events)) {
$events = $user_events;
$activeMenu = 'users';
} elseif (array_key_exists($request->event, $order_events)) {
$events = $order_events;
$activeMenu = 'orders';
} elseif (array_key_exists($request->event, $repair_events)) {
$events = $repair_events;
$activeMenu = 'repairs';
} elseif (array_key_exists($request->event, $address_events)) {
$events = $address_events;
$activeMenu = 'address';
} elseif (array_key_exists($request->event, $acttc_events)) {
$events = $acttc_events;
$activeMenu = 'acttc';
} elseif (array_key_exists($request->event, $shipment_events)) {
$events = $shipment_events;
$activeMenu = 'shipment';
}
if ($events) {
$admin = EmailTemplatesService::getTemplate($request->event, $currentLang, 'admin');
$manager = EmailTemplatesService::getTemplate($request->event, $currentLang, 'manager');
$service = EmailTemplatesService::getTemplate($request->event, $currentLang, 'service');
$validate = new UpdateEmailTemplatesRequest();
$event = $request->event;
$label = 'emails.' . $request->event;
return view('emails.edit', compact('admin', 'manager', 'service', 'validate', 'activeMenu', 'currentLang', 'event', 'label', 'events'))->with(['sections' => ['quill']]);
}
}
public function update(UpdateEmailTemplatesRequest $request)
{
$this->email_template_service->update($request);
return redirect($request->redirect)->with(["messageSuccess" => __('emails.messageUpdate')]);
}
public function updateOrder(UpdateEmailTemplatesRequest $request)
{
$this->email_template_service->update($request);
return redirect($request->redirect)->with(["messageSuccess" => __('emails.messageUpdate')]);
}
public function columntitle(Request $request)
{
$currentLang = $request->lang ?: 'ru';
$header = EmailTemplatesService::getTemplate('layout', $currentLang, 'header');
$footer = EmailTemplatesService::getTemplate('layout', $currentLang, 'footer');
return view('emails.columntitle', compact('header', 'footer', 'currentLang'))->with(['sections' => ['quill']]);
}
public function columntitleUpdate(UpdateEmailTemplatesRequest $request)
{
$this->email_template_service->updateColumntitle($request);
return redirect($request->redirect)->with(["messageSuccess" => __('emails.messageUpdateColumntitle')]);
}
}