/var/www/vhosts/nabawater/api/modules/v1/models
Edit: /var/www/vhosts/nabawater/api/modules/v1/models/OrderDetailV1.php (11483B)
function (self $model) {
return $this->getOrderType((int)$model->order_type);
},
'delivery_option',
'delivery_option_label' => function (self $model) {
return $this->getDeliveryType((int)$model->delivery_option);
},
'order_datetime' => function (self $model) {
$dtHelper = DateTimeHelper::getInstance();
$order_date = $dtHelper->format($model->order_date_time, $dtHelper::MYSQL_DATETIME_FORMAT);
return date("m/d/Y h:i a", strtotime($order_date));
},
'payment_type' => function (self $model) {
return $model->payment_option;
},
'payment_type_label' => function (self $model) {
return (new Order)->getPaymentOptionLabel($model->payment_option);
},
'delivery_datetime' => function (self $model) {
if($model->pickup_delivery_date_time != '1970-01-01' && $model->pickup_delivery_date_time != '0000-00-00') {
$dtHelper = DateTimeHelper::getInstance();
$pickup_delivery_date_time = $dtHelper->format($model->pickup_delivery_date_time, $dtHelper::MYSQL_DATETIME_FORMAT);
return date("m/d/Y h:i a", strtotime($pickup_delivery_date_time));
} else {
return '';
}
},
'address' => function (self $model) {
if ((int)$model->order_type === $model::ORDER_TYPE_DELIVERY) {
$modelAddress = self::getUserAddress();
if ($modelAddress == null) {
return '-';
}
return $modelAddress->flat_no. ' ' .$modelAddress->apartment.' ' .
$modelAddress->street_name. ' '. $modelAddress->city;
}
return '';
},
'landmark' => function (self $model) {
if ((int)$model->order_type === $model::ORDER_TYPE_DELIVERY) {
$modelAddress = self::getUserAddress();
return ($modelAddress != null) ? $modelAddress->landmark : '' ;
}
return '';
},
'note' => function (self $model) {
if ((int)$model->order_type === $model::ORDER_TYPE_DELIVERY) {
$modelAddress = self::getUserAddress();
return ($modelAddress != null) ? $modelAddress->apartment : '' ;
}
return '';
},
'company' => function (self $model) {
if ((int)$model->order_type === $model::ORDER_TYPE_DELIVERY) {
$modelAddress = self::getUserAddress();
return ($modelAddress != null) ? $modelAddress->company : '' ;
}
return '';
},
'order_status_label' => function(self $model) {
$label = $this->getDeliveryStatus((int)$model->order_status);
if((int)$model->order_status === $model::ORDER_STATUS_READY_TO_PICKUP) {
if ((int)$model->order_type === $model::ORDER_TYPE_PICKUP) {
return 'Ready To Pickup';
} else {
return 'Ready To Delivery';
}
}
return $this->getDeliveryStatus((int)$model->order_status);
},
'status_color_code' => function(self $model) {
if(array_key_exists($model->order_status, Order::COLOR_CODE)) {
return Order::COLOR_CODE[$model->order_status];
}
return "";
},
'payment_status',
'payment_status_label' => function(self $model) {
$orderModel = new Order();
return $orderModel->getPaymentStatusLabel($model->payment_status);
},
'order_total',
'items' => function(self $model) {
$modelItemName = $model->getOrderItemName();
return $modelItemName;
},
'item_total_price',
'payment_details' => function (self $model) {
$data = [];
if ($model->item_total > 0) {
$data[] = [
'name' => 'Sub Total',
'value' => $model->item_total,
'bold' => 0
];
}
$data[] = [
'name' => 'Delivery Fee',
'value' => $model->delivery_fee,
'bold' => 0
];
$data[] = [
'name' => 'Coupon',
'value' => $model->coupon_offer_value,
'bold' => 0
];
$data[] = [
'name' => 'Tips',
'value' => $model->delivery_boy_tip,
'bold' => 0
];
$data[] = [
'name' => 'Tax & Fee',
'value' => $model->vat,
'bold' => 0
];
$data[] = [
'name' => 'Total',
'value' => $model->order_total,
'bold' => 1
];
return $data;
},
];
}
/**
*
* @return type
*/
public function getOrderItemName()
{
$orderItemName = OrderItemV1::find()->alias('OI')
->select(['OI.quantity','OI.item_total_price','OIM.item_image_path','OIM.order_item_id','IT.item_price'])
->leftJoin(['OIM' => OrderItemImage::tableName()],'OIM.order_item_id = OI.order_item_id')
->leftJoin(['IT' => Item::tableName()],'OI.item_id = IT.item_id')
->where(['OI.order_id' => $this->order_id]);
OrderItem::selectTranslation($orderItemName);
return $orderItemName->all();
}
public function getUserAddress()
{
$address = UserAddress::find()->select(['UAL.*','UA.latitude','UA.longitude'])
->alias('UA')
->leftJoin(['UAL' => UserAddressLang::tableName()],'UA.user_address_id = UAL.user_address_id')
->where(['UA.user_address_id' => $this->user_address_id])
->one();
return $address;
}
/**
* @param $status
* @return string
*/
public function getDeliveryStatus($status)
{
$statusLabel = '';
switch ($status) {
case self::ORDER_STATUS_DELIVERYBOY_ACCEPTED:
$statusLabel = 'Confirmed';
break;
case self::ORDER_STATUS_ACCEPTED:
$statusLabel = 'Confirmed';
break;
case self::ORDER_STATUS_PREPARED:
$statusLabel = 'Preparation';
break;
case self::ORDER_STATUS_DELIVERED:
$statusLabel = 'Delivered';
break;
case self::ORDER_STATUS_REJECTED:
$statusLabel = 'Cancelled';
break;
case self::ORDER_STATUS_READY_TO_PICKUP:
$statusLabel = 'Ready To Pickup';
break;
case self::ORDER_STATUS_ONTHEWAY:
$statusLabel = 'Order on its way';
break;
case self::ORDER_STATUS_DELIVERYBOY_ASSIGNED:
$statusLabel = 'Confirmed';
break;
case self::ORDER_STATUS_PENDING:
$statusLabel = 'Pending';
break;
case self::ORDER_STATUS_DELIVERYBOY_REJECTED:
$statusLabel = 'Delivery boy rejected';
break;
case self::ORDER_STATUS_DELIVERED_TO_RIDER:
$statusLabel = 'on the way';
break;
case self::DELIVERY_ORDER_STATUS_ISSUE:
$statusLabel = 'Delivery Issue';
break;
case self::ORDER_STATUS_DELIVERYBOY_REQUESTED:
$statusLabel = 'Delivery boy Requested';
break;
}
return $statusLabel;
}
public function getNextDeliveryStatus($status,$order_type) {
$statusLabel = '';
switch ($status) {
case self::ORDER_STATUS_DELIVERYBOY_ACCEPTED:
$statusLabel = 'Confirm';
break;
case self::ORDER_STATUS_DELIVERYBOY_ASSIGNED:
$statusLabel = 'Confirm';
break;
case self::ORDER_STATUS_ACCEPTED:
$statusLabel = 'Preparation';
break;
case self::ORDER_STATUS_PREPARED:
if($order_type == Order::ORDER_TYPE_DELIVERY) {
$statusLabel = 'Ready to pickup';
} else {
$statusLabel = 'Delivered';
}
break;
}
return $statusLabel;
}
/**
*
* @param type $index
* @return $array
*/
public function getDeliveryType($index = '')
{
$deliveryTypeData = [
1 => Yii::t('backend', 'ASAP'),
2 => Yii::t('backend', 'Later'),
];
($index == '') ? ($deliveryTypeData = $deliveryTypeData) : ($deliveryTypeData = ArrayHelper::getValue($deliveryTypeData, $index));
return $deliveryTypeData;
}
public function getOrderType($type) {
$type_label = '';
if($type == Order::ORDER_TYPE_DELIVERY) {
$type_label = yii::t('api','Delivery');
} else if($type == Order::ORDER_TYPE_PICKUP) {
$type_label = yii::t('api','Pickup');
} else {
$type_label = Yii::t('api', 'Other');
}
return $type_label;
}
}