File "SendOrderPaymentReminderCommand.php"

Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Console/Commands/SendOrderPaymentReminderCommand.php
File size: 2.53 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Console\Commands;

use App\Models\Order;
use App\Models\OrderPaymentReminder;
use App\Models\SiteSetting;
use App\Notifications\OrderPaymentReminderNotification;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;

class SendOrderPaymentReminderCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'email:send-order-payment-reminder';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Send email every three days to users who have not paid there order.';

    public function handle(): void
    {
        $orders = OrderPaymentReminder::all();
        $approve_url = config('app.react_app_payment_url');
        $company_phone_1 = SiteSetting::where('key', 'Site Phone')->first();
        $company_phone_2 = SiteSetting::where('key', 'Site Phone 2')->first();
        $contact_email = SiteSetting::where('key', 'Notification Email')->first();
        $location = SiteSetting::where('key', 'Location')->first();

        foreach ($orders as $key => $order) {
            $db_order = Order::find($order->order_id);
            $pj_invoice = generatePJInvoice($db_order);
            if ($order->payment_status !== "Paid") {
                $data = [
                    'user' => $order->user,
                    'order_number' => $order->order_number,
                    'amount' => $order->grand_total,
                    'payment_url' => $approve_url . $order->order_id,
                    'invoice_url' => $pj_invoice->hostedInvoiceUrl ?? null,
                    'order_total' => "$" . $order->grand_total,
                    'company_phone_1' => $company_phone_1->value ?? "N/A",
                    'company_phone_2' => $company_phone_2->value ?? "N/A",
                    'contact_email' => $contact_email->value ?? "N/A",
                    'location' => $location->value ?? "N/A",
                    'invoice_path' => $db_order->invoice->invoicePath ?? '',
                ];
                Log::channel('info_errors')->info("Payment Reminder Email. Invoice path for order id $order->id is " . ($db_order->invoice->invoicePath ?? ''));
                $order->user->notify((new OrderPaymentReminderNotification($data))->delay(now()->addSeconds($key)));
                Log::channel('cron_jobs')
                    ->info('Order payment reminder mail sent successfully to order id : ' . $order->order_id . ' at ' . now()->format('m-d-Y h:i:s'));
            }
        }
    }
}