/var/www/vhosts/nabawater/console/controllers
Edit: /var/www/vhosts/nabawater/console/controllers/CronController.php (13712B)
where(['<>', 'order_status',[Order::ORDER_STATUS_DELIVERED, Order::ORDER_STATUS_REJECTED]])
->andwhere(['delivery_option' => 2])
->andwhere(['is_notification_sent' => 0])
->asArray()
->orderBy(['order_id' => SORT_DESC])
->all();
foreach ($modelOrders as $key => $model) {
//print_r($model); die;
$is_reschedule = 0;
if($model['delivery_option'] != 2){
$is_reschedule = 0;
}
if($model['order_status'] == Order::ORDER_STATUS_DELIVERED) {
$is_reschedule = 0;
}
if($model['is_deliveryboy_request_for_reschdule'] == 1) {
$is_reschedule = 1;
}
//if(date("Y-m-d H:i:s", strtotime('-1 day')) > $model['pickup_delivery_date_time']) {
$t2 = strtotime(date("Y-m-d H:i:s") );
$t1 = strtotime($model['pickup_delivery_date_time']);
$diff = $t1 - $t2;
$hours = $diff / ( 60 * 60 );
if($hours < 24 && 0 < $hours){
$is_reschedule = 1;
}
$modelU = Order::findOne($model['order_id']);
$modelU->is_notification_sent = 1;
$modelU->save(false);
//if($model->reschedule_status == 2) {
// return 0;
//}
//print_r(date("Y-m-d H:i:s").' '.$model['pickup_delivery_date_time']); die;
if($is_reschedule == 0) {
continue;
}
$modelUser = User::findOne($model['user_id']);
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 Later Delivery'],
['en' => 'The order number '.$model['order_number'].' will be delivered by ('.date("d/m/Y", strtotime($model['pickup_delivery_date_time'])).' - '.date("H:i:s", strtotime($model['pickup_delivery_date_time'])) .')'],
[$modelUser['device_token']],
['status' => 'Message Sent Successfully', 'order_key' => $model['order_key']]
);
} catch (Exception $e) {
$result['msg'] = $e->getMessage();
echo $e->getMessage();
//die;
}
$html = Yii::$app->controller->renderPartial('@backend/views/webpush-notification/cronMail', ['msg' => 'The order number '.$model['order_number'].' will be delivered by ('.date("d/m/Y", strtotime($model['pickup_delivery_date_time'])).' - '.date("H:i:s", strtotime($model['pickup_delivery_date_time'])) .')']);
$mailer = Mailer::getInstance()->setTo('saravanan.r@technoduce.com');
$mailer->setSubject('Order Later Delivery');
$mailer->setMessage($html);
$response = $mailer->send();
//die('done');
}
}
public function actionNotification()
{
echo "cron step 1";
$currentTime = Date('H:i');
// print_r($currentTime); die;
$timeslots = [];
$userToken = [];
$t1 = strtotime('05:00');
$t2 = strtotime('23:00');
echo "cron step 2";
while ($t1 < $t2) {
$t1 = strtotime('+1 hour', $t1);
$timeslots[] = date('H:i', $t1);
}
if(in_array($currentTime, $timeslots)) {
$dateIndex = [
'1' => 'monday_status',
'2' => 'tuesday_status',
'3' => 'wednesday_status',
'4' => 'thursday_status',
'5' => 'friday_status',
'6' => 'startday_status',
'7' => 'sunday_status',
];
$modelUser = User::find()->where(['is_health_advice' => User::ACTIVE, 'status' => User::ACTIVE])->all();
echo "cron step 3";
foreach ($modelUser as $key => $user) {
$todayDateStatus = $dateIndex[date('w')];
$userReminder = UserReminder::find()
->where([
'user_id' => $user['user_id'],
'user_reminder_status' => User::ACTIVE
])
->andwhere(["$todayDateStatus" => User::ACTIVE])
->one();
if($userReminder != null && $user['device_token']) {
if(strlen($user['device_token']) == 36) {
$userToken[] = $user['device_token'];
}
}
}
}
if($userToken != []) {
print_r($userToken);
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' => 'Reminder'],
['en' => 'Hi, now it is your water drinking time.. let`s go for drinking'],
$userToken,
['status' => 'Message Sent Successfully']
);
}
catch(Exception $e)
{
echo $e->getMessage();
}
echo "cron step 4";
}
}
public function actionSubscribe()
{
$text = "Cron Job Started";
SubscriptionLog::log($text . ' ' . date('Y-m-d H:i:s').PHP_EOL);
$modelTodayCreateOrder = OrderSubscription::find()
->alias('OS')
->select(['OS.*'])
->leftJoin(['O' => Order::tableName()], 'O.order_id = OS.order_id')
->andFilterWhere([
'or',
[
'and',
['=', 'O.payment_status', Order::PAYMENT_STATUS_SUCCESS],
['<>', 'O.payment_option', Order::PAYMENT_OPTION_COD]
],
[
'and',
['=','O.payment_option' ,Order::PAYMENT_OPTION_COD]
],
[
'and',
['=','O.payment_option' ,Order::PAYMENT_OPTION_WALLET]
]
])
->andWhere(['<>', 'O.order_status', Order::ORDER_STATUS_IS_DELETE])
->andWhere(['<=', 'OS.start_date', date('Y-m-d H:i:s') ])
->andWhere(['>=', 'OS.end_date', date('Y-m-d H:i:s') ])
->asArray()
->all();
foreach($modelTodayCreateOrder as $key => $todayOrder) {
if($todayOrder['subscription_day_id'] != null) {
$dayNumber = date('N');
if($todayOrder['subscription_day_id'] != $dayNumber) {
continue;
}
} else {
if(date('Y-m-d') != $todayOrder['delivery_date']) {
continue;
}
}
$orderId = $todayOrder['order_id'];
$model = Order::find()->where(['order_id' => $orderId])->asArray()->one();
$newModelOrder = new Order();
unset($model['order_id']);
unset($model['order_key']);
$lastOrders = Order::find()->orderBy(['order_id' => SORT_DESC])->one();
$lastOrderID = isset($lastOrders->order_id) ? $lastOrders->order_id : 0;
$totalOrders = $lastOrderID + 1;
$orderNumber = str_repeat('0', max(0, 7 - strlen($totalOrders))) . $totalOrders;
$newModelOrder->load($model, '');
$newModelOrder->order_subscription_id = $todayOrder['order_subscription_id'];
$newModelOrder->order_date_time = date('Y-m-d H:i:s');
$newModelOrder->delivery_option = Order::DELIVERY_OPTION_LATER;
$newModelOrder->pickup_delivery_date_time = date('Y-m-d').' 10:00:00';
$newModelOrder->order_total = number_format($model['order_total'], 2);
// $newModelOrder->save(false);
//z $newModelOrder->order_status = Order::ORDER_STATUS_ACCEPTED;
$newModelOrder->save(false);
$newModelOrder = Order::findOne(['order_key' => $newModelOrder->order_key]);
$modelOrderItem = OrderItem::find()->where(['order_id' => $orderId])->asArray()->all();
foreach($modelOrderItem as $key => $orderItem) {
$newOrderItem = new OrderItem();
$orderItemId = $orderItem['order_item_id'];
unset($orderItem['order_item_id']);
$newOrderItem->load($orderItem, '');
$newOrderItem->order_id = $newModelOrder->order_id;
// $newOrderItem->order_item_id = '';
// print_r($modelOrderItem); die;
$newOrderItem->save(false);
$modelOrderItemLang = OrderItemLang::find()->where(['order_item_id' => $orderItemId])->asArray()->all();
foreach($modelOrderItemLang as $key => $OrderItemLang) {
$newOrderItemLang = new OrderItemLang();
unset($OrderItemLang['order_item_lang_id']);
$newOrderItemLang->load($OrderItemLang, '');
$newOrderItemLang->order_item_id = $newOrderItem->order_item_id;
$newOrderItemLang->save(false);
}
}
SubscriptionLog::log($todayOrder);
echo "order Created Successfully";
}
}
public function actionPaymentResponse()
{
$orderModel = Order::find()
->where(['IN','payment_option',['2,4,5,6']])
->andWhere(['payment_status' => 1])
->andWhere(['DATE(order_date_time)' => date('Y-m-d')])
->all();
if($orderModel != null) {
foreach ($orderModel as $key => $orderModelvalue) {
if($orderModelvalue->payment_id != "") {
$order = Order::findOne(['order_key' => $orderModelvalue->order_key]);
$entityId = '';
if($order->payment_option == Order::PAYMENT_OPTION_VISA_MASTER) {
$entityId = Configuration::get(Configuration::MASTER_VISA_ENTITY_ID);
}
if($order->payment_option == Order::PAYMENT_OPTION_MADA) {
$entityId = Configuration::get(Configuration::MADA_ENTITY_ID);
}
if($order->payment_option == Order::PAYMENT_OPTION_STC) {
$entityId = Configuration::get(Configuration::STC_PAY_ENTITY_ID);
}
if($order->payment_option == 6) {
$paymentType = 'APPLEPAY';
$entityId = '8ac9a4ca7c78e3f5017c8e865d7c0449';
}
$url = "https://oppwa.com/v1/checkouts/".$orderModelvalue->payment_id."/payment";
$url .= "?entityId=".$entityId;
$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);
}
$result = json_decode($responseData);
if($result->result->code == "000.000.000") {
$order->payment_status = Order::PAYMENT_STATUS_SUCCESS;
$order->order_date_time = date('Y-m-d H:i:s');
$order->cron_payment_response = json_encode($result);
$order->save(false);
}
$order->cron_payment_response = json_encode($result);
$order->save(false);
}
}
}
return true;
}
}