mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/portal.git
synced 2026-08-19 04:23:59 +00:00
order module (code needs cleaning up)
This commit is contained in:
@@ -3,15 +3,80 @@
|
||||
namespace App\Http\Controllers\Orders;
|
||||
|
||||
|
||||
use App\Classes\Modules\Orders\Services\GeneratesUniqueOrderNumber;
|
||||
use App\Classes\ValueObjects\Constants\HttpStatus;
|
||||
use App\Classes\ValueObjects\Response\ApiResponseObject;
|
||||
use App\Http\Resources\OrderResource;
|
||||
use App\Models\Company;
|
||||
use App\Models\Order;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class OrderController
|
||||
{
|
||||
|
||||
public function create(Request $request){
|
||||
$order = new Order();
|
||||
$order->company_id = $request->company_id;
|
||||
public function create(Request $request, GeneratesUniqueOrderNumber $generatesUniqueOrderNumber){
|
||||
|
||||
try {
|
||||
|
||||
/** @var Company $company */
|
||||
$company = Company::findOrFail($request->company_id);
|
||||
|
||||
$order = new Order();
|
||||
$order->company_id = $company->id;
|
||||
$order->order_number = $generatesUniqueOrderNumber->execute();
|
||||
$order->forwarder_id = 1;
|
||||
$order->address_id = $company->addresses()->first()->id;
|
||||
$order->contact_id = $company->contacts()->first()->id;
|
||||
$order->current_step = 'MS_WAREHOUSE_RECEIVING';
|
||||
$order->multiple_batch = false;
|
||||
$order->complete = false;
|
||||
|
||||
$order->save();
|
||||
|
||||
$order->warehouses()->attach($request->warehouse_id === 1 ? 3 : 2);
|
||||
|
||||
return (new ApiResponseObject('New Order',
|
||||
'Order has been placed successfully',
|
||||
HttpStatus::OK_WITH_MESSAGE, []))->handler();
|
||||
|
||||
} catch (\Exception $exception){
|
||||
return (new ApiResponseObject('New Order',
|
||||
$exception->getMessage(),
|
||||
$exception->getCode(), []))->handler();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function list(String $companyId){
|
||||
|
||||
$orders = Order::where('company_id', $companyId)->orderBy('created_at', 'DESC')
|
||||
->paginate(10);
|
||||
return (new ApiResponseObject('',
|
||||
'',
|
||||
HttpStatus::OK_WITH_MESSAGE, json_decode(OrderResource::collection($orders)->response()->getContent(), true)))->handler();
|
||||
}
|
||||
|
||||
public function download(String $orderId){
|
||||
/** @var Order $order */
|
||||
$order = order::findOrFail($orderId);
|
||||
/** @var Company $warehouse */
|
||||
$warehouse = $order->warehouses()->first();
|
||||
$warehouseAddress = $warehouse->addresses()->first();
|
||||
$warehouseContact = $warehouse->contacts()->get();
|
||||
|
||||
$data = [
|
||||
'order' => $order,
|
||||
'company' => $order->importer(),
|
||||
'delivery_address' => $order->address(),
|
||||
'warehouse_address' => $warehouseAddress,
|
||||
'warehouse_contact' => $warehouseContact
|
||||
];
|
||||
|
||||
// return view('pages.pdf.qr', $data);
|
||||
|
||||
return $this->pdf->loadView('pages.pdf.qr', $data)->stream();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use App\Models\Address;
|
||||
use App\Models\Company;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class OrderResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'marking' => $this->order_number,
|
||||
'company' => Company::where('id', $this->company_id)->first(),
|
||||
'warehouse_id' => $this->warehouse_id,
|
||||
'address' => new AddressResource(Address::where('id', $this->address_id)->first()),
|
||||
'complete' => (int)$this->complete,
|
||||
'date' => $this->created_at->format('d/m/Y')
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user