Example #1
0
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store()
 {
     $key = Input::get('key');
     $json = Input::all();
     //print_r($json);
     /*
                         ->join('members as m','d.merchant_id=m.id','left')
                         ->where('assignment_date',$indate)
                         ->where('device_id',$dev->id)
                         ->and_()
                         ->group_start()
                             ->where('status',$this->config->item('trans_status_admin_courierassigned'))
                             ->or_()
                             ->group_start()
                                 ->where('status',$this->config->item('trans_status_new'))
                                 ->where('pending_count >', 0)
                             ->group_end()
                         ->group_end()
     */
     if (is_null($key) || $key == '') {
         $actor = 'no id : no name';
         \Event::fire('log.api', array($this->controller_name, 'post', $actor, 'empty key'));
         return \Response::json(array('status' => 'ERR:EMPTYKEY', 'timestamp' => time(), 'message' => 'Empty Key'));
     }
     $app = \Application::where('key', '=', $key)->first();
     if ($app) {
         $model = new \Shipment();
         $merchant_id = $app->merchant_id;
         $result = array();
         foreach ($json as $j) {
             if (is_array($j)) {
                 if (isset($j['awb'])) {
                     $awb = $j['awb'];
                     $m = $model->where('delivery_id', '=', trim($awb))->first();
                     /*
                     ->where(function($q){
                             $q->where('status','=', \Config::get('jayon.trans_status_tobeconfirmed') )
                             ->orWhere(function($qp){
                                 $qp->where('status','=',\Config::get('jayon.trans_status_new'))
                                     ->where('pending_count','=',0);
                             });
                     
                     })->first();
                     */
                     if ($m) {
                         if ($m->status == \Config::get('jayon.trans_status_tobeconfirmed') || $m->status == \Config::get('jayon.trans_status_new') && $m->pending_count == 0) {
                             $m->status = \Config::get('jayon.trans_status_confirmed');
                             $m->save();
                         }
                         $result[] = array('awb' => $m->delivery_id, 'status' => $m->status);
                     }
                 }
             }
         }
         if (empty($result)) {
             $result = array('status' => 'ERR:NOMATCH', 'message' => 'No Match Found');
         } else {
             $result = array('status' => 'OK', 'message' => 'Confirmation Success', 'data' => $result);
         }
         //print_r($result);
         //die();
         $actor = $app->key . ' : ' . $app->merchant_id;
         \Event::fire('log.api', array($this->controller_name, 'post', $actor, 'awb search with array'));
         return Response::json($result);
     } else {
         $actor = 'no id : no name';
         \Event::fire('log.api', array($this->controller_name, 'post', $actor, 'account not found'));
         return \Response::json(array('status' => 'ERR:INVALIDACC', 'timestamp' => time(), 'message' => 'Invalid Account'));
     }
 }
Example #2
0
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store()
 {
     $key = Input::get('key');
     $json = Input::all();
     //print_r($json);
     /*
                         ->join('members as m','d.merchant_id=m.id','left')
                         ->where('assignment_date',$indate)
                         ->where('device_id',$dev->id)
                         ->and_()
                         ->group_start()
                             ->where('status',$this->config->item('trans_status_admin_courierassigned'))
                             ->or_()
                             ->group_start()
                                 ->where('status',$this->config->item('trans_status_new'))
                                 ->where('pending_count >', 0)
                             ->group_end()
                         ->group_end()
     */
     if (is_null($key) || $key == '') {
         $actor = 'no id : no name';
         \Event::fire('log.api', array($this->controller_name, 'post', $actor, 'empty key'));
         return \Response::json(array('status' => 'ERR:EMPTYKEY', 'timestamp' => time(), 'message' => 'Empty Key'));
     }
     $app = \Application::where('key', '=', $key)->first();
     if ($app) {
         $jsons = Input::json();
         $model = new \Shipment();
         $merchant_id = $app->merchant_id;
         $app_id = $app->id;
         $app_key = $app->key;
         $result = array();
         /*
         foreach ($jsons as $json) {
         
             $order = $this->ordermap;
         
             print_r($json);
         
         }
         
         die();
         */
         foreach ($jsons as $json) {
             //print_r($json);
             $order = $this->ordermap;
             if (isset($json['pick_up_date'])) {
                 if (is_array($json['pick_up_date']) && isset($json['pick_up_date']['sec'])) {
                     $pick_up_date = date('Y-m-d H:i:s', $json['pick_up_date']['sec']);
                 } else {
                     $pick_up_date = $json['pick_up_date'];
                 }
             } else {
                 $pick_up_date = date('Y-m-d H:i:s', time());
             }
             $codval = doubleval($json['cod']);
             //$codval = floor($codval * 100) / 100;
             $codval = round($codval, 0, PHP_ROUND_HALF_UP);
             $order['buyerdeliveryzone'] = isset($json['district']) ? $json['district'] : '';
             $order['merchant_trans_id'] = $json['no_sales_order'];
             $order['buyerdeliverytime'] = $pick_up_date;
             $order['fulfillment_code'] = $json['consignee_olshop_orderid'];
             $order['box_count'] = $json['number_of_package'];
             $order['delivery_type'] = trim($json['delivery_type']);
             $order['total_price'] = $codval;
             $order['email'] = $json['email'];
             $order['buyer_name'] = $json['consignee_olshop_name'];
             $order['recipient_name'] = $json['consignee_olshop_name'];
             $order['shipping_address'] = $json['consignee_olshop_addr'];
             $order['buyerdeliverycity'] = $json['consignee_olshop_city'];
             $order['shipping_zip'] = $json['consignee_olshop_zip'];
             $order['phone'] = $json['consignee_olshop_phone'];
             $order['delivery_bearer'] = 'merchant';
             $order['cod_bearer'] = 'merchant';
             $order['actual_weight'] = strval($json['w_v']);
             $weight = $json['w_v'];
             $delivery_type = trim($json['delivery_type']);
             $order['weight'] = \Prefs::get_weight_tariff($weight, $delivery_type, $app_id);
             $order['merchant_id'] = $merchant_id;
             $order['application_id'] = $app_id;
             $order['application_key'] = $app_key;
             $trx_detail = array();
             $trx_detail[0]['unit_description'] = $json['consignee_olshop_desc'];
             $trx_detail[0]['unit_price'] = $json['cod'];
             $trx_detail[0]['unit_quantity'] = 1;
             $trx_detail[0]['unit_total'] = $json['cod'];
             $trx_detail[0]['unit_discount'] = 0;
             $order['trx_detail'] = $trx_detail;
             $trx_id = $order['merchant_trans_id'];
             $trx = json_encode($order);
             $order['merchant_trans_id'] = $json['no_sales_order'];
             $order['fulfillment_code'] = $json['consignee_olshop_orderid'];
             $inlog = $json;
             $inlog['ts'] = new \MongoDate();
             unset($inlog['_id']);
             $inlog['merchant_api_id'] = $merchant_id;
             \Orderapilog::insert($inlog);
             $check = \Shipment::where('merchant_trans_id', '=', $json['no_sales_order'])->where('fulfillment_code', '=', $json['consignee_olshop_orderid'])->first();
             if ($check) {
                 $result[] = array('order_id' => $check->merchant_trans_id, 'ff_id' => $check->fulfillment_code, 'awb' => $check->delivery_id, 'timestamp' => $check->created, 'pickup_time' => $check->pickuptime, 'delivery_time' => $check->deliverytime, 'pending' => $check->pending_count, 'status' => $check->status, 'note' => $check->delivery_note);
             } else {
                 $saved = $this->order_save($trx, $app_key, $trx_id);
                 $result[] = array('order_id' => $saved['merchant_trans_id'], 'ff_id' => $saved['fulfillment_code'], 'awb' => $saved['delivery_id'], 'timestamp' => $saved['created'], 'pickup_time' => '0000-00-00 00:00:00', 'delivery_time' => '0000-00-00 00:00:00', 'pending' => $saved['pending_count'], 'status' => $saved['status'], 'note' => $saved['delivery_note']);
             }
             //$order[] = [w_v] => 0.9
             //$order[] = [awb] =>
             //$order[] = [consignee_olshop_service] => REG
             //$order[] = [position] => BPDU
             //$order[] = [updated_at] => 2015-11-24 16:44:25
             //$order[] = [created_at] => 2015-11-24 16:44:25
             //$order[] = [createdDate] => stdClass Object
             //$order[] = [lastUpdate] => stdClass Object
             //$order[] = [consignee_olshop_province] =>
             //$order[] = [trip] => 1
             //$order[] = [bucket] => incoming
             //$order[] = [order_id] => 100282527
             //$order[] = [fulfillment_code] => 249977
             //$order[] = [status] => confirmed
             //$order[] = [logistic_status] =>
             //$order[] = [pending_count] => 0
             //$order[] = [courier_status] => at_initial_node
             //$order[] = [warehouse_status] => at_initial_node
             //$order[] = [pickup_status] => to_be_picked_up
             //$order[] = [device_key] =>
             //$order[] = [device_name] =>
             //$order[] = [device_id] =>
             //$order[] = [courier_name] =>
             //$order[] = [courier_id] =>
         }
         /*
         buyerdeliverytime
         delivery_type
         buyer_name
         recipient_name
         shipping_address
         direction
         email
         mobile1
         mobile2
         phone
         weight
         package_description
         merchant_trans_id
         fulfillment_code
         logistic_awb
         total_price
         cod_bearer
         delivery_bearer
         buyerdeliveryzone
         buyerdeliverycity
         width
         height
         length
         box_count
         */
         //$result = $json;
         /*
                 (
         [_id] => 56543184ccae5b6112004278
         [district] =>
         [no_sales_order] => 100282527
         [pick_up_date] => stdClass Object
             (
                 [sec] => 1431104400
                 [usec] => 0
             )
         
         [consignee_olshop_orderid] => 249977
         [number_of_package] => 1
         [delivery_type] => REG
         [cod] => 0
         [email] => bagus_sulaiman@india.com
         [consignee_olshop_name] => 106191 bagus sulaiman
         [consignee_olshop_addr] => bagus sulaiman
             jl.bakti rt.004 rw.008 no.10b cililitan kramatjati 13640
             Jakarta Timur JK 13640
             Indonesia
         [consignee_olshop_city] => Jakarta Timur
         [consignee_olshop_region] => JK
         [consignee_olshop_zip] => 13640
         [consignee_olshop_phone] => 81317857612
         [contact] => 106191 bagus sulaiman
         [consignee_olshop_desc] => Susu dan Perlengkapan Bayi
         [w_v] => 0.9
         [awb] =>
         [consignee_olshop_cust] => 7735
         [consignee_olshop_service] => REG
         [position] => BPDU
         [updated_at] => 2015-11-24 16:44:25
         [created_at] => 2015-11-24 16:44:25
         [createdDate] => stdClass Object
             (
                 [sec] => 1448358276
                 [usec] => 411000
             )
         
         [lastUpdate] => stdClass Object
             (
                 [sec] => 1448358276
                 [usec] => 411000
             )
         
         [logistic] => JEX
         [logistic_type] => external
         [consignee_olshop_province] =>
         [trip] => 1
         [bucket] => incoming
         [delivery_id] => 24-112015-YAMYZ
         [order_id] => 100282527
         [fulfillment_code] => 249977
         [status] => confirmed
         [logistic_status] =>
         [pending_count] => 0
         [courier_status] => at_initial_node
         [warehouse_status] => at_initial_node
         [pickup_status] => to_be_picked_up
         [device_key] =>
         [device_name] =>
         [device_id] =>
         [courier_name] =>
         [courier_id] =>
                 )
         
         $awbs = $model->get();
         
         
         if($awbs){
             foreach($awbs as $awb){
                 $result[] = array(
                     'order_id'=>$awb->merchant_trans_id,
                     'ff_id'=>$awb->fulfillment_code,
                     'awb'=>$awb->delivery_id,
                     'timestamp'=>date('Y-m-d H:i:s',time()),
                     'pending'=>$awb->pending_count,
                     'status'=>$awb->status,
                     'note'=>$awb->delivery_note
                 );
             }
         }
         */
         //print_r($result);
         //die();
         /*
         foreach($jsons as $sheet_id=>$rows){
         
             $app_key = $app_entry[$sheet_id];
             $app_id = get_app_id_from_key($app_key);
         
             $order = $this->ordermap;
             foreach ($rows['data'] as $key => $line) {
                 if(in_array($key, $entry)){
         
                     $line['delivery_type'] = ($line['delivery_type'] == 'DO')?'Delivery Only':$line['delivery_type'];
                     $line['actual_weight'] = $line['weight'];
                     $line['weight'] = get_weight_tariff($line['weight'], $line['delivery_type'] ,$app_id);
         
                     $trx_detail = array();
                     $trx_detail[0]['unit_description'] = $line['package_description'];
                     $trx_detail[0]['unit_price'] = $line['total_price'];
                     $trx_detail[0]['unit_quantity'] = 1;
                     $trx_detail[0]['unit_total'] = $line['total_price'] ;
                     $trx_detail[0]['unit_discount'] = 0;
         
                     unset($line['package_description']);
                     unset($line['no']);
         
                     foreach($line as $k=>$v){
                         $order[$k] = $v;
                     }
         
                     $order['zip'] = '-';
         
                     $order['merchant_id'] = $merchant_id;
                     $order['application_id'] = $app_id;
                     $order['application_key'] = $app_key;
                     $order['trx_detail'] = $trx_detail;
         
                     $trx_id = 'TRX_'.$merchant_id.'_'.str_replace(array(' ','.'), '', microtime());
         
                     //print "order input: \r\n";
                     //print_r($order);
         
                     $trx = json_encode($order);
                     $result = $this->order_save($trx,$app_key,$trx_id);
         
                     //print $result;
         
                 }
         
             }
         
         }
         */
         $actor = $app->key . ' : ' . $app->merchant_id;
         \Event::fire('log.api', array($this->controller_name, 'post', $actor, 'order create array'));
         return Response::json($result);
     } else {
         $actor = 'no id : no name';
         \Event::fire('log.api', array($this->controller_name, 'post', $actor, 'account not found'));
         return \Response::json(array('status' => 'ERR:INVALIDACC', 'timestamp' => time(), 'message' => 'Invalid Account'));
     }
 }
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store()
 {
     $key = Input::get('key');
     $json = Input::all();
     //print_r($json);
     /*
                         ->join('members as m','d.merchant_id=m.id','left')
                         ->where('assignment_date',$indate)
                         ->where('device_id',$dev->id)
                         ->and_()
                         ->group_start()
                             ->where('status',$this->config->item('trans_status_admin_courierassigned'))
                             ->or_()
                             ->group_start()
                                 ->where('status',$this->config->item('trans_status_new'))
                                 ->where('pending_count >', 0)
                             ->group_end()
                         ->group_end()
     */
     if (is_null($key) || $key == '') {
         $actor = 'no id : no name';
         \Event::fire('log.api', array($this->controller_name, 'post', $actor, 'empty key'));
         return \Response::json(array('status' => 'ERR:EMPTYKEY', 'timestamp' => time(), 'message' => 'Empty Key'));
     }
     $app = \Application::where('key', '=', $key)->first();
     if ($app) {
         $model = new \Shipment();
         $merchant_id = $app->merchant_id;
         $result = array();
         foreach ($json as $j) {
             if (is_array($j)) {
                 $model = $model->orWhere(function ($q) use($j, $key) {
                     $order_id = $j['order_id'];
                     $ff_id = $j['ff_id'];
                     $q->where('merchant_trans_id', '=', trim($order_id))->where('fulfillment_code', '=', trim($ff_id))->where('application_key', '=', trim($key))->whereNotNull('delivery_id');
                 });
             }
         }
         $awbs = $model->get();
         if ($awbs) {
             foreach ($awbs as $awb) {
                 $result[] = array('order_id' => $awb->merchant_trans_id, 'ff_id' => $awb->fulfillment_code, 'awb' => $awb->delivery_id, 'timestamp' => date('Y-m-d H:i:s', time()), 'pending' => $awb->pending_count, 'status' => $awb->status, 'note' => $awb->delivery_note);
             }
         }
         //print_r($result);
         //die();
         $actor = $app->key . ' : ' . $app->merchant_id;
         \Event::fire('log.api', array($this->controller_name, 'post', $actor, 'awb search with array'));
         return Response::json($result);
     } else {
         $actor = 'no id : no name';
         \Event::fire('log.api', array($this->controller_name, 'post', $actor, 'account not found'));
         return \Response::json(array('status' => 'ERR:INVALIDACC', 'timestamp' => time(), 'message' => 'Invalid Account'));
     }
 }