Files
izyim/app/Http/Controllers/Orders/OrderController.php
T
Omair Saleh 43a9e0ca03 large commit
2019-05-18 12:14:31 +08:00

93 lines
3.4 KiB
PHP

<?php
namespace App\Http\Controllers\Orders;
use App\Classes\ControllersLogic\Orders\CreateOrder;
use App\Classes\Modules\ControllersLogic\Orders\UpdateOrderStepLogic;
use App\Classes\Modules\Orders\DataTransferObjects\PackageObject;
use App\Classes\Modules\Orders\DataTransferObjects\PackingListObject;
use App\Models\CustomIssues;
use App\Models\Order;
use App\Models\PackingList;
use App\Models\ShippingArrangement;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\Order as OrderResource;
class OrderController extends Controller
{
public function show($id){
$order = Order::findOrFail($id)->first();
return new OrderResource($order);
}
public function listCompanyOrders(String $companyId){
$orders = Order::where('company_id', $companyId)->orderBy('created_at', 'DESC')
->paginate(100);
return OrderResource::collection($orders);
}
public function listWarehouseOrders(String $id){
$orders = Order::where('warehouse', $id)->orderBy('created_at', 'DESC')
->paginate(100);
return OrderResource::collection($orders);
}
public function updatePackingList(String $orderId, Request $request){
$packingList = PackingList::updateOrCreate(['order_id' => $orderId],['reference_no' => $request->input('reference_no')]);
$confirmed = true;
$packages = [];
foreach ($request->input('packages') as $package) {
if(trim($package['description']) !== '' || $package['description'] !== null){
$packages[] = $package;
if($package['width'] == 0 || $package['length'] == 0 || $package['height'] == 0){
$confirmed = false;
}
}
}
if(empty($packages)){
$confirmed = false;
}
$packingList->packages()->delete();
$packingList->packages()->createMany($packages);
$packingList->confirmed = $confirmed;
if($packingList->save()){
}
return 408;
}
public function orderShippingArrangement(String $orderId, Request $request){
$shippingArrangement = ShippingArrangement::updateOrCreate(['order_id' => $orderId],['container_no' => $request->input('container_no'), 'seal_no' => $request->input('seal_no')]);
$shippingArrangement->shippingSchedule()->delete();
$shippingArrangement->shippingSchedule()->create(['ETD' => Carbon::parse($request->input('schedule')['ETD']), 'ETA' => Carbon::parse($request->input('schedule')['ETA'])]);
return 200;
}
public function rescheduleShipping(String $orderId, Request $request){
$shippingArrangement = ShippingArrangement::where('order_id', $orderId)->first();
$lastSchedule = $shippingArrangement->shippingSchedule()->orderBy('created_at', 'desc')->first();
$shippingArrangement->shippingSchedule()->update(['status' => 2]);
CustomIssues::create(['schedule_id' => $lastSchedule->id, 'remark' => $request->input('remark')]);
$shippingArrangement->shippingSchedule()->create(['ETD' => Carbon::parse($request->input('ETD')), 'ETA' => Carbon::parse($request->input('ETA'))]);
return 200;
}
public function delete(String $orderId){
/** @var Order $order */
$order = Order::findOrFail($orderId);
$order->delete();
}
}