/var/www/vhosts/nabawater/api/modules/v1/models
Edit: /var/www/vhosts/nabawater/api/modules/v1/models/Branch.php (13454B)
function(self $model) {
return $model->delivery_time !== null ? $model->delivery_time : 0 ;
},
'pickup_time',
'delivery_charge_base_km' => function(self $model) {
$latitude = Yii::$app->request->get('latitude');
$longitude = Yii::$app->request->get('longitude');
$branchDetails['latitude'] = $model->latitude;
$branchDetails['longitude'] = $model->longitude;
$user_distance = GeoHelper::distance($latitude, $longitude, $branchDetails['latitude'], $branchDetails['longitude']);
return DeliveryChargeSetting::getDeliveryCharge($user_distance);
},
'rating' => function(self $model) {
$query = BranchReview::find()->select(['avg(rating) as rating'])
->where([
'branch_id' => $model->branch_id,
'status' => BranchReview::STATUS_APPROVED])
->groupBy('branch_id')
->one();
return isset($query->rating) ? $query->rating : 0;
},
'branch_availability_status' => function(self $model) {
if ((int)$model->order_type === BranchTimeslot::ORDER_TYPE_BOTH) {
$timeslot_type_array = explode(',', $model->timeslot_type);
$modelTimeSlotCount = '';
$modelTimeSlot = BranchTimeslot::find()
->where([
'day_id' => date('w')+1,
'branch_id' => $model->branch_id,
'branch_timeslot_status' => Branch::ACTIVE,
])
->andWhere(['<=','timeslot_start_time', date('H:i', time())])
->andWhere(['>','timeslot_end_time', date('H:i', time())])
->one();
if ($modelTimeSlot !== null) {
$modelTimeSlot = (array)$modelTimeSlot;
$modelTimeSlotCount = count($modelTimeSlot);
}
$modelTimeSlot = $modelTimeSlotCount;
} else {
$modelTimeSlot = BranchTimeslot::find()
->where([
'day_id' => date('w')+1,
'branch_id' => $model->branch_id,
'branch_timeslot_status' => Branch::ACTIVE,
])
->andWhere(['<=','timeslot_start_time', date('H:i', time())])
->andWhere(['>','timeslot_end_time', date('H:i', time())])
->andWhere(['timeslot_type' => $model->order_type])
->one();
}
if ($model->branch_availability_status == Branch::BRANCH_AVAILABILITY_STATUS_BUSY) {
$class = Branch::BRANCH_AVAILABILITY_STATUS_BUSY;
} else if ($model->branch_availability_status == Branch::BRANCH_AVAILABILITY_STATUS_CLOSED || !isset($modelTimeSlot) || empty($modelTimeSlot)){
$class = Branch::BRANCH_AVAILABILITY_STATUS_CLOSED;
} else {
$class = 1;
}
return $model->branch_availability_status !== null ? $class : 0 ;
},
'busy_reason' => function(self $model) {
return $model->busy_reason !== null ? $model->busy_reason : "" ;
},
'branch_address_line1',
'branch_address_line2' => function(self $model) {
return $model->branch_address_line2 !== null ? $model->branch_address_line2 : '';
},
'area' => function(self $model) {
return $model->area !== null ? $model->area : "" ;
},
'city' => function(self $model) {
return $model->city !== null ? $model->city : "" ;
},
'country' => function(self $model) {
return $model->country !== null ? $model->country : "" ;
},
'vendor_name',
'vendor_key',
'user_favourite' => function (self $model) {
if (Yii::$app->getUser()->getIsGuest()) {
return 0;
}
$userIdentity = Yii::$app->getUser()->getIdentity();
$favourite = UserFavourite::find()->alias('UF')
->where([
'UF.branch_id' => $model->branch_id,
'UF.user_id' => $userIdentity->getId(),
'UF.status' => UserFavourite::FAV_ACTIVE
])
->all();
if (count($favourite) > 0) {
return 1;
} else {
return 0;
}
},
'vendor_image_path' => function (self $model) {
return UploadHelper::getInstance()->get($model->vendor_image_path);
},
'vendor_description',
'timeslot_type' => function(self $model) {
return $model->timeslot_type !== null ? $model->timeslot_type : '' ;
},
'pickup_time_slot' => function(self $model) {
return BranchTimeslot::find()->alias('BT')
->where(['BT.branch_id' => $model->branch_id,
'BT.timeslot_type' => BranchTimeslot::TIMESLOT_PICKUP,
'BT.branch_timeslot_status' => BranchTimeslot::ACTIVE
])
->orderBy(['BT.day_id' => SORT_ASC])
->all();
},
'delivery_time_slot' => function (self $model) {
return BranchTimeslot::find()->alias('BT')
->where(['BT.branch_id' => $model->branch_id,
'BT.timeslot_type' => BranchTimeslot::TIMESLOT_DELIVERY,
'BT.branch_timeslot_status' => BranchTimeslot::ACTIVE
])
->orderBy(['BT.day_id' => SORT_ASC])
->all();
},
'cuisines' => function (self $model) {
$modelCuisine = Cuisine::find()->alias('C')
->select(['VC.cuisine_id'])
->leftJoin(['VC' => VendorCuisine::tableName()], 'VC.cuisine_id = C.cuisine_id')
->where(['VC.vendor_id' => $model->vendor_id]);
Cuisine::selectTranslation($modelCuisine);
$modelCuisine = $modelCuisine->asArray()->all();
return $modelCuisine;
},
'vendor_type' => function (self $model) {
$modelVendorType = VendorType::find()->alias('VT')
->select(['VT.vendor_type_id'])
->leftJoin(['VTD' => VendorTypeDetail::tableName()],
'VTD.vendor_type_id = VT.vendor_type_id')
->where([
'VT.vendor_type_status' => VendorType::ACTIVE,
'VTD.vendor_id' => $model->vendor_id
]);
VendorType::selectTranslation($modelVendorType);
return $modelVendorType->asArray()->all();
},
'preorder_available' => function (self $model) {
$vendorModel = Vendor::findOne(['vendor_id' => $model->vendor_id]);
if($vendorModel != null) {
return ($vendorModel->preorder_available == Vendor::PREORDER_AVAILABLE) ? 1 : 0;
}
return 0;
},
'payment_option' => function (self $model) {
$vendorModel = Vendor::findOne(['vendor_id' => $model->vendor_id]);
if($vendorModel != null) {
return ($vendorModel->payment_option != '') ? $vendorModel->payment_option : 0;
}
return 0;
},
'minimum_cart_value' => function (self $model) {
$vendorModel = Vendor::findOne(['vendor_id' => $model->vendor_id]);
if($vendorModel != null) {
return ($vendorModel->minimum_cart_value != '') ? $vendorModel->minimum_cart_value : 0;
}
return 0;
},
'banner' => function (self $model) {
$modelBanner = Banner::find()->alias('B')
->select(['B.*'])
->where([
'B.banner_type' => Banner::APP_BANNER,
'B.vendor_id' => $model->vendor_id
]);
Banner::selectTranslation($modelBanner);
$modelBanner = $modelBanner->one();
return $modelBanner !== null ? $modelBanner : [];
},
'distance' => function (self $model) {
$latitude = Yii::$app->request->get('latitude');
$longitude = Yii::$app->request->get('longitude');
$branchDetails['latitude'] = $model->latitude;
$branchDetails['longitude'] = $model->longitude;
return $user_distance = GeoHelper::distance($latitude, $longitude, $branchDetails['latitude'],
$branchDetails['longitude']);
},
'eta_time' => function (self $model) {
$latitude = Yii::$app->request->get('latitude');
$longitude = Yii::$app->request->get('longitude');
$branchDetails['latitude'] = $model->latitude;
$branchDetails['longitude'] = $model->longitude;
$user_distance = GeoHelper::distance($latitude, $longitude, $branchDetails['latitude'],
$branchDetails['longitude']);
return round($model->preparation_time + ($user_distance * Configuration::get(Configuration::DISTANCE_TIME)));
},
'category' => function (self $model) {
$modelCategory = Category::find()->alias('C')
->select(['C.category_id'])
->innerJoin(['I' => Item::tableName()], 'I.category_id = C.category_id and I.vendor_id = :vendor and I.branch_id = :branch',['vendor' => $model->vendor_id, 'branch' => $model->branch_id])
->where([
// 'VC.vendor_id' => $model->vendor_id,
// 'I.branch_id'=> $model->branch_id,
'C.category_status' => Category::ACTIVE,
'I.item_status' => Item::ACTIVE
]);
//->andwhere(['<>','I.quantity', 0]);
Category::selectTranslation($modelCategory);
$modelCategory = $modelCategory->orderBy(['C.sort_no' => SORT_ASC])->all();
return $modelCategory;
},
'items' => function (self $model) {
return Item::find()
->select('I.*')
->alias('I')
->where([
'I.branch_id' => $model->branch_id,
'I.item_status' => Item::ACTIVE,
])
//->andwhere(['<>','I.quantity', null])
// ->andwhere(['<>','I.quantity', 0])
->leftJoin(['IM' => ItemImage::tablename()], "IM.item_id = I.item_id")
->andWhere(['IM.language_code' => \Yii::$app->language])
// ->orderBy(
// [
// new \yii\db\Expression('IM.item_image_path IS NULL ASC, I.sort_no DESC')
// ]
// )
->orderBy(['I.sort_no' => SORT_ASC])
->all();
}
];
}
}