Всем привет :) У меня тут сложилась интересная ситуация с архитектурой. Прям такое оопэшное ооп, как в учебниках. Буду рад любой помощи/советам/критике.
Проблема:
На сайте есть несколько (около 10) типов транзакций. Для простоты будем считать, что их 2 - букинг машины и букинг отеля. После успешной транзакции надо отправить по емейлу админу и кастомеру (назовем это "таргетом"). Емейлы очень сильно разнятся, в зависимости от типа транзакции и таргета.
Есть код, который позволяет сгенерировать нужный емейл. На каждый тип транзакции создается свой класс, который экстендит общий класс транзакционного емейла (ларавелевский мейлабл). В нужных классах сеттятся необходимые параметры и в конце отдается необходимая вьюха. И есть еще фактори класс, который определяет, какой именно мейл класс нам нужен.
Но потом оказалось, что транзакции принадлежат разным партнерам, и некоторые из них не хотят себе стандартный лейаут писем. Собственно, в этом и задача - как покрасивше реализовать генерацию кастомных емейлов?
Первое, из наименее блевотных вариантов, что мне пришли в голову, это на каждого привередливого партнера создать свой кастомизейшн класс, в котором будут сеттиться кастомные параметры (путь к кастомному темплейту, в самом просто варианте). Но реализация вышла такая себе.
Я одним местом чую, что тут подойдет какой-то паттерн, но я в этом не очень силен.
Код (весь мусор выкинул, офк):
https://paste.laravel.io/efcdda58-332a-4862-966a-de5ffbb2645c#