From 807187f0a3ab049457dd6a13f97a25ac2cc69e85 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Thu, 9 Jan 2020 15:24:52 +0300 Subject: [PATCH] dynamic email templates --- app/Http/Controllers/Settings/Email.php | 16 +- app/Models/Common/EmailTemplate.php | 3 +- .../2020_01_08_000000_core_v200.php | 2 + database/seeds/EmailTemplates.php | 62 ++++- resources/views/settings/email/edit.blade.php | 244 ++---------------- 5 files changed, 74 insertions(+), 253 deletions(-) diff --git a/app/Http/Controllers/Settings/Email.php b/app/Http/Controllers/Settings/Email.php index fa21be204..f827378d7 100644 --- a/app/Http/Controllers/Settings/Email.php +++ b/app/Http/Controllers/Settings/Email.php @@ -37,11 +37,7 @@ class Email extends Controller return $s; })->pluck('value', 'key'); - EmailTemplate::all()->each(function ($template) use ($setting) { - $setting->put('template_' . $template->alias . '_subject', $template->subject); - $setting->put('template_' . $template->alias . '_body', $template->body); - $setting->put('template_' . $template->alias . '_params', $template->params); - }); + $templates = EmailTemplate::all(); $email_protocols = [ 'mail' => trans('settings.email.php'), @@ -50,16 +46,10 @@ class Email extends Controller 'log' => trans('settings.email.log'), ]; - $invoice_tags = implode(', ', app('App\Notifications\Sale\Invoice')->getTags()); - $payment_tags = implode(', ', app('App\Notifications\Portal\PaymentReceived')->getTags()); - $bill_tags = implode(', ', app('App\Notifications\Purchase\Bill')->getTags()); - return view('settings.email.edit', compact( 'setting', + 'templates', 'email_protocols', - 'invoice_tags', - 'payment_tags', - 'bill_tags' )); } @@ -117,8 +107,6 @@ class Email extends Controller $template = EmailTemplate::alias($alias)->first(); $template->update([ - 'company_id' => $template->company_id, - 'alias' => $template->alias, 'subject' => $fields[$subject_key], 'body' => $fields[$body_key], ]); diff --git a/app/Models/Common/EmailTemplate.php b/app/Models/Common/EmailTemplate.php index 34f0fb572..ee3a084e9 100644 --- a/app/Models/Common/EmailTemplate.php +++ b/app/Models/Common/EmailTemplate.php @@ -6,7 +6,6 @@ use App\Abstracts\Model; class EmailTemplate extends Model { - protected $table = 'email_templates'; /** @@ -14,7 +13,7 @@ class EmailTemplate extends Model * * @var array */ - protected $fillable = ['company_id', 'alias', 'subject', 'body', 'params']; + protected $fillable = ['company_id', 'alias', 'class', 'name', 'subject', 'body', 'params']; /** * Scope to only include contacts of a given type. diff --git a/database/migrations/2020_01_08_000000_core_v200.php b/database/migrations/2020_01_08_000000_core_v200.php index 4f1a0dc46..8e65c175f 100644 --- a/database/migrations/2020_01_08_000000_core_v200.php +++ b/database/migrations/2020_01_08_000000_core_v200.php @@ -109,6 +109,8 @@ class CoreV200 extends Migration $table->increments('id'); $table->integer('company_id'); $table->string('alias'); + $table->string('class'); + $table->string('name'); $table->string('subject'); $table->text('body'); $table->text('params')->nullable(); diff --git a/database/seeds/EmailTemplates.php b/database/seeds/EmailTemplates.php index 84c435436..78e74b551 100644 --- a/database/seeds/EmailTemplates.php +++ b/database/seeds/EmailTemplates.php @@ -27,23 +27,61 @@ class EmailTemplates extends Seeder $company_id = $this->command->argument('company'); $templates = [ - 'invoice_new_customer', - 'invoice_remind_customer', - 'invoice_remind_admin', - 'invoice_recur_customer', - 'invoice_recur_admin', - 'invoice_payment_customer', - 'invoice_payment_admin', - 'bill_remind_admin', - 'bill_recur_admin', + [ + 'alias' => 'invoice_new_customer', + 'class' => 'App\Notifications\Sale\Invoice', + 'name' => 'settings.email.templates.invoice_new_customer', + ], + [ + 'alias' => 'invoice_remind_customer', + 'class' => 'App\Notifications\Sale\Invoice', + 'name' => 'settings.email.templates.invoice_remind_customer', + ], + [ + 'alias' => 'invoice_remind_admin', + 'class' => 'App\Notifications\Sale\Invoice', + 'name' => 'settings.email.templates.invoice_remind_admin', + ], + [ + 'alias' => 'invoice_recur_customer', + 'class' => 'App\Notifications\Sale\Invoice', + 'name' => 'settings.email.templates.invoice_recur_customer', + ], + [ + 'alias' => 'invoice_recur_admin', + 'class' => 'App\Notifications\Sale\Invoice', + 'name' => 'settings.email.templates.invoice_recur_admin', + ], + [ + 'alias' => 'invoice_payment_customer', + 'class' => 'App\Notifications\Portal\PaymentReceived', + 'name' => 'settings.email.templates.invoice_payment_customer', + ], + [ + 'alias' => 'invoice_payment_admin', + 'class' => 'App\Notifications\Portal\PaymentReceived', + 'name' => 'settings.email.templates.invoice_payment_admin', + ], + [ + 'alias' => 'bill_remind_admin', + 'class' => 'App\Notifications\Purchase\Bill', + 'name' => 'settings.email.templates.bill_remind_admin', + ], + [ + 'alias' => 'bill_recur_admin', + 'class' => 'App\Notifications\Purchase\Bill', + 'name' => 'settings.email.templates.bill_recur_admin', + ], ]; foreach ($templates as $template) { EmailTemplate::create([ 'company_id' => $company_id, - 'alias' => $template, - 'subject' => trans('email_templates.' . $template . '.subject'), - 'body' => trans('email_templates.' . $template . '.body'), + 'alias' => $template['alias'], + 'class' => $template['class'], + 'name' => $template['name'], + 'subject' => trans('email_templates.' . $template['alias'] . '.subject'), + 'body' => trans('email_templates.' . $template['alias'] . '.body'), ]); } } diff --git a/resources/views/settings/email/edit.blade.php b/resources/views/settings/email/edit.blade.php index 195aadcb3..f042733ed 100644 --- a/resources/views/settings/email/edit.blade.php +++ b/resources/views/settings/email/edit.blade.php @@ -15,25 +15,32 @@ 'novalidate' => true, ]) !!} + @php $card = 1; @endphp +
+ + @foreach($templates as $template) + @php $aria_expanded_status = in_array($card, [1, 2]) ? 'true' : 'false'; @endphp + @php $collapse_status = in_array($card, [1, 2]) ? 'show' : ''; @endphp +
-
+
-
+
-

{{ trans('settings.email.templates.invoice_new_customer') }}

+

{{ trans($template->name) }}

-
+
- {{ Form::textGroup('template_invoice_new_customer_subject', trans('settings.email.templates.subject'), 'font', ['required' => 'required'], null, 'col-md-12') }} + {{ Form::textGroup('template_' . $template->alias . '_subject', trans('settings.email.templates.subject'), 'font', ['required' => 'required'], $template->subject, 'col-md-12') }} - {{ Form::textEditorGroup('template_invoice_new_customer_body', trans('settings.email.templates.body'), null, $setting['template_invoice_new_customer_body'], ['required' => 'required', 'rows' => '5', 'data-toggle' => 'quill'], 'col-md-12 mb-0') }} + {{ Form::textEditorGroup('template_' . $template->alias . '_body', trans('settings.email.templates.body'), null, $template->body, ['required' => 'required', 'rows' => '5', 'data-toggle' => 'quill'], 'col-md-12 mb-0') }}
- {!! trans('settings.email.templates.tags', ['tag_list' => $invoice_tags]) !!} + {!! trans('settings.email.templates.tags', ['tag_list' => implode(', ', app($template->class)->getTags())]) !!}
@@ -43,231 +50,18 @@
-
-
-
-
-
-

{{ trans('settings.email.templates.invoice_remind_customer') }}

-
-
-
-
-
- {{ Form::textGroup('template_invoice_remind_customer_subject', trans('settings.email.templates.subject'), 'font', ['required' => 'required'], null, 'col-md-12') }} - - {{ Form::textEditorGroup('template_invoice_remind_customer_body', trans('settings.email.templates.body'), null, $setting['template_invoice_remind_customer_body'], ['required' => 'required', 'rows' => '5', 'data-toggle' => 'quill'], 'col-md-12 mb-0') }} - -
-
- {!! trans('settings.email.templates.tags', ['tag_list' => $invoice_tags]) !!} -
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- {{ Form::textGroup('template_invoice_remind_admin_subject', trans('settings.email.templates.subject'), 'font', ['required' => 'required'], null, 'col-md-12') }} - - {{ Form::textEditorGroup('template_invoice_remind_admin_body', trans('settings.email.templates.body'), null, $setting['template_invoice_remind_admin_body'], ['required' => 'required', 'rows' => '5', 'data-toggle' => 'quill'], 'col-md-12 mb-0') }} - -
-
- {!! trans('settings.email.templates.tags', ['tag_list' => $invoice_tags]) !!} -
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- {{ Form::textGroup('template_invoice_recur_customer_subject', trans('settings.email.templates.subject'), 'font', ['required' => 'required'], null, 'col-md-12') }} - - {{ Form::textEditorGroup('template_invoice_recur_customer_body', trans('settings.email.templates.body'), null, $setting['template_invoice_recur_customer_body'], ['required' => 'required', 'rows' => '5', 'data-toggle' => 'quill'], 'col-md-12 mb-0') }} - -
-
- {!! trans('settings.email.templates.tags', ['tag_list' => $invoice_tags]) !!} -
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- {{ Form::textGroup('template_invoice_recur_admin_subject', trans('settings.email.templates.subject'), 'font', ['required' => 'required'], null, 'col-md-12') }} - - {{ Form::textEditorGroup('template_invoice_recur_admin_body', trans('settings.email.templates.body'), null, $setting['template_invoice_recur_admin_body'], ['required' => 'required', 'rows' => '5', 'data-toggle' => 'quill'], 'col-md-12 mb-0') }} - -
-
- {!! trans('settings.email.templates.tags', ['tag_list' => $invoice_tags]) !!} -
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- {{ Form::textGroup('template_invoice_payment_customer_subject', trans('settings.email.templates.subject'), 'font', ['required' => 'required'], null, 'col-md-12') }} - - {{ Form::textEditorGroup('template_invoice_payment_customer_body', trans('settings.email.templates.body'), null, $setting['template_invoice_payment_customer_body'], ['required' => 'required', 'rows' => '5', 'data-toggle' => 'quill'], 'col-md-12 mb-0') }} - -
-
- {!! trans('settings.email.templates.tags', ['tag_list' => $payment_tags]) !!} -
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- {{ Form::textGroup('template_invoice_payment_admin_subject', trans('settings.email.templates.subject'), 'font', ['required' => 'required'], null, 'col-md-12') }} - - {{ Form::textEditorGroup('template_invoice_payment_admin_body', trans('settings.email.templates.body'), null, $setting['template_invoice_payment_admin_body'], ['required' => 'required', 'rows' => '5', 'data-toggle' => 'quill'], 'col-md-12 mb-0') }} - -
-
- {!! trans('settings.email.templates.tags', ['tag_list' => $payment_tags]) !!} -
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- {{ Form::textGroup('template_bill_remind_admin_subject', trans('settings.email.templates.subject'), 'font', ['required' => 'required'], null, 'col-md-12') }} - - {{ Form::textEditorGroup('template_bill_remind_admin_body', trans('settings.email.templates.body'), null, $setting['template_bill_remind_admin_body'], ['required' => 'required', 'rows' => '5', 'data-toggle' => 'quill'], 'col-md-12 mb-0') }} - -
-
- {!! trans('settings.email.templates.tags', ['tag_list' => $bill_tags]) !!} -
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- {{ Form::textGroup('template_bill_recur_admin_subject', trans('settings.email.templates.subject'), 'font', ['required' => 'required'], null, 'col-md-12') }} - - {{ Form::textEditorGroup('template_bill_recur_admin_body', trans('settings.email.templates.body'), null, $setting['template_bill_recur_admin_body'], ['required' => 'required', 'rows' => '5', 'data-toggle' => 'quill'], 'col-md-12 mb-0') }} - -
-
- {!! trans('settings.email.templates.tags', ['tag_list' => $bill_tags]) !!} -
-
-
-
-
-
-
-
+ @php $card++; @endphp + @endforeach
-
+
-