|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/lecturebazaar.com/app/Models/ |
Upload File : |
<?php
namespace App\Models;
use App\Mixins\Cart\CartItemInfo;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
class Gift extends Model
{
protected $table = "gifts";
public $timestamps = false;
protected $guarded = ['id'];
public function user()
{
return $this->belongsTo('App\User', 'user_id', 'id');
}
public function receipt()
{
return $this->belongsTo('App\User', 'email', 'email');
}
public function sale()
{
return $this->hasOne('App\Models\Sale', 'gift_id', 'id');
}
public function webinar()
{
return $this->belongsTo('App\Models\Webinar', 'webinar_id', 'id');
}
public function bundle()
{
return $this->belongsTo('App\Models\Bundle', 'bundle_id', 'id');
}
public function product()
{
return $this->belongsTo('App\Models\Product', 'product_id', 'id');
}
public function getItemTitle()
{
$title = '';
if (!empty($this->webinar_id)) {
$title = $this->webinar->title;
} else if (!empty($this->bundle_id)) {
$title = $this->bundle->title;
} else if (!empty($this->product_id)) {
$title = $this->product->title;
}
return $title;
}
public function getItemType()
{
$type = 'course';
if (!empty($this->bundle_id)) {
$type = 'bundle';
} else if (!empty($this->product_id)) {
$type = 'product';
}
return $type;
}
public function sendNotificationsWhenActivated($amount)
{
$this->sendReminderToRecipient($amount);
$this->sendReminderToSender($amount);
$this->sendReminderToAdmin($amount, 'admin_gift_submission');
}
public function sendReminderToRecipient($amount)
{
if (empty($this->date) or $this->date < time()) {
$receipt = $this->receipt;
$notifyOptions = [
'[u.name]' => $this->user->full_name,
'[gift_title]' => $this->getItemTitle(),
'[gift_type]' => $this->getItemType(),
'[amount]' => (!empty($amount) and $amount > 0) ? handlePrice($amount) : trans('public.free'),
'[gift_message]' => $this->description,
];
if (!empty($receipt)) {
sendNotification('reminder_gift_to_receipt', $notifyOptions, $receipt->id);
} else if (!empty($this->email)) {
sendNotificationToEmail('reminder_gift_to_receipt', $notifyOptions, $this->email);
}
}
}
public function sendReminderToSender($amount, $template = "gift_sender_confirmation")
{
$sender = $this->user;
$notifyOptions = [
'[u.name]' => $this->name,
'[u.email]' => $this->email,
'[gift_title]' => $this->getItemTitle(),
'[gift_type]' => $this->getItemType(),
'[amount]' => (!empty($amount) and $amount > 0) ? handlePrice($amount) : trans('public.free'),
'[gift_message]' => $this->description,
'[time.date]' => dateTimeFormat($this->created_at, "j M Y H:i"), // send date
'[time.date.2]' => !empty($this->date) ? dateTimeFormat($this->date, "j M Y H:i") : trans('update.instantly'), // gift publish date
];
if (!empty($sender)) {
sendNotification($template, $notifyOptions, $sender->id);
}
}
public function sendReminderToAdmin($amount, $template)
{
$sender = $this->user;
$notifyOptions = [
'[u.name]' => $this->name,
'[u.name.2]' => $sender->full_name,
'[u.email]' => $this->email,
'[gift_title]' => $this->getItemTitle(),
'[gift_type]' => $this->getItemType(),
'[amount]' => (!empty($amount) and $amount > 0) ? handlePrice($amount) : trans('public.free'),
'[time.date]' => dateTimeFormat($this->created_at, "j M Y H:i"), // send date
'[time.date.2]' => !empty($this->date) ? dateTimeFormat($this->date, "j M Y H:i") : trans('update.instantly'), // gift publish date
];
if (!empty($sender)) {
sendNotification($template, $notifyOptions, 1);
}
}
}