Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use App\Http\Requests;
- use Illuminate\Support\Facades\Input;
- use Validator;
- use Illuminate\Support\Facades\Redirect;
- use App\Datatables;
- use Illuminate\Support\Facades\Config;
- use Illuminate\Support\Facades\Session;
- use Illuminate\Support\Facades\Lang;
- use Illuminate\Support\Facades\Auth;
- use App\DeliveryOrder;
- use App\Clients;
- use App\Locations;
- use App\TruckRegistration;
- use Illuminate\Support\Facades\Event;
- use App\Events\DO_CreatedEvent;
- use App\SmsHistory;
- use App\Jobs\SendSmsToNextTruck;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\DB;
- use App\Settings;
- use App\DeliveryOrderRatio;
- use App\Traders;
- use App\Console\Commands\SendNextSms;
- use stdClass;
- class DeliveryOrderController extends Controller
- {
- public function __construct(DeliveryOrder $do, SmsHistory $smsh, TruckRegistration $tr)
- {
- $this->deliveryorder = $do;
- $this->truck = $tr;
- $this->sms_history = $smsh;
- }
- public function create()
- {
- if(!Auth::user()->can("deliveryorder.create")) {
- Session::flash('danger', Lang::get('messages.access_denied'));
- return Redirect::route('home');
- }
- $model = new DeliveryOrder;
- $importers = array('' => '--Please Select--') + Clients::lists('name', 'id')->toArray();
- $traders = array('' => '--Please Select--') + Traders::lists('name', 'id')->toArray();
- $truck_from = Config::get('customsettings.truck_from');
- $locations = array('' => '--Please Select--') + Locations::lists('location', 'id')->toArray();
- $truck_nos = array('' => '--Please Select--') + TruckRegistration::lists('truck_no', 'id')->toArray();
- return View('deliveryorders.create', compact('model', 'importers', 'truck_from', 'locations', 'truck_nos','traders'));
- }
- public function store()
- {
- if(!Auth::user()->can("deliveryorder.create")) {
- Session::flash('danger', Lang::get('messages.access_denied'));
- return Redirect::route('home');
- }
- $input = Input::except('_token');
- $rules = DeliveryOrder::$rules; //array('do_no' => 'required|unique:delivery_orders,do_no') +
- if(isset($input['truck_from']) && $input['truck_from'] == 'importer')
- {
- $rules['truck'] = 'required';
- $rules['contact_no'] = 'required|numeric';
- $rules['driver_license_no'] = 'required';
- }
- $validation = Validator::make($input, $rules);
- if ($validation->passes())
- {
- $input['status'] = 'pending';
- if($input['truck_from'] == 'importer')
- {
- $input['truck_no'] = $input['truck'];
- if($input['truck_no'] != '')
- $input['status'] = 'mapped';
- unset($input['truck']);
- }
- $input['do_no'] = DeliveryOrder::getDONo();
- $DO = $this->deliveryorder->create($input);
- if(isset($input['truck_from']) && $input['truck_from'] == 'internal' && $DO->status == 'pending')
- {
- Event::fire(new DO_CreatedEvent($DO));
- }
- if(isset($input['truck_from']) && $input['truck_from'] == 'importer') {
- //$this->deliveryorder->do_truck_mapping($DO->id);
- #Send confirmation sms
- $this->sendConfirmationSms($DO->id, $DO->do_no, 0, $DO->truck_no, $DO->driver_license_no, $DO->contact_no, 0);
- }
- Session::flash('success', Lang::get('messages.deliveryorder_create_success'));
- return Redirect::route('deliveryorder.index');
- }
- return Redirect::route('deliveryorder.create')
- ->withInput()
- ->withErrors($validation)
- ->with('message', 'There were validation errors.');
- }
- public function edit($id)
- {
- if(!Auth::user()->can("deliveryorder.update")) {
- Session::flash('danger', Lang::get('messages.access_denied'));
- return Redirect::route('home');
- }
- $model = $this->deliveryorder
- ->select(array(
- 'delivery_orders.id',
- 'delivery_orders.do_no',
- 'delivery_orders.importer',
- 'delivery_orders.trader',
- 'delivery_orders.truck_from',
- 'delivery_orders.location',
- 'delivery_orders.driver_license_no',
- 'delivery_orders.contact_no',
- 'delivery_orders.mapping_time',
- 'delivery_orders.entry_time',
- 'delivery_orders.load_in_truck',
- 'delivery_orders.out_time',
- 'delivery_orders.late_mark',
- 'delivery_orders.penalty_amount',
- 'delivery_orders.truck_no as importer_truck_no',
- 'trucks.truck_no',
- 'trucks.id as truck_id'
- ))
- ->leftJoin('trucks','delivery_orders.truck','=','trucks.id')
- ->where('delivery_orders.id',$id)
- ->first();
- $model->entry_time = ($model->entry_time != '0000-00-00 00:00:00') ? date('d/m/Y h:i a', strtotime($model->entry_time)) : '';
- $model->out_time = ($model->out_time != '0000-00-00 00:00:00') ? date('d/m/Y h:i a', strtotime($model->out_time)) : '';
- $traders = array('' => '--Please Select--') + Traders::lists('name', 'id')->toArray();
- $importers = array('' => '--Please Select--') + Clients::lists('name', 'id')->toArray();
- $truck_from = Config::get('customsettings.truck_from');
- $locations = array('' => '--Please Select--') + Locations::lists('location', 'id')->toArray();
- $truck_nos = array('' => '--Please Select--') + TruckRegistration::lists('truck_no', 'id')->toArray();
- $inout_time_duration_allowed = Config::get('customsettings.inout_time_duration_allowed');
- $permission_general_details = (Auth::user()->can("deliveryorder.generaldetails_update")) ? true : false;
- $permission_mapping_details = (Auth::user()->can("deliveryorder.mappingdetails")) ? true : false;
- $permission_entry_details = (Auth::user()->can("deliveryorder.entrydetails_update")) ? true : false;
- return View('deliveryorders.edit', compact('model', 'importers', 'truck_from', 'locations', 'inout_time_duration_allowed','permission_general_details','permission_mapping_details','permission_entry_details', 'truck_nos','traders'));
- }
- public function update($id)
- {
- if(!Auth::user()->can("deliveryorder.update")) {
- Session::flash('danger', Lang::get('messages.access_denied'));
- return Redirect::route('home');
- }
- $input = Input::except('_token','_method');
- $deliveryorder_details = $this->deliveryorder->find($id);
- $rules = DeliveryOrder::$rules; //array('do_no' => 'required|unique:delivery_orders,do_no,'.$id) +
- //date validation
- if(isset($input['truck_from']) && $input['truck_from'] === 'importer' && $deliveryorder_details->status == 'mapped')
- {
- $rules['contact_no'] = 'required|numeric';
- $rules['driver_license_no'] = 'required';
- $rules['truck'] = 'required';
- }
- else if(isset($input['truck_from']) && $input['truck_from'] === 'internal')
- {
- $input['truck_no'] = '';
- $input['contact_no'] = '';
- }
- if((Auth::user()->can("deliveryorder.generaldetails_update") || Auth::user()->can("deliveryorder.mappingdetails")) && $deliveryorder_details->status == 'mapped')
- {
- $rules['truck'] = 'required';
- }
- $rules['do_no'] = '';
- unset($input['do_no']);
- if(isset($input['entry_time']) && !empty($input['entry_time']))
- {
- $rules['out_time'] = 'required|enddatetime_after_startdatetime:entry_time';
- //$messages["validation.enddatetime_after_startdatetime"] = "";
- }
- //else
- {
- //$messages = array();
- }
- $validation = Validator::make($input, $rules);
- if ($validation->passes())
- {
- $do_truck_old = $deliveryorder_details->truck;
- if(isset($input['entry_time']) && !empty($input['entry_time']))
- {
- $input['entry_time'] = date_format(date_create_from_format('d/m/Y h:i a', Input::get('entry_time')), 'Y-m-d H:i:s');
- $input['out_time'] = date_format(date_create_from_format('d/m/Y h:i a', $input['out_time']), 'Y-m-d H:i:s');
- }
- if(isset($input['truck_from']) && $input['truck_from'] === 'importer')
- {
- $input['truck_no'] = $input['truck'];
- $input['truck'] = 0;
- if($input['truck_no'] != '')
- $input['status'] = 'mapped';
- }
- else if(isset($input['truck_from']) && $input['truck_from'] === 'internal' && $input['truck'] != '')
- {
- $input['truck_no'] = '';
- $input['status'] = 'mapped';
- }
- //
- $deliveryorder_details->update($input);
- $do_details_new = $this->deliveryorder->find($id);
- if(isset($input['truck_from']) && $input['truck_from'] === 'internal' && $input['truck'] != '' && $do_truck_old != $input['truck'])
- {
- $truck_det = $this->truck->find($do_details_new->truck);
- $license = (trim($input['driver_license_no']) != '') ? $input['driver_license_no'] : $truck_det->driver_license_no;
- $this->sendConfirmationSms($do_details_new->id, $do_details_new->do_no, $do_details_new->truck, $truck_det->truck_no, $license, $truck_det->contact_no, 0);
- }
- else if(isset($input['truck_from']) && $input['truck_from'] === 'importer' && $input['truck_no'] != '' && $do_truck_old != $input['truck_no'])
- {
- $this->sendConfirmationSms($do_details_new->id, $do_details_new->do_no, 0, $do_details_new->truck_no, $do_details_new->driver_license_no, $do_details_new->contact_no, 0);
- }
- if($deliveryorder_details->truck != '')
- {
- TruckRegistration::calculateTotalPenalty($deliveryorder_details->truck);
- }
- Session::flash('success', Lang::get('messages.deliveryorder_update_success'));
- return Redirect::route('deliveryorder.index');
- }
- return Redirect::route('deliveryorder.edit', $id)
- ->withInput()
- ->withErrors($validation)
- ->with('message', 'There were validation errors.');
- }
- public function destroy($id)
- {
- //if(Auth::user()->can("truck.delete"))
- {
- $deliveryorder = $this->deliveryorder->find($id);
- $deliveryorder->delete();
- return Redirect::route('deliveryorder.index')
- ->with('success', Lang::get('messages.deliveryorder_delete_success'));
- }
- // else
- // {
- // Session::flash('danger', Lang::get('messages.location_delete_failed'));
- // return Redirect::route('location.index');
- // }
- }
- public function destroyMany() {
- if(Auth::user()->can("deliveryorder.delete")) {
- $ids = Input::get('id');
- $this->deliveryorder->destroy($ids);
- } else {
- Session::flash('danger', Lang::get('messages.access_denied'));
- return Redirect::route('home');
- }
- return Redirect::route('deliveryorder.index')
- ->with('success', Lang::get('messages.deliveryorder_delete_success'));
- }
- public function index()
- {
- if(!Auth::user()->can("deliveryorder.view")) {
- Session::flash('danger', Lang::get('messages.access_denied'));
- return Redirect::route('home');
- }
- return View( 'deliveryorders.index' );
- }
- public function show($id)
- {
- if(!Auth::user()->can("deliveryorder.update")) {
- Session::flash('danger', Lang::get('messages.access_denied'));
- return Redirect::route('home');
- }
- $delivery_order = $this->deliveryorder
- ->select(array(
- 'delivery_orders.id',
- 'delivery_orders.do_no',
- 'delivery_orders.truck_from',
- 'locations.location',
- 'delivery_orders.driver_license_no',
- 'delivery_orders.contact_no as importer_contact_no',
- 'trucks.contact_no as internal_contact_no',
- 'delivery_orders.mapping_time',
- 'delivery_orders.entry_time',
- 'delivery_orders.load_in_truck',
- 'delivery_orders.out_time',
- 'delivery_orders.late_mark',
- 'delivery_orders.penalty_amount',
- 'delivery_orders.truck_no as importer_truck_no',
- 'trucks.truck_no',
- 'traders.name as trader_name',
- 'clients.name as importer_name'
- ))
- ->leftJoin('trucks','delivery_orders.truck','=','trucks.id')
- ->leftJoin('traders','delivery_orders.trader','=','traders.id')
- ->leftJoin('clients','delivery_orders.importer','=','clients.id')
- ->leftJoin('locations','delivery_orders.location','=','locations.id')
- ->where('delivery_orders.id',$id)
- ->first();
- $delivery_order->entry_time = ($delivery_order->entry_time != '0000-00-00 00:00:00') ? date('d/m/Y h:i:s', strtotime($delivery_order->entry_time)) : '';
- $delivery_order->out_time = ($delivery_order->out_time != '0000-00-00 00:00:00') ? date('d/m/Y h:i:s', strtotime($delivery_order->out_time)) : '';
- /*
- $traders = array('' => '--Please Select--') + Traders::lists('name', 'id')->toArray();
- $importers = array('' => '--Please Select--') + Clients::lists('name', 'id')->toArray();
- $truck_from = Config::get('customsettings.truck_from');
- $locations = array('' => '--Please Select--') + Locations::lists('location', 'id')->toArray();
- $truck_nos = array('' => '--Please Select--') + TruckRegistration::lists('truck_no', 'id')->toArray();
- $inout_time_duration_allowed = Config::get('customsettings.inout_time_duration_allowed');
- */
- $permission_general_details = (Auth::user()->can("deliveryorder.generaldetails_update")) ? true : false;
- $permission_mapping_details = (Auth::user()->can("deliveryorder.mappingdetails")) ? true : false;
- $permission_entry_details = (Auth::user()->can("deliveryorder.entrydetails_update")) ? true : false;
- return View('deliveryorders.show', compact('delivery_order','permission_general_details','permission_mapping_details','permission_entry_details'));
- }
- public static function getDatatableAjax($user) {
- $query = DeliveryOrder::select(array(
- 'delivery_orders.id',
- 'delivery_orders.created_at',
- 'delivery_orders.do_no',
- 'delivery_orders.truck_from',
- 'clients.name as importer_name',
- 'traders.name as trader_name',
- 'locations.location',
- 'delivery_orders.status',
- ))
- ->leftJoin('locations','delivery_orders.location','=','locations.id')
- ->leftJoin('clients','delivery_orders.importer','=','clients.id')
- ->leftJoin('traders','delivery_orders.trader','=','traders.id')
- ->whereRaw('delivery_orders.deleted_at is null');
- $button_group_open = '<div class="btn-group">
- <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
- Action
- <span class="caret"></span>
- </a>';
- $ul_open = '<ul class="dropdown-menu">';
- $update_access = $user->can("deliveryorder.update");
- $delete_access = $user->can("deliveryorder.delete");
- $view_access = $user->can("deliveryorder.view");
- if ($view_access) {
- $view_action = '<li>
- <a href="{{ route(\'deliveryorder.show\', $id) }}">
- <i class="fa fa-info-circle"></i> View
- </a>
- </li>';
- } else
- $view_action = '';
- if ($update_access) {
- $edit_action = '<li>
- <a href="{{ route(\'deliveryorder.edit\', $id) }}">
- <i class="fa fa-edit"></i> Edit
- </a>
- </li>';
- } else
- $edit_action = '';
- if ($delete_access) {
- $delete_action = '<li>
- <a data-message="This action cannot be undone. Do you still want to delete this delivery order?" data-method="DELETE" class="action_link" href="{{ route("deliveryorder.destroy", $id) }}">
- <i class="fa fa-trash-o"></i> Delete
- </a>
- </li>';
- } else
- $delete_action = '';
- $ul_close = '</ul">';
- $button_group_close = '</div>';
- if ($view_action || $update_access || $delete_access)
- $action = $button_group_open . $ul_open .$view_action. $edit_action . $delete_action . $ul_close . $button_group_close;
- else
- $action = '<span class="permission-denied">Permission Denied</span>';
- return Datatables::of ( $query )->add_column ( 'action', $action )
- ->edit_column('truck_from', '{{ ucfirst($truck_from) }}')
- ->edit_column('status', '{{ ucfirst($status) }}')
- ->edit_column('do_no', '<a href="{{ route(\'deliveryorder.show\', $id) }}"> {{ $do_no }} </a>')
- ->make ();
- }
- public static function sendRequestSms($DO, $truck)
- {
- $location = Locations::find($delivery_order->location);
- $message = 'Forward message to: 9223011234, Location:'.$location->location.'. Reply:<yes/no> DO:'.$DO->do_no.' License:<optional>';
- $smsData = array(
- 'do_id' => $DO->id,
- 'truck_id' => $truck->id,
- 'to_contact_no' => $truck->contact_no,
- 'type' => 'request',
- 'message' => $message,
- );
- $sms = SmsHistory::create($smsData);
- $phone_no = $truck->contact_no;
- $msg = rawurlencode($message);
- $url = 'http://bulkpush.mytoday.com/BulkSms/SingleMsgApi?feedid=358334&username=9821682191&password=dtjgt&To='.$phone_no.'&Text='.$msg.'&time=&senderid=';
- SendNextSms::callurl($url);
- }
- public function parseSms()
- {
- $msisdn = Input::get('msisdn');
- $circle = Input::get('circle');
- $operator = Input::get('operator');
- $message = Input::get('message');
- $message = trim($message);
- $reply = $this->getValue(stristr($message, 'reply:'));//
- $do_no = $this->getValue(stristr($message, 'do:'));
- $license = $this->getValue(stristr($message, 'license:'));
- $do_result = DeliveryOrder::where('do_no',trim($do_no))->select('id')->first();
- if(count($do_result))
- {
- $do_id = $do_result->id;
- }
- else
- {
- return 'do_no not valid';
- }
- //DB::enableQueryLog();
- if($msisdn != '')
- {
- $new_msisdn = str_replace('91', '', $msisdn);
- $tr_result = TruckRegistration::leftJoin('sms_history','sms_history.truck_id','=','trucks.id')
- ->where('trucks.contact_no', $new_msisdn)
- ->where('sms_history.do_id', $do_id)
- ->whereRaw('sms_history.created_at >= DATE_SUB( NOW( ) , INTERVAL '.Settings::where('setting_key', 'delay_between_sms')->value('setting_value').' MINUTE)')
- ->orderBy('sms_history.created_at','desc')
- ->first();
- //dd(DB::getQueryLog());
- //exit();
- if(count($tr_result))
- {
- // echo "<pre>";
- // print_r($tr_result);
- // exit();
- $truck_id = $tr_result->truck_id;
- }
- else
- {
- return 'Contact no. not found in database';
- }
- }
- else
- {
- return 'contact_no not valid';
- }
- if(trim($license) == '')
- {
- $license = $tr_result->driver_license_no;
- }
- $this->smsResponse($do_id, $truck_id, $message, strtolower($reply), $license);
- die;
- }
- public function getValue($str)
- {
- $colon_pos = strpos($str, ':');
- $space_pos = strpos($str, ' ');
- #for last parameter
- if($space_pos === false)
- {
- $space_pos = strlen($str);
- }
- $value = $this->my_substr_function($str, $colon_pos+1, $space_pos);
- return $value;
- }
- #get string between two indexes
- public function my_substr_function($str, $start, $end)
- {
- return substr($str, $start, $end - $start);
- }
- public function smsResponse($do_no, $truck_no, $message, $reply, $license)
- {
- // print_r('reply yes');
- // print_r($truck_no);
- // exit();
- //for now do_no is do_id
- $delivery_order = $this->deliveryorder->find($do_no);
- $truck = $this->truck->find($truck_no);
- $request= $this->sms_history->select('id','to_contact_no')
- ->where('sms_history.do_id', $do_no)
- ->where('sms_history.truck_id', $truck_no)
- ->whereRaw('sms_history.created_at >= DATE_SUB( NOW( ) , INTERVAL '.Settings::where('setting_key', 'delay_between_sms')->value('setting_value').' MINUTE)')
- ->where('type','request')
- ->orderBy('created_at','desc')->get();
- if(count($request) && !is_null($delivery_order) && $delivery_order->status == 'pending')
- {
- $request = $this->sms_history->select('id','to_contact_no')->where('do_id',$do_no)->where('truck_id',$truck_no)->orderBy('created_at','desc')->where('type','request')->first();
- $smsData = array(
- 'do_id' => $do_no,
- 'truck_id' => $truck_no,
- 'to_contact_no' => $request->to_contact_no,
- 'type' => 'reply',
- 'message' => $message,
- 'request_id' => $request->id
- );
- $this->sms_history->create($smsData);
- if($reply == 'yes')
- {
- #Map truck with DO
- $this->deliveryorder->where('id',$do_no)->update(
- array(
- 'status' => 'mapped',
- 'truck' => $truck_no,
- 'mapping_time' => date('Y-m-d H:i:s'),
- 'driver_license_no' => $license
- )
- );
- #Update sms_history table
- $this->sms_history->where('id',$request->id)->update(array('status' => 'accepted'));
- #Send confirmation sms
- $this->sendConfirmationSms($delivery_order->id, $delivery_order->do_no, $truck->id, $truck->truck_no, $license, $request->to_contact_no, $request->id);
- #increase the ratio value for the truck for the particular location
- $delivery_order_trucks = DeliveryOrder::select('trucks.location_ratio', 'delivery_orders.location', 'delivery_orders.truck')
- ->leftjoin('trucks','delivery_orders.truck','=','trucks.id')
- ->find($do_no); //start here
- $location_ratio_arr = json_decode($delivery_order_trucks->location_ratio, true); // true, to get json as an array
- if(array_key_exists($delivery_order_trucks->location, $location_ratio_arr))
- {
- $location_ratio_arr[$delivery_order_trucks->location]++;
- $this->truck->where('id',$delivery_order_trucks->truck)->update(array('location_ratio' => json_encode($location_ratio_arr)));
- }
- #check and reset location ratio against each truck if trips done for all locations for specified no of times
- $this->checkAndResetLocationRatio($truck_no);
- }
- else if($reply == 'no')
- {
- #Update sms_history table
- $this->sms_history->where('do_id',$do_no )->where('truck_id',$truck_no)->where('type','request')->update(array('status' => 'rejected'));
- }
- }
- die('Done in SMS Response'.$do_no.'::'.$truck_no.'::'.$message);
- }
- public function sendConfirmationSms($do_id, $do_no, $truck_id, $truck_no, $license, $to_contact_no, $request_id)
- {
- $confirmation_message = 'Confirmation SMS for DO:'.$do_no.' Truck:'.$truck_no.' '. 'License:'.$license;
- $confirmation_sms_data = array(
- 'do_id' => $do_id,
- 'truck_id' => $truck_id,
- 'to_contact_no' => $to_contact_no,
- 'type' => 'confirmation',
- 'message' => $confirmation_message,
- 'request_id' => $request_id
- );
- $this->sms_history->create($confirmation_sms_data);
- $phone_no = $to_contact_no;
- $msg = rawurlencode($confirmation_message);
- $url = 'http://bulkpush.mytoday.com/BulkSms/SingleMsgApi?feedid=358334&username=9821682191&password=dtjgt&To='.$phone_no.'&Text='.$msg.'&time=&senderid=';
- SendNextSms::callurl($url);
- }
- public function checkAndResetLocationRatio($truck_id)
- {
- $truck = $this->truck->find($truck_id);
- if(!is_null($truck))
- {
- $location_values = Locations::lists('ratio_value', 'id')->toArray();
- //$no_of_locations = count($location_values);
- $location_ratio_array = json_decode($truck->location_ratio, true);
- $location_ratio_array_update = $location_ratio_array;
- $no_of_truck_locations = count($location_ratio_array);
- $counter = 0;
- foreach ($location_ratio_array as $location => $value)
- {
- if(array_key_exists($location, $location_values) && $value >= $location_values[$location])
- {
- $counter++;
- $location_ratio_array_update[$location] = 0;
- }
- }
- #reset only if all location ratios are full
- if($counter == $no_of_truck_locations)
- {
- $truck->update(array('location_ratio' => json_encode($location_ratio_array_update)));
- }
- }
- }
- public function deliveryOrderRatioEdit()
- {
- if(!Auth::user()->can("deliveryorder.update"))
- {
- Session::flash('danger', Lang::get('messages.access_denied'));
- return Redirect::route('home');
- }
- $locations = Locations::withTrashed()->lists('location', 'id')->toArray();
- $active_locations = Locations::lists('id')->toArray();
- $do_ratios = DeliveryOrderRatio::orderBy('id', 'desc')->limit(10)->get(array('date','location_id_ratio'))->toArray();
- foreach ($do_ratios as $do_key => $ratio)
- {
- $ratio['location_id_ratio'] = json_decode($ratio['location_id_ratio'], TRUE);
- $total = 0;
- $ratio_value = array();
- foreach($ratio['location_id_ratio'] as $key =>$value)
- {
- $total += $value;
- }
- $ratio['total'] = $total;
- foreach($ratio['location_id_ratio'] as $key =>$value)
- {
- array_push($ratio_value, ceil((($value/$total)*10)));
- }
- foreach ($locations as $loc_key => $loc_value)
- {
- if(!array_key_exists($loc_key, $ratio['location_id_ratio']))
- $ratio['location_id_ratio'][$loc_key] = '-';
- }
- $ratio['date'] = date_format(date_create_from_format('Y-m-d', $ratio['date']), 'd/m/Y');
- $ratio['ratio'] = implode(':', $ratio_value);
- $do_ratios[$do_key] = $ratio;
- }
- return View('deliveryorders.delivery_order_ratios', compact('locations','do_ratios','active_locations'));
- }
- public function deliveryOrderRatioUpdate()
- {
- if(!Auth::user()->can("deliveryorder.update")) {
- Session::flash('danger', Lang::get('messages.access_denied'));
- return Redirect::route('home');
- }
- $input = Input::except('_token','_method');
- $location_inputs = Input::get('location');
- $count = 0;
- foreach ($location_inputs as $key => $l_input)
- {
- if($l_input == '')
- $location_inputs[$key] = 0;
- if($location_inputs[$key] == 0)
- $count++;
- }
- if($count == count($location_inputs))
- {
- Session::flash('danger', 'Atleast one Loction should have at least one Delivery Order');
- return Redirect::route('deliveryorder.deliveryorderratiosedit')
- ->withInput();
- }
- $rules = DeliveryOrderRatio::$rules;
- $validation = Validator::make($input, $rules);
- if ($validation->passes())
- {
- $data = array(
- 'date' => date_format(date_create_from_format('d/m/Y', $input['date']), 'Y-m-d'),
- 'location_id_ratio' => json_encode($location_inputs)
- );
- DeliveryOrderRatio::insert($data);
- $total = 0;
- foreach($location_inputs as $key =>$value)
- {
- $total += $value;
- }
- $str = ' (CASE ';
- foreach($location_inputs as $key =>$value)
- {
- $ratio_value = ceil((($value/$total)*10));
- $str .= " WHEN id = $key THEN $ratio_value ";
- }
- $str .= ' END) ';
- DB::update("UPDATE locations SET ratio_value = $str ");
- Session::flash('success', Lang::get('messages.deliveryorder_ratios_update'));
- return Redirect::route('deliveryorder.deliveryorderratiosedit');
- }
- return Redirect::route('deliveryorder.deliveryorderratiosedit')
- ->withInput()
- ->withErrors($validation)
- ->with('message', 'There were validation errors.');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement