/var/www/vhosts/nabawater/frontend/controllers
Edit: /var/www/vhosts/nabawater/frontend/controllers/BranchController.php (91003B)
enableCsrfValidation = false;
return parent::beforeAction($action);
}
/**
*
* @return array
*/
public function actionIndex()
{
$latitude = 11.021748;
$longitude = 76.9157439;
$_GET = [
'latitude' => $latitude,
'longitude' => $longitude
];
$todaySpecial = ApiHelper::getInstance()
->setUrl('site/index', [
'latitude' => $latitude,
'longitude' => $longitude
]);
$apiResponse = $todaySpecial->run();
$dataProviderTodaySpecial = new ArrayDataProvider([
'allModels' => $apiResponse->getData()['todayspecial']
]);
$apiHelper = ApiHelper::getInstance()
->setUrl('branch/index', [
'latitude' => $latitude,
'longitude' => $longitude
]);
$apiResponse = $apiHelper->run();
$dataProviderBranch = new ArrayDataProvider([
'allModels' => $apiResponse->getData()
]);
return $this->render('index',[
'dataProviderBranch' => $dataProviderBranch,
'dataProviderTodaySpecial' => $dataProviderTodaySpecial
]);
}
/**
*
* @param type $id
* @return type
*/
public function actionView($id)
{
$latitude = 11.021748;
$longitude = 76.9157439;
$_GET = [
'latitude' => $latitude,
'longitude' => $longitude,
'id' => $id
];
$apiHelper = ApiHelper::getInstance()
->setUrl('branch/view', [
'latitude' => $latitude,
'longitude' => $longitude,
'id' =>$id
]);
$apiResponse = $apiHelper->run();
$dataProviderBranch = new ArrayDataProvider([
'allModels' => $apiResponse->getData()
]);
$apiHelperItem = ApiHelper::getInstance()
->setUrl('category/index', [
'branch_key' =>$id
]);
$apiResponseItem = $apiHelperItem->run();
$dataProviderItem = new ArrayDataProvider([
'allModels' => $apiResponseItem->getData()
]);
return $this->render('view',[
'dataProviderBranch' => $dataProviderBranch,
'dataProviderItem' => $dataProviderItem
]);
}
/**
*
* @param type $id
* @return string
*/
public function actionBranchDetail($id)
{
$branch = Branch::BranchDetail($id);
$branchreview = Branch::BranchReview($id);
$items = Item::instance()->get($id);
$branchTimeslot = BranchTimeslot::instance()->get($id);
$Rating = Branch::branchrating($id);
$branchStatus = BranchTimeslot::instance()->branchTimeSlotStatus($id);
$menuItems = Category::find()->alias('C')
->select(['VC.category_id', 'C.category_key'])
->leftJoin(['VC' => VendorCategory::tableName()], 'VC.category_id = C.category_id')
->where([
'VC.vendor_id' => $branch['vendor_id'],
'C.category_status' => Category::ACTIVE
]);
Category::selectTranslation($menuItems);
return $this->render('detail', [
'branch' => $branch,
'items' => $items,
'branchTimeslot' => $branchTimeslot,
'branchreview' => $branchreview,
'Rating' => $Rating,
'branchStatus' => $branchStatus,
'menuItems' => $menuItems->asArray()->all()
]);
}
/**
*
* @return Json
*/
public function actionAddCart()
{
if (Yii::$app->request->isAjax) {
//$userIdentity = UserIdentity::getInstance()->getUser();
$request = Yii::$app->getRequest()->post();
$modelUser = User::findOne(yii::$app->user->getId());
if(isset($request['refudbottle']) && $request['refudbottle'] > $modelUser->refund_bottle_qty) {
$response['message'] = 'Sorry, you have only '.$modelUser->refund_bottle_qty.' refund bottles';
$response['status'] = STATUS_FAIL;
goto skip;
}
$count = 0;
$quantity = 1;
$item_key = $request['item_key'];
$ingredient = [];
$response['status'] = Com::SUCCESS;
$response['message'] = Yii::t('backend','Item Added Successfully');
$response['error_message'] = Yii::t('frontend', 'You are about to clear the cart!! Do you want to proceed?');
$modelItem = Item::findOne(['item_key' => $request['item_key']]);
$cart_product = Com::session(Com::SES_CART);
//print_r($modelItem); die;
if($request['element'] == 'ingredient_add') {
$model = Item::instance()->getCartItemDetail($request['item_key'], $request['branch_key']);
$response['ingredient'] = true;
$response['html'] = $this->renderPartial('_ingredient', ['model' => $model]);
return $this->asJson($response);
}
$modelBranch = Branch::find()->where(['branch_id' => $modelItem->branch_id])->one();
//print_r($modelBranch); die;
//print_r(Com::session(Com::CART_BRANCH_KEY)); die;
if(Com::session(Com::CART_BRANCH_KEY)) {
if($request['is_clear_cart'] == 1) {
Com::setSession(Com::CART_BRANCH_KEY, $modelBranch->branch_key);
}
if(Com::session(Com::CART_BRANCH_KEY) != $modelBranch->branch_key) {
//print_r($cart_product); die;
$response['error_message'] = Yii::t('frontend', 'Your cart will clear if you add items from another branch. Do you want to proceed?');
$response['clear_alert'] = 1;
goto skip;
//Com::setSession(Com::CART_BRANCH_KEY, $modelBranch->branch_key);
}
} else {
Com::setSession(Com::CART_BRANCH_KEY, $modelBranch->branch_key);
}
//print_r($request); die;
if($request['element'] == 'add_item_ingredient') {
if (isset($request['ing_check'])) {
$ingredient = $request['ing_check'];
$sessionIng =[];
if(count($ingredient)){
foreach ($ingredient as $group_key => $ing) {
$session[] = $group_key;
$session = array_merge($session, $ing);
}
}
$item_key = $request['item_key'].Item::SESSION_ING.implode(Item::SESSION_ING, $session);
}
$quantity = $request['ing_quantity'];
}
if (!Com::isSession(Com::SES_CART) || !Com::session(Com::SES_CART)) {
$cart_product = [
$request['branch_key'] => [
$item_key => [
'item_key' => $request['item_key'],
'max_quantity' => Com::MAX_QUANTITY,
'quantity' => $quantity,
'ingredient' => $ingredient,
'refund_bottle_qty' => isset($request['refudbottle']) ? $request['refudbottle'] : 0,
]
]
];
$count = count($cart_product[$request['branch_key']]);
Com::setSession(Com::ITEM_BRANCH, $request['branch_key']);
} else {
// $modelItem = Item::findOne(['item_key' => $request['item_key']]);
// print_r($request); die;
$cart_product = Com::session(Com::SES_CART);
if($request['is_clear_cart'] == 1) {
$cart_product = [];
}
if (array_key_exists($request['branch_key'], $cart_product)) {
if(isset($cart_product[$request['branch_key']][$item_key])) {
if($modelItem->item_status != Item::ACTIVE && $request['element'] != 'quantity_subtract'){
$response['message'] = 'Item Not Available. Please manually remove';
$response['status'] = STATUS_FAIL;
goto skip;
}
if($cart_product[$request['branch_key']][$item_key]['quantity'] >= $modelItem->quantity && $request['element'] == 'quantity_add') {
$response['message'] = 'Sorry, Available Quantity is only '.$modelItem->quantity;
$response['status'] = STATUS_FAIL;
goto skip;
}
if($request['element'] == 'quantity_add' && ($cart_product[$request['branch_key']][$item_key]['quantity'] < $cart_product[$request['branch_key']][$item_key]['max_quantity'])){
$cart_product[$request['branch_key']][$item_key]['quantity']++;
$response['message'] = Yii::t('frontend','Quantity added');
} elseif ($request['element'] == 'quantity_add' && ($cart_product[$request['branch_key']][$item_key]['quantity'] == $cart_product[$request['branch_key']][$item_key]['max_quantity'])) {
$response['message'] = Yii::t('frontend','Maximum quantity reached');
$response['status'] = STATUS_FAIL;
} elseif($request['element'] == 'quantity_subtract'){
if($cart_product[$request['branch_key']][$item_key]['quantity'] <= 1) {
unset($cart_product[$request['branch_key']][$item_key]);
$response['message'] = Yii::t('frontend','Item removed');
} else{
$cart_product[$request['branch_key']][$item_key]['quantity']--;
$response['message'] = Yii::t('frontend','Quantity removed');
}
} elseif($request['element'] == 'item_remove') {
if(count($cart_product[$request['branch_key']]) == 1) {
$cart_product = [];
Com::unsetSession(Com::CART_BRANCH_KEY);
} else{
unset($cart_product[$request['branch_key']][$item_key]);
}
} else if($request['element'] == 'add_item_ingredient' && ($cart_product[$request['branch_key']][$item_key]['quantity'] < $cart_product[$request['branch_key']][$item_key]['max_quantity'])){
$cart_product[$request['branch_key']][$item_key]['quantity'] += $request['ing_quantity'];
} else if($request['element'] == 'add_item_ingredient' && ($cart_product[$request['branch_key']][$item_key]['quantity'] == $cart_product[$request['branch_key']][$item_key]['max_quantity'])){
$response['message'] = Yii::t('frontend','Maximum quantity reached');
$response['status'] = STATUS_FAIL;
}
} else {
$cart_product[$request['branch_key']][$item_key]= [
'item_key' => $request['item_key'],
'max_quantity' => $modelItem->quantity,
'quantity' => $quantity,
'ingredient' => $ingredient,
'refund_bottle_qty' => isset($request['refudbottle']) ? $request['refudbottle'] : 0,
];
}
if ($cart_product) {
$count = count($cart_product[$request['branch_key']]);
}
} else {
$cart_data = Com::session(Com::SES_CART);
$item_branch = Com::isSession(Com::ITEM_BRANCH)? Com::session(Com::ITEM_BRANCH): '';
if ($item_branch != '' && !empty($cart_data[$item_branch])) {
$response['clear_alert'] = 1;
}
if ($request['is_clear_cart'] == 1 ||
($cart_data[$item_branch] != $request['branch_key'] && empty($cart_data[$item_branch]) )) {
$cart_product = [];
Com::setSession(Com::ITEM_BRANCH, $request['branch_key']);
$cart_product[$request['branch_key']][$item_key]= [
'item_key' => $request['item_key'],
'max_quantity' => $modelItem->quantity,
'quantity' => $quantity,
'ingredient' => $ingredient,
'refund_bottle_qty' => isset($request['refudbottle']) ? $request['refudbottle'] : 0,
];
$count = count($cart_product[$request['branch_key']]);
}
}
}
Com::setSession(Com::ITEM_COUNT, $count);
$response['count'] = $count;
Com::setSession(Com::SES_CART, $cart_product);
$response['html'] = $this->renderPartial('_mini_cart', ['branch_key' => $request['branch_key']]);
skip:
return $this->asJson($response);
}
}
/**
*
* @return Json
*/
public function actionAddIngredient()
{
if (Yii::$app->request->isAjax) {
$request = Yii::$app->getRequest()->post();
$model = Item::instance()->getCartItemDetail($request['item_key'], $request['branch_key']);
$response['status'] = Com::SUCCESS;
$response['html'] = $this->renderPartial('_ingredient', ['model' => $model]);
return $this->asJson($response);
}
}
/**
*
* @param bool $saveData
* @return array
*/
protected function cartApiResponse($saveData = false){
$appLanguage = \Yii::$app->language;
$latitude = (com::isSession('customer_latitude')) ? com::session('customer_latitude') : '';
$longitude = (com::isSession('customer_langtitude')) ? com::session('customer_langtitude') : '';
$orderData = [];
$paramArray = [];
$cartDataArray = ['message' => '','data' => ''];
if(Com::isSession(Com::SES_CART)) {
$orderData = Com::Session(Com::SES_CART);
};
if (Com::isSession(Com::COUPON_APPLIED)) {
$coupon_applied_date = Com::Session(Com::COUPON_APPLIED);
}
if(!empty($orderData)) {
foreach ($orderData as $key => $value) {
$paramArray['branch_key'] = $key;
$i = 0;
$itemArray = [];
foreach($value as $item_ingredients => $itemData) {
$itemModel = Item::findOne(['item_key' => $itemData['item_key']]);
if($itemModel != null) {
$itemArray[$i]['item_key'] = $itemData['item_key'];
$itemArray[$i]['item_price'] = $itemModel->item_price;
$itemArray[$i]['item_quantity'] = $itemData['quantity'];
$itemArray[$i]['refund_bottle_qty'] = $itemData['refund_bottle_qty'];
$itemArray[$i]['ingrdients'] = [];
$j = 0;
foreach ($itemData['ingredient'] as $groupkey => $ingredient_keys) {
// $ingredientModel = Item::instance()->getCartIngredientDetail($itemData['item_key'], $key, [$ingredient_key]);
foreach ($ingredient_keys as $key => $ingredient_key) {
$itemArray[$i]['ingrdients'][$j]["group_key"] = $groupkey;
$itemArray[$i]['ingrdients'][$j]["key"] = $ingredient_key;
$j++;
}
// if($ingredientModel != null) {
// $itemArray[$i]['ingrdients'][$j]["group_key"] = $ingredientModel[0]['item_ingredient_group_key'];
// $itemArray[$i]['ingrdients'][$j]["key"] = $ingredientModel[0]['ingredient_key'];
// }
}
}
$i++;
}
$paramArray['items'] = $itemArray;
}
$checkOutSession = Com::Session(Com::SES_CHECKOUT);
$paramArray['user_key'] = (isset($checkOutSession['user_key']) && $checkOutSession['user_key'] != '') ? $checkOutSession['user_key'] : '' ;
$paramArray['user_address_key'] = (isset($checkOutSession['user_address_key']) && $checkOutSession['user_address_key'] != '') ? $checkOutSession['user_address_key'] : '' ;
$paramArray['order_type'] = (isset($checkOutSession['delivery_type']) && $checkOutSession['delivery_type'] != '') ? $checkOutSession['delivery_type'] : 1;
$paramArray['pickup_delivery_date_time'] = (isset($checkOutSession['pickup_delivery_date_time']) && $checkOutSession['pickup_delivery_date_time'] != '') ? $checkOutSession['pickup_delivery_date_time'] : date('y-m-d H:i:s');
$paramArray['latitude'] = $latitude;
$paramArray['longitude'] = $longitude;
$paramArray['user_order_type'] = isset($checkOutSession['user_order_type']) ? $checkOutSession['user_order_type'] : 1;
$paramArray['coupon_code'] = (isset($checkOutSession['coupon_code']) && $checkOutSession['coupon_code'] != '') ? $checkOutSession['coupon_code'] : '' ;
if (isset($coupon_applied_date) && $coupon_applied_date != '') {
$paramArray['coupon_applied_date'] = $coupon_applied_date;
}
$paramArray['delivery_boy_tip'] = (isset($checkOutSession['deliveryboy_tip']) && $checkOutSession['deliveryboy_tip'] != '') ? $checkOutSession['deliveryboy_tip'] : '' ;
$paramArray['payment_option'] = (isset($checkOutSession['payment_option']) && $checkOutSession['payment_option'] != '') ? $checkOutSession['payment_option'] : '' ;
$paramArray['delivery_option'] = (isset($checkOutSession['delivery_option']) && $checkOutSession['delivery_option'] != '') ? $checkOutSession['delivery_option'] : 1 ;
$paramArray['order_message'] = (isset($checkOutSession['order_message']) && $checkOutSession['order_message'] != '') ? $checkOutSession['order_message']: '';
$paramArray['subscription_order_details'] = (isset($checkOutSession['subscription_order_details']) && $checkOutSession['subscription_order_details'] != '') ? $checkOutSession['subscription_order_details']: '';
$paramArray['subscription'] = (isset($checkOutSession['subscription']) && $checkOutSession['subscription'] != '') ? $checkOutSession['subscription']: '';
$paramArray['coupon_app_type'] = isset($checkOutSession['user_order_type']) ? $checkOutSession['user_order_type'] : 1 ;
$paramArray['device_type'] = 1;
}
$rawData = json_encode($paramArray);
$url = ($saveData) ? 'order/place-order' : 'order/calculate-data';
$bearer = '';
if (!Yii::$app->getUser()->getIsGuest()) {
$userIdentity = Yii::$app->getUser()->getIdentity();
$bearer = $userIdentity->getAuthKey();
}
$headers = [
'Content-Type: application/json; charset=utf-8',
sprintf('Authorization: Bearer %s', $bearer),
'Accept-Language: ' . $appLanguage,
];
//print_r($rawData);exit;
$cartData = ApiHelper::getInstance()
->setRequestMethod(ApiHelper::REQUEST_METHOD_POST)
->setRequestBodyType(ApiHelper::REQUEST_BODY_TYPE_RAW_DATA)
->setRequestParam($rawData)
->setUrl($url);
$apiResponse = $cartData->run();
$message = $apiResponse->getMessage();
if(!$apiResponse->isSuccess()) {
$message = $apiResponse->getMessage();
$cartDataArray['message'] = $message;
}
$cartDataArray['data'] = $apiResponse->getData();
return $cartDataArray;
}
/**
*
* @param string $id
* @return string
*/
public function actionCart($id)
{
Com::setSession(Com::SES_CHECKOUT, []);
if (Com::isSession(Com::SES_CART)) {
$cartDataArray = Com::session(Com::SES_CART);
} else {
$cartDataArray = '';
Com::failureFlash('Cart is empty');
}
$branch = Branch::BranchDetail($id);
return $this->render('cart', ['branch' => $branch, 'cartData' => $cartDataArray]);
}
public function actionAddMainCart()
{
if (Yii::$app->request->isAjax) {
$count = 0;
$request = Yii::$app->getRequest()->post();
$quantity = 1;
$item_key = $request['item_key'];
$ingredient = [];
$response['status'] = Com::SUCCESS;
if (!Com::isSession(Com::SES_CART) || !Com::session(Com::SES_CART)) {
$cart_product = [
$request['branch_key'] => [
$item_key => [
'item_key' => $request['item_key'],
'max_quantity' => Com::MAX_QUANTITY,
'quantity' => $quantity,
'ingredient' => $ingredient,
]
]
];
$count = count($cart_product[$request['branch_key']]);
}else{
$cart_product = Com::session(Com::SES_CART);
if (array_key_exists($request['branch_key'], $cart_product))
{
if(isset($cart_product[$request['branch_key']][$item_key])){
if($request['element'] == 'quantity_add' && ($cart_product[$request['branch_key']][$item_key]['quantity'] < $cart_product[$request['branch_key']][$item_key]['max_quantity'])){
$cart_product[$request['branch_key']][$item_key]['quantity']++;
} else if ($request['element'] == 'quantity_subtract'){
if($cart_product[$request['branch_key']][$item_key]['quantity'] <= 1 && count($cart_product[$request['branch_key']]) == 1)
{
$cart_product = [];
} else if ($cart_product[$request['branch_key']][$item_key]['quantity'] <= 1 && count($cart_product[$request['branch_key']]) != 1) {
unset($cart_product[$request['branch_key']][$item_key]);
} else {
$cart_product[$request['branch_key']][$item_key]['quantity']--;
}
} else if($request['element'] == 'item_remove'){
if(count($cart_product[$request['branch_key']]) == 1)
{
$cart_product = [];
}else{
unset($cart_product[$request['branch_key']][$item_key]);
}
}else {
// $response['status'] = false;
// $response['message'] = "Limit Exceed";
}
} else {
$cart_product[$request['branch_key']][$item_key]= [
'item_key' => $request['item_key'],
'max_quantity' => Com::MAX_QUANTITY,
'quantity' => $quantity,
'ingredient' => $ingredient,
];
}
if ($cart_product) {
$count = count($cart_product[$request['branch_key']]);
}
}else{
$response['status'] = false;
$response['message'] = "Can't add item";
}
}
Com::setSession(Com::ITEM_COUNT, $count);
Com::setSession(Com::SES_CART, $cart_product);
if(!empty($cart_product)) {
$cartDataArray = Com::session(Com::SES_CART);
$branch = Branch::BranchDetail($request['branch_key']);
$response['html'] = $this->renderPartial('_cart_detail', ['branch' => $branch, 'cartData' => $cartDataArray]);
return $this->asJson($response);
} else {
$this->redirect(['branch-detail','id'=> $request['branch_key']]);
$cartDataArray = [];
}
}
}
/**
*
* @return Json
*/
public function actionApplyCoupon()
{
if (Yii::$app->request->isAjax) {
$request = Yii::$app->getRequest()->post();
$coupon_code = $request['coupon_code'];
$response['status'] = Com::SUCCESS;
$branch = Branch::BranchDetail($request['branch_key']);
$coupon_applied_date = $request['coupon_applied_date'];
if ($branch != '') {
$SessionData['delivery_type'] = $branch['order_type'];
}
if(yii::$app->user->getId()) {
$userData = $this->getUserData();
//$SessionData['user_address_key'] =
// isset($userData['default_address_key'])? $userData['default_address_key']: '';
}
if (Com::isSession(Com::SES_CHECKOUT)) {
$checkoutData = Com::session(Com::SES_CHECKOUT);
if (isset($checkoutData['user_address_key']) && $checkoutData['user_address_key'] != '') {
$SessionData['user_address_key'] = $checkoutData['user_address_key'];
}
}
if (Com::isSession('delivery_tip')) {
$deliveryTip = Com::session('delivery_tip');
$SessionData['delivery_tip'] = $deliveryTip;
}
if(isset($request['delivery_key']) && $request['delivery_key'] != "") {
$SessionData['user_address_key'] = $request['delivery_key'];
}
if(isset($request['delivery_type']) && $request['delivery_type'] != "") {
$SessionData['delivery_type'] = $request['delivery_type'];
}
$SessionData['coupon_code'] = $coupon_code;
Com::setSession(Com::COUPON_CODE, $SessionData);
Com::setSession(Com::COUPON_APPLIED, $coupon_applied_date);
Com::setSession(Com::SES_CHECKOUT, $SessionData);
$cartDataArray = $this->cartApiResponse();
if(empty($cartDataArray['data'])) {
Com::setSession(Com::COUPON_CODE, '');
$response['status'] = Com::ERROR;
$response['message'] = $cartDataArray['message'];
$response['message'] = Yii::t('frontend', $response['message']);
goto skip;
}
$cartData = Com::isSession(Com::SES_CART)? Com::session(Com::SES_CART): '';
$response['html'] = $this->renderPartial('/checkout/_checkout_mini_cart', ['cartData' => $cartDataArray['data']]);
skip:
return $this->asJson($response);
}
}
public function actionDeliveryTip()
{
if (Yii::$app->request->isAjax) {
$request = Yii::$app->getRequest()->post();
$delivery_tip = $request['delivery_tip'];
$response['status'] = Com::SUCCESS;
$branch = Branch::BranchDetail($request['branch_key']);
$SessionData = Com::session(Com::SES_CHECKOUT);
if ($branch != '') {
$SessionData['delivery_type'] = $branch['order_type'];
}
if(yii::$app->user->getId()) {
$userData = $this->getUserData();
$SessionData['user_address_key'] =
isset($userData['default_address_key'])? $userData['default_address_key']: '';
}
if (Com::isSession(Com::SES_CHECKOUT)) {
$checkoutData = Com::session(Com::SES_CHECKOUT);
if (isset($checkoutData['user_address_key']) && $checkoutData['user_address_key'] != '') {
$SessionData['user_address_key'] = $checkoutData['user_address_key'];
}
}
if (Com::isSession(Com::COUPON_CODE)) {
$couponCode = Com::session(Com::COUPON_CODE);
$SessionData['coupon_code'] = $couponCode;
}
$SessionData['deliveryboy_tip'] = $delivery_tip;
Com::setSession(Com::SES_CHECKOUT, $SessionData);
Com::setSession('delivery_tip', $SessionData);
//print_r($SessionData);exit;
$cartDataArray = $this->cartApiResponse();
$response['html'] = $this->renderPartial('/checkout/_checkout_mini_cart', ['cartData' => $cartDataArray['data']]);
return $this->asJson($response);
}
}
public function actionCancelDeliveryTip()
{
if (Yii::$app->request->isAjax) {
$result = ['status' => STATUS_FAIL, 'msg' => ''];
$request = Yii::$app->getRequest()->post();
$SessionData = Com::session(Com::SES_CHECKOUT);
$branch = Branch::BranchDetail($request['branch_key']);
if ($branch != '') {
$SessionData['delivery_type'] = $branch['order_type'];
}
if(yii::$app->user->getId()) {
$userData = $this->getUserData();
$SessionData['user_address_key'] =
isset($userData['default_address_key'])? $userData['default_address_key']: '';
}
if (Com::isSession(Com::SES_CHECKOUT)) {
$checkoutData = Com::session(Com::SES_CHECKOUT);
if (isset($checkoutData['user_address_key']) && $checkoutData['user_address_key'] != '') {
$SessionData['user_address_key'] = $checkoutData['user_address_key'];
}
}
$SessionData['deliveryboy_tip'] = '';
Com::setSession(Com::SES_CHECKOUT, $SessionData);
Com::setSession('delivery_tip', $SessionData);
$cartDataArray = $this->cartApiResponse();
$result['msg'] = 'delivery boy tip Code Removed Successfully';
$result['status'] = STATUS_SUCCESS;
$response['html'] = $this->renderPartial('/checkout/_checkout_mini_cart', ['cartData' => $cartDataArray['data']]);
skip:
return $this->asJson($result);
}
}
/**
*
* @return Json
*/
public function actionCancelCoupon()
{
if (Yii::$app->request->isAjax) {
$result = ['status' => STATUS_FAIL, 'msg' => ''];
$request = Yii::$app->getRequest()->post();
$SessionData = Com::session(Com::SES_CHECKOUT);
$branch = Branch::BranchDetail($request['branch_key']);
if ($branch != '') {
$SessionData['delivery_type'] = $branch['order_type'];
}
if(yii::$app->user->getId()) {
$userData = $this->getUserData();
$SessionData['user_address_key'] =
isset($userData['default_address_key'])? $userData['default_address_key']: '';
}
if (Com::isSession(Com::SES_CHECKOUT)) {
$checkoutData = Com::session(Com::SES_CHECKOUT);
if (isset($checkoutData['user_address_key']) && $checkoutData['user_address_key'] != '') {
$SessionData['user_address_key'] = $checkoutData['user_address_key'];
}
}
if(isset($request['delivery_key']) && $request['delivery_key'] != "") {
$SessionData['user_address_key'] = $request['delivery_key'];
}
if(isset($request['delivery_type']) && $request['delivery_type'] != "") {
$SessionData['delivery_type'] = $request['delivery_type'];
}
$SessionData['coupon_code'] = '';
Com::setSession(Com::SES_CHECKOUT, $SessionData);
Com::setSession(Com::COUPON_CODE, $SessionData);
$cartDataArray = $this->cartApiResponse();
$result['msg'] = 'Coupon Code Removed Successfully';
$result['status'] = STATUS_SUCCESS;
$cartData = Com::isSession(Com::SES_CART)? Com::session(Com::SES_CART): '';
$response['html'] = $this->renderPartial('/checkout/_checkout_mini_cart', ['cartData' => $cartDataArray['data']]);
skip:
return $this->asJson($result);
}
}
/**
*
* @return Json
*/
public function actionCustomerLatLong()
{
if (Yii::$app->request->isAjax) {
$request = Yii::$app->getRequest()->post();
com::setSession('customer_latitude',$request['latitude']);
com::setSession('customer_langtitude',$request['langtitude']);
com::setSession('customer_search_location',$request['search']);
$response = ['status' => 200];
return $this->asJson($response);
}
}
public function actionBranchList()
{
$lat1 = com::session('customer_latitude');
$lon1 = com::session('customer_langtitude');
if($lat1 == '' && $lon1 == '') {
return $this->goHome();
}
$request = Yii::$app->getRequest()->post();
$branches = Branch::RestruantlistFilter($request);
//print_r($branches);exit;
$unfeaturedBranches = ArrayHelper::getColumn($branches, 'is_featured');
$unfeaturedBranchesCount = array_count_values($unfeaturedBranches);
$unfeaturedBranchesCount = (isset($unfeaturedBranchesCount[0])) ? $unfeaturedBranchesCount[0]: 0;
$featureVendor = Vendor::getFeatureVendor();
$featureVendorCount = count(Vendor::getFeatureVendor());
$totalRestaurantCount = $unfeaturedBranchesCount + $featureVendorCount;
$cusine_name = [];
if (Yii::$app->request->isAjax) {
$result = ['branch_count' => 0, 'data' => ''];
$branch_type = '';
if(isset( $request["branch_type"]) && !empty($request["branch_type"])){
$branch_type = implode(',', $request["branch_type"]);
}
if(isset( $request["Cuisines"]) && !empty($request["Cuisines"])){
foreach ($request["Cuisines"] as $value) {
$cusine_name[] = CuisineLang::find()
->select('cuisine_name, cuisine_id')
->where([ 'cuisine_id'=> $value])
->andwhere(['language_code' => Yii::$app->language])
->asArray()
->all();
}
}
//print_r($cusine_name);exit;
if(!empty($request['sort'])) {
$sort = $request['sort'];
} else {
$sort = '';
}
if(isset($request['branch_name']) && $request['branch_name'] != "") {
$search_text = $request['branch_name'];
} else {
$search_text = "";
}
$result['branch_count'] = count($branches);
foreach ($branches as $key_value => $data) {
$modelImage = BranchLang::find()
->where([
'branch_id' => $data['branch_id'],
'language_code' => \Yii::$app->language
])
->one();
$branches[$key_value]['branch_image_path'] = $modelImage['branch_image_path'];
}
$result['data'] = $this->renderPartial('restruant-filter', ['branches' => $branches,
'branch_type' => explode(',', $branch_type),
'Cuisines' => $cusine_name,
'search_text' => $search_text,
'Sort_val' => $sort
]);
// print_r($branches);
// exit();
return $this->asJson($result);
}
foreach ($branches as $key_value => $data) {
$modelImage = BranchLang::find()
->where([
'branch_id' => $data['branch_id'],
'language_code' => \Yii::$app->language
])
->one();
$branches[$key_value]['branch_image_path'] = $modelImage['branch_image_path'];
}
return $this->render('branch-list', [
'branches' => $branches,
'featureVendor' => $featureVendor,
'totalRestaurants' => $totalRestaurantCount
]);
}
/**
*
* @return Json
*/
public function actionBranchFavourite()
{
if (Yii::$app->request->isAjax) {
if(!Yii::$app->getUser()->getId() == ''){
$post = Yii::$app->getRequest()->post();
$itemModel = Item::findOne(['item_key' => $post['item_key']]);
if($itemModel == null) {
return $this->asJson(['status' => Com::UNAUTHORIZED]);
}
$model = UserFavourite::findOne(['user_id' => Yii::$app->getUser()->getId(), 'item_id'=> $itemModel->item_id]);
if (!$model == '') {
if($model->status == 1){
$model->status = 2;
$model->save();
return $this->asJson(['status' => Com::DELETE]);
}else if($model->status == 2){
$model->status = 1;
$model->save();
return $this->asJson(['status' => Com::SUCCESS]);
}
}
$model = new UserFavourite();
$model->item_id = $itemModel->item_id;
$model->user_id = Yii::$app->getUser()->getId();
$model->save();
return $this->asJson(['status' => Com::SUCCESS]);
}else{
return $this->asJson(['status' => Com::UNAUTHORIZED]);
}
}
}
/**
*
* @return string
*/
public function actionCheckout($type = 1)
{
$user_address = [];
$userDetails = [];
$defaultAddressId = '';
$hasError = false;
$errorMessage = '';
$dtHelper = DateTimeHelper::getInstance();
$SessionData = Com::session(Com::SES_CHECKOUT);
$SessionData = Com::setSession(Com::SES_CHECKOUT, []);
//$Coupon = Com::unsetSession(Com::COUPON_CODE);
if (yii::$app->user->getId()) {
$userData = $this->getUserData();
// $SessionData['user_address_key'] = isset($userData['default_address_key'])? $userData['default_address_key']: '';
$userDetails = $userData['user'];
$user_address = $userData['user_address'];
$defaultAddressId = $userDetails['default_address'];
}
if(empty(Com::session(Com::SES_CART))){
return $this->redirect(['/product-list-normal-orders']);
}
$branchKey = Com::isSession('branch_key')? Com::session('branch_key'): '';
//$branch = Branch::BranchDetail($branchKey);
$branch['branch_key'] = null;
$branch['order_type'] = Order::ORDER_TYPE_DELIVERY;
if (!isset($SessionData['delivery_type']) ) {
$SessionData['delivery_type'] = Order::ORDER_TYPE_DELIVERY;
}
if(isset($SessionData['delivery_type']) && $SessionData['delivery_type'] == "") {
$SessionData['delivery_type'] = Order::ORDER_TYPE_DELIVERY;
}
if(isset($SessionData['delivery_type']) && $SessionData['delivery_type'] != "") {
$SessionData['delivery_type'] = $SessionData['delivery_type'];
$SessionData['delivery_option'] = $SessionData['delivery_type'];
}
if (Com::isSession('delivery_tip')) {
$deliveryTip = Com::session('delivery_tip');
$SessionData['deliveryboy_tip'] = $deliveryTip['deliveryboy_tip'];
}
//if(isset($SessionData['user_order_type']) && $SessionData['user_order_type'] != "") {
$SessionData['user_order_type'] = $type;
//}
if (Com::isSession(Com::COUPON_CODE)) {
$couponCode = Com::session(Com::COUPON_CODE);
$SessionData['coupon_code'] = ($couponCode!= '')? $couponCode['coupon_code']: '' ;
}
if (Com::isSession(Com::SES_CHECKOUT)) {
$checkoutData = Com::session(Com::SES_CHECKOUT);
if (isset($checkoutData['user_address_key']) && $checkoutData['user_address_key'] != '') {
//$SessionData['user_address_key'] = $checkoutData['user_address_key'];
}
}
// print_r($SessionData); die;
Com::setSession(Com::SES_CHECKOUT, $SessionData);
$cartData = $this->cartApiResponse();
//print_r($cartData); die;
if(isset($cartData['data']) && $cartData['data'] == []) {
Com::failureFlash($cartData['message']);
if($cartData['message'] == 'Sorry, Currently coupon not available.. Please remove coupon or refresh and try again') {
Com::failureFlash('Sorry, Currently coupon not available.. coupon removed automatically');
Com::unsetSession(Com::COUPON_CODE);
return $this->redirect(['/branch/checkout', 'type' => $type]);
}
return $this->redirect(['/product-list-normal-orders']);
}
if (empty($cartData['data'])) {
$hasError = true;
$errorMessage = $cartData['message'];
}
$hasCoupon = false;
$couponCode = '';
$modelCouponVendor = '';
$isAsap = true;
if (!Yii::$app->getUser()->getIsGuest()) {
$userIdentity = Yii::$app->getUser()->getIdentity();
$bearer = $userIdentity->getAuthKey();
}
$headers = [
'Content-Type: application/json; charset=utf-8',
'Accept-Language: ' . \Yii::$app->language,
];
$apiResponse = ApiHelper::getInstance()
->setUrl('order/subscrption-week')->run();
if(!$apiResponse->isSuccess()) {
$message = $apiResponse->getMessage();
$weekDataArray['message'] = $message;
}
$weekDataArray['data'] = $apiResponse->getData();
$url = '/checkout/checkout';
// $url = '/checkout/checkout_old';
return $this->render($url,['cartData' => $cartData['data'],
'userDetails' => $userDetails,
'user_address' => $user_address,
'branch' => $branch,
'defaultAddressId' => $defaultAddressId,
'isAsap' => $isAsap,
'hasCoupon' => $hasCoupon,
'couponCode' => $couponCode,
'hasError' => $hasError,
'errorMessage' => $errorMessage,
'weekDataArray' => $weekDataArray['data'],
]);
}
public function actionGetDeliverydateList()
{
if (Yii::$app->request->isAjax) {
$post = Yii::$app->getRequest()->post();
$branch_key = $post['branch_key'];
$response['status'] = Com::SUCCESS;
$modelBranch = Branch::find()
->select(['branch_id'])
->where(['branch_status' => Branch::ACTIVE])
// ->where(['branch_key' => $branch_key])
->one();
if($modelBranch == null){
$response['status'] = Com::ERROR;
$response['message'] = yii::t('api','BRANCH_NOT_FOUND');
return $this->asJson($response);
}
// $modelBranchTimeslot = BranchTimeslot::find()
// ->select(['day_id'])
// ->where([
// 'branch_id' => $modelBranch->branch_id,
// 'branch_timeslot_status' => BranchTimeslot::ACTIVE
// ])
// ->andWhere(['>=', 'day_id', date('w')+1])
// ->asArray()
// ->orderBy(['day_id' => SORT_ASC])
// ->groupBy(['day_id'])
// ->limit(Configuration::find(['configuration_value'])->where(['configuration_name' => 'PREORDER_DATE_COUNT']))
// ->all();
$modelBranchTimeslot = Configuration::find(['configuration_value'])->where(['configuration_name' => 'PREORDER_DATE_COUNT'])->asArray()->one();
$configuration_value = $modelBranchTimeslot['configuration_value'];
$days = [];
$day = "
";
array_push($days, $day);
for ($date_cal = 0; $date_cal < $configuration_value; $date_cal++) {
$currentDate = date('d-m-Y');
$timeslotend = date('d-m-Y', strtotime($currentDate. '+'.$date_cal.' day') );
$day = "
";
array_push($days, $day);
}
// $day = "
";
// foreach ($modelBranchTimeslot as $modelBranchTimeslots) {
// $dayId =
// date(
// DateTimeHelper::CUSTOM_DATE_FORMAT,
// strtotime(BranchTimeslot::getDayLabel($modelBranchTimeslots['day_id'], 'en') . ' this week')
// );
// $day .= "
";
// }
$response['html'] = $days;
return $this->asJson($response);
}
}
/**
*
* @return Json
*/
public function actionGetDeliverytimeList()
{
if (Yii::$app->request->isAjax) {
$request = Yii::$app->getRequest()->post();
$response['status'] = Com::SUCCESS;
$modelBranch = Branch::find()
->select(['branch_id'])
//->where(['branch_key' => $request['branch_key']])
->where(['branch_status' => Branch::ACTIVE])
->one();
if($modelBranch === null) {
$response['status'] = Com::ERROR;
$response['message'] = yii::t('api','BRANCH_NOT_FOUND');
return $this->asJson($response);
}
$modelBranchTimeSlot = BranchTimeslot::find()
->select(['timeslot_start_time', 'timeslot_end_time'])
->where([
'branch_id' => $modelBranch->branch_id,
'day_id' => date('w',strtotime(str_replace('/', '-', $request['delivery_date'])))+1,
'timeslot_type' => $request['timeslot_type']
])
->one();
if($modelBranchTimeSlot === null) {
$response['status'] = Com::ERROR;
$response['message'] = yii::t('api','NO_TIMESLOT_AVAILABLE');
$response['html'] = "
";
return $this->asJson($response);
}
$startTime = $modelBranchTimeSlot->timeslot_start_time;
if(strtotime(str_replace('/', '-', $request['delivery_date'])) == strtotime(date('Y-m-d'))) {
if(strtotime($modelBranchTimeSlot->timeslot_start_time) > strtotime(date('H:i'))) {
$startTime = $modelBranchTimeSlot->timeslot_start_time;
} else {
$startTime = date('H:i');
}
}
$endTime = $modelBranchTimeSlot->timeslot_end_time;
$duration = 30;
$add_mins = $duration * 60;
$array_of_time = "
";
$start_time = strtotime ($startTime) + $add_mins;
$end_time = strtotime ($endTime);
while ($start_time <= $end_time)
{
$array_of_time .= "
";
$start_time += $add_mins;
}
$response['html'] = $array_of_time;
return $this->asJson($response);
}
}
/**
*
* @return Json
*/
public function actionVerify_cart()
{
if (Yii::$app->request->isAjax) {
$request = Yii::$app->getRequest()->post();
$response['status'] = STATUS_FAIL;
$cartData = Com::Session(Com::SES_CART);
if(!com::isSession('customer_latitude') || !com::isSession('customer_langtitude')) {
$response['message'] = yii::t('api','CHOOSE_LOCATION');
goto skip;
}
if(!empty($cartData[$request['branch_key']])) {
$modelBranch = Branch::findOne(['branch_key' => $request['branch_key']]);
if ($modelBranch !== null) {
$checkoutSessionData = ['delivery_type' => $modelBranch->order_type];
Com::setSession(Com::SES_CHECKOUT, $checkoutSessionData);
}
$cartDataArray = $this->cartApiResponse();
if(!empty($cartDataArray) && empty($cartDataArray['data'])){
$response['message'] = $cartDataArray['message'];
goto skip;
}
} else {
$response['message'] = yii::t('frontend','Invalid cart');
goto skip;
}
$response['status'] = STATUS_SUCCESS;
skip:
return $this->asJson($response);
}
}
/**
*
* @return Json
*/
public function actionPlace_order_subscription()
{
// if (Yii::$app->request->isAjax) {
$request = Yii::$app->getRequest()->post();
$sessionData = Com::Session(Com::SES_CHECKOUT);
if(!isset($request['user_order_type'])) {
$request['user_order_type'] = 1;
}
$subscriptionDetails = [];
if($request['user_order_type'] == 3) {
if(isset($request['subscription_order_details'])){
foreach($request['subscription_order_details'] as $key => $subDetail) {
if(empty($request['delivery_address'][$key])) {
$response['message'] = 'Please choose address';
$response['status'] = false;
goto skip;
}
foreach ($subDetail as $pkey => $value) {
if(empty($value) || $value < 1) {
$response['message'] = 'Please Fill the qty';
$response['status'] = false;
goto skip;
}
$subscriptionDetails[$pkey]['qty'] = $value;
$subscriptionDetails[$pkey]['address_key'] = $request['delivery_address'][$key];
}
}
}
// if(isset($request['delivery_address'])){
// foreach($request['delivery_address'] as $key => $subDetail) {
// $subscibeItemData[$key]['user_address_key'] = $subDetail;
// }
// }
$request['subscription_order_details'] = [];
$request['subscription_order_details'] = $subscriptionDetails;
}
$response['status'] = Com::SUCCESS;
$i = 0;
$subscibeItemData = [];
$subscriptionData = [];
if(isset($request['subscription_order_details']) ){
foreach($request['subscription_order_details'] as $key => $subDetail) {
if($request['user_order_type'] == 3) {
$subscibeItemData[$i]['item_key'] = $key;
$subscibeItemData[$i]['item_quantity'] = $subDetail['qty'];
$subscibeItemData[$i]['user_address_key'] = $subDetail['address_key'];
} else {
$subscibeItemData[$i]['item_key'] = $key;
$subscibeItemData[$i]['item_quantity'] = $subDetail;
}
// $subscibeItemData[$i]['user_address_key'] =
// if(empty($request['delivery_address'][$i+1])) {
// $response['message'] = 'Please choose address';
// $response['status'] = false;
// goto skip;
// }
//$subscibeItemData[$i]['user_address_key'] = isset($request['delivery_address']) ? $request['delivery_address'][$i+1] : null;
$i++;
}
$subscriptionData['subscription'] = $request['subscription_type'];
$subscriptionData['subscription_day_value'] = $request['subscription_day_value'];
$subscriptionData['subscription_type'] = $request['subscription_type'];
$subscriptionData['delivery_date'] = $request['delivery_date'];
$subscriptionData['delivery_time'] = Date('H:i', strtotime($request['delivery_time']));
$subscriptionData['start_date'] = $request['start_date'];
$subscriptionData['start_time'] = Date('H:i', strtotime($request['start_time']));
$subscriptionData['end_date'] = $request['end_date'];
$subscriptionData['end_time'] = Date('H:i', strtotime($request['end_time']));
// Com::unsetSession(Com::SES_CHECKOUT);
$SessionData = Com::Session(Com::SES_CHECKOUT);
$SessionData['subscription_order_details'] = $subscibeItemData;
$SessionData['subscription'] = $subscriptionData;
}
//$sessionData['user_order_type'] = $request['user_order_type'];
if(isset($request['delivery_pickup_date']) && isset($request['delivery_pickup_time'])) {
$date = date('Y-m-d',strtotime(
str_replace('/', '-', $request['delivery_pickup_date']))) .' '. $request['delivery_pickup_time'].':00';
$SessionData['pickup_delivery_date_time'] = $date;
} else {
$date = date('Y-m-d H:s:i');
}
if(isset($request['pay_type']) && $request['pay_type'] != ''){
$SessionData['payment_option'] = $request['pay_type'];
}
if (isset($request['delivery_type']) && $request['delivery_type'] != '') {
$SessionData['delivery_type'] = $request['delivery_type'];
}
if (isset($request['delivery']) && $request['delivery'] != '') {
$SessionData['delivery'] = $request['delivery'];
}
if (isset($request['order_message']) && $request['order_message'] != '') {
$SessionData['order_message'] = $request['order_message'];
}
if (isset($request['delivery']) && $request['delivery'] != '') {
$SessionData['delivery_option'] = $request['delivery'];
}
if (isset($request['coupon_code']) && $request['coupon_code'] != '') {
$SessionData['coupon_code'] = $request['coupon_code'];
}
if (isset($request['delivery_tip']) && $request['delivery_tip'] != '') {
$SessionData['deliveryboy_tip'] = $request['delivery_tip'];
}
if (isset($request['user_order_type']) && $request['user_order_type'] != '') {
$SessionData['user_order_type'] = $request['user_order_type'];
}
if(in_array($SessionData['user_order_type'], [2, 3])) {
if($request['subscription_type'] == 1){
if(empty($request['subscription_day_value'])){
$response['message'] = 'Please Choose Delivery Day';
$response['status'] = false;
goto skip;
}
} else {
if(empty($request['delivery_date']) && empty($request['delivery_time'])) {
$response['message'] = 'Please Choose Delivery Date and Time';
$response['status'] = false;
goto skip;
}
}
if(empty($request['start_date']) && empty($request['start_time'])) {
$response['status'] = false;
$response['message'] = 'Please Choose Start date and time';
goto skip;
}
if(empty($request['end_date']) && empty($request['end_time'])) {
$response['message'] = 'Please Choose End date and time';
$response['status'] = false;
goto skip;
}
}
//print_r($request); die;
// die('out');
if (isset($request['delivery_address']) && $request['delivery_address'] != '') {
$userAddressId = UserAddress::find()
->select('user_address_id')
->where(['user_address_key' => $request['delivery_address']])
->one();
}
if(!yii::$app->user->getId()) { //Register new user
$modelUser = new User();
$modelUser->setScenario($modelUser::SCENARIO_REGISTER_CHECKOUT);
$modelUser->first_name = $request['first_name'];
$modelUser->last_name = $request['last_name'];
$modelUser->email = $request['email'];
$modelUser->mobile_number = $request['mobile_number'];
$modelUser->default_address = $userAddressId->user_address_id;
$password = Com::generateRandomString(6);
if($modelUser->validate()) {
$modelUser->setPassword($password);
$modelUser->status = $modelUser::STATUS_ACTIVE;
if($modelUser->save()) {
$SessionData['user_key'] = $modelUser->user_key;
$AddressModel = new UserAddress();
$AddressModel->setScenario(UserAddress::ADD_ADDRESS);
$AddressModel->latitude = $request['useraddress-latitude'];
$AddressModel->longitude = $request['useraddress-longitude'];
$AddressModel->address_type = $request['address_type'];
if ($AddressModel->validate()) {
$AddressModel->user_id = $modelUser->getId();
if ($AddressModel->save()) {
$UserAddressLang = new UserAddressLang();
$UserAddressLang->setScenario(UserAddressLang::ADD_ADDRESS);
$UserAddressLang->language_code = yii::$app->language;
$UserAddressLang->flat_no = $request['flat_no'];
$UserAddressLang->apartment = $request['apartment'];
$UserAddressLang->street_name = $request['street_name'];
$UserAddressLang->city = $request['city'];
$UserAddressLang->area = $request['area'];
$UserAddressLang->company = $request['company'];
$UserAddressLang->landmark = $request['landmark'];
if($UserAddressLang->validate()) {
$UserAddressLang->user_address_id = $AddressModel->user_address_id;
if ($UserAddressLang->save()) {
$SessionData['user_address_key'] = $AddressModel->user_address_key;
}
} else {
$response['status'] = false;
$response['message'] = $UserAddressLang->getError();
return $this->asJson($response);
}
}
} else {
$response['status'] = false;
$response['message'] = $AddressModel->getError();
return $this->asJson($response);
}
}
} else {
$response['status'] = false;
$response['message'] = $modelUser->getError();
return $this->asJson($response);
}
} else {
if(isset($request['delivery_address']) && $request['delivery_address'] != ''){
$SessionData['user_address_key'] = $request['delivery_address'];
$modelUser = User::findOne(['user_id' => yii::$app->user->getId()]);
$modelUser->default_address = $userAddressId->user_address_id;
$modelUser->save(false);
}else {
if($request['delivery_type'] != 2){
$response['status'] = false;
$response['message'] = 'Please choose a delivery address';
return $this->asJson($response);
}
}
if(isset($request['mobile_number']) && $request['mobile_number'] != ''){
$SessionData['mobile_number'] = $request['mobile_number'];
$modelUser = User::findOne(['user_id' => yii::$app->user->getId()]);
$modelUser->mobile_number = $request['mobile_number'];
$modelUser->save(false);
}
}
// Com::unsetSession(Com::SES_CHECKOUT);
Com::setSession(Com::SES_CHECKOUT, $SessionData);
$cartDataArray = $this->cartApiResponse(false); //place order
if (!empty($cartDataArray['data'])) {
$response['status'] = STATUS_SUCCESS;
$response['html'] = $this->renderPartial('/checkout/_mini_cart', ['branch_key' => 'normal_items', 'cartData' => $cartDataArray['data']]);
//$result['html'] = $this->renderPartial('/checkout/_checkout_mini_cart', ['cartData' => $responseData['data']]);
} else {
$response['msg'] = $cartDataArray['message'];
}
// }
skip:
return $this->asJson($response);
}
/**
*
* @return Json
*/
public function actionPlace_order()
{
if (Yii::$app->request->isAjax) {
$request = Yii::$app->getRequest()->post();
$sessionData = Com::Session(Com::SES_CHECKOUT);
if(!isset($request['user_order_type'])) {
$request['user_order_type'] = 1;
}
$subscriptionDetails = [];
if($request['user_order_type'] == 3) {
if(isset($request['subscription_order_details'])){
foreach($request['subscription_order_details'] as $key => $subDetail) {
if(empty($request['delivery_address'][$key])) {
$response['message'] = 'Please choose address';
$response['status'] = false;
goto skip;
}
foreach ($subDetail as $pkey => $value) {
if(empty($value) || $value < 1) {
$response['message'] = 'Please Fill the qty';
$response['status'] = false;
goto skip;
}
$subscriptionDetails[$pkey]['qty'] = $value;
$subscriptionDetails[$pkey]['address_key'] = $request['delivery_address'][$key];
}
}
}
// if(isset($request['delivery_address'])){
// foreach($request['delivery_address'] as $key => $subDetail) {
// $subscibeItemData[$key]['user_address_key'] = $subDetail;
// }
// }
$request['subscription_order_details'] = [];
$request['subscription_order_details'] = $subscriptionDetails;
}
$response['status'] = Com::SUCCESS;
$i = 0;
$subscibeItemData = [];
$subscriptionData = [];
if(isset($request['subscription_order_details']) ){
foreach($request['subscription_order_details'] as $key => $subDetail) {
if($request['user_order_type'] == 3) {
$subscibeItemData[$i]['item_key'] = $key;
$subscibeItemData[$i]['item_quantity'] = $subDetail['qty'];
$subscibeItemData[$i]['user_address_key'] = $subDetail['address_key'];
} else {
$subscibeItemData[$i]['item_key'] = $key;
$subscibeItemData[$i]['item_quantity'] = $subDetail;
}
// $subscibeItemData[$i]['user_address_key'] =
// if(empty($request['delivery_address'][$i+1])) {
// $response['message'] = 'Please choose address';
// $response['status'] = false;
// goto skip;
// }
//$subscibeItemData[$i]['user_address_key'] = isset($request['delivery_address']) ? $request['delivery_address'][$i+1] : null;
$i++;
}
$subscriptionData['subscription'] = $request['subscription_type'];
$subscriptionData['subscription_day_value'] = $request['subscription_day_value'];
$subscriptionData['subscription_type'] = $request['subscription_type'];
$subscriptionData['delivery_date'] = $request['delivery_date'];
$subscriptionData['delivery_time'] = Date('H:i', strtotime($request['delivery_time']));
$subscriptionData['start_date'] = $request['start_date'];
$subscriptionData['start_time'] = Date('H:i', strtotime($request['start_time']));
$subscriptionData['end_date'] = $request['end_date'];
$subscriptionData['end_time'] = Date('H:i', strtotime($request['end_time']));
// Com::unsetSession(Com::SES_CHECKOUT);
$SessionData = Com::Session(Com::SES_CHECKOUT);
$SessionData['subscription_order_details'] = $subscibeItemData;
$SessionData['subscription'] = $subscriptionData;
}
//$sessionData['user_order_type'] = $request['user_order_type'];
if(isset($request['delivery_pickup_date']) && isset($request['delivery_pickup_time'])) {
$date = date('Y-m-d',strtotime(
str_replace('/', '-', $request['delivery_pickup_date']))) .' '. $request['delivery_pickup_time'].':00';
$SessionData['pickup_delivery_date_time'] = $date;
} else {
$date = date('Y-m-d H:s:i');
}
if(isset($request['pay_type']) && $request['pay_type'] != ''){
$SessionData['payment_option'] = $request['pay_type'];
}
if (isset($request['delivery_type']) && $request['delivery_type'] != '') {
$SessionData['delivery_type'] = $request['delivery_type'];
}
if (isset($request['delivery']) && $request['delivery'] != '') {
$SessionData['delivery'] = $request['delivery'];
}
if (isset($request['order_message']) && $request['order_message'] != '') {
$SessionData['order_message'] = $request['order_message'];
}
if (isset($request['delivery']) && $request['delivery'] != '') {
$SessionData['delivery_option'] = $request['delivery'];
}
if (isset($request['coupon_code']) && $request['coupon_code'] != '') {
$SessionData['coupon_code'] = $request['coupon_code'];
}
if (isset($request['delivery_tip']) && $request['delivery_tip'] != '') {
$SessionData['deliveryboy_tip'] = $request['delivery_tip'];
}
if (isset($request['user_order_type']) && $request['user_order_type'] != '') {
$SessionData['user_order_type'] = $request['user_order_type'];
}
if(in_array($SessionData['user_order_type'], [2, 3])) {
if($request['subscription_type'] == 1){
if(empty($request['subscription_day_value'])){
$response['message'] = 'Please Choose Delivery Day';
$response['status'] = false;
goto skip;
}
} else {
if(empty($request['delivery_date']) && empty($request['delivery_time'])) {
$response['message'] = 'Please Choose Delivery Date and Time';
$response['status'] = false;
goto skip;
}
}
if(empty($request['start_date']) && empty($request['start_time'])) {
$response['status'] = false;
$response['message'] = 'Please Choose Start date and time';
goto skip;
}
if(empty($request['end_date']) && empty($request['end_time'])) {
$response['message'] = 'Please Choose End date and time';
$response['status'] = false;
goto skip;
}
}
//print_r($request); die;
// die('out');
if (isset($request['delivery_address']) && $request['delivery_address'] != '') {
$userAddressId = UserAddress::find()
->select('user_address_id')
->where(['user_address_key' => $request['delivery_address']])
->one();
}
if(!yii::$app->user->getId()) { //Register new user
$modelUser = new User();
$modelUser->setScenario($modelUser::SCENARIO_REGISTER_CHECKOUT);
$modelUser->first_name = $request['first_name'];
$modelUser->last_name = $request['last_name'];
$modelUser->email = $request['email'];
$modelUser->mobile_number = $request['mobile_number'];
$modelUser->default_address = $userAddressId->user_address_id;
$password = Com::generateRandomString(6);
if($modelUser->validate()) {
$modelUser->setPassword($password);
$modelUser->status = $modelUser::STATUS_ACTIVE;
if($modelUser->save()) {
$SessionData['user_key'] = $modelUser->user_key;
$AddressModel = new UserAddress();
$AddressModel->setScenario(UserAddress::ADD_ADDRESS);
$AddressModel->latitude = $request['useraddress-latitude'];
$AddressModel->longitude = $request['useraddress-longitude'];
$AddressModel->address_type = $request['address_type'];
if ($AddressModel->validate()) {
$AddressModel->user_id = $modelUser->getId();
if ($AddressModel->save()) {
$UserAddressLang = new UserAddressLang();
$UserAddressLang->setScenario(UserAddressLang::ADD_ADDRESS);
$UserAddressLang->language_code = yii::$app->language;
$UserAddressLang->flat_no = $request['flat_no'];
$UserAddressLang->apartment = $request['apartment'];
$UserAddressLang->street_name = $request['street_name'];
$UserAddressLang->city = $request['city'];
$UserAddressLang->area = $request['area'];
$UserAddressLang->company = $request['company'];
$UserAddressLang->landmark = $request['landmark'];
if($UserAddressLang->validate()) {
$UserAddressLang->user_address_id = $AddressModel->user_address_id;
if ($UserAddressLang->save()) {
$SessionData['user_address_key'] = $AddressModel->user_address_key;
}
} else {
$response['status'] = false;
$response['message'] = $UserAddressLang->getError();
return $this->asJson($response);
}
}
} else {
$response['status'] = false;
$response['message'] = $AddressModel->getError();
return $this->asJson($response);
}
}
} else {
$response['status'] = false;
$response['message'] = $modelUser->getError();
return $this->asJson($response);
}
} else {
if(isset($request['delivery_address']) && $request['delivery_address'] != ''){
$SessionData['user_address_key'] = $request['delivery_address'];
$modelUser = User::findOne(['user_id' => yii::$app->user->getId()]);
$modelUser->default_address = $userAddressId->user_address_id;
$modelUser->save(false);
}else {
if($request['delivery_type'] != 2){
$response['status'] = false;
$response['message'] = 'Please choose a delivery address';
return $this->asJson($response);
}
}
if(isset($request['mobile_number']) && $request['mobile_number'] != ''){
$SessionData['mobile_number'] = $request['mobile_number'];
$modelUser = User::findOne(['user_id' => yii::$app->user->getId()]);
$modelUser->mobile_number = $request['mobile_number'];
$modelUser->save(false);
}
}
// Com::unsetSession(Com::SES_CHECKOUT);
Com::setSession(Com::SES_CHECKOUT, $SessionData);
$cartDataArray = $this->cartApiResponse(true); //place order
if(!empty($cartDataArray) && empty($cartDataArray['data'])){
$response['status'] = false;
$response['message'] = Yii::t('frontend', $cartDataArray['message']);
}
$response['url'] = Url::to(['/branch/order-confirmation']);
if($response['status'] == Com::SUCCESS) {
$response['url'] = Url::to(['/branch/order-confirmation','id' => $cartDataArray['data']['order_key']]);
if(isset($cartDataArray['data']['paymentUrl'])){
$response['url'] = Url::to(['/payment/hyperpay-payment','order_key' => $cartDataArray['data']['order_key'], 'type' => 'web']);
} else {
Com::setSession(Com::SES_CART,'');
Com::setSession(Com::SES_CHECKOUT, '');
}
}
return $this->asJson($response);
}
skip:
return $this->asJson($response);
}
public function actionOrderConfirmation($id)
{
$modelOrder = Order::findOne(['order_key' => $id]);
if($modelOrder == null){
Com::failureFlash('Sorry, Invalid Order');
return $this->goHome();
}
Com::unsetSession(Com::SES_CART);
Com::unsetSession(Com::SES_CHECKOUT);
Com::unsetSession(Com::CART_BRANCH_KEY);
if (Com::isSession('delivery_tip')) {
Com::unsetSession('delivery_tip');
}
if (Com::isSession(Com::COUPON_CODE)) {
Com::unsetSession(Com::COUPON_CODE);
}
if (Com::isSession(Com::ITEM_BRANCH)) {
Com::unsetSession(Com::ITEM_BRANCH);
}
Com::setsession(Com::ITEM_COUNT, 0);
return $this->render('/checkout/order_confirmation', ['modelOrder' => $modelOrder]);
}
public function actionBranchReview() {
if (Yii::$app->request->isAjax) {
$request = Yii::$app->getRequest()->post();
$model = new BranchReview();
$model->load($request,'');
$model->user_id = Yii::$app->getUser()->getId();
$model->status = 1;
if($model->save(false)){
return $this->asJson(['status' => Com::SUCCESS]);
}
}
}
/**
*
* @return Json
*/
public function actionCalculateDeliveryFee()
{
$post = Yii::$app->getRequest()->post();
$params = ['user_address_key', 'delivery_type'];
$result = ['status' => STATUS_FAIL, 'msg' => ''];
foreach ($params as $param) {
if (!array_key_exists($param, $post)) {
$result['msg'] = 'Please select delivery type and address';
goto skip;
}
}
$SessionData['delivery_type'] = $post['delivery_type'];
$SessionData['user_address_key'] = $post['user_address_key'];
if (Com::isSession(Com::SES_CHECKOUT)) {
$checkoutData = Com::session(Com::SES_CHECKOUT);
if (isset($checkoutData['deliveryboy_tip']) && $checkoutData['deliveryboy_tip'] != '') {
$SessionData['deliveryboy_tip'] = $checkoutData['deliveryboy_tip'];
}
if (isset($checkoutData['coupon_code']) && $checkoutData['coupon_code'] != '') {
$SessionData['coupon_code'] = $checkoutData['coupon_code'];
}
}
Com::setSession(Com::SES_CHECKOUT, $SessionData);
$responseData = $this->cartApiResponse();
if (!empty($responseData['data'])) {
$result['status'] = STATUS_SUCCESS;
$result['html'] = $this->renderPartial('/checkout/_mini_cart', ['branch_key' => 'normal_items', 'cartData' => $responseData['data']]);
//$result['html'] = $this->renderPartial('/checkout/_checkout_mini_cart', ['cartData' => $responseData['data']]);
} else {
$result['msg'] = $responseData['message'];
}
skip:
return $this->asJson($result);
}
/**
*
* @return string
*/
public function getUserData()
{
$userData = [];
$user_default_address = '';
if(yii::$app->user->getId()) {
$userDetails = User::find()->where(['user_id' => yii::$app->user->getId()])->asArray()->one();
$user_address = UserAddress::getaddress(Yii::$app->getUser()->getId());
$defaultAddressId = $userDetails['default_address'];
if($defaultAddressId != ''){
$user_default_address = UserAddress::findaddress($userDetails['default_address']);
$userData['default_address_key'] = $user_default_address['user_address_key'];
}
$userData['user'] = $userDetails;
$userData['user_address'] = $user_address;
}
return $userData;
}
public function actionCartCheck()
{
$result = ['status' => STATUS_FAIL, 'msg' => ''];
$branch = null;
if(Com::issession(Com::SES_CART) && Com::session(Com::SES_CART) != []){
$cart = Com::session(Com::SES_CART);
foreach ($cart as $key => $value) {
$branch = $key;
}
} else {
$result['msg'] = 'Sorry, cart is empty';
goto skip;
}
$result['status'] = STATUS_SUCCESS;
$result['url'] = '/branch/branch-detail?id='.$branch;
skip:
return $this->asJson($result);
}
public function actionDirectProducts()
{
// if (!Yii::$app->getUser()->getIsGuest()) {
// $userIdentity = Yii::$app->getUser()->getIdentity();
// $bearer = $userIdentity->getAuthKey();
// }
// $headers = [
// 'Content-Type: application/json; charset=utf-8',
// sprintf('Authorization: Bearer %s', $bearer),
// 'Accept-Language: ' . \Yii::$app->language,
// ];
// //print_r($rawData);exit;
// $cartData = ApiHelper::getInstance()
// ->setRequestMethod(ApiHelper::REQUEST_METHOD_POST)
// ->setRequestBodyType(ApiHelper::REQUEST_BODY_TYPE_RAW_DATA)
// ->setRequestParam($rawData)
// ->setUrl($url);
// $apiResponse = $cartData->run();
// $message = $apiResponse->getMessage();
// if(!$apiResponse->isSuccess()) {
// $message = $apiResponse->getMessage();
// $cartDataArray['message'] = $message;
// }
// $cartDataArray['data'] = $apiResponse->getData();
return $this->render('/item/direct-purchase');
}
public function actionUserOrderType($type)
{
$checkOutSession = Com::Session(Com::SES_CHECKOUT);
$checkOutSession['user_order_type'] = $type;
Com::setSession(Com::SES_CHECKOUT, $checkOutSession);
}
public function actionFindCartType()
{
$cart = Com::Session(Com::SES_CART);
$result['cart_type'] = 2;
if(isset($cart['normal_items'])) {
$result['cart_type'] = 1;
}
return $this->asJson($result);
}
public function actionTest()
{
$model = Order::findOne(['order_key' => $order_key])->one();
if($model == null) {
$this->commonError('Invalid Order');
}
$model = OrderItem::findOne(['order_id' => $model->order_id])->one();
foreach ($model as $key => $value) {
$modelUserOrder = UserOrder::find()->where(['user_id' => $value['user_id']])->one();
}
}
public function actionReminderChange()
{
$request = Yii::$app->request->get();
print_r($request); die;
$userData = Car::find();
}
public function actionGetTopProduct()
{
$latitude = (com::isSession('customer_latitude')) ? com::session('customer_latitude') : '';
$longitude = (com::isSession('customer_langtitude')) ? com::session('customer_langtitude') : '';
if($latitude == null || $longitude == null){
goto skip;
}
skip:
}
public function actionCheckMinCart()
{
$cart = Com::Session(Com::SES_CART);
$result = ['status' => STATUS_FAIL, 'msg' => '' ];
$itemKey = '';
$subTotal = 0;
$totalRefundBottleQty = 0;
foreach ($cart as $key => $cartType) {
foreach ($cartType as $key => $value) {
// print_r($value); die;
$itemKey = $key;
$modelItem = Item::find()->where(['item_key' => $key])->one();
$subTotal += $modelItem->item_price * $value['quantity'];
$totalRefundBottleQty = $totalRefundBottleQty + $value['refund_bottle_qty'];
//break;
}
}
$modelBranch = Branch::find()
->alias('B')
->select([
'B.minimum_cart_value',
'V.cgst'
])
->innerJoin(['I' => Item::tableName()], 'B.branch_id = I.branch_id')
->innerJoin(['V' => Vendor::tableName()], 'V.vendor_id = B.vendor_id')
->where(['I.item_key' => $itemKey])
->asArray()
->one();
if($modelBranch == []) {
$result['msg'] = 'Sorry, branch currently not available';
goto skip;
}
$subTotal = $subTotal;
$vat = $cgst = ($modelBranch['cgst']/100) * $subTotal;
$total = $subTotal + $vat;
if($subTotal < $modelBranch['minimum_cart_value']) {
$result['msg'] = 'Sorry, minimum Cart value is ' .Com::moneyFormat($modelBranch['minimum_cart_value'], true);
goto skip;
}
if($totalRefundBottleQty != 0) {
$totalRefundPrice = $totalRefundBottleQty * Configuration::get(Configuration::EMPTY_BOTTLE);
//die('in');
//print_r($totalRefundPrice); die;
if($totalRefundPrice > $total){
$result['msg'] = 'Sorry, Add more Item to Continue ';
goto skip;
}
}
$result['msg'] = '';
$result['status'] = STATUS_SUCCESS;
skip:
$this->asJson($result);
}
}