Viewing File: /home/ubuntu/route-and-root-backend-base/app/Services/EmailService.php
<?php
namespace App\Services;
use Illuminate\Http\Request;
use App\Models\{ User, PasswordReset, Order, OrderPayment };
use App\Jobs\SendEmailJob;
use Setting;
class EmailService {
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(Request $request)
{
}
/**
* @method send_admin_welcome_email()
*
* @uses to send welcome email when admin created a user
*
* @created Karthick
*
* @updated
*
*/
public function send_admin_welcome_email($user) {
$token = app('auth.password.broker')->createToken($user);
PasswordReset::insert([ 'email' => $user->email, 'token' => $token, 'created_at' => now() ]);
$email_data['subject'] = tr('user_welcome_email' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['picture'] = $user->picture;
$email_data['name'] = $user->name;
$email_data['page'] = "emails.users.admin_welcome";
$email_data['url'] = url('')."/reset_password?token=".$token;
SendEmailJob::dispatch($email_data);
}
/**
* @method send_user_welcome_email()
*
* @uses to send welcome email when user registered
*
* @created Karthick
*
* @updated
*
*/
public static function send_user_welcome_email($user) {
$email_data['subject'] = tr('user_welcome_email' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['picture'] = $user->picture;
$email_data['name'] = $user->name;
if(Setting::get('is_account_email_verification')) {
$email_data['verification_code'] = $user->verification_code;
}
$email_data['page'] = "emails.users.welcome";
SendEmailJob::dispatch($email_data);
}
/**
* @method send_change_password_email()
*
* @uses to send password changed success email
*
* @created Karthick
*
* @updated
*
*/
public function send_change_password_email($user) {
$email_data['subject'] = tr('change_password_success' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['picture'] = $user->picture;
$email_data['name'] = $user->name;
$email_data['page'] = "emails.users.change_password";
SendEmailJob::dispatch($email_data);
}
/**
* @method send_forgot_password_email()
*
* @uses to send forgot password token email
*
* @created Karthick
*
* @updated
*
*/
public function send_forgot_password_email($user, $token) {
$email_data['subject'] = tr('forgot_password_subject' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['user'] = $user;
$email_data['page'] = "emails.users.forgot_password";
$email_data['url'] = Setting::get('frontend_url')."reset-password/".$token;
SendEmailJob::dispatch($email_data);
}
/**
* @method send_forgot_password_success_email()
*
* @uses to send forgot password changed success email
*
* @created Karthick
*
* @updated
*
*/
public function send_forgot_password_success_email($user) {
$email_data['subject'] = tr('reset_password_success' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['page'] = "emails.admin.reset_password";
SendEmailJob::dispatch($email_data);
}
/**
* @method user_register_job()
*
* @uses User register account
*
* @created
*
* @updated
*
* @param object $request
*
* @return object
*/
public static function user_register_job($user) {
try {
if (Setting::get('is_email_notification') == YES && $user) {
$email_data['subject'] = tr('two_step_verification_subject').' '.Setting::get('site_name');
$email_data['page'] = "emails.users.welcome";
$email_data['data'] = $user;
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['verification_code'] = $user->verification_code;
SendEmailJob::dispatch($email_data);
}
} catch(Exception $e) {
$response = ['success' => false, 'error' => $e->getMessage(), 'error_code' => $e->getCode()];
return response()->json($response, 200);
}
}
/**
* @method send_two_step_verification_code_email()
*
* @uses to send email with 2 step verification code
*
* @created Arun
*
* @updated
*
*/
public function send_two_step_verification_code_email($user) {
$email_data['subject'] = tr('two_step_verification_subject' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['picture'] = $user->picture;
$email_data['name'] = $user->name;
$email_data['verification_code'] = $user->verification_code;
$email_data['page'] = "emails.users.two-step-verification-code";
SendEmailJob::dispatch($email_data);
}
/**
* @method send_withdrawal_request_paid_email()
*
* @uses to send amount paid to an user email when admin paid to a withdrawal request.
*
* @created Karthick
*
* @updated
*
*/
public function send_withdrawal_request_paid_email($user_id, $amount) {
$user = User::find($user_id);
$email_data['subject'] = tr('amount_paid_by_admin' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['content'] = tr('amount_paid_by_admin_main_content', formatted_amount($amount));
$email_data['page'] = "emails.users.withdrawal";
SendEmailJob::dispatch($email_data);
}
/**
* @method send_withdrawal_request_rejected_email()
*
* @uses to send withdrawal request rejected email when admin rejected a withdrawal request.
*
* @created Karthick
*
* @updated
*
*/
public function send_withdrawal_request_rejected_email($withdrawal_request) {
$user = User::find($withdrawal_request->user_id);
$email_data['subject'] = tr('withdrawal_request_rejected_by_admin' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['content'] = tr('withdrawal_request_rejected_by_admin_main_content', formatted_amount($withdrawal_request->requested_amount));
$email_data['page'] = "emails.users.withdrawal";
SendEmailJob::dispatch($email_data);
}
/**
* @method send_withdrawal_request_cancelled_email()
*
* @uses to send withdrawal request cancelled email when user cancel a withdrawal request.
*
* @created Karthick
*
* @updated
*
*/
public function send_withdrawal_request_cancelled_email($withdrawal_request) {
$user = User::find($withdrawal_request->user_id);
$email_data['subject'] = tr('withdrawal_request_cancelled' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['content'] = tr('withdrawal_request_cancelled_main_content', formatted_amount($withdrawal_request->requested_amount));
$email_data['page'] = "emails.users.withdrawal";
SendEmailJob::dispatch($email_data);
}
/**
* @method send_reset_password_email()
*
* @uses to send reset password success email
*
* @created Karthick
*
* @updated
*
*/
public function send_reset_password_email($user) {
$email_data['subject'] = tr('reset_password_success' , Setting::get('site_name'));
$email_data['email'] = $user->email;
$email_data['picture'] = $user->picture;
$email_data['name'] = $user->name;
$email_data['page'] = "emails.users.reset_password";
SendEmailJob::dispatch($email_data);
}
/**
* @method send_contact_request_email()
*
* @uses to send respond to a contact request form.
*
* @created Karthick
*
* @updated
*
* param - contact_request (object)
*
*/
public function send_contact_request_email($contact_request) {
$email_data['subject'] = tr('contact_request_subject' , Setting::get('site_name')).' - '.$contact_request->unique_id;
$email_data['email'] = $contact_request->email;
$email_data['contact_request'] = $contact_request;
$email_data['page'] = "emails.users.contact_request";
SendEmailJob::dispatch($email_data);
}
/**
* @method order_status_email()
*
* @uses to send order status email to user
*
* @created Karthick
*
* @updated
*
*/
public function order_status_email($order_unique_id) {
$order = Order::with(['deliveryAddress:id,address,city,state,pincode',
'orderPayment:id,order_id,unique_id,paid_date,sub_total,total,payment_mode,payment_id',
'orderProducts:id,order_id,product_id,quantity,per_quantity_price,discount_price,total',
'orderProducts.product:id,name,file',
'user:id,token,email,name'
])->firstWhere(['unique_id' => $order_unique_id]);
$email_data['subject'] = get_order_email_subject($order->status, $order_unique_id);
$email_data['content'] = get_order_email_content($order->status, $order_unique_id);
$email_data['email'] = $order->user->email ?? '';
$email_data['name'] = $order->user->name ?? '';
$email_data['order'] = $order ?? [];
$email_data['url'] = Setting::get('frontend_url').'orders/tracking/'.$order_unique_id;
$email_data['invoice_url'] = route('user.orders_invoice',
['id' => $order->user->id, 'token' => $order->user->token, 'order_unique_id' => $order_unique_id, 'invoice_via' => VIA_DOWNLOAD]
);
$email_data['order_amount'] = ProductService::get_order_amount($order->orderProducts);
if(in_array($order->status, [ORDER_RECEIVED, ORDER_AWAITING_SHIPMENT, ORDER_SHIPPED, ORDER_COMPLETED])) {
$email_data['page'] = "emails.users.order_detailed";
} else {
$email_data['page'] = "emails.users.order";
}
SendEmailJob::dispatch($email_data);
}
/**
* @method new_order_email_to_admin()
*
* @uses to send order status email to user
*
* @created Karthick
*
* @updated
*
*/
public function new_order_email_to_admin($order_unique_id) {
$order = Order::with(['user', 'orderProducts'])->withSum('orderProducts', 'quantity')->firstWhere(['unique_id' => $order_unique_id]);
$email_data['subject'] = tr('new_order_email_to_admin_subject', $order_unique_id);
$email_data['content'] = tr('new_order_email_to_admin_content', $order_unique_id);
$email_data['email'] = Setting::get('notification_email');
$email_data['name'] = "Admin";
$email_data['order'] = $order ?? [];
$email_data['url'] = url("/admin/orders/view?order_id=$order->id");
$email_data['order_amount'] = ProductService::get_order_amount($order->orderProducts);
$email_data['page'] = "emails.users.order";
SendEmailJob::dispatch($email_data);
}
/**
* @method send_sitemap_email()
*
* @uses to send sitemap email
*
* @created Karthick
*
* @updated
*
*/
public function send_sitemap_email() {
$today = today(IST_TIMEZONE)->format('d M Y');
$email_data['subject'] = Setting::get('site_name').' - '.tr('sitemap_email_subject', $today);
$email_data['content'] = tr('sitemap_email_content', $today);
$email_data['email'] = Setting::get('sitemap_email');
$email_data['name'] = "Team";
$email_data['page'] = "emails.users.sitemap";
$email_data['file_name'] = "$today-sitemap.zip";
$email_data['sitemap'] = YES;
SendEmailJob::dispatch($email_data);
}
/**
* @method send_order_invoice_email()
*
* @uses to send order status email to user
*
* @created Karthick
*
* @updated
*
*/
public function send_order_invoice_email($order) {
$user = User::find($order->user_id, ['id', 'name', 'email', 'timezone']);
if($user) {
$email_data['subject'] = tr('invoice_email_subject', $order->unique_id);
$email_data['content'] = tr('invoice_email_content', $order->unique_id);
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['order'] = $order ?? [];
$email_data['url'] = Setting::get('frontend_url').'order-tracking/'.$order->unique_id;
$email_data['timezone'] = $user->timezone ? : 'America/New_York';
$email_data['page'] = "emails.users.invoice";
$email_data['file_name'] = "$order->unique_id.pdf";
$email_data['invoice'] = YES;
SendEmailJob::dispatch($email_data);
}
}
}
Back to Directory
File Manager