Orders = $Order; $this->helpers = $helpers; } public function createOrder(Request $request){ $data = $request->all(); $validator = Validator::make($data, [ 'note' => 'required', 'address' => 'required', 'items' => 'required', ]); // $validator = $this->validateForm($data, $rules); if($validator->fails()) { return $this->helpers->apiArrayResponseBuilder(400, 'fail', $validator->errors() ); } //dd($data); $currentUser = \JWTAuth::parseToken()->authenticate(); $order = new Orders; $order->user_id = $currentUser->id; $order->note = $data["note"]; $order->address = $data["address"]; $order->status = "new"; $order->save(); $this->sendSMS($currentUser->username, 'Siz üstünlikli sargyt etdiňiz. Menejerimiz siz bilen habarlaşar'); // [{"item":34,"qty":1},{"item":35,"qty":3}] $orderItem = new OrderItems; $orderItem->order_id = $order->id; $orderItem->items = json_decode($data["items"]); $orderItem->save(); // dd($orderItem->items[0]["item"]); for ($i = 0; $i < count($orderItem->items); $i++) { $vendorSale = new VendorSales; $vendorSale->order_id = $order->id; $vendorSale->vendor_id = $orderItem->items[$i]["vendor_id"]; $vendorSale->product_id = $orderItem->items[$i]["item"]; $vendorSale->qty = $orderItem->items[$i]["qty"]; $vendorSale->price = $orderItem->items[$i]["price"]; $vendorSale->save(); } $vendorPhones = VendorSales::where("order_id", $order->id)->with("vendor")->groupBy("vendor_id")->get(); for ($x = 0; $x < count($vendorPhones); $x++) { $this->sendSMS($vendorPhones[$x]->vendor->username, 'Gurluşyk programmasyndan size sargyt edildi'); } if ($order && $orderItem && $vendorSale){ //return $this->helpers->apiArrayResponseBuilder(200, 'ok', [$order]); return response()->json($order, 200); }else{ return $this->helpers->apiArrayResponseBuilder(400, 'fail'); } } public function myOrders(Request $request){ $currentUser = \JWTAuth::parseToken()->authenticate(); $orders = Orders::where("user_id", $currentUser->id)->with('order_items')->orderBy('id', 'DESC')->paginate(12); for ($i = 0; $i < count($orders); $i++) { $product_items = $orders[$i]->order_items[0]->items; $productsCollectId = []; for ($ii = 0; $ii < count($product_items); $ii++) { $productsCollectId[] = (int)$product_items[$ii]["item"]; } $orders[$i]->products = Product::whereIn("id", $productsCollectId) ->with(['translations:locale,model_id,attribute_data', 'images:attachment_id,attachment_type,disk_name,file_name', 'vendor:id,name,email,type,logo,banner,shop_title,slogan,is_instagram', 'place',]) ->withTrashed() ->get(); $orders[$i]->makeHidden(['order_items']); } return response()->json($orders, 200); //return $this->helpers->apiArrayResponseBuilder(200, 'ok', [$orders]); } public function makeTemplate($sales) { //$asset = new \Cms\Classes\Asset($this->controller->getTheme()); $html = " SARGYT #NO:" . $sales[0]->order_id . "
Sargyt No: #".$sales[0]->order_id." Sene: ".$sales[0]->created_at->format('d.m.Y')."
Ady: ".$sales[0]->order->user->name."
Telefon: +993 ".$sales[0]->order->user->username."
Salgy: ".$sales[0]->order->address."
Telefon2: +993 ".$sales[0]->order->phone."
Bellik: ".$sales[0]->order->note."
"; for ($ii = 0; $ii < count($sales); $ii++) { $html .=""; } $html .="
# Suraty Ady Bahasy
".($ii+1)." ".$sales[$ii]->product->name." ".$sales[$ii]->product->price." TMT
"; return (string) $html; } public function onSavePdf($sales) { $pdf = App::make('dompdf.wrapper'); $pdf->loadHTML($this->makeTemplate($sales))->setWarnings(false); $pdf->stream(); $pdf->save('storage/app/media/pdf/invoice_no_' . $sales[0]->order_id . '_'.$sales[0]->order->user->username.'.pdf'); $path = Config::get('app.url') . '/storage/app/media/pdf/invoice_no_' . (string)$sales[0]->order_id . '_'.(string)$sales[0]->order->user->username.'.pdf'; return (string)$path; } public function mySales(Request $request){ $data = $request->all(); $validator = Validator::make($data, [ 'order_id' => 'required', ]); // $validator = $this->validateForm($data, $rules); if($validator->fails()) { return $this->helpers->apiArrayResponseBuilder(400, 'fail', $validator->errors() ); } $currentUser = \JWTAuth::parseToken()->authenticate(); $sales = VendorSales::where('vendor_id', $currentUser->id)->where('order_id', $data["order_id"])->with(['order.user', 'product.images:attachment_id,attachment_type,disk_name,file_name', 'product.place', 'product.vendor:id,name,email,type,logo,banner,shop_title,slogan,is_instagram'])->orderBy('id', 'DESC')->paginate(15); if(count($sales) > 0){ $sales[0]->pdf_url = $this->onSavePdf($sales); } return response()->json($sales, 200); } public function mySaleOrders(Request $request){ $currentUser = \JWTAuth::parseToken()->authenticate(); $sales = VendorSales::select('id', 'order_id', 'created_at', 'status')->with(['order.user:id,name,username', 'order:id,user_id,note,phone,address'])->where('vendor_id', $currentUser->id)->groupBy('order_id')->orderBy('id', 'DESC')->paginate(15); return response()->json($sales, 200); //return $this->helpers->apiArrayResponseBuilder(200, 'ok', [$orders]); } public function checkVendorSales(){ $currentUser = \JWTAuth::parseToken()->authenticate(); $counter = 0; $sales = VendorSales::where('vendor_id', $currentUser->id)->where('status', 'new')->get(); $newOrders = array( "new_order_count" => count($sales), ); return response()->json($newOrders, 200); //return $this->helpers->apiArrayResponseBuilder(200, 'ok', [$orders]); } public function confirmOrder(Request $request){ $data = $request->all(); $validator = Validator::make($data, [ 'order_id' => 'required', ]); // $validator = $this->validateForm($data, $rules); if($validator->fails()) { return $this->helpers->apiArrayResponseBuilder(400, 'fail', $validator->errors() ); } //dd($data); $currentUser = \JWTAuth::parseToken()->authenticate(); $vendorOrders = VendorSales::where('order_id', $data["order_id"])->get(); if((count($vendorOrders) != 0) && ($vendorOrders[0]->vendor_id == $currentUser->id)){ for ($i = 0; $i < count($vendorOrders); $i++) { $vendorOrders[$i]->status = "completed"; $vendorOrders[$i]->save(); } } if ($vendorOrders){ //return $this->helpers->apiArrayResponseBuilder(200, 'ok', [$order]); return response()->json($vendorOrders, 200); }else{ return $this->helpers->apiArrayResponseBuilder(400, 'fail'); } } protected function sendSMS($phone, $message){ $smsSender = new SmsSender(); $smsSender->phone = (string)'+993'.$phone; $smsSender->message = strval($message); $smsSender->save(); } public static function getAfterFilters() {return [];} public static function getBeforeFilters() {return [];} public static function getMiddleware() {return [];} public function callAction($method, $parameters=false) { return call_user_func_array(array($this, $method), $parameters); } }