/var/www/vhosts/nabawater/backend/controllers
NameSizeModeActions
ActivityLogController.php16500644editdlrm
AddressTypeController.php64660644editdlrm
AdminOrderReportController.php35920644editdlrm
AdminUserController.php125230644editdlrm
AdsController.php97430644editdlrm
AreaController.php70190644editdlrm
BannerController.php71000644editdlrm
BranchController.php339890644editdlrm
BranchReviewController.php22090644editdlrm
CashBackPromotionsController.php120510644editdlrm
CategoryController.php87950644editdlrm
CityController.php55180644editdlrm
CmsController.php60260644editdlrm
ConfigurationController.php105640644editdlrm
CountryController.php52340644editdlrm
CouponController.php152450644editdlrm
CuisineController.php82070644editdlrm
DashboardController.php58050644editdlrm
DeliveryAreaController.php75060644editdlrm
DeliveryboyController.php76620644editdlrm
DeliveryChargeSettingsController.php45560644editdlrm
DriverOrderController.php35850644editdlrm
EnquiryController.php25410644editdlrm
FaqController.php65710644editdlrm
IngredientController.php69540644editdlrm
ItemController.php341500644editdlrm
ItemImportController.php38480644editdlrm
ItemIngredientGroupController.php111050644editdlrm
ItemMappingController.php121600644editdlrm
ItemTypeController.php74450644editdlrm
LanguageController.php38470644editdlrm
LoginController.php16840644editdlrm
LoyalityPointController.php66550644editdlrm
MallProductController.php63980644editdlrm
MetaTagController.php50390644editdlrm
MobileTranslationController.php44510644editdlrm
NewsLetterController.php52070664editdlrm
NewsletterController.php52070644editdlrm
NewsletterSubscriberController.php17470644editdlrm
NotificationController.php83820644editdlrm
OrderController.php937130644editdlrm
OrderMallProductController.php76610644editdlrm
OrderParcelController.php27520644editdlrm
OrderReportController.php39040644editdlrm
ParcelItemTypeController.php43570644editdlrm
PromotionController.php67100644editdlrm
PushNotificationController.php29900644editdlrm
RatingController.php6230644editdlrm
RefundRequestController.php29640644editdlrm
reject-index.php429310644editdlrm
RejectedOrderReportController.php5660644editdlrm
ReportController.php422320644editdlrm
RoleController.php52300644editdlrm
SiteController.php3570644editdlrm
StockController.php20670644editdlrm
TaxController.php45680644editdlrm
TodaySpecialController.php74730644editdlrm
TopOrderItemReportController.php38660644editdlrm
TopupController.php46190644editdlrm
UnitController.php71150644editdlrm
UserController.php135660644editdlrm
UserLevelController.php37870644editdlrm
VendorBankController.php28800644editdlrm
VendorController.php244910644editdlrm
VendorOrderReportController.php51460644editdlrm
VendorPaymentController.php60940644editdlrm
VendorTypeController.php84280644editdlrm
WalletController.php17910644editdlrm
WalletTranscationController.php22820644editdlrm
WebpushNotificationController.php25630644editdlrm
Edit: /var/www/vhosts/nabawater/backend/controllers/OrderController.php (93713B)
request->queryParams); return $this->render( 'index', [ 'searchModel' => $searchModel, 'dataProvider' => $searchModel->search(Yii::$app->request->queryParams) ] ); } /** * * @return string * * @Title("Failure List") */ public function actionFailureOrder() { $searchModel = new OrderSearch(); Com::setSession('data', Yii::$app->request->queryParams); return $this->render( 'failure-index', [ 'searchModel' => $searchModel, 'dataProvider' => $searchModel->Failuresearch(Yii::$app->request->queryParams) ] ); } /** * * @return string * * @Title("Accept-List") */ public function actionAccepredOrderList() { $searchModel = new OrderSearch(); Com::setSession('data', Yii::$app->request->queryParams); return $this->render( 'accept-index', [ 'searchModel' => $searchModel, 'dataProvider' => $searchModel->searchAccept(Yii::$app->request->queryParams) ] ); } /** * * @return string * * @Title("Prepared-List") */ public function actionPreparedOrderList() { $searchModel = new OrderSearch(); Com::setSession('data', Yii::$app->request->queryParams); return $this->render( 'prepare-index', [ 'searchModel' => $searchModel, 'dataProvider' => $searchModel->searchPrepare(Yii::$app->request->queryParams) ] ); } /** * * @return string * * @Title("Delivered-List") */ public function actionDeliveredOrderList() { $searchModel = new OrderSearch(); Com::setSession('data', Yii::$app->request->queryParams); return $this->render( 'deliver-index', [ 'searchModel' => $searchModel, 'dataProvider' => $searchModel->searchDelivered(Yii::$app->request->queryParams) ] ); } /** * * @return string * * @Title("Rejected-List") */ public function actionRejectedOrderList() { $searchModel = new OrderSearch(); Com::setSession('data', Yii::$app->request->queryParams); return $this->render( 'reject-index', [ 'searchModel' => $searchModel, 'dataProvider' => $searchModel->searchReject(Yii::$app->request->queryParams) ] ); } /** * * */ public function actionExport() { $searchModel = new OrderSearch(); $dataProvider = $searchModel->search($_SESSION['data']); $model = $dataProvider->query->all(); $thead = []; $tbody = []; $theading = [ 'Order Number', 'Order Date Time', 'First Name', 'Last Name', 'Email', 'Branch Name', 'Sub Total', 'Delivery Fee', 'Package Price', 'Service Tax', 'VAT', 'Order Total', 'Payment Type', 'Order Status', 'Delivery Boy Name' ]; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet); $index = 1; foreach ($theading as $key => $value) { $sheet->setCellValueByColumnAndRow($index, 1, $theading[$key]); $index++; } $fileName = 'Order-List-Report' . '-' . date('Y-m-d') . '.csv'; $orderModel = new Order(); $positionValue = 2; foreach ($model as $key => $value) { $sheet->setCellValue("A$positionValue", $value['order_number']) ->setCellValue("B$positionValue", $value['order_date_time']) ->setCellValue("C$positionValue", $value['customer_first_name']) ->setCellValue("D$positionValue", $value['customer_last_name']) ->setCellValue("E$positionValue", $value['customer_email']) ->setCellValue("F$positionValue", $value['branch_name']) ->setCellValue("G$positionValue", $value['item_total']) ->setCellValue("H$positionValue", $value['delivery_fee']) ->setCellValue("I$positionValue", $value['package_price']) ->setCellValue("J$positionValue", $value['service_tax']) ->setCellValue("K$positionValue", $value['vat']) ->setCellValue("L$positionValue", $value['order_total']) ->setCellValue("M$positionValue", $orderModel->getPaymentOptionLabel($value['payment_option'])) ->setCellValue("N$positionValue", $orderModel->getOrderStatusLabel($value['order_status'])) ->setCellValue("O$positionValue", $value['deliveryboy_name']); ++$positionValue; } // We'll be outputting an excel file // header('Content-type: application/vnd.ms-excel'); header('Content-type: text/x-csv'); // It will be called file.xls header("Content-Disposition: attachment; filename=.$fileName"); $writer->save('php://output'); exit; } /** * @return string * * @Title("Create") */ public function actionCreate() { Com::unsetSession('cart'); $model = new Order(); $modelUser = new User(); $modelUserAddress = new UserAddress(); $modelUserAddressLang = new UserAddressLang(); $modelVendor = new Vendor(); $modelCity = new City(); $modelBranch = new Branch(); return $this->render('create', [ 'model' => $model, 'modelUser' => $modelUser, 'modelUserAddress' => $modelUserAddress, 'modelUserAddressLang' => $modelUserAddressLang, 'modelVendor' => $modelVendor, 'modelBranch' => $modelBranch, ]); } /** * @return string * @throws \yii\base\InvalidParamException * * @Title("Quick View") */ public function actionQuickView() { $params = ['id']; $post = Yii::$app->getRequest()->post(); $result = ['status' => STATUS_FAIL, 'msg' => '']; foreach ($params as $param) { if (!array_key_exists($param, $post)) { $result['msg'] = Yii::t('backend', 'Required param missing'); goto skip; } } $resposeArray = \backend\models\Order::find()->where(['order_key' => $post['id']])->one(); $resposeArray = \backend\models\Order::find()->where(['order_key' => $post['id']])->one(); $order = $resposeArray->toArray(); $driver_rejected_reason = ''; //$order['order_key'] = 'ypqsxq9l7xqb36a3'; if ($order['order_status'] == Order::ORDER_STATUS_DELIVERYBOY_REJECTED) { $responseData = Com::getJsonData('GET', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "order/rejected-reasons/" . $order['order_key'] . "?company_id=" . Configuration::get(Configuration::COMPANY_KEY), [], 0); // print_r($responseData); die; if ($responseData != "" && $responseData->status == 200) { if (count($responseData->data) > 1) { $data = end($responseData->data); $driver_rejected_reason = $data->rejected_reason; } else { $data = isset($responseData->data[0]) ? $responseData->data[0] : ""; $driver_rejected_reason = $data->rejected_reason; } } } //print_r($driver_rejected_reason); die; $result['status'] = STATUS_SUCCESS; $result['response'] = json_encode($resposeArray->toArray()); $result['data'] = $this->renderPartial('quick-view', ['resposeArray' => $resposeArray->toArray(), 'driver_rejected_reason' => $driver_rejected_reason]); skip: return $this->asJson($result); } /** * @return string * @throws \yii\base\InvalidParamException * * @Title("Add Cart Item") */ public function actionAddItemToCart() { $post = Yii::$app->getRequest()->post(); $params = ['item_id', 'branch_id', 'order_type']; $result = ['status' => STATUS_FAIL, 'msg' => '', 'model' => '', 'currency' => '']; foreach ($params as $param) { if (!array_key_exists($param, $post)) { $result['msg'] = 'Required Param Missing'; goto skip; } } $cart = $this->getCartItems(); $model = Item::find() ->alias('I') ->select([ 'I.item_id', 'I.item_key', 'IL.item_name', 'I.item_price', 'I.package_price' ]) ->leftJoin(['IL' => ItemLang::tableName()], 'IL.item_id = I.item_id') ->where(['IL.item_id' => $post['item_id']]) ->andWhere(['not', ['I.category_id' => null]]) ->andWhere(['not', ['I.package_price' => null]]) ->asArray() ->one(); if ($model === null || empty($model)) { $result['msg'] = 'Unable to find the item'; goto skip; } $ingredients = []; if (isset($post['ingredient']) && count($post['ingredient']) > 0) { $ingredientData = ItemMapping::find() ->alias('IM') ->select([ 'I.ingredient_key', 'IL.ingredient_name', 'IIM.price', 'IIG.item_ingredient_group_key' ]) ->leftJoin(['IMG' => ItemMappingGroup::tableName()], 'IMG.item_mapping_id = IM.item_mapping_id') ->leftJoin(['IIG' => ItemIngredientGroup::tableName()], 'IIG.item_ingredient_group_id = IMG.item_ingredient_group_id') ->leftJoin(['IIM' => ItemIngredientMapping::tableName()], 'IIM.item_ingredient_group_id = IIG.item_ingredient_group_id') ->leftJoin(['IL' => IngredientLang::tableName()], 'IL.ingredient_id = IIM.ingredient_id') ->leftJoin(['I' => Ingredient::tableName()], 'I.ingredient_id = IL.ingredient_id') ->where(['in', 'IL.ingredient_id', $post['ingredient']]) ->andWhere(['IM.item_id' => $post['item_id']]) ->asArray() ->all(); if (count($ingredientData) > 0) { foreach ($ingredientData as $ingredient) { $unique_key = $ingredient['item_ingredient_group_key'] . '-' . $ingredient['ingredient_key']; $ingredients[] = [ 'unique_key' => $unique_key, 'group_key' => $ingredient['item_ingredient_group_key'], 'ingredient_name' => $ingredient['ingredient_name'], 'ingredient_key' => $ingredient['ingredient_key'], 'price' => $ingredient['price'], ]; } } } $modelBranch = Branch::find() ->select('*') ->where(['branch_id' => $post['branch_id']]) ->one(); $branchLatitude = $modelBranch->latitude; $branchLongitude = $modelBranch->longitude; $deliveryChargeBase = $modelBranch->delivery_charge_base; $deliveryChargeBaseKm = $modelBranch->delivery_charge_base_km; $deliveryChargeAdditionalPerKm = $modelBranch->delivery_charge_additional_per_km; $packagePrice = $model['package_price']; $deliveryFee = 0.0; if ((int)$post['order_type'] === ORDER::ORDER_TYPE_PICKUP) { $deliveryFee = 0.0; } else if ((int)$post['order_type'] === ORDER::ORDER_TYPE_DELIVERY) { $userDistance = GeoHelper::distance($post['lat'], $post['lng'], $branchLatitude, $branchLongitude); if ($userDistance <= $deliveryChargeBase) { $deliveryFee = $deliveryChargeBaseKm; } else { $distanceDifference = $userDistance - $deliveryChargeBase; $deliveryFee = $deliveryChargeBaseKm + ($distanceDifference * $deliveryChargeAdditionalPerKm); } } $cartData = [ 'cart_key' => Com::generateRandomString(16, true), 'quantity' => 1, 'item_id' => $model['item_id'], 'item_key' => $model['item_key'], 'item_name' => $model['item_name'], 'item_price' => $model['item_price'], 'package_price' => $model['package_price'], 'delivery_fee' => $deliveryFee, 'ingredient_total' => 0, 'total' => 0, 'ingredients' => [], 'tax' => 0 ]; if (ArrayHelper::keyExists('ingredient', $post) && $post['ingredient'] !== []) { $cartData['ingredients'] = array_values($ingredients); $cartData['ingredient_total'] = array_sum(ArrayHelper::getColumn($ingredients, 'price')); } $cartIndexArr = array_keys(ArrayHelper::getColumn($cart, 'item_id'), $post['item_id']); $isUpdate = false; foreach ($cartIndexArr as $cartIngredient => $cartIndex) { $cartIngredient = ArrayHelper::getColumn($cart[$cartIndex]['ingredients'], 'unique_key'); $cartDataIngredient = ArrayHelper::getColumn($cartData['ingredients'], 'unique_key'); if ( array_intersect($cartIngredient, $cartDataIngredient) !== [] || ($cartIngredient === [] && $cartDataIngredient === []) ) { $cart[$cartIndex]['quantity'] += $cartData['quantity']; $total = $cart[$cartIndex]['item_price'] + $cart[$cartIndex]['ingredient_total']; $cart[$cartIndex]['total'] = $total * $cart[$cartIndex]['quantity']; $total = $cart[$cartIndex]['total'] + $deliveryFee + $model['package_price']; $isUpdate = true; } } $modelTax = Tax::find()->alias('T') ->select(['T.*', 'TL.tax_name']) ->leftJoin(['TL' => TaxLang::tableName()], 'T.tax_id = TL.tax_id') ->where(['T.status' => Tax::ACTIVE]) ->all(); $taxAmount = 0; if ($isUpdate === false) { $total = $cartData['item_price'] + $cartData['ingredient_total']; $cartData['total'] = $total * $cartData['quantity']; $total = $total + $deliveryFee + $model['package_price']; if (!empty($modelTax)) { foreach ($modelTax as $tax) { $taxPercentage = $tax->value / 100; $taxAmount = $total * $taxPercentage; $total += $taxAmount; $cartData['tax'] = $taxAmount; $cartData['total'] = $total; } } $cart[] = $cartData; } Com::setSession('cart', $cart); $result['data'] = $this->renderPartial('_cart', ['items' => $cart]); $result['currency'] = Configuration::get(Configuration::APP_CURRENCY_CODE); $result['status'] = STATUS_SUCCESS; skip: return $this->asJson($result); } /** * * @return Json * * @Title("Assign Order") */ public function actionAssignOrder() { $param = 'id'; $post = Yii::$app->getRequest()->post(); $result = ['status' => STATUS_FAIL, 'msg' => '']; if (!array_key_exists($param, $post)) { $result['msg'] = Yii::t('backend', 'Required param missing'); goto skip; } $modelOrder = Order::find() ->where(['order_key' => $post['id']]) ->one(); $resultData = []; $responseData = Com::getJsonData('GET', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "company/drivers/vendor/0?company_id=" . Configuration::get(Configuration::COMPANY_KEY), [], 0); /* set flash for sever down */ if ($responseData == null || (isset($responseData) && $responseData->status == 404)) { Yii::$app->session->setFlash('danger', Yii::t('backend', 'Server is down! Please try again some other time!')); } if (isset($responseData->data)) { foreach ($responseData->data as $dataKey => $dataValue) { $resultData[] = [ 'id' => $dataValue->_id, 'key' => $dataValue->_id, 'name' => $dataValue->name, 'status' => $dataValue->status, 'email' => $dataValue->email, 'phone_number' => $dataValue->phone_number, 'country' => $dataValue->country, 'city' => $dataValue->city, 'address' => $dataValue->address ]; } } else { $resultData = []; } $result['status'] = STATUS_SUCCESS; $result['response'] = json_encode($resultData); $result['data'] = $this->renderPartial('delivery-boy', ['responseArray' => $resultData, 'order_id' => $post['id']]); skip: return $this->asJson($result); } /** * @return $string * * @Title("Assign Delivery Boy") */ public function actionAssignDeliveryBoy() { $params = ['id', 'order_id']; $result = ['status' => STATUS_FAIL, 'msg' => '']; $post = Yii::$app->getRequest()->post(); foreach ($params as $param) { if (!array_key_exists($param, $post)) { $result['msg'] = 'Required Param Missing'; goto skip; } } $model = Order::find() ->where(['order_key' => $post['order_id']]) ->one(); if ($model === null) { $result['msg'] = 'Unable to find the Order Details'; goto skip; } else { /* if($model->is_delivery_boy_order_created != Order::DELIVERY_ORDER_CREATED) { $created = $this->saveDataOnDeliveryBoy($model->order_key); if(!$created) { $result['msg'] = 'Please try again later'; goto skip; } } */ $responseData = Com::getJsonData('PUT', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "order/" . $model->order_key . "/assign_driver/" . $post['id'] . "?company_id=" . Configuration::get(Configuration::COMPANY_KEY), [], 0); if ($responseData == null || (isset($responseData) && $responseData->status == 404)) { $result['status'] = STATUS_FAIL; $result['msg'] = Yii::t('backend', 'Server is down! Please try again some other time!'); } else if ($responseData->status == 400) { $msg = $responseData->message; $result['status'] = STATUS_FAIL; $result['msg'] = Yii::t('backend', $msg); } else if ($responseData->status == 200) { $model->deliveryboy_id = $post['id']; $model->order_status = Order::ORDER_STATUS_DELIVERYBOY_ASSIGNED; $model->save(false); $modelDeliveryRequest = new DeliveryboyRequest(); $modelDeliveryRequest->order_id = $model['order_id']; $modelDeliveryRequest->delivery_boy_id = $post['id']; $modelDeliveryRequest->requested_datetime = date('Y-m-d H:i:s'); $modelDeliveryRequest->status = DeliveryboyRequest::ACTIVE; $modelDeliveryRequest->save(); $result['status'] = STATUS_SUCCESS; $result['msg'] = 'Deliverboy Boy Assigned Successfully'; } } skip: return $this->asJson($result); } /** * @return Json * * @Title("Order Status") */ public function actionGetOrderStatus() { $post = Yii::$app->getRequest()->post(); $params = ['status', 'id']; $result = ['status' => STATUS_FAIL, 'msg' => '']; foreach ($params as $param) { if (!array_key_exists($param, $post)) { $result['msg'] = 'Required Param Missing'; goto skip; } } $model = Order::findOne(['order_key' => $post['id']]); $modelVendor = Vendor::findOne(['vendor_id' => $model->vendor_id]); if ($model === null) { $result['msg'] = 'Unable to find the Order Details'; goto skip; } else { if ($model->order_status == Order::DELIVERY_REJECTED_CONDITION) { $result['msg'] = 'Order already rejected'; goto skip; } if ($post['status'] == Order::DELIVERY_REJECTED_CONDITION) { $result['msg'] = 'Reject send'; $result['status'] = Order::DELIVERY_REJECTED_CONDITION; $result['order_key'] = $post['id']; goto skip; } } if ($model->order_type == Order::ORDER_TYPE_DELIVERY) { if ($post['status'] == Order::ORDER_STATUS_ACCEPTED) { $requestData = []; $requestData['vendor_location'] = [ 'latitude' => $modelVendor->vendor_latitude, 'longitude' => $modelVendor->vendor_longitude, ]; $responseData = Com::getJsonData('PUT', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "order/" . $model->order_key . "/" . $post['status'] . "?company_id=" . Configuration::get(Configuration::COMPANY_KEY), $requestData, 1); } else { if ($post['status'] == Order::ORDER_STATUS_DELIVERED_TO_RIDER) { $post['status'] = Order::ORDER_STATUS_READY_TO_PICKUP; } $responseData = Com::getJsonData('PUT', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "order/" . $model->order_key . "/" . $post['status'] . "?company_id=" . Configuration::get(Configuration::COMPANY_KEY), [], 0); } } else { $userDeviceToken = User::find() ->select('device_token') ->where(['user_id' => $model->user_id]) ->andWhere(['not', ['device_token' => null]]) ->one(); if ($post['status'] == Order::ORDER_STATUS_PENDING || $post['status'] == Order::ORDER_STATUS_ACCEPTED || $post['status'] == Order::ORDER_STATUS_PREPARED || $post['status'] == Order::ORDER_STATUS_READY_TO_PICKUP || $post['status'] == Order::ORDER_STATUS_ONTHEWAY || $post['status'] == Order::ORDER_STATUS_DELIVERED || $post['status'] == Order::ORDER_STATUS_REJECTED) { $token = $userDeviceToken != null ? trim($userDeviceToken->device_token) : ''; try { $oneSignal = OneSignal::getInstance(); $oneSignal->setAppId(Configuration::get(Configuration::PUSH_NOTIFICATION_APP_ID)); $oneSignal->setRestApiKey(Configuration::get(Configuration::PUSH_NOTIFICATION_REST_API_KEY)); $oneSignal->setIcon('http://online.kitokey.com/frontend/web/theme/images/notification.png'); $oneSignal->push( ['en' => 'Order status'], ['en' => 'Your Order ' . '#' . $model->order_number . ' has been ' . $model->getOrderStatusLabelCustom($post['status'])], [$token], ['status' => 'Message Sent Successfully'] ); } catch (Exception $e) { $result['msg'] = $e->getMessage(); //echo $e->getMessage(); } } } $model->order_status = $post['status']; $model->save(false); $result['msg'] = 'Order Status Changed Successfully'; $adminUserData = Yii::$app->getUser()->getIdentity(); $adminUserName = $adminUserData->attributes['user_name']; ActivityLog::log($adminUserName . ' ' . 'order ' . $model->order_number . ' status changed to ' . $model->getOrderStatusLabelCustom($post['status'])); $result['status'] = STATUS_SUCCESS; skip: return $this->asJson($result); } /** * @return Json * * @Title("Order Status") */ public function actionRejectOrderStatus() { $post = Yii::$app->getRequest()->post(); $params = ['status', 'id']; $result = ['status' => STATUS_FAIL, 'msg' => '']; foreach ($params as $param) { if (!array_key_exists($param, $post)) { $result['msg'] = 'Required Param Missing'; goto skip; } } $model = Order::findOne(['order_key' => $post['id']]); if ($model === null) { $result['msg'] = 'Unable to find the Order Details'; goto skip; } else { $model->order_status = $post['status']; $model->rejected_reason = $post['reject_reason']; $model->save(false); // die('ko'); $userWebToken = User::find() ->select('device_token') ->where(['user_id' => $model->user_id]) ->andWhere(['not', ['device_token' => null]]) ->one(); if ($userWebToken != null) { $token = trim($userWebToken->device_token); try { $oneSignal = OneSignal::getInstance(); $oneSignal->setAppId(Configuration::get(Configuration::PUSH_NOTIFICATION_APP_ID)); $oneSignal->setRestApiKey(Configuration::get(Configuration::PUSH_NOTIFICATION_REST_API_KEY)); $oneSignal->setIcon('http://online.kitokey.com/frontend/web/theme/images/notification.png'); $oneSignal->push( ['en' => 'Order status'], ['en' => 'Your order #' . $model->order_number . ' has been rejected.'], [$token], ['status' => 'Message Sent Successfully'] ); } catch (Exception $e) { echo $e->getMessage(); } } } if ($model->order_type == Order::ORDER_TYPE_DELIVERY) { $status = Order::ORDER_STATUS_REJECTED; $responseData = Com::getJsonData('PUT', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "order/".$model->order_key."/".$status."?company_id=" . Configuration::get(Configuration::COMPANY_KEY), [], 0); } $orderItem = OrderItem::find()->where(['order_id' => $model->order_id])->all(); foreach ($orderItem as $key => $orderItemModel) { $itemModel = Item::find() ->where(['item_id' => $orderItemModel->item_id]) ->one(); if ($itemModel !== null) { $itemModel->quantity = $itemModel->quantity + $orderItemModel->quantity; $itemModel->save(false); } } $result['msg'] = 'Order Rejected Successfully'; $result['status'] = STATUS_SUCCESS; $adminUserData = Yii::$app->getUser()->getIdentity(); $adminUserName = $adminUserData->attributes['user_name']; ActivityLog::log($adminUserName . ' ' . 'order ' . $model->order_number . ' status changed to ' . $model->getOrderStatusLabelCustom($post['status'])); skip: return $this->asJson($result); } /** * @return Json * * @Title("Payment Status") */ public function actionGetPaymentStatus() { $post = Yii::$app->getRequest()->post(); $params = ['status', 'id']; $result = ['status' => STATUS_FAIL, 'msg' => '']; foreach ($params as $param) { if (!array_key_exists($param, $post)) { $result['msg'] = 'Required Param Missing'; goto skip; } } $model = Order::findOne(['order_key' => $post['id']]); if ($model === null) { $result['msg'] = 'Unable to find the Order Details'; goto skip; } else { $model->payment_status = $post['status']; $model->save(false); } $result['msg'] = 'Payment Status Changed Successfully'; $result['status'] = STATUS_SUCCESS; skip: return $this->asJson($result); } /** * @return array|bool|mixed|null|string */ private function getCartItems() { $cartItems = []; if (Com::isSession('cart')) { $cartItems = Com::session('cart'); } if ($cartItems === false || $cartItems === null || $cartItems === '') { $cartItems = []; } return $cartItems; } /** * * @param string $branch * @param float $latitude * @param float $longitude * @param int $orderType * @return array */ public function actionHasDeliveryTimeSlot() { $post = Yii::$app->getRequest()->post(); $param = 'id'; $result = ['status' => STATUS_FAIL, 'msg' => '']; if (!array_key_exists($param, $post)) { $result['msg'] = 'Required Param Missing'; goto skip; } $model = Branch::findOne(['branch_id' => $post['id']]); if ($model == null) { $result['msg'] = 'Unable to find Branch Details'; goto skip; } else { $modelBranchTimeSlot = BranchTimeslot::find() ->alias('BT') ->innerJoin(['B' => Branch::tableName()], 'B.branch_id = BT.branch_id') ->where([ 'B.branch_id' => $post['id'], 'BT.branch_timeslot_status' => BranchTimeslot::ACTIVE, 'BT.timeslot_type' => BranchTimeslot::ORDER_TYPE_DELIVERY, 'BT.day_id' => (date('w') + 1) ]) ->all(); } if ($modelBranchTimeSlot == null) { $result['msg'] = 'This Branch has no timeslot for delivery choose another branch'; goto skip; } Com::unsetSession('cart'); $result['status'] = STATUS_SUCCESS; skip: return $this->asJson($result); } // public function actionDeliveryAreaCheck() // { // $post = Yii::$app->getRequest()->post(); // $params = ['lat', 'lng', 'id']; // $result = ['status' => STATUS_FAIL, 'msg' => '']; // // foreach ($params as $param) { // if (!array_key_exists($param, $post)) { // $result['msg'] = 'Required Param Missing'; // goto skip; // } // } // // $modelBranchDeliveryArea = BranchDeliveryArea::find() // ->alias('BDA') // ->select([ // 'BDA.delivery_area_id', // 'BDA.branch_id', // 'DA.delivery_area_id', // 'DA.delivery_area_data', // 'DA.delivery_area_type', // 'DA.delivery_area_radius', // 'B.*' // ]) // ->innerJoin(['DA' => DeliveryArea::tableName()],'DA.delivery_area_id = BDA.delivery_area_id') // ->leftJoin(['B' => Branch::tableName()],'B.branch_id = BDA.branch_id') // ->where([ // 'B.branch_status' => Branch::ACTIVE, // 'B.branch_availability_status' => Branch::BRANCH_AVAILABILITY_STATUS_OPEN, // 'B.branch_id' => $post['id'] // ]) // ->asArray() // ->all(); // // if ($modelBranchDeliveryArea == null) { // $result['msg'] = 'Branch is not opened and it is inactive'; // goto skip; // } // // $deliveryBranches = []; // foreach ($modelBranchDeliveryArea as $deliveryArea) { // $shapeJson = json_decode($deliveryArea['delivery_area_data']); // // $geoMetricHelper = GeoMetricHelper::getInstance() // ->setPoint($post['lat'],$post['lng']); // // if($deliveryArea['delivery_area_type'] == DeliveryArea::DELIVERY_AREA_TYPE_CIRCLE) { // // list($lat, $lon) = $shapeJson; // // $geoMetricHelper->setShapeType($geoMetricHelper::SHAPE_TYPE_CIRCLE) // ->setRadius($deliveryArea['delivery_area_radius']) // ->setCenterPoint($lat,$lon); // // } else { // $geoMetricHelper->setShapeType($geoMetricHelper::SHAPE_TYPE_POLYGON) // ->setShapePoints($shapeJson); // } // // if ($geoMetricHelper->isPointInsideGeoMetric()) { // $deliveryBranches = $deliveryArea['branch_id']; // } // } // // if (empty($deliveryBranches)) { // $result['msg'] = 'Order is placed out of Delivery Area'; // goto skip; // } // // $result['status'] = STATUS_SUCCESS; // skip: // // return $this->asJson($result); // } /** * @return Json * * @Title('Pick Up Date Time Check') */ public function actionPickupDateTimeCheck() { $post = Yii::$app->getRequest()->post(); $params = ['date_time', 'branch_id', 'order_date_time']; $result = ['status' => STATUS_FAIL, 'msg' => '']; foreach ($params as $param) { if (!array_key_exists($param, $post)) { $result['msg'] = 'Required Param Missing'; goto skip; } } $model = Branch::findOne(['branch_id' => $post['branch_id']]); if ($model == null) { $result['msg'] = 'Unable to find Branch Details'; goto skip; } $modelBranchTimeSlot = BranchTimeslot::find() ->alias('BT') ->select([ 'BT.timeslot_start_time', 'BT.timeslot_end_time' ]) ->innerJoin(['B' => Branch::tableName()], 'B.branch_id = BT.branch_id') ->where(['BT.branch_id' => $post['branch_id']]) ->andWhere(['BT.branch_timeslot_status' => BranchTimeslot::ACTIVE]) ->andWhere(['BT.timeslot_type' => BranchTimeslot::TIMESLOT_PICKUP]) ->one(); if ($modelBranchTimeSlot == null) { $result['msg'] = 'Branch has no pickup hours'; goto skip; } $pickupTime = date('H:i', strtotime($post['date_time'])); $branchStartTime = date('H:i', strtotime($modelBranchTimeSlot->timeslot_start_time)); $branchEndTime = date('H:i', strtotime($modelBranchTimeSlot->timeslot_end_time)); $orderDateTime = $post['order_date_time']; if ($pickupTime <= $branchStartTime) { $result['msg'] = 'Pickup time is too early than branch open time'; goto skip; } else if ($pickupTime >= $branchEndTime) { $result['msg'] = 'Pickup time is too late than branch closing time'; goto skip; } else if ($pickupTime <= $orderDateTime) { $result['msg'] = 'Pickup Time should be greater than Order Time'; goto skip; } $result['status'] = STATUS_SUCCESS; skip: return $this->asJson($result); } /** * @return Json * * @Title("Track") */ public function actionTrack() { $params = ['id']; $post = Yii::$app->getRequest()->post(); $result = ['status' => STATUS_FAIL, 'msg' => '', 'count' => 0, 'locations' => '[]']; foreach ($params as $param) { if (!array_key_exists($param, $post)) { $result['msg'] = Yii::t('backend', 'Required param missing'); goto skip; } } $model = Order::find()->where(['order_key' => $post['id']])->asArray()->one(); $deliveryBoyData = ''; if (!empty($model['deliveryboy_id'])) { $responseData = Com::getJsonData('GET', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "driver/" . $model['deliveryboy_id'] . "?company_id=" . Configuration::get(Configuration::COMPANY_KEY), [], 0); $responseDataFull = Com::getJsonData('GET', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "driver/company?company_id=" . Configuration::get(Configuration::COMPANY_KEY), [], 0); if (isset($responseDataFull->data)) { foreach ($responseDataFull->data as $responseDataFullvalue) { if ($responseDataFullvalue->_id == $model['deliveryboy_id']) { $delivery_boy_latitude = $responseDataFullvalue->location->coordinates[1]; $delivery_boy_longitude = $responseDataFullvalue->location->coordinates[0]; $delivery_boy_id = $responseDataFullvalue->_id; $delivery_boy_name = $responseDataFullvalue->name; $delivery_boy_email = $responseDataFullvalue->email; $delivery_boy_phone_number = $responseDataFullvalue->phone_number; } } } else { $delivery_boy_latitude = 102.2459546; $delivery_boy_longitude = 2.2519751; } if (isset($delivery_boy_id)) { $deliveryBoyData = [ 'latitude' => $delivery_boy_latitude, 'longitude' => $delivery_boy_longitude, 'deliveryboy_id' => $delivery_boy_id, 'deliveryboy_name' => $delivery_boy_name, 'deliveryboy_email' => $delivery_boy_email, 'mobile_number' => $delivery_boy_phone_number, ]; } } else { $deliveryBoyData = [ 'latitude' => 102.2459546, 'longitude' => 2.2519751, 'deliveryboy_id' => '', 'deliveryboy_name' => '', 'deliveryboy_email' => '', 'mobile_number' => '', ]; } if ($deliveryBoyData == null || $deliveryBoyData == '') { $deliveryBoyData = [ 'latitude' => 102.2459546, 'longitude' => 2.2519751, 'deliveryboy_id' => '', 'deliveryboy_name' => '', 'deliveryboy_email' => '', 'mobile_number' => '', ]; } $result['deliveryBoyData'] = Json::encode($deliveryBoyData); if ($deliveryBoyData === null) { $result['msg'] = Yii::t('backend', 'Server is down! Please try again some other time!'); goto skip; } else if (isset($deliveryBoyData->errors) && !empty($deliveryBoyData->errors)) { $result['msg'] = Yii::t('backend', $deliveryBoyData->errors[0]->message); goto skip; } $outputData = []; if (isset($deliveryBoyData['deliveryboy_id'])) { $dataValue = $deliveryBoyData['deliveryboy_id']; if ($dataValue !== null) { $outputData[] = [ 1 => ($deliveryBoyData['latitude'] != '') ? $deliveryBoyData['latitude'] : '', 2 => ($deliveryBoyData['longitude'] != '') ? $deliveryBoyData['longitude'] : '', 3 => (isset($deliveryBoyData['deliveryboy_name'])) ? $deliveryBoyData['deliveryboy_name'] : '', 4 => (isset($deliveryBoyData['deliveryboy_id'])) ? $deliveryBoyData['deliveryboy_id'] : '', 5 => (isset($deliveryBoyData['deliveryboy_email'])) ? $deliveryBoyData['deliveryboy_email'] : '', 6 => (isset($deliveryBoyData['mobile_number'])) ? $deliveryBoyData['mobile_number'] : '', ]; } } else { $outputData = []; } if (count($outputData) > 0) { $outputData = $this->driverArrayFormation($outputData, $model['order_key']); } $result['status'] = STATUS_SUCCESS; if ( (int)$model['order_status'] === Order::DELIVERY_DELIVERYBOY_ACCEPTED_CONDITION || (int)$model['order_status'] === Order::DELIVERY_ONTHEWAY_CONDITION || (int)$model['order_status'] === Order::DELIVERY_DELIVERYBOY_ASSIGNED_CONDITION || (int)$model['order_status'] === Order::ORDER_STATUS_DELIVERED_TO_RIDER || (int)$model['order_status'] === Order::DELIVERY_ACCEPTED_CONDITION && count($outputData) > 0 ) { $result['count'] = 1; $result['locations'] = json_encode($outputData); } skip: return $this->asJson($result); } /** * * @param type $driver * @param type $orderKey * @return array */ public function driverArrayFormation($outputData = array(), $orderKey = '') { $dataArray = []; if (count($outputData) > 0) { $i = 0; foreach ($outputData as $driverKey => $driverValue) { $modelOrder = Order::find() ->alias('O') ->select([ '*', 'B.latitude as branch_latitude', 'B.longitude as branch_longitude', 'BL.branch_name', 'UA.latitude as customer_latitude', 'U.mobile_number as customer_mobile_number', 'CONCAT(U.first_name, U.last_name) as customer_name', 'UA.longitude as customer_longitude' ]) ->leftJoin(['B' => Branch::tableName()], 'B.branch_id = O.branch_id') ->leftJoin(['BL' => BranchLang::tableName()], 'BL.branch_id = B.branch_id') ->leftJoin(['U' => User::tableName()], 'U.user_id = O.user_id') ->leftJoin(['UA' => UserAddress::tableName()], 'UA.user_id = U.user_id') ->where(['O.order_key' => $orderKey]) ->asArray() ->one(); /* for branch data alter */ $dataArray[$i][1] = $modelOrder['branch_latitude']; $dataArray[$i][2] = $modelOrder['branch_longitude']; $dataArray[$i]['type'] = 2; $dataArray[$i]['name'] = ''; $dataArray[$i]['no'] = ''; $dataArray[$i]['order_no'] = ''; if (count($modelOrder) > 0) { $dataArray[$i][1] = $modelOrder['branch_latitude']; $dataArray[$i][2] = $modelOrder['branch_longitude']; $dataArray[$i]['name'] = $modelOrder['branch_name']; $dataArray[$i]['order_no'] = $modelOrder['order_key']; } $i++; /* for Customer data alter */ $dataArray[$i][1] = $modelOrder['customer_latitude']; $dataArray[$i][2] = $modelOrder['customer_longitude']; $dataArray[$i]['type'] = 1; $dataArray[$i]['name'] = ''; $dataArray[$i]['no'] = ''; $dataArray[$i]['order_no'] = ''; if (count($modelOrder) > 0) { $dataArray[$i]['name'] = $modelOrder['customer_name']; $dataArray[$i]['no'] = $modelOrder['customer_mobile_number']; $dataArray[$i]['order_no'] = $modelOrder['order_key']; } $i++; /* for driver data alter */ $dataArray[$i][1] = $driverValue[1]; $dataArray[$i][2] = $driverValue[2]; $dataArray[$i]['type'] = 3; $dataArray[$i]['name'] = ''; $dataArray[$i]['order_no'] = ''; if (count($modelOrder) > 0) { $dataArray[$i]['name'] = $driverValue[3]; $dataArray[$i]['order_no'] = $modelOrder['order_key']; } } return $dataArray; } return $dataArray; } /** * @return Json */ public function actionDriverLatLong() { $params = ['id']; $post = Yii::$app->getRequest()->post(); $result = ['status' => STATUS_FAIL, 'msg' => '', 'count' => 0, 'locations' => '[]']; foreach ($params as $param) { if (!array_key_exists($param, $post)) { $result['msg'] = Yii::t('backend', 'Required param missing'); goto skip; } } $model = Order::find()->where(['order_key' => $post['id']])->asArray()->one(); if (!empty($model['deliveryboy_id'])) { $responseData = Com::getJsonData('GET', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "driver/" . $model['deliveryboy_id'] . "?company_id=" . Configuration::get(Configuration::COMPANY_KEY), [], 0); $responseDataFull = Com::getJsonData('GET', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "driver/company?company_id=" . Configuration::get(Configuration::COMPANY_KEY), [], 0); if (isset($responseDataFull->data) && isset($responseData->data)) { foreach ($responseDataFull->data as $responseDataFullvalue) { if ($responseDataFullvalue->_id == $responseData->data->_id) { $delivery_boy_latitude = $responseDataFullvalue->location->coordinates[1]; $delivery_boy_longitude = $responseDataFullvalue->location->coordinates[0]; } } } if (isset($responseData->data)) { $deliveryBoyData = [ 'latitude' => $delivery_boy_latitude, 'longitude' => $delivery_boy_longitude, 'deliveryboy_id' => $responseData->data->_id, 'deliveryboy_name' => $responseData->data->name, 'deliveryboy_email' => $responseData->data->email, 'mobile_number' => $responseData->data->phone_number, ]; } } else { $deliveryBoyData = [ 'latitude' => 11.021805918561210, 'longitude' => 76.91577411880496, 'deliveryboy_id' => '', 'deliveryboy_name' => '', 'deliveryboy_email' => '', 'mobile_number' => '', ]; } $result['deliveryBoyData'] = Json::encode($deliveryBoyData); if ($deliveryBoyData === null) { $result['msg'] = Yii::t('backend', 'Server is down! Please try again some other time!'); goto skip; } else if (isset($deliveryBoyData->errors) && !empty($deliveryBoyData->errors)) { $result['msg'] = Yii::t('backend', $deliveryBoyData->errors[0]->message); goto skip; } $outputData = []; if (isset($deliveryBoyData['deliveryboy_id'])) { $dataValue = $deliveryBoyData['deliveryboy_id']; if ($dataValue !== null) { $outputData[] = [ 1 => ($deliveryBoyData['latitude'] != '') ? $deliveryBoyData['latitude'] : '', 2 => ($deliveryBoyData['longitude'] != '') ? $deliveryBoyData['longitude'] : '', 3 => (isset($deliveryBoyData['deliveryboy_name'])) ? $deliveryBoyData['deliveryboy_name'] : '', 4 => (isset($deliveryBoyData['deliveryboy_id'])) ? $deliveryBoyData['deliveryboy_id'] : '', 5 => (isset($deliveryBoyData['deliveryboy_email'])) ? $deliveryBoyData['deliveryboy_email'] : '', 6 => (isset($deliveryBoyData['mobile_number'])) ? $deliveryBoyData['mobile_number'] : '', ]; } } else { $outputData = []; } if (count($outputData) > 0) { $outputData = $this->driverArrayFormation($outputData, $model['order_key']); } $result['status'] = STATUS_SUCCESS; if (count($outputData) > 0) { $result['count'] = 1; $result['locations'] = json_encode($outputData); } skip: return $this->asJson($result); } /** * * @param type $id * @return string * * @Title("Print") */ public function actionPrint($id) { $this->layout = 'print'; $model = Order::find()->where(['order_key' => $id])->one(); return $this->render( 'quick-view', ['resposeArray' => $model->toArray()] ); } /** * @return Json * * @Title("Save") */ public function actionSave() { $model = new Order(); $modelUser = new User(); $modelUserAddress = new UserAddress(); $modelUserAddressLang = new UserAddressLang(); $modelVendor = new Vendor(); $modelCity = new City(); $modelBranch = new Branch(); $post = Yii::$app->getRequest()->post(); if ($model->load($post) && $model->validate()) { $result = ['status' => STATUS_FAIL, 'msg' => '']; $params = ['latitude', 'longitude']; $branch_id = 'branch_id'; foreach ($params as $param) { if (!array_key_exists($param, $post['UserAddress'])) { $result['msg'] = 'Required Param Missing'; goto skip; } } if (!array_key_exists($branch_id, $post['Order'])) { $result['msg'] = 'Required Param Missing'; goto skip; } $modelBranchDeliveryArea = BranchDeliveryArea::find() ->alias('BDA') ->select([ 'BDA.delivery_area_id', 'BDA.branch_id', 'DA.delivery_area_id', 'DA.delivery_area_data', 'DA.delivery_area_type', 'DA.delivery_area_radius', 'B.*' ]) ->innerJoin(['DA' => DeliveryArea::tableName()], 'DA.delivery_area_id = BDA.delivery_area_id') ->leftJoin(['B' => Branch::tableName()], 'B.branch_id = BDA.branch_id') ->where([ 'B.branch_status' => Branch::ACTIVE, 'B.branch_availability_status' => Branch::BRANCH_AVAILABILITY_STATUS_OPEN, 'B.branch_id' => $post['Order']['branch_id'] ]) ->asArray() ->all(); if ($modelBranchDeliveryArea == null) { $result['msg'] = 'Branch is not opened and it is inactive'; goto skip; } $deliveryBranches = []; foreach ($modelBranchDeliveryArea as $deliveryArea) { $shapeJson = json_decode($deliveryArea['delivery_area_data']); $geoMetricHelper = GeoMetricHelper::getInstance() ->setPoint($post['UserAddress']['latitude'], $post['UserAddress']['longitude']); if ($deliveryArea['delivery_area_type'] == DeliveryArea::DELIVERY_AREA_TYPE_CIRCLE) { list($lat, $lon) = $shapeJson; $geoMetricHelper->setShapeType($geoMetricHelper::SHAPE_TYPE_CIRCLE) ->setRadius($deliveryArea['delivery_area_radius']) ->setCenterPoint($lat, $lon); } else { $geoMetricHelper->setShapeType($geoMetricHelper::SHAPE_TYPE_POLYGON) ->setShapePoints($shapeJson); } if ($geoMetricHelper->isPointInsideGeoMetric()) { $deliveryBranches = $deliveryArea['branch_id']; } } if (empty($deliveryBranches)) { $result['msg'] = 'Order is placed out of Delivery Area'; goto skip; } if ($post['User']['user_detail'] == '') { $modelUser->first_name = $post['Order']['customer_first_name']; $modelUser->last_name = $post['Order']['customer_last_name']; $modelUser->email = $post['Order']['customer_email']; $modelUser->mobile_number = $post['Order']['customer_mobile_number']; $modelUser->username = $post['Order']['customer_email']; $modelUser->status = $modelUser::ACTIVE; $modelUser->save(false); } if ($post['UserAddress']['user_address_detail'] == '') { $modelUserAddress->load($post); $modelUserAddressLang->load($post); $modelUserAddress->user_id = $modelUser->user_id; $modelUserAddress->address_status = $modelUserAddress::ACTIVE; $modelUserAddress->save(false); $modelUserAddressLang->user_address_id = $modelUserAddress->user_address_id; $modelUserAddressLang->language_code = Yii::$app->language; $modelUserAddressLang->save(false); $totalOrders = ((int)Order::find()->count()) + 1; $orderNumber = str_repeat('0', max(0, 7 - strlen($totalOrders))) . $totalOrders; //$model->order_number = $orderNumber; $model->user_id = $modelUser->user_id; $model->user_address_id = $modelUserAddress->user_address_id; $model->order_status = $model::ACTIVE; $modelBranch = Branch::find() ->select('delivery_charge_base_km') ->where(['branch_id' => $post['Order']['branch_id']]) ->one(); $model->delivery_fee = $modelBranch->delivery_charge_base_km; $model->latitude = $post['UserAddress']['latitude']; $model->longitude = $post['UserAddress']['longitude']; $model->save(false); } else { $totalOrders = ((int)Order::find()->count()) + 1; $orderNumber = str_repeat('0', max(0, 7 - strlen($totalOrders))) . $totalOrders; //$model->order_number = $orderNumber; $model->user_id = $post['User']['user_detail']; $model->user_address_id = $post['UserAddress']['user_address_detail']; $model->order_status = $model::ACTIVE; $modelBranch = Branch::find() ->select('delivery_charge_base_km') ->where(['branch_id' => $post['Order']['branch_id']]) ->one(); $model->delivery_fee = $modelBranch->delivery_charge_base_km; $model->latitude = $post['UserAddress']['latitude']; $model->longitude = $post['UserAddress']['longitude']; $model->save(false); } $cartData = Com::session('cart'); if (empty($cartData)) { $result['msg'] = 'Session expired Please try again'; goto skip; } $tax = 0; foreach ($cartData as $key => $value) { $modelOrderItem = new OrderItem(); $itemData = Item::find() ->alias('I') ->select([ 'IL.item_name', 'I.item_price', ]) ->leftJoin(['IL' => ItemLang::tableName()], 'IL.item_id = I.item_id') ->where(['I.item_key' => $value['item_key']]) ->one(); $modelOrderItem->order_id = $model->order_id; $modelOrderItem->item_price = $itemData->item_price; $modelOrderItem->item_total_price = $value['total']; $modelOrderItem->item_id = $value['item_id']; $modelOrderItem->quantity = $value['quantity']; $modelOrderItem->ingredients_total_price = $value['ingredient_total']; $modelOrderItem->total_price = $modelOrderItem->item_total_price + $modelOrderItem->ingredients_total_price; $modelOrderItem->save(); $modelOrderItemLang = new OrderItemLang(); $modelOrderItemLang->order_item_id = $modelOrderItem->order_item_id; $modelOrderItemLang->language_code = Yii::$app->language; $modelOrderItemLang->item_name = $itemData->item_name; $modelOrderItemLang->save(); $orderModel = Order::find()->where(['order_id' => $model->order_id])->one(); $tax += $value['tax']; $orderModel->tax = $tax; $orderModel->item_total = $value['total']; $orderModel->order_total = $value['total'] + $orderModel->delivery_fee + $tax; $orderModel->save(false); $modelOrderItemImage = new OrderItemImage(); $modelOrderItemImage->order_item_id = $modelOrderItem->order_item_id; $modelOrderItemImage->language_code = Yii::$app->language; $itemImage = ItemImage::find() ->select(['item_image_path']) ->where(['Item_id' => $modelOrderItem->item_id]) ->one(); $modelOrderItemImage->item_image_path = $itemImage->item_image_path; $modelOrderItemImage->save(); foreach ($value['ingredients'] as $key => $value) { $modelOrderIngGroup = new OrderItemIngredientGroup(); $ingGroupData = ItemIngredientGroup::find() ->alias('IIG') ->select([ 'IIG.ingredient_type', 'IIG.minimum', 'IIG.maximum', 'IIGL.group_name' ]) ->leftJoin(['IIGL' => ItemIngredientGroupLang::tableName()], 'IIGL.item_ingredient_group_id = IIG.item_ingredient_group_id') ->where(['IIG.item_ingredient_group_key' => $value['group_key']]) ->one(); $modelOrderIngGroup->order_item_id = $modelOrderItem->order_item_id; $modelOrderIngGroup->ingredient_type = $ingGroupData->ingredient_type; $modelOrderIngGroup->maximum = $ingGroupData->maximum; $modelOrderIngGroup->minimum = $ingGroupData->minimum; $modelOrderIngGroup->save(); $modelOrderIngGroupLang = new OrderItemIngredientGroupLang(); $modelOrderIngGroupLang->order_item_ingredient_group_id = $modelOrderIngGroup->order_item_ingredient_group_id; $modelOrderIngGroupLang->group_name = $ingGroupData->group_name; $modelOrderIngGroupLang->language_code = Yii::$app->language; $modelOrderIngGroupLang->save(); $ingId = Ingredient::find() ->select([ 'ingredient_id', ]) ->where(['ingredient_key' => $value['ingredient_key']]) ->one(); $modelOrderIngMapping = new OrderItemIngredientMapping(); $modelOrderIngMapping->order_item_ingredient_group_id = $modelOrderIngGroup->order_item_ingredient_group_id; $modelOrderIngMapping->ingredient_id = $ingId->ingredient_id; $modelOrderIngMapping->price = $value['price']; $modelOrderIngMapping->save(); $modelOrderIngMappingLang = new OrderItemIngredientMappingLang(); $modelOrderIngMappingLang->order_item_ingredient_mapping_id = $modelOrderIngMapping->order_item_ingredient_mapping_id; $modelOrderIngMappingLang->language_code = Yii::$app->language; $modelOrderIngMappingLang->ingredient_name = $value['ingredient_name']; $modelOrderIngMappingLang->save(); } } $result['status'] = STATUS_SUCCESS; $result['msg'] = 'Created Successfully'; skip: return $this->asJson($result); } } public function saveDataOnDeliveryBoy($order_key) { $requestData = []; $orderModel = Order::findOne(['order_key' => $order_key]); $branchModel = Branch::findOne(['branch_id' => $orderModel->branch_id]); $userAddress = UserAddress::findOne(['user_address_id' => $orderModel->user_address_id]); if ($orderModel == null) { return false; } $requestData['order_number'] = $orderModel->order_number; $requestData['order_key'] = $orderModel->order_key; $requestData['vendor_key'] = ""; $requestData['zipcode'] = ''; $requestData['payment_mode'] = $orderModel->payment_option; $requestData['amount'] = $orderModel->order_total; $requestData['order_time'] = $orderModel->order_date_time; $requestData['delivery_time'] = $orderModel->pickup_delivery_date_time; $requestData['delivery_type'] = $orderModel->delivery_option; $requestData['delivery_fee'] = $orderModel->delivery_fee; $requestData['order_status'] = $orderModel->order_status; $requestData['location']['latitude'] = $orderModel->latitude; $requestData['location']['longitude'] = $orderModel->longitude; $requestData['customer_email'] = $orderModel->customer_email; $requestData['vendor_location']['latitude'] = $branchModel->latitude; $requestData['vendor_location']['longitude'] = $branchModel->longitude; $languages = Language::getAppLanguages(); $requestData['order_details'] = []; $i = 0; foreach ($languages as $lang_code => $language) { $requestData['order_details'][$i]['lang'] = $lang_code; $requestData['vendor_details'][$i]['lang'] = $lang_code; $vendorDetails = Branch::find()->select(['B.*', 'VL.vendor_name', 'BL.city', 'BL.area', 'BL.branch_address_line1', 'BL.branch_address_line2', 'BL.country']) ->alias('B') ->leftJoin(['BL' => BranchLang::tableName()], 'B.branch_id = BL.branch_id') ->leftJoin(['VL' => VendorLang::tableName()], 'B.vendor_id = VL.vendor_id') ->where(['B.branch_id' => $orderModel->branch_id, 'BL.language_code' => $lang_code, 'VL.language_code' => $lang_code]) ->asArray()->one(); $requestData['vendor_details'][$i]['details']['vendor_name'] = ($vendorDetails['vendor_name']) ? $vendorDetails['vendor_name'] : ''; $requestData['vendor_details'][$i]['details']['vendor_address'] = (($vendorDetails['branch_address_line1']) ? $vendorDetails['branch_address_line1'] : '') . (($vendorDetails['branch_address_line2']) ? $vendorDetails['branch_address_line2'] : ''); $requestData['vendor_details'][$i]['details']['vendor_city'] = ($vendorDetails['city']) ? $vendorDetails['city'] : ''; $requestData['vendor_details'][$i]['details']['vendor_area'] = ($vendorDetails['area']) ? $vendorDetails['area'] : ''; $requestData['vendor_details'][$i]['details']['vendor_country'] = ($vendorDetails['country']) ? $vendorDetails['country'] : ''; $requestData['vendor_details'][$i]['details']['vendor_mobile'] = ($vendorDetails['contact_number']) ? $vendorDetails['contact_number'] : ''; $requestData['order_details'][$i]['details']['customer_name'] = (string)$orderModel->customer_first_name . ' ' . $orderModel->customer_last_name; $requestData['order_details'][$i]['details']['customer_mobile'] = (string)$orderModel->customer_mobile_number; $requestData['order_details'][$i]['details']['address'] = (string)$userAddress->flat_no . ' ' . $userAddress->apartment; $requestData['order_details'][$i]['details']['city'] = (string)$userAddress->city; $requestData['order_details'][$i]['details']['country'] = ($vendorDetails['country']) ? $vendorDetails['country'] : ''; $requestData['order_details'][$i]['details']['landmark'] = (string)$userAddress->landmark; $requestData['order_details'][$i]['details']['bulk_items'] = ''; $requestData['order_details'][$i]['details']['customer_image'] = ''; $requestData['order_details'][$i]['details']['items'] = []; $items = OrderItem::find()->select(['I.item_id', 'I.item_price', 'I.quantity', 'IL.item_name'])->alias('I') ->leftJoin(['IL' => ItemLang::tableName()], 'I.item_id = IL.item_id') ->where([ 'I.order_id' => $orderModel->order_id, 'language_code' => $lang_code ])->all(); $itemArray = []; $itemCount = 0; if ($items != null) { foreach ($items as $item) { $item_quantity = $item->quantity; $itemArray[$itemCount]['name'] = $item->item_name; $itemArray[$itemCount]['price'] = $item->item_price; $itemArray[$itemCount]['quantity'] = $item_quantity; $ingredients = []; $ingrdients = OrderItemIngredientMapping::find() ->select(['IL.ingredient_name', 'OIIM.price', 'OIIM.order_item_ingredient_group_id']) ->alias('OIIM') ->leftJoin(['OIIG' => OrderItemIngredientGroup::tableName()], 'OIIM.order_item_ingredient_group_id = OIIG.order_item_ingredient_group_id') ->leftJoin(['IL' => IngredientLang::tableName()], 'OIIM.ingredient_id = IL.ingredient_id') ->where(['OIIG.order_item_id' => $item->order_item_id]) ->andWhere(['IL.language_code' => $lang_code]) ->asArray() ->all(); if ($ingrdients != null) { $j = 0; foreach ($ingrdients as $ingredient) { $ingredients[$j]['name'] = $ingredient['ingredient_name']; $ingredients[$j]['price'] = $ingrdientsQuery['price']; $ingredients[$j]['type'] = $ingrdientsQuery['order_item_ingredient_group_id']; $j++; } } $itemArray[$itemCount]['ingredients'] = $ingredients; $itemCount++; } } $requestData['order_details'][$i]['details']['items'] = $itemArray; $i++; } $requestData['order_assign_type'] = Order::MANUAL_ASSIGN; $responseData = Com::getJsonData('POST', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "order/create?company_id=" . Configuration::get(Configuration::COMPANY_KEY), $requestData, 1); /* set flash for sever down */ if ((isset($responseData) && $responseData->status == 200)) { return true; } return false; } public function actionTest() { $oneSignal = OneSignal::getInstance(); $oneSignal->setAppId(Configuration::get(Configuration::PUSH_NOTIFICATION_APP_ID)); $oneSignal->setRestApiKey(Configuration::get(Configuration::PUSH_NOTIFICATION_REST_API_KEY)); $oneSignal->setIcon('http://online.kitokey.com/frontend/web/theme/images/notification.png'); $oneSignal->push( ['en' => 'msg test'], ['en' => 'Test msg'], ['21f13491-b37c-406d-a6de-f14c6751a6b0', '5d5f5362-b60c-482c-849d-b786171bd4b9'], ['status' => 'Message Sent Successfully', 'order_key' => 'sdfsdfdfsf'] ); print_r($oneSignal); die; } public function actionGridStatusButton($id) { $modelOrder = Order::find()->where(['order_key' => $id])->one(); $statusButton = (new Order())->getOrderStatus('', $modelOrder->order_status, $modelOrder->order_type); $option = ""; // $option .= Html::a(Yii::t('backend', 'Delete'), 'javascript:void(0)', [ // 'class' => 'btn btn-danger order_status_btn', // 'id' => 'delete', // 'style' => 'float:right;', // 'status' => Order::ORDER_STATUS_IS_DELETE, // ]); foreach ($statusButton as $key => $button) { if ($key != $modelOrder->order_status) { $option .= Html::a(Yii::t('backend', $button), 'javascript:void(0)', [ 'class' => 'btn btn-success order_status_btn', 'id' => 'confirm' . $key, 'style' => 'float:right;', 'status' => $key, ]); } } return $this->asJson(['button' => $option]); } /** * * @return Json */ public function actionChangeStatus() { $post = Yii::$app->request->post(); $result = ['status' => STATUS_FAIL, 'msg' => '']; foreach ($post['keylist'] as $key) { $model = Order::findOne(['order_key' => $key]); $modelVendor = Vendor::findOne(['vendor_id' => $model->vendor_id]); if ($model === null) { $result['msg'] = 'Unable to find the Order Details'; goto skip; } else { if ($post['status'] == Order::DELIVERY_REJECTED_CONDITION) { $result['msg'] = 'Reject send'; $result['status'] = Order::DELIVERY_REJECTED_CONDITION; $result['order_key'] = $key; goto skip; } } if ($model->order_type == Order::ORDER_TYPE_DELIVERY) { if ($post['status'] == Order::ORDER_STATUS_ACCEPTED) { $requestData = []; $requestData['vendor_location'] = [ 'latitude' => $modelVendor->vendor_latitude, 'longitude' => $modelVendor->vendor_longitude, ]; $responseData = Com::getJsonData('PUT', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "order/" . $model->order_key . "/" . $post['status'] . "?company_id=" . Configuration::get(Configuration::COMPANY_KEY), $requestData, 1); } else { if ($post['status'] == Order::ORDER_STATUS_DELIVERED_TO_RIDER) { $post['status'] = Order::ORDER_STATUS_READY_TO_PICKUP; } $responseData = Com::getJsonData('PUT', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "order/" . $model->order_key . "/" . $post['status'] . "?company_id=" . Configuration::get(Configuration::COMPANY_KEY), [], 0); } } else { $userDeviceToken = User::find() ->select('device_token') ->where(['user_id' => $model->user_id]) ->andWhere(['not', ['device_token' => null]]) ->one(); if ($post['status'] == Order::ORDER_STATUS_PENDING || $post['status'] == Order::ORDER_STATUS_ACCEPTED || $post['status'] == Order::ORDER_STATUS_PREPARED || $post['status'] == Order::ORDER_STATUS_READY_TO_PICKUP || $post['status'] == Order::ORDER_STATUS_ONTHEWAY || $post['status'] == Order::ORDER_STATUS_DELIVERED || $post['status'] == Order::ORDER_STATUS_REJECTED) { $token = $userDeviceToken != null ? trim($userDeviceToken->device_token) : ''; try { $oneSignal = OneSignal::getInstance(); $oneSignal->setAppId(Configuration::get(Configuration::PUSH_NOTIFICATION_APP_ID)); $oneSignal->setRestApiKey(Configuration::get(Configuration::PUSH_NOTIFICATION_REST_API_KEY)); $oneSignal->setIcon('http://online.kitokey.com/frontend/web/theme/images/notification.png'); $oneSignal->push( ['en' => 'Order status'], ['en' => 'Your Order ' . '#' . $model->order_number . ' has been ' . $model->getOrderStatusLabelCustom($post['status'])], [$token], ['status' => 'Message Sent Successfully'] ); } catch (Exception $e) { $result['msg'] = $e->getMessage(); //echo $e->getMessage(); } } } $model->order_status = $post['status']; $model->save(false); $result['msg'] = 'Order Status Changed Successfully'; $adminUserData = Yii::$app->getUser()->getIdentity(); $adminUserName = $adminUserData->attributes['user_name']; ActivityLog::log($adminUserName . ' ' . 'order ' . $model->order_number . ' status changed to ' . $model->getOrderStatusLabelCustom($post['status'])); } $result['status'] = STATUS_SUCCESS; skip: return $this->asJson($result); } public function actionAddDeliveryBoy($order_key) { $requestData = []; $orderModel = Order::findOne(['order_key' => $order_key]); $branchModel = Branch::findOne(['branch_id' => $orderModel->branch_id]); //$userAddress = UserAddress::getUseraddress($orderModel->user_address_id); $userAddress = UserAddress::getUseraddress($orderModel->user_address_id, false); if ($orderModel == null) { return false; } $requestData['order_number'] = $orderModel->order_number; $requestData['order_key'] = $orderModel->order_key; $requestData['vendor_key'] = ""; $requestData['zipcode'] = ''; $requestData['payment_mode'] = $orderModel->payment_option; $requestData['order_message'] = ($orderModel->order_message) ? $orderModel->order_message : ""; $requestData['amount'] = $orderModel->order_total; $requestData['order_time'] = $orderModel->order_date_time; $requestData['delivery_time'] = $orderModel->pickup_delivery_date_time; $requestData['delivery_type'] = $orderModel->delivery_option; $requestData['delivery_fee'] = $orderModel->delivery_fee; $requestData['order_status'] = $orderModel->order_status; $requestData['location']['latitude'] = $orderModel->latitude; $requestData['location']['longitude'] = $orderModel->longitude; $requestData['customer_email'] = $orderModel->customer_email; $requestData['vendor_location']['latitude'] = $branchModel->latitude; $requestData['vendor_location']['longitude'] = $branchModel->longitude; // $data = []; if ($orderModel->item_total > 0) { $data[] = [ 'key' => 'Sub Total', 'value' => (string)$orderModel->item_total, 'sort_number' => 0 ]; } if ($orderModel->package_price > 0) { $data[] = [ 'key' => 'Package Fee', 'value' => (string)$orderModel->package_price, 'sort_number' => 0 ]; } if ($orderModel->vat > 0) { $data[] = [ 'key' => 'GST', 'value' => (string)$orderModel->vat, 'sort_number' => 0 ]; } $data[] = [ 'key' => 'Delivery Fee', 'value' => (string)$orderModel->delivery_fee, 'sort_number' => 0 ]; if ($orderModel->coupon_offer_value > 0) { $data[] = [ 'key' => 'Coupon Amount(-)', 'value' => (string)$orderModel->coupon_offer_value, 'sort_number' => 0 ]; } if ($orderModel->delivery_boy_tip > 0) { $data[] = [ 'key' => 'Delivery Boy Tip', 'value' => (string)$orderModel->delivery_boy_tip, 'sort_number' => 0 ]; } $data[] = [ 'key' => 'Total', 'value' => (string)$orderModel->order_total, 'sort_number' => 0 ]; $requestData['pay_details'] = $data; //print_r($data); die; $languages = Language::getAppLanguages(); $requestData['order_details'] = []; $i = 0; foreach ($languages as $lang_code => $language) { $requestData['order_details'][$i]['lang'] = $lang_code; $requestData['vendor_details'][$i]['lang'] = $lang_code; $vendorDetails = Branch::find()->select(['B.*', 'VL.vendor_name', 'BL.city', 'BL.area', 'BL.branch_address_line1', 'BL.branch_address_line2', 'BL.country']) ->alias('B') ->leftJoin(['BL' => BranchLang::tableName()], 'B.branch_id = BL.branch_id') ->leftJoin(['VL' => VendorLang::tableName()], 'B.vendor_id = VL.vendor_id') ->where(['B.branch_id' => $orderModel->branch_id, 'BL.language_code' => $lang_code, 'VL.language_code' => $lang_code])->asArray() ->one(); $requestData['vendor_details'][$i]['details']['vendor_name'] = ($vendorDetails['vendor_name']) ? $vendorDetails['vendor_name'] : ''; $requestData['vendor_details'][$i]['details']['vendor_address'] = (($vendorDetails['branch_address_line1']) ? $vendorDetails['branch_address_line1'] : '') . (($vendorDetails['branch_address_line2']) ? $vendorDetails['branch_address_line2'] : ''); $requestData['vendor_details'][$i]['details']['vendor_city'] = ($vendorDetails['city']) ? $vendorDetails['city'] : ''; $requestData['vendor_details'][$i]['details']['vendor_area'] = ($vendorDetails['area']) ? $vendorDetails['area'] : ''; $requestData['vendor_details'][$i]['details']['vendor_country'] = ($vendorDetails['country']) ? $vendorDetails['country'] : ''; $requestData['vendor_details'][$i]['details']['vendor_mobile'] = ($vendorDetails['contact_number']) ? $vendorDetails['contact_number'] : ''; $requestData['order_details'][$i]['details']['customer_name'] = (string)$orderModel->customer_first_name . ' ' . $orderModel->customer_last_name; $requestData['order_details'][$i]['details']['customer_mobile'] = (string)$orderModel->customer_mobile_number; $requestData['order_details'][$i]['details']['address'] = (string)$userAddress->flat_no . ' ' . $userAddress->apartment; $requestData['order_details'][$i]['details']['city'] = (string)$userAddress->city; $requestData['order_details'][$i]['details']['country'] = ''; $requestData['order_details'][$i]['details']['landmark'] = (string)$userAddress->landmark; $requestData['order_details'][$i]['details']['bulk_items'] = ''; $requestData['order_details'][$i]['details']['customer_image'] = ''; $requestData['order_details'][$i]['details']['items'] = []; $itemArray = []; $itemCount = 0; foreach (OrderItem::find()->where(['order_id' => $orderModel->order_id])->asArray()->all() as $item) { $item_quantity = $item['quantity']; if (!empty($item['special_instructions'])) { $special_instructions = $item['special_instructions']; } else { $special_instructions = ""; } $modelItem = Item::find()->select(['I.item_id', 'I.item_price', 'IL.item_name']) ->alias('I') ->leftJoin(['IL' => ItemLang::tableName()], 'I.item_id = IL.item_id') ->where(['item_key' => $item['item_id'], 'language_code' => $lang_code])->one(); if ($modelItem != null) { $itemArray[$itemCount]['name'] = $modelItem->item_name; $itemArray[$itemCount]['price'] = $modelItem->item_price; $itemArray[$itemCount]['quantity'] = $item_quantity; $itemArray[$itemCount]['special_instructions'] = $special_instructions; $ingredients = []; $j = 0; foreach ($item['ingrdients'] as $ingredient) { $ingredient_qty = $item['item_quantity']; $ingrdientsQuery = ItemIngredientGroup::find()->alias('IIG') ->select(['IIM.item_ingredient_group_id', 'IL.ingredient_name', 'IIM.price']) ->innerJoin(['IIM' => ItemIngredientMapping::tableName()], 'IIM.item_ingredient_group_id = IIG.item_ingredient_group_id') ->innerJoin(['I' => Ingredient::tableName()], 'I.ingredient_id = IIM.ingredient_id') ->leftJoin(['IL' => IngredientLang::tableName()], 'I.ingredient_id = IL.ingredient_id') ->innerJoin(['IMG' => ItemMappingGroup::tableName()], 'IMG.item_ingredient_group_id = IIG.item_ingredient_group_id') ->innerJoin(['IM' => ItemMapping::tableName()], 'IM.item_mapping_id = IMG.item_mapping_id') ->where(['IM.item_id' => $modelItem->item_id, 'IL.language_code' => $lang_code])->andWhere(['in', 'IIG.item_ingredient_group_key', $ingredient['group_key']])->andWhere(['in', 'I.ingredient_key', $ingredient['key']])->asArray() ->one(); $ingredients[$j]['name'] = $ingrdientsQuery['ingredient_name']; $ingredients[$j]['price'] = $ingrdientsQuery['price']; $ingredients[$j]['type'] = $ingrdientsQuery['item_ingredient_group_id']; $j++; } $itemArray[$itemCount]['ingredients'] = $ingredients; $itemCount++; } } $requestData['order_details'][$i]['details']['items'] = $itemArray; $i++; } $requestData['order_assign_type'] = 2; $responseData = Com::getJsonData('POST', Configuration::get(Configuration::DELIVERY_BOY_ACCESS_URL) . "order/create?company_id=" . Configuration::get(Configuration::COMPANY_KEY), $requestData, 1); print_r($responseData); die; /* set flash for sever down */ if ((isset($responseData) && $responseData->status == 200)) { return true; } return false; } public function actionPdf() { $post = Yii::$app->getRequest()->post(); $resposeArray = Order::find() //->where(['order_key' => $post['key']]) ->orderBy(['order_id' => SORT_DESC]) ->one(); $qr_path = QrHelper::getInstance()->generate($resposeArray['order_date_time'], $resposeArray['order_total'], $resposeArray['vat_cgst']); $html = $this->renderPartial('mail', [ 'model' => $resposeArray->toArray(), 'qr_path' => $qr_path //'key' => $post['key'] ]); $mpdf = new mPDF(['tempDir' => Yii::getAlias('@approot') . '/uploads/mpdfTemp']); $mpdf->WriteHTML($html); $filname = $resposeArray->order_number . ' - ' . Date('Y-m-d-h-i-s'); $uploadHelper = UploadHelper::getInstance(); $uploadHelper->setPath($uploadHelper::ORDER_PDF); $path = $uploadHelper->getPath(); $file = $mpdf->Output($path . '/' . $filname . '.pdf', 'F'); $path = $uploadHelper->getRealPath($path); chmod(Yii::getAlias('@approot') . '/' . $path . '/' . $filname . '.pdf', 0775); die('ki'); // $result['status'] = STATUS_SUCCESS; // $mailerQueueHelper = MailerQueueHelper::getInstance(); // $mailerQueueHelper->setTo($post['email']) // ->setSubject('Order #'.$resposeArray->order_number.' Invoice') // ->setAttach(Yii::getAlias('@approot').'/'.$path.'/'.$filname.'.pdf') // ->setView('invoice',['order_number' => $resposeArray->order_number]) // ->push(); } public function actionTestMail() { $model = Order::find()->where(['order_id' => 1374])->one(); $model->order_status = Order::ORDER_STATUS_DELIVERED; $model->save(); } public function actionTestNotify() { $userToken = [ "28e7ca1d-ae78-4f26-a4ea-216594efb89d" ]; $oneSignal = OneSignal::getInstance(); $oneSignal->setAppId(Configuration::get(Configuration::PUSH_NOTIFICATION_APP_ID)); $oneSignal->setRestApiKey(Configuration::get(Configuration::PUSH_NOTIFICATION_REST_API_KEY)); $oneSignal->setIcon('http://online.kitokey.com/frontend/web/theme/images/notification.png'); $oneSignal->push( ['en' => 'Reminder'], ['en' => 'Hi, now it is your water drinking time.. let`s go for drinking'], $userToken, ['status' => 'Message Sent Successfully'] ); print_r($oneSignal); die; } public function actionDriverDetails() { if (isset($_GET['delete'])) { Com::unsetSession('driver_list', []); } $data = Com::session('driver_list'); if (empty($data)) { $driverDetails = (new \backend\models\DriverOrderSearch)->Driver(); $data = ArrayHelper::map($driverDetails, 'id', 'name'); } Com::setSession('driver_list', $data); $option = Html::tag('option', '', ['value' => '']); foreach ($data as $key => $name) { $option .= Html::tag('option', $name, ['value' => $key]); } return $this->asJson(['status' => 1, 'data' => $option]); } public function actionUserList($q = null, $page = 1) { $query = User::find()->alias('U') ->select([ 'CONCAT(U.first_name," ", IFNULL(U.mobile_number,U.email) ) as text', 'U.user_id as id' ]) //->innerJoin(['O' => Order::tablename()], "O.user_id = U.user_id") ->andwhere(['U.status' => User::ACTIVE]) ->where(['like', 'first_name', $q]) ->orWhere(['like', 'mobile_number', $q]) ->offset(($page - 1) * 20) ->asArray() ->limit(20) // Adjust the limit as necessary ->orderBy(['U.first_name'=>SORT_ASC]) ; $data = $query->all(); $totalCount = $query->count(); return json_encode(['results' => $data, 'pagination' => ['more' => $totalCount > $page * 20]]); } /** * @return string * @throws \yii\base\InvalidParamException * * @Title("Payment View") */ public function actionPaymentView() { $params = ['id']; $post = Yii::$app->getRequest()->post(); $result = ['status' => STATUS_FAIL, 'msg' => '']; foreach ($params as $param) { if (!array_key_exists($param, $post)) { $result['msg'] = Yii::t('backend', 'Required param missing'); goto skip; } } $orderModel = Order::find() ->andWhere(['payment_status' => 1]) ->andWhere(['order_key' => $post['id']]) ->andWhere(['<>', 'payment_id', '']) // <-- this adds "payment_id <> ''" ->one(); if($orderModel != null) { $entityId = ''; if($orderModel->payment_option == Order::PAYMENT_OPTION_VISA_MASTER) { $entityId = Configuration::get(Configuration::MASTER_VISA_ENTITY_ID); } if($orderModel->payment_option == Order::PAYMENT_OPTION_MADA) { $entityId = Configuration::get(Configuration::MADA_ENTITY_ID); } if($orderModel->payment_option == Order::PAYMENT_OPTION_STC) { $entityId = Configuration::get(Configuration::STC_PAY_ENTITY_ID); } if($orderModel->payment_option == 6) { $paymentType = 'APPLEPAY'; $entityId = '8ac9a4ca7c78e3f5017c8e865d7c0449'; } $url = "https://oppwa.com/v1/checkouts/".$orderModel->payment_id."/payment"; $url .= "?entityId=".$entityId; //print_r($url); die; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Authorization:Bearer '.Configuration::get(Configuration::PAYMENT_ACCESS_TOKEN))); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// this should be set to true in production curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $responseData = curl_exec($ch); if(curl_errno($ch)) { return curl_error($ch); } $paymentresult = json_decode($responseData); if($paymentresult->result->code == "000.000.000") { $orderModel->payment_status = Order::PAYMENT_STATUS_SUCCESS; $orderModel->order_date_time = date('Y-m-d H:i:s'); $orderModel->cron_payment_response = json_encode($paymentresult); $orderModel->save(false); $result['status'] = STATUS_SUCCESS; $result['msg'] = json_encode($paymentresult->result->description); } else { $orderModel->cron_payment_response = json_encode($paymentresult); $orderModel->save(false); $result['msg'] = json_encode($paymentresult->result->description); } } else { $result['msg'] = Yii::t('backend', 'Payment not successful'); } skip: return $this->asJson($result); } }