<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; /** * @method static where(string $string, $uid) * @method static truncate() * @method static create(array $tp) * @property mixed name */ class EmailTemplates extends Model { /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'slug', 'subject', 'content', 'status', ]; /** * @var array */ protected $casts = [ 'status' => 'boolean', ]; /** * Find item by uid. * * @param $uid * * @return object */ public static function findByUid($uid): object { return self::where('uid', $uid)->first(); } /** * Bootstrap any application services. */ public static function boot() { parent::boot(); // Create uid when creating list. static::creating(function ($item) { // Create new uid $uid = uniqid(); while (self::where('uid', $uid)->count() > 0) { $uid = uniqid(); } $item->uid = $uid; }); } public function template_tags($template): array { $tags = []; switch ($template) { case 'customer_registration': $tags['app_name'] = 'required'; $tags['first_name'] = 'optional'; $tags['last_name'] = 'optional'; $tags['login_url'] = 'required'; $tags['email_address'] = 'required'; $tags['password'] = 'optional'; break; case 'registration_verification': $tags['app_name'] = 'required'; $tags['first_name'] = 'optional'; $tags['last_name'] = 'optional'; $tags['verification_url'] = 'required'; break; case 'password_reset': $tags['app_name'] = 'optional'; $tags['first_name'] = 'optional'; $tags['last_name'] = 'optional'; $tags['login_url'] = 'required'; $tags['email_address'] = 'required'; $tags['password'] = 'required'; break; case 'forgot_password': $tags['app_name'] = 'optional'; $tags['first_name'] = 'optional'; $tags['last_name'] = 'optional'; $tags['forgot_password_link'] = 'required'; break; case 'login_notification': $tags['app_name'] = 'required'; $tags['time'] = 'required'; $tags['ip_address'] = 'required'; break; case 'registration_notification': $tags['app_name'] = 'optional'; $tags['first_name'] = 'optional'; $tags['last_name'] = 'optional'; $tags['customer_profile_url'] = 'required'; break; case 'sender_id_notification': $tags['app_name'] = 'optional'; $tags['sender_id'] = 'required'; $tags['sender_id_url'] = 'required'; break; case 'subscription_notification': $tags['app_name'] = 'optional'; $tags['invoice_url'] = 'required'; break; case 'keyword_purchase_notification': $tags['app_name'] = 'optional'; $tags['keyword_url'] = 'required'; break; case 'number_purchase_notification': $tags['app_name'] = 'optional'; $tags['number_url'] = 'required'; break; case 'sender_id_confirmation': $tags['app_name'] = 'optional'; $tags['sender_id_url'] = 'required'; $tags['status'] = 'required'; break; // case 'ticket_customer': // $tags['app_name'] = 'optional'; // $tags['first_name'] = 'optional'; // $tags['last_name'] = 'optional'; // $tags['ticket_url'] = 'required'; // $tags['ticket_id'] = 'optional'; // $tags['ticket_subject'] = 'optional'; // $tags['message'] = 'optional'; // $tags['create_by'] = 'optional'; // break; // // case 'reply_ticket': // $tags['app_name'] = 'optional'; // $tags['first_name'] = 'optional'; // $tags['last_name'] = 'optional'; // $tags['ticket_url'] = 'required'; // $tags['ticket_id'] = 'required'; // $tags['ticket_subject'] = 'optional'; // $tags['message'] = 'optional'; // $tags['reply_by'] = 'optional'; // break; // // case 'ticket_admin': // $tags['app_name'] = 'optional'; // $tags['department_name'] = 'optional'; // $tags['ticket_url'] = 'required'; // $tags['ticket_id'] = 'required'; // $tags['ticket_subject'] = 'optional'; // $tags['message'] = 'optional'; // $tags['create_by'] = 'optional'; // break; } return $tags; } /** * get route key by uid * * @return string */ public function getRouteKeyName(): string { return 'uid'; } /** * @return string */ public function __toString(): string { return $this->name; } }