File "OrderInvoiceController.php"
Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Controllers/Api/V1/Admin/OrderInvoiceController.php
File size: 2.68 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers\Api\V1\Admin;
use App\Http\Controllers\Controller;
use App\Http\Resources\Admin\InvoiceResource;
use App\Models\Order;
use App\Models\OrderInvoice;
use App\Notifications\OrderInvoiceNotification;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Symfony\Component\HttpFoundation\Response;
use Gate;
class OrderInvoiceController extends Controller
{
public function index(Request $request)
{
abort_if(Gate::denies('invoice_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$invoices = OrderInvoice::when($request->filled('order_number'), function ($query) use ($request){
$query->whereHas('order', function ($query) use ($request) {
$query->where('order_number', 'like', "%{$request->get('order_number')}%");
});
})
->when($request->filled('invoice_number'), function ($query) use ($request){
$query->where('invoice_number', 'like', "%{$request->get('invoice_number')}%");
})
->orderBy('created_at', 'DESC')->get();
InvoiceResource::withoutWrapping();
return InvoiceResource::collection($invoices);
}
public function sendInvoice(Order $order)
{
if ($order->invoice_id == null){
$order->createInvoice();
}
$data = [
'order_number' => $order->order_number ?? '',
'invoice_number' => $order->invoice->invoice_number ?? '',
'user_name' => $order->user->name ?? '',
'phone_number' => $order->user->phone_number ?? '',
'invoice_url' => $order->invoice->invoiceUrl ?? '',
'invoice_path' => $order->invoice->invoicePath ?? '',
];
try {
// $order->user->notify((new OrderInvoiceNotification($data))->delay(now()->addSeconds(5)));
$order->user->notify((new OrderInvoiceNotification($data)));
return response()
->json(['message' => 'Invoice sent successfully.'], Response::HTTP_OK);
}catch (\Exception $e){
Log::info('Mail Error => Sending Order Invoice :'.$order->order_number);
Log::info($e->getMessage());
return response()
->json([
'message' => "Invoice not sent.",
'errors' => ["error" => ["Unable to send order invoice."]]
], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
public function store(Request $request)
{
//
}
public function show($id)
{
//
}
public function update(Request $request, $id)
{
//
}
public function destroy($id)
{
//
}
}