ConfRates::getLanesActive(), 'provs' => Region::listProv(), 'vendors' => Users::getUsersActiveByRole(Users::ROLE_VENDOR), 'truck_types' => ConfTruckTypes::listTruckTypes(ConfTruckTypes::IS_ACTIVE), ]; return view('menu_v1.configs.pricing', $data); } /** * API */ public function api_list_rates(Request $req) { try { $now = time(); $input = []; $rulesInput = []; // validasi input // $isValidInput = Validator::make($input, $rulesInput); // if (!$isValidInput->passes()) { // $apiResp = Responses::bad_input($isValidInput->messages()->first()); // return new Response($apiResp, $apiResp['meta']['code']); // } $list = ConfRates::listRates(); foreach ($list as $key => $row) { $list[$key]->DT_RowIndex = $key + 1; $list[$key]->action = '-'; } $apiResp = Responses::success('success list rates'); $apiResp['count'] = count($list); $apiResp['data'] = $list; return (new Response($apiResp, $apiResp['meta']['code'])); } catch (\Exception $e) { $apiResp = Responses::error($e->getMessage()); return (new Response($apiResp, $apiResp['meta']['code'])); } } public function api_show_rate(Request $req, $rid) { try { $now = time(); $input = [ 'rid' => $rid, ]; $rulesInput = [ 'rid' => 'required|integer|not_in:0', ]; // validasi input $isValidInput = Validator::make($input, $rulesInput); if (!$isValidInput->passes()) { $apiResp = Responses::bad_input($isValidInput->messages()->first()); return new Response($apiResp, $apiResp['meta']['code']); } $rate = ConfRates::showRateById($rid); if (count($rate) < 1) { $apiResp = Responses::not_found('rate not found'); return (new Response($apiResp, $apiResp['meta']['code'])); } $apiResp = Responses::success('success get detail rate'); $apiResp['data'] = $rate[0]; return (new Response($apiResp, $apiResp['meta']['code'])); } catch (\Exception $e) { $apiResp = Responses::error($e->getMessage()); return (new Response($apiResp, $apiResp['meta']['code'])); } } public function api_add_rate(Request $req) { try { $now = time(); $input = [ 'origin_prov' => $req->origin_prov, // 'origin_city' => $req->origin_city, 'via' => $req->via, 'dest_prov' => $req->dest_prov, 'dest_city' => $req->dest_city, 'dest_district' => $req->dest_district, 'vendor' => $req->vendor_id, 'vehicle_type' => $req->vhc_type_id, 'fast_time' => $req->fast_time, 'long_time' => $req->long_time, 'sell_kg' => $req->sell_kg, 'buy_kg' => $req->buy_kg, 'margin_kg' => $req->margin_kg, 'percent_kg' => $req->percent_kg, 'sell_cbm' => $req->sell_cbm, 'buy_cbm' => $req->buy_cbm, 'margin_cbm' => $req->margin_cbm, 'percent_cbm' => $req->percent_cbm, 'sell_ftl' => $req->sell_ftl, 'buy_ftl' => $req->buy_ftl, 'margin_ftl' => $req->margin_ftl, 'percent_ftl' => $req->percent_ftl, 'status' => $req->status, ]; $rulesInput = [ 'origin_prov' => 'required|numeric|min:0', // 'origin_city' => 'required|numeric|min:0', 'via' => 'required|numeric|min:0', 'dest_prov' => 'required|numeric|min:0', 'dest_city' => 'required|numeric|min:0', 'dest_district' => 'nullable|numeric|min:0', 'vendor' => 'required|integer|not_in:0', 'vehicle_type' => 'required|integer|not_in:0', 'fast_time' => 'required|numeric|min:0', 'long_time' => 'required|numeric|min:0', 'sell_kg' => 'required|numeric|min:0', 'buy_kg' => 'required|numeric|min:0', 'margin_kg' => 'required|numeric|min:0', 'percent_kg' => 'required|numeric|min:0', 'sell_cbm' => 'required|numeric|min:0', 'buy_cbm' => 'required|numeric|min:0', 'margin_cbm' => 'required|numeric|min:0', 'percent_cbm' => 'required|numeric|min:0', 'sell_ftl' => 'required|numeric|min:0', 'buy_ftl' => 'required|numeric|min:0', 'margin_ftl' => 'required|numeric|min:0', 'percent_ftl' => 'required|numeric|min:0', 'status' => 'required|numeric|min:0', ]; // validasi input $isValidInput = Validator::make($input, $rulesInput); if (!$isValidInput->passes()) { $apiResp = Responses::bad_input($isValidInput->messages()->first()); return new Response($apiResp, $apiResp['meta']['code']); } $nanoid = new Nanoid(); $code = $nanoid->formattedId('123456789', 6); $uniqCode = ConfRates::getRateByCode($code); if (count($uniqCode) > 0) { $apiResp = Responses::bad_request('code has been used, try again'); return (new Response($apiResp, $apiResp['meta']['code'])); } DB::beginTransaction(); $insRate = [ 'code' => $code, 'origin_prov' => $req->origin_prov, // 'origin_city' => $req->origin_city, 'lane' => $req->via, 'dest_prov' => $req->dest_prov, 'dest_city' => $req->dest_city, 'vdr_id' => $req->vendor_id, 'vhc_type' => $req->vhc_type_id, 'fast_time' => $req->fast_time, 'long_time' => $req->long_time, 'unit_time' => ConfRates::UNIT_DAY, 'sell_kg' => $req->sell_kg, 'buy_kg' => $req->buy_kg, 'margin_kg' => $req->margin_kg, 'percent_kg' => $req->percent_kg, 'sell_cbm' => $req->sell_cbm, 'buy_cbm' => $req->buy_cbm, 'margin_cbm' => $req->margin_cbm, 'percent_cbm' => $req->percent_cbm, 'sell_ftl' => $req->sell_ftl, 'buy_ftl' => $req->buy_ftl, 'margin_ftl' => $req->margin_ftl, 'percent_ftl' => $req->percent_ftl, 'is_active' => $req->status, 'crt' => $now, 'crt_by' => $req->auth->uid, 'updt' => $now, 'updt_by' => $req->auth->uid, ]; if ($req->dest_district) { $insRate['dest_district'] = $req->dest_district; } $rid = ConfRates::addRate($insRate); $apiResp = Responses::created('success add new rate'); DB::commit(); return (new Response($apiResp, $apiResp['meta']['code'])); } catch (\Exception $e) { DB::rollBack(); $apiResp = Responses::error($e->getMessage()); return (new Response($apiResp, $apiResp['meta']['code'])); } } public function api_edit_rate(Request $req, $rid) { try { $now = time(); $input = [ 'rid' => $rid, 'origin_prov' => $req->origin_prov, // 'origin_city' => $req->origin_city, 'via' => $req->via, 'dest_prov' => $req->dest_prov, 'dest_city' => $req->dest_city, 'dest_district' => $req->dest_district, 'vendor' => $req->vendor_id, 'vehicle_type' => $req->vhc_type_id, 'fast_time' => $req->fast_time, 'long_time' => $req->long_time, 'sell_kg' => $req->sell_kg, 'buy_kg' => $req->buy_kg, 'margin_kg' => $req->margin_kg, 'percent_kg' => $req->percent_kg, 'sell_cbm' => $req->sell_cbm, 'buy_cbm' => $req->buy_cbm, 'margin_cbm' => $req->margin_cbm, 'percent_cbm' => $req->percent_cbm, 'sell_ftl' => $req->sell_ftl, 'buy_ftl' => $req->buy_ftl, 'margin_ftl' => $req->margin_ftl, 'percent_ftl' => $req->percent_ftl, 'status' => $req->status, ]; $rulesInput = [ 'rid' => 'required|integer|not_in:0', 'origin_prov' => 'required|numeric|min:0', // 'origin_city' => 'required|numeric|min:0', 'via' => 'required|numeric|min:0', 'dest_prov' => 'required|numeric|min:0', 'dest_city' => 'required|numeric|min:0', 'dest_district' => 'nullable|numeric|min:0', 'vendor' => 'required|integer|not_in:0', 'vehicle_type' => 'required|integer|not_in:0', 'fast_time' => 'required|numeric|min:0', 'long_time' => 'required|numeric|min:0', 'sell_kg' => 'required|numeric|min:0', 'buy_kg' => 'required|numeric|min:0', 'margin_kg' => 'required|numeric|min:0', 'percent_kg' => 'required|numeric|min:0', 'sell_cbm' => 'required|numeric|min:0', 'buy_cbm' => 'required|numeric|min:0', 'margin_cbm' => 'required|numeric|min:0', 'percent_cbm' => 'required|numeric|min:0', 'sell_ftl' => 'required|numeric|min:0', 'buy_ftl' => 'required|numeric|min:0', 'margin_ftl' => 'required|numeric|min:0', 'percent_ftl' => 'required|numeric|min:0', 'status' => 'required|numeric|min:0', ]; // validasi input $isValidInput = Validator::make($input, $rulesInput); if (!$isValidInput->passes()) { $apiResp = Responses::bad_input($isValidInput->messages()->first()); return new Response($apiResp, $apiResp['meta']['code']); } $rate = ConfRates::showRateById($rid); if (count($rate) < 1) { $apiResp = Responses::not_found('rate not found'); return (new Response($apiResp, $apiResp['meta']['code'])); } DB::beginTransaction(); $insRate = [ 'origin_prov' => $req->origin_prov, // 'origin_city' => $req->origin_city, 'lane' => $req->via, 'dest_prov' => $req->dest_prov, 'dest_city' => $req->dest_city, 'vdr_id' => $req->vendor_id, 'vhc_type' => $req->vhc_type_id, 'fast_time' => $req->fast_time, 'long_time' => $req->long_time, 'unit_time' => ConfRates::UNIT_DAY, 'sell_kg' => $req->sell_kg, 'buy_kg' => $req->buy_kg, 'margin_kg' => $req->margin_kg, 'percent_kg' => $req->percent_kg, 'sell_cbm' => $req->sell_cbm, 'buy_cbm' => $req->buy_cbm, 'margin_cbm' => $req->margin_cbm, 'percent_cbm' => $req->percent_cbm, 'sell_ftl' => $req->sell_ftl, 'buy_ftl' => $req->buy_ftl, 'margin_ftl' => $req->margin_ftl, 'percent_ftl' => $req->percent_ftl, 'is_active' => $req->status, 'crt' => $now, 'crt_by' => $req->auth->uid, 'updt' => $now, 'updt_by' => $req->auth->uid, ]; if ($req->dest_district) { $insRate['dest_district'] = $req->dest_district; } $rid = ConfRates::updateRate($rid, $insRate); $apiResp = Responses::created('success add new rate'); DB::commit(); return (new Response($apiResp, $apiResp['meta']['code'])); } catch (\Exception $e) { DB::rollBack(); $apiResp = Responses::error($e->getMessage()); return (new Response($apiResp, $apiResp['meta']['code'])); } } public function api_del_rate(Request $req, $rid) { try { $now = time(); $input = [ 'rid' => $rid, ]; $rulesInput = [ 'rid' => 'required|integer|not_in:0', ]; // validasi input $isValidInput = Validator::make($input, $rulesInput); if (!$isValidInput->passes()) { $apiResp = Responses::bad_input($isValidInput->messages()->first()); return new Response($apiResp, $apiResp['meta']['code']); } $rate = ConfRates::showRateById($rid); if (count($rate) < 1) { $apiResp = Responses::not_found('rate not found'); return (new Response($apiResp, $apiResp['meta']['code'])); } DB::beginTransaction(); ConfRates::updateRate($rid, [ 'dlt' => $now, 'dlt_by' => $req->auth->uid, ]); DB::commit(); $apiResp = Responses::success('success delete rate'); return (new Response($apiResp, $apiResp['meta']['code'])); } catch (\Exception $e) { DB::rollBack(); $apiResp = Responses::error($e->getMessage()); return (new Response($apiResp, $apiResp['meta']['code'])); } } }