514 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			514 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers;
 | |
| 
 | |
| use App\Http\Controllers\Controller;
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\Http\Response;
 | |
| use Illuminate\Support\Facades\DB;
 | |
| use Illuminate\Support\Facades\Storage;
 | |
| use Validator;
 | |
| use Hidehalo\Nanoid\Client as Nanoid;
 | |
| use App\Responses;
 | |
| use App\Helper;
 | |
| use App\Models\Tracks;
 | |
| use App\Models\Zone;
 | |
| use App\Models\Users;
 | |
| use App\Models\Clients;
 | |
| use App\Models\ClientsDivs;
 | |
| use App\Models\ClientsDivGroups;
 | |
| use App\Models\ConfRates;
 | |
| use App\Models\Region;
 | |
| 
 | |
| class InjectController extends Controller
 | |
| {
 | |
| 	/**
 | |
| 	 * API
 | |
| 	 */
 | |
| 
 | |
| 	//  GPS Zones.xlsx
 | |
| 	public function add_gps_zones_v1(Request $req)
 | |
| 	{
 | |
| 		try {
 | |
| 
 | |
| 			$apiResp = Responses::bad_request('service unavailable');
 | |
| 			return (new Response($apiResp, $apiResp['meta']['code']));
 | |
| 
 | |
| 			$now = time();
 | |
| 
 | |
| 			$input = [
 | |
| 				'Sheet1' => $req->Sheet1,
 | |
| 			];
 | |
| 			$rulesInput = [
 | |
| 				'Sheet1' => 'required|array',
 | |
| 				'Sheet1.*.NAME' => 'required|string|max:255',
 | |
| 				'Sheet1.*.COMPANY' => 'required|string|max:255',
 | |
| 				'Sheet1.*.DIVISION' => 'required|string|max:255',
 | |
| 				'Sheet1.*.GROUP' => 'required|string|max:255',
 | |
| 				'Sheet1.*.TYPE' => 'required|string|max:255',
 | |
| 				'Sheet1.*.TYPE ID' => 'required|numeric',
 | |
| 				'Sheet1.*.COLOR' => 'required|string|min:7|max:7',
 | |
| 				'Sheet1.*.ADDRESS' => 'required|string',
 | |
| 				'Sheet1.*.SHIP-TO CODE' => 'nullable|string',
 | |
| 				'Sheet1.*.SHAPE' => 'required|numeric',
 | |
| 				'Sheet1.*.BOUNDARY' => 'required|string',
 | |
| 				'Sheet1.*.GEONAMES' => 'nullable|string',
 | |
| 				'Sheet1.*.COMPANIES' => 'nullable|string',
 | |
| 			];
 | |
| 
 | |
| 			// validasi input
 | |
| 			$isValidInput = Validator::make($input, $rulesInput);
 | |
| 			if (!$isValidInput->passes()) {
 | |
| 				$apiResp = Responses::bad_input($isValidInput->messages()->first());
 | |
| 				return new Response($apiResp, $apiResp['meta']['code']);
 | |
| 			}
 | |
| 
 | |
| 			DB::beginTransaction();
 | |
| 
 | |
| 			foreach ($req->Sheet1 as $keyTop => $row) {
 | |
| 				$now = time();
 | |
| 				$zid = null;
 | |
| 				$cid = Clients::DEFAULT_CID;
 | |
| 				$c_div_id = ClientsDivs::DEFAULT_CID;
 | |
| 				$c_div_group_id = ClientsDivGroups::DEFAULT_CID;
 | |
| 				$uniqClient = Clients::getClientByName($row['COMPANY']);
 | |
| 				if (count($uniqClient) > 0) {
 | |
| 					$cid = $uniqClient[0]->id;
 | |
| 				} else {
 | |
| 					$insClient = [
 | |
| 						'c_name' => $row['COMPANY'],
 | |
| 						'c_addr_office' => $row['ADDRESS'],
 | |
| 						'c_phone' => 81288789878,
 | |
| 						'c_phone_code' => Clients::DEFAULT_PHONE_CODE,
 | |
| 						'c_mail' => 'inject@gmail.com',
 | |
| 						'pic_name' => $row['COMPANY'],
 | |
| 						'pic_phone' => 81288789878,
 | |
| 						'pic_phone_code' => Clients::DEFAULT_PHONE_CODE,
 | |
| 						'pic_mail' => 'inject@gmail.com',
 | |
| 						'c_status' => Clients::CSTTS_ACTIVE,
 | |
| 						'crt' => $now,
 | |
| 						'crt_by' => Users::DEFAULT_UID,
 | |
| 						'updt' => $now,
 | |
| 						'updt_by' => Users::DEFAULT_UID,
 | |
| 					];
 | |
| 					$cid = Clients::addClient($insClient);
 | |
| 				}
 | |
| 				$uniqCDiv = ClientsDivs::getCDivByName($row['DIVISION']);
 | |
| 				if (count($uniqCDiv) > 0) {
 | |
| 					$c_div_id = $uniqCDiv[0]->id;
 | |
| 				} else {
 | |
| 					$insCDiv = [
 | |
| 						'client_id' => $cid,
 | |
| 						'name' => $row['DIVISION'],
 | |
| 						'crt' => $now,
 | |
| 						'crt_by' => Users::DEFAULT_UID,
 | |
| 						'updt' => $now,
 | |
| 						'updt_by' => Users::DEFAULT_UID,
 | |
| 					];
 | |
| 					$c_div_id = ClientsDivs::addCDiv($insCDiv);
 | |
| 				}
 | |
| 				$uniqCDivGroup = ClientsDivGroups::getCDivGroupByName($row['GROUP']);
 | |
| 				if (count($uniqCDivGroup) > 0) {
 | |
| 					$c_div_group_id = $uniqCDivGroup[0]->id;
 | |
| 				}
 | |
| 
 | |
| 				$uniqZone = Zone::getZoneByName($row['NAME']);
 | |
| 				if (count($uniqZone) > 0) {
 | |
| 					$zid = $uniqZone[0]->id;
 | |
| 				} else {
 | |
| 					$boundary_latlngs = [];
 | |
| 					$radius = 0;
 | |
| 					$boundary_type = Zone::ZONE_BOUNDARY_POLYGON;
 | |
| 					$workflow_type = Zone::ZONE_WORKFLOW_DEST;
 | |
| 
 | |
| 					if (strpos(strtolower($row['TYPE']), 'bongkar') !== false) {
 | |
| 						$workflow_type = Zone::ZONE_WORKFLOW_DEST;
 | |
| 					} else if (strpos(strtolower($row['TYPE']), 'muat') !== false) {
 | |
| 						$workflow_type = Zone::ZONE_WORKFLOW_PICKUP;
 | |
| 					} else if (strpos(strtolower($row['TYPE']), 'park') !== false) {
 | |
| 						$workflow_type = Zone::ZONE_WORKFLOW_PARKING;
 | |
| 					} else if (strpos(strtolower($row['TYPE']), 'bengkel') !== false) {
 | |
| 						$workflow_type = Zone::ZONE_WORKFLOW_SERVICE;
 | |
| 					}
 | |
| 
 | |
| 					$boundarys = explode('|', $row['BOUNDARY']);
 | |
| 					foreach ($boundarys as $k => $v) {
 | |
| 						$latLng = explode(',', $v);
 | |
| 						$boundary_latlngs[] = [
 | |
| 							'lat' => $latLng[0],
 | |
| 							'lng' => $latLng[1],
 | |
| 						];
 | |
| 					}
 | |
| 
 | |
| 					$row['SHAPE']; // 1=>circle,0=>polygon
 | |
| 					if ($row['SHAPE'] == 1) {
 | |
| 						$boundary_type = Zone::ZONE_BOUNDARY_CIRCLE;
 | |
| 						$radius = Helper::haversineGreatCircleDistance($boundary_latlngs[0]['lat'], $boundary_latlngs[0]['lng'], $boundary_latlngs[1]['lat'], $boundary_latlngs[1]['lng']);
 | |
| 					}
 | |
| 
 | |
| 					$insZone = [
 | |
| 						'name' => $row['NAME'],
 | |
| 						'type' => Zone::ZONE_TYPE_WAREHOUSE,
 | |
| 						'workflow_type' => $workflow_type,
 | |
| 						'shiptocode' => 0,
 | |
| 						'fulladdress' => $row['ADDRESS'],
 | |
| 						'boundary_type' => $boundary_type,
 | |
| 						'boundary_hex_color' => strtoupper($row['COLOR']),
 | |
| 						'boundary_latlngs' => json_encode($boundary_latlngs),
 | |
| 						'boundary_bounds' => null,
 | |
| 						'boundary_radius' => $radius,
 | |
| 						'status' => Zone::STATUS_ACTIVE,
 | |
| 						'client_group_id' => $cid,
 | |
| 						'crt' => $now,
 | |
| 						'crt_by' => Users::DEFAULT_UID,
 | |
| 						'updt' => $now,
 | |
| 						'updt_by' => Users::DEFAULT_UID,
 | |
| 					];
 | |
| 					$insZone['boundary_points'] = "ST_GeomFromText('MULTIPOINT(";
 | |
| 					foreach ($boundary_latlngs as $key => $val) {
 | |
| 						$insZone['boundary_points'] .= $val['lng'] . " " . $val['lat'] . ", ";
 | |
| 					}
 | |
| 					$insZone['boundary_points'] = substr($insZone['boundary_points'], 0, -2); // remove 2 last character
 | |
| 					$insZone['boundary_points'] .= ")')";
 | |
| 					$insZone['boundary_points'] = DB::raw($insZone['boundary_points']);
 | |
| 
 | |
| 					// dump($insZone);
 | |
| 					// if ($keyTop == 5) {
 | |
| 					// 	dd('stop');
 | |
| 					// }
 | |
| 					$zoneId = Zone::addZone($insZone);
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			$apiResp = Responses::created('success inject add new zone');
 | |
| 
 | |
| 			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']));
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	//  B_8074_AS_Positions_01-Feb-2022_06-Feb-2022.xlsx
 | |
| 	/**
 | |
| 	 * 00000000AB8021AS == 0000000128021119
 | |
| 	 * 000000000B8026AS == 0000000028026119
 | |
| 	 * 000000000B8038AS == 0000000028038119
 | |
| 	 * 000000000B8074AS == 0000000028074119
 | |
| 	 * 000000000B8129AS == 0000000028129119
 | |
| 	 * 000000000B8224AS == 0000000028223119
 | |
| 	 */
 | |
| 	public function add_vhc_tracks_v1(Request $req)
 | |
| 	{
 | |
| 		try {
 | |
| 			$now = time();
 | |
| 
 | |
| 			$apiResp = Responses::bad_request('service unavailable');
 | |
| 			return (new Response($apiResp, $apiResp['meta']['code']));
 | |
| 
 | |
| 			$input = [
 | |
| 				'Sheet1' => $req->Sheet1,
 | |
| 			];
 | |
| 			$rulesInput = [
 | |
| 				'Sheet1' => 'required|array',
 | |
| 				'Sheet1.*.DIVISION' => 'required|string|max:255',
 | |
| 				'Sheet1.*.GROUP' => 'required|string|max:255',
 | |
| 				'Sheet1.*.TIMESTAMP' => 'required|string|max:255',
 | |
| 				'Sheet1.*.VEHICLE' => 'required|string|max:12',
 | |
| 				'Sheet1.*.DRIVER' => 'nullable|string',
 | |
| 				'Sheet1.*.ZONE' => 'nullable|string',
 | |
| 				'Sheet1.*.LOCATION' => 'required|string',
 | |
| 				'Sheet1.*.LATITUDE' => 'required|string|max:25',
 | |
| 				'Sheet1.*.LONGITUDE' => 'required|string|max:25',
 | |
| 				'Sheet1.*.SPEED (kph)' => 'required|numeric',
 | |
| 				'Sheet1.*.COURSE (°)' => 'required|numeric',
 | |
| 				'Sheet1.*.IGINITION' => 'nullable|string|max:2',
 | |
| 				'Sheet1.*.ENGINE STATUS' => 'required|string|max:25',
 | |
| 				'Sheet1.*.VEHICLE MILEAGE (km)' => 'required|string',
 | |
| 				'Sheet1.*.FUEL LEVEL (%)' => 'nullable|numeric',
 | |
| 				'Sheet1.*.POWER TAKEOFF' => 'nullable|numeric',
 | |
| 			];
 | |
| 			// pre_milleage, sum_milleage
 | |
| 
 | |
| 			// validasi input
 | |
| 			$isValidInput = Validator::make($input, $rulesInput);
 | |
| 			if (!$isValidInput->passes()) {
 | |
| 				$apiResp = Responses::bad_input($isValidInput->messages()->first());
 | |
| 				return new Response($apiResp, $apiResp['meta']['code']);
 | |
| 			}
 | |
| 
 | |
| 			DB::beginTransaction();
 | |
| 
 | |
| 			foreach ($req->Sheet1 as $key => $row) {
 | |
| 				$now = time();
 | |
| 				$track_id = null;
 | |
| 
 | |
| 				$crt = strtotime($row['TIMESTAMP']);
 | |
| 				$crt_format = date('Y-m-d h:i:s', $crt);
 | |
| 
 | |
| 				// $nopol = explode(' ', $row['VEHICLE']);
 | |
| 				$device_id = '0000000028223119'; // 16 digits
 | |
| 
 | |
| 				$ignition = null;
 | |
| 				if ($row['IGNITION'] == 'ON') {
 | |
| 					$ignition = 1;
 | |
| 				} else {
 | |
| 					$ignition = 2;
 | |
| 				}
 | |
| 
 | |
| 				$en_status = null;
 | |
| 				if ($row['ENGINE STATUS'] == 'Moving') {
 | |
| 					$en_status = 2; // moving
 | |
| 				} else {
 | |
| 					$en_status = 1; // idling
 | |
| 				}
 | |
| 
 | |
| 				$insTracks = [
 | |
| 					'original_hex' => '78781f12',
 | |
| 					'protocol' => 'gt06',
 | |
| 					'action' => 'location',
 | |
| 					'device_id' => $device_id,
 | |
| 					'latitude' => $row['LATITUDE'],
 | |
| 					'longitude' => $row['LONGITUDE'],
 | |
| 					'speed' => $row['SPEED (kph)'] ?? null,
 | |
| 					'orientation' => $row['COURSE (°)'] ?? null,
 | |
| 					'ignition' => $ignition, // 1 on, 2 off.
 | |
| 					'stts_engine' => $en_status, // 1 idling, 2 moving
 | |
| 					'stts_reverse_geo' => 1, // 1 sudah reverse
 | |
| 					'pre_milleage' => null,
 | |
| 					'sum_milleage' => $row['VEHICLE MILEAGE (km)'],
 | |
| 					'crt' => $crt,
 | |
| 					'crt_format' => $crt_format,
 | |
| 				];
 | |
| 				$track_id = Tracks::addTracks($insTracks);
 | |
| 
 | |
| 				$insTracksAddr = [
 | |
| 					'master_id' => $track_id,
 | |
| 					'device_id' => $device_id,
 | |
| 					'type' => 2, // inject
 | |
| 					'lat' => $row['LATITUDE'],
 | |
| 					'lng' => $row['LONGITUDE'],
 | |
| 					'zone_name' => $row['ZONE'] ?? null,
 | |
| 					'country_id' => 1,
 | |
| 					'country_code' => 'id',
 | |
| 					'country_text' => 'INDONESIA',
 | |
| 					'fulladdress' => $row['LOCATION'] ?? null,
 | |
| 					'stts_reverse_geo' => 1, // 1 sudah reverse
 | |
| 					'crt' => $crt,
 | |
| 					'crt_format' => $crt_format,
 | |
| 				];
 | |
| 				Tracks::addTracksAddr($insTracksAddr);
 | |
| 			}
 | |
| 
 | |
| 			$apiResp = Responses::created('success inject add new tracks');
 | |
| 
 | |
| 			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']));
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	//  Publish Rate Bingkis.xlsx
 | |
| 	public function add_conf_rate_v1(Request $req)
 | |
| 	{
 | |
| 		try {
 | |
| 			$apiResp = Responses::bad_request('service unavailable');
 | |
| 			return (new Response($apiResp, $apiResp['meta']['code']));
 | |
| 
 | |
| 			$now = time();
 | |
| 
 | |
| 			// $exists = Storage::disk('local')->get('PublishRateBingkis.xlsx');
 | |
| 			// dd($exists);
 | |
| 
 | |
| 			// $file = fopen(__DIR__.'/../../../storage/app/PublishRateBingkis.xlsx', 'r');
 | |
| 			// //Output lines until EOF is reached
 | |
| 			// while(! feof($file)) {
 | |
| 			// 	$line = fgets($file);
 | |
| 			// 	echo $line. "<br>";
 | |
| 			// }
 | |
| 			// fclose($file);
 | |
| 			// return false;
 | |
| 
 | |
| 			// dd($req->input());
 | |
| 
 | |
| 			// DB::beginTransaction();
 | |
| 
 | |
| 			$lanes = ConfRates::getLanesActive();
 | |
| 
 | |
| 			foreach ($req['Publish Rate'] as $keyTop => $row) {
 | |
| 				$nanoid = new Nanoid();
 | |
| 				$code = $nanoid->formattedId('123456789', 6);
 | |
| 
 | |
| 				$uniqCode = ConfRates::getRateByCode($code);
 | |
| 				if (count($uniqCode) > 0) {
 | |
| 					$code = $nanoid->formattedId('123456789', 6);
 | |
| 					$uniqCode = ConfRates::getRateByCode($code);
 | |
| 					if (count($uniqCode) > 0) {
 | |
| 						$code = $nanoid->formattedId('123456789', 6);
 | |
| 						$uniqCode = ConfRates::getRateByCode($code);
 | |
| 						if (count($uniqCode) > 0) {
 | |
| 							$code = $nanoid->formattedId('123456789', 6);
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 
 | |
| 				$lead_time = explode('-', $row['Lead Time']);
 | |
| 				$fast_time = trim($lead_time[0]);
 | |
| 				if (count($lead_time) == 1) {
 | |
| 					$long_time = trim($lead_time[0]);
 | |
| 				} else {
 | |
| 					$long_time = trim(explode('hari', $lead_time[1])[0]);
 | |
| 				}
 | |
| 
 | |
| 				$lane_id = 0;
 | |
| 				foreach ($lanes as $k => $v) {
 | |
| 					if ($lane_id === 0) {
 | |
| 						if (strpos($v->name, $row['Via']) !== false) {
 | |
| 							$lane_id = $v->id;
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 
 | |
| 				$prid = Region::getLikeProv($row['Dest Province']);
 | |
| 				if ($prid) {
 | |
| 					$prid = $prid[0]->kodeProv;
 | |
| 				} else {
 | |
| 					$prid = 0;
 | |
| 				}
 | |
| 
 | |
| 				$city_name = $row['Dest City'];
 | |
| 				$district_name = $row['Dest City'];
 | |
| 				if (strpos($row['Dest City'], '(') !== false) {
 | |
| 					$part = explode('(', $row['Dest City']);
 | |
| 					$pos = strpos($part[1], ')');
 | |
| 					$part[1] = substr($part[1], 0, $pos);
 | |
| 
 | |
| 					$district_name = trim($part[0]);
 | |
| 					$city_name = trim($part[1]);
 | |
| 				}
 | |
| 
 | |
| 				$ktid = Region::getLikeCity($city_name);
 | |
| 				if ($ktid) {
 | |
| 					$kodeKab = 0;
 | |
| 					foreach ($ktid as $city) {
 | |
| 						if ($city->kodeProv == $prid) {
 | |
| 							$kodeKab = $city->kodeKab;
 | |
| 						}
 | |
| 					}
 | |
| 					$ktid = $kodeKab;
 | |
| 				} else {
 | |
| 					$ktid = 0;
 | |
| 				}
 | |
| 				$kcid = Region::getLikeDistrict($district_name);
 | |
| 				if ($kcid) {
 | |
| 					$kodeKab = $ktid;
 | |
| 					$kodeKec = 0;
 | |
| 					foreach ($kcid as $district) {
 | |
| 						if ($district->kodeProv == $prid) {
 | |
| 							if ($kodeKab === 0) {
 | |
| 								$kodeKab = $district->kodeKab;
 | |
| 								$kodeKec = $district->kodeKec;
 | |
| 							} else {
 | |
| 								if ($kodeKab === $district->kodeKab) {
 | |
| 									$kodeKec = $district->kodeKec;
 | |
| 								}
 | |
| 							}
 | |
| 							$kodeKec = $district->kodeKec;
 | |
| 						}
 | |
| 					}
 | |
| 					$ktid = $kodeKab;
 | |
| 					$kcid = $kodeKec;
 | |
| 				} else {
 | |
| 					$kcid = 0;
 | |
| 				}
 | |
| 
 | |
| 				if ($ktid === 0) {
 | |
| 					$city_name = trim($part[0]);
 | |
| 					$district_name = trim($part[1]);
 | |
| 
 | |
| 					$ktid = Region::getLikeCity($city_name);
 | |
| 					if ($ktid) {
 | |
| 						$kodeKab = 0;
 | |
| 						foreach ($ktid as $city) {
 | |
| 							if ($city->kodeProv == $prid) {
 | |
| 								$kodeKab = $city->kodeKab;
 | |
| 							}
 | |
| 						}
 | |
| 						$ktid = $kodeKab;
 | |
| 					} else {
 | |
| 						$ktid = 0;
 | |
| 					}
 | |
| 					$kcid = Region::getLikeDistrict($district_name);
 | |
| 					if ($kcid) {
 | |
| 						$kodeKab = $ktid;
 | |
| 						$kodeKec = 0;
 | |
| 						foreach ($kcid as $district) {
 | |
| 							if ($district->kodeProv == $prid) {
 | |
| 								if ($kodeKab === 0) {
 | |
| 									$kodeKab = $district->kodeKab;
 | |
| 									$kodeKec = $district->kodeKec;
 | |
| 								} else {
 | |
| 									if ($kodeKab === $district->kodeKab) {
 | |
| 										$kodeKec = $district->kodeKec;
 | |
| 									}
 | |
| 								}
 | |
| 								$kodeKec = $district->kodeKec;
 | |
| 							}
 | |
| 						}
 | |
| 						$ktid = $kodeKab;
 | |
| 						$kcid = $kodeKec;
 | |
| 					} else {
 | |
| 						$kcid = 0;
 | |
| 					}
 | |
| 				}
 | |
| 
 | |
| 				$insRate = [
 | |
| 					'code' => $code,
 | |
| 					'origin_prov' => 31,
 | |
| 					// 'origin_city' => $row->origin_city,
 | |
| 					'lane' => $lane_id,
 | |
| 					'dest_prov' => $prid,
 | |
| 					'dest_city' => $ktid,
 | |
| 					'dest_district' => $kcid,
 | |
| 					'fast_time' => $fast_time,
 | |
| 					'long_time' => $long_time,
 | |
| 					'unit_time' => ConfRates::UNIT_DAY,
 | |
| 					'sell_kg' => (int)str_replace(',', '', str_replace('Rp', '', $row['Sell KG'])),
 | |
| 					'buy_kg' => (int)str_replace(',', '', str_replace('Rp', '', $row['Buy KG'])),
 | |
| 					'margin_kg' => (int)str_replace(',', '', str_replace('Rp', '', $row['Margin'])),
 | |
| 					'percent_kg' => number_format(str_replace('%', '', $row['Persentase']), 2, '.', ','),
 | |
| 					'sell_cbm' => (int)str_replace(',', '', str_replace('Rp', '', $row[' Sell CBM '])),
 | |
| 					'buy_cbm' => (int)str_replace(',', '', str_replace('Rp', '', $row[' Buy CBM '])),
 | |
| 					'margin_cbm' => (int)str_replace(',', '', str_replace('Rp', '', $row['Margin_1'])),
 | |
| 					'percent_cbm' => number_format(str_replace('%', '', $row['Persentase_1']), 2, '.', ','),
 | |
| 					'is_active' => ConfRates::IS_ACTIVE,
 | |
| 					'crt' => $now,
 | |
| 					'crt_by' => 1,
 | |
| 					'updt' => $now,
 | |
| 					'updt_by' => 1,
 | |
| 				];
 | |
| 
 | |
| 				// dump($insRate);
 | |
| 				// if ($keyTop > 5) {
 | |
| 				// 	dd('stop');
 | |
| 				// }
 | |
| 				$rid = ConfRates::addRate($insRate);
 | |
| 			}
 | |
| 
 | |
| 			$apiResp = Responses::created('success inject add new conf 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']));
 | |
| 		}
 | |
| 	}
 | |
| }
 | 
