Viewing file: DeliveryController_20240523.php (9.31 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Delivery;
use App\Models\Order;
use App\Models\Vendor;
use App\Models\Shop;
use App\Models\DeliveryPartner;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use GuzzleHttp\Client;
class DeliveryController extends Controller
{
function __construct() {
$this->middleware('auth');
}
function index() {
$data=Delivery::get();
$vendors=Shop::select('id','shop_name')->get();
return view('pages.delivery.index',['deliveries'=>$data,'vendors'=>$vendors]);
}
public function getDeliveries()
{
// $orders=Order::select('id','customer as customer_name','total_amount as amount','delivery_deadline as delivery_date','total_amount as sales_item','id as payment','id as status')->get();
$orders=Delivery::with('customer')->with('vendor')->with('delivery_partner')->get();
echo json_encode($this->makeData($orders));
}
function requestedDeliveries() {
$data=Delivery::where("status",1)->get();
$vendors=Shop::select('id','shop_name')->get();
return view('pages.delivery.requested',['deliveries'=>$data,'vendors'=>$vendors]);
}
public function filterRequestedDeliveries(Request $req){
$query = Delivery::query();
$query->when($req->input('vendor') !== 'all', function ($q) use ($req) {
$q->where('page_id', $req->input('vendor'));
});
$query->when($req->input('search_input') !== '', function ($q) use ($req) {
$q->where('invoice_no','LIKE',"%{$req->input('search_input')}%");
});
if ($req->input('from_date')) {
$from_date=date_create($req->input('from_date'));
$from_date= date_format($from_date,"Y-m-d");
$to_date=date_create($req->input('to_date'));
$to_date= date_format($to_date,"Y-m-d");
$to_date = date(date('Y-m-d', strtotime($to_date. ' + 1 days')));
$query->where('created_at','>',$from_date);
$query->where('created_at','<',$to_date);
}
$orders = $query->where('status',1)->get();
$vendors=Shop::select('id','shop_name')->get();
return view('pages.delivery.requested',['deliveries'=>$orders,'vendors'=>$vendors,
'search_input'=>$req->input('search_input'),
'vendor'=>$req->input('vendor'),
"date_range"=>$req->input('date_range')]);
}
function pickedUp(Request $req) {
try {
$data=Delivery::find($req->id);
$data->status=2;
$data->save();
$client = new Client([
'auth' => [env('AUTH_USER'), env("AUTH_PASSWORD")]
]);
$res = $client->request('post', env("DATA_SERVER_URL").'/sale_status/'.$data->sale_id,["json"=>["sale_status"=>3]]);
echo json_encode($req->id);
} catch (\Exception $exception) {
echo json_encode($exception->getMessage());
// DB::rollback();
// return response()->json(['error' => 'true', 'message' =>$exception->getMessage()],500);
}
}
private function makeData($orders) {
$data = array();
$count=0;
foreach ($orders as $order) {
$count++;
$data[] = [
"id"=>$order->id,
"invoice"=>$order->invoice_no,
"date"=>$order->created_at,
"vendor"=>$order->vendor->first_name." ".$order->vendor->last_name,
"address"=>$order->address,
"customer_name"=>$order->customer->name,
"status"=> $order->status,
"delivery"=> $order->delivery_partner->name,
"delivery_partner"=> $order->delivered_by,
"note"=> $order->note,
];
}
return $data;
}
public function filterDeliveries(Request $req){
$query = Delivery::query();
$query->when($req->input('status') !== 'all', function ($q) use ($req) {
$q->where('status', $req->input('status'));
});
$query->when($req->input('vendor') !== 'all', function ($q) use ($req) {
$q->where('page_id', $req->input('vendor'));
});
$query->when($req->input('search_input') !== '', function ($q) use ($req) {
$q->where('invoice_no','LIKE',"%{$req->input('search_input')}%");
});
if ($req->input('from_date')) {
$from_date=date_create($req->input('from_date'));
$from_date= date_format($from_date,"Y-m-d");
$to_date=date_create($req->input('to_date'));
$to_date= date_format($to_date,"Y-m-d");
$to_date = date(date('Y-m-d', strtotime($to_date. ' + 1 days')));
$query->where('created_at','>',$from_date);
$query->where('created_at','<',$to_date);
}
$orders = $query->with('customer')->with('shop_Data')->with('vendor')->with('delivery_partner')->get();
$vendors=Shop::select('id','shop_name')->get();
$delivery_partners=DeliveryPartner::select('id','name')->where('status',1)->get();
return view('pages.delivery.index',['deliveries'=>$orders,'vendors'=>$vendors,'delivery_partners'=>$delivery_partners,
'search_input'=>$req->input('search_input'),
'vendor'=>$req->input('vendor'),
"status"=>$req->input('status'),"date_range"=>$req->input('date_range')]);
}
function update(Request $req) {
$data=Delivery::where("sale_id",$req->input('sale_id'))->first();
if ($data->status==intval($req->input('status'))) {
return redirect()->back()->with('message', "Delivery Status not changed");
} else {
DB::beginTransaction();
try {
$data->status=$req->input('status');
$data->save();
$client = new Client([
'auth' => ['Mongo_API', 'jiFFMongo@2023!@!@!@']
]);
Order::find($req->input('sale_id'))->update([
"sale_status"=>4
]);
$res= $client->request('POST', 'https://api.businesscloud.xyz/sale_status',[
"json"=>[
'_id'=>intval(microtime(true) * 1000),
'vendor_id' => $data->vendor_id,
'status'=>4,
'invoice_no'=>$data->invoice_no,
'sale_id'=>$data->sale_id,
'dateTime'=>gmdate("Y-m-d\TH:i:s\Z")
]
]);
// if ($res->getStatusCode()==200) {
// return response()->json(json_decode($res->getBody()->getContents()));
// var_dump($res->getBody()->getContents());
// }else {
// return response()->json(["error"=>"true", "message"=>json_decode($res->getBody()->getContents())],getStatusCode());
// }
DB::commit();
return redirect()->back()->with('message', "Delivery Status changed Successfully");
} catch (\Exception $exception) {
DB::rollback();
// var_dump($exception->getMessage());
return redirect()->back()->withErrors("Something Went wrong please try again");
}
}
}
function delivered() {
$data=Delivery::where("status",3)->get();
// echo $data
$vendors=Shop::select('id','shop_name')->get();
return view('pages.delivery.completed',['deliveries'=>$data,'vendors'=>$vendors]);
}
public function filterDelivered(Request $req){
$query = Delivery::query();
$query->when($req->input('status') !== 'all', function ($q) use ($req) {
$q->where('status', $req->input('status'));
});
$query->when($req->input('vendor') !== 'all', function ($q) use ($req) {
$q->where('page_id', $req->input('vendor'));
});
$query->when($req->input('search_input') !== '', function ($q) use ($req) {
$q->where('invoice_no','LIKE',"%{$req->input('search_input')}%");
});
if ($req->input('from_date')) {
$from_date=date_create($req->input('from_date'));
$from_date= date_format($from_date,"Y-m-d");
$to_date=date_create($req->input('to_date'));
$to_date= date_format($to_date,"Y-m-d");
$to_date = date(date('Y-m-d', strtotime($to_date. ' + 1 days')));
$query->where('created_at','>',$from_date);
$query->where('created_at','<',$to_date);
}
$orders = $query->with('customer')->with('shop_Data')->with('vendor')->with('delivery_partner')->where("status",3)->get();
$vendors=Shop::select('id','shop_name')->get();
$delivery_partners=DeliveryPartner::select('id','name')->where('status',1)->get();
return view('pages.delivery.completed',['deliveries'=>$orders,'vendors'=>$vendors,'delivery_partners'=>$delivery_partners,
'search_input'=>$req->input('search_input'),
'vendor'=>$req->input('vendor'),
"status"=>$req->input('status'),"date_range"=>$req->input('date_range')]);
}
}
|