1111 lines
45 KiB
PHP
Executable File
1111 lines
45 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 Validator;
|
|
use App\Responses;
|
|
use App\Helper;
|
|
use App\Models\Zone;
|
|
use App\Models\Users;
|
|
use App\Models\Clients;
|
|
use App\Models\Region;
|
|
use App\Models\Orders;
|
|
use App\Models\OrdersDrops;
|
|
// use App\Models\OrdersPckDrop;
|
|
use App\Models\OrdersAItems;
|
|
|
|
class ZoneController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function view_zone()
|
|
{
|
|
return view("menu_v1.zone");
|
|
}
|
|
|
|
public function view_zone_add(Request $req)
|
|
{
|
|
$data = [
|
|
"types" => Zone::listTypes(),
|
|
"workflows" => Zone::listWorkflows(),
|
|
"boundarys" => Zone::listBoundarys(),
|
|
"provs" => Region::listProv(),
|
|
];
|
|
|
|
if ($req->auth->role == Users::ROLE_SUPERADMIN) {
|
|
$data["is_su"] = 1;
|
|
$data["clients"] = Clients::select2Client();
|
|
} elseif ($req->auth->role == Users::ROLE_ADMIN) {
|
|
$data["is_su"] = 1;
|
|
$data["clients"] = Clients::select2Client();
|
|
} else {
|
|
$data["clients"] = [];
|
|
$data["is_su"] = 0;
|
|
}
|
|
|
|
return view("menu_v1._addZone", $data);
|
|
}
|
|
|
|
public function view_zone_edit(Request $req, $zid)
|
|
{
|
|
$input = [
|
|
"zid" => $zid,
|
|
];
|
|
$rulesInput = [
|
|
"zid" => "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"]);
|
|
}
|
|
|
|
$zone = Zone::showZoneById($zid);
|
|
if (count($zone) < 1) {
|
|
$apiResp = Responses::not_found("zone not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
if ($zone[0]->boundary_bounds) {
|
|
$zone[0]->boundary_bounds = json_decode($zone[0]->boundary_bounds);
|
|
}
|
|
if ($zone[0]->boundary_latlngs) {
|
|
$zone[0]->boundary_latlngs = json_decode($zone[0]->boundary_latlngs);
|
|
}
|
|
unset($zone[0]->boundary_points);
|
|
|
|
$data = [
|
|
"zone" => $zone[0],
|
|
"types" => Zone::listTypes(),
|
|
"workflows" => Zone::listWorkflows(),
|
|
"boundarys" => Zone::listBoundarys(),
|
|
"provs" => Region::listProv(),
|
|
];
|
|
|
|
if ($req->auth->role == Users::ROLE_SUPERADMIN) {
|
|
$data["is_su"] = 1;
|
|
$data["clients"] = Clients::select2Client();
|
|
} elseif ($req->auth->role == Users::ROLE_ADMIN) {
|
|
$data["is_su"] = 1;
|
|
$data["clients"] = Clients::select2Client();
|
|
} else {
|
|
$data["clients"] = [];
|
|
$data["is_su"] = 0;
|
|
}
|
|
|
|
$arr_zone = (array) $data["zone"];
|
|
$data["arr_zone"] = json_encode($arr_zone);
|
|
|
|
return view("menu_v1._edtZone", $data);
|
|
}
|
|
|
|
public function view_user_checker_zone_edit(Request $req)
|
|
{
|
|
$input = [
|
|
"zid" => $req->zid,
|
|
"ord_code" => $req->ord_code,
|
|
];
|
|
$rulesInput = [
|
|
"zid" => "required|integer|not_in:0",
|
|
"ord_code" => "required|string|max:12",
|
|
];
|
|
|
|
// validasi input
|
|
$isValidInput = Validator::make($input, $rulesInput);
|
|
if (!$isValidInput->passes()) {
|
|
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$zone = Zone::showZoneById($req->zid);
|
|
if (count($zone) < 1) {
|
|
$apiResp = Responses::not_found("zone not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
if ($zone[0]->boundary_bounds) {
|
|
$zone[0]->boundary_bounds = json_decode($zone[0]->boundary_bounds);
|
|
}
|
|
if ($zone[0]->boundary_latlngs) {
|
|
$zone[0]->boundary_latlngs = json_decode($zone[0]->boundary_latlngs);
|
|
}
|
|
unset($zone[0]->boundary_points);
|
|
|
|
$orders = Orders::showOrder([
|
|
"code" => $req->ord_code,
|
|
// 'get_stts_checker' => 1,
|
|
// 'get_prefer_type_truck' => 1,
|
|
// 'get_checker_data' => 1,
|
|
// 'get_client_pt' => 1,
|
|
// 'get_accidents' => 1,
|
|
"couple_pck_drop" => 1,
|
|
// 'get_user_aprv_pck' => 1,
|
|
// 'get_user_aprv_pck' => 1,
|
|
"group_by" => "ord.id",
|
|
]);
|
|
if (count($orders) < 1) {
|
|
return redirect(url()->previous());
|
|
}
|
|
|
|
$data = [
|
|
"zone" => $zone[0],
|
|
"order" => $orders[0],
|
|
"types" => Zone::listTypes(),
|
|
"workflows" => Zone::listWorkflows(),
|
|
"boundarys" => Zone::listBoundarys(),
|
|
"provs" => Region::listProv(),
|
|
];
|
|
|
|
$data["clients"] = Clients::select2Client();
|
|
|
|
$arr_zone = (array) $data["zone"];
|
|
$data["arr_zone"] = json_encode($arr_zone);
|
|
|
|
return view("menu_v2.Checker._edtZone", $data);
|
|
}
|
|
|
|
/**
|
|
* API
|
|
*/
|
|
|
|
public function api_list_zones(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']);
|
|
// }
|
|
|
|
$filter = [];
|
|
if ($req->cptid) {
|
|
$filter["company"] = $req->cptid;
|
|
}
|
|
if ($req->status) {
|
|
$filter["is_active"] = $req->status;
|
|
}
|
|
$list = Zone::listZones($req->auth, $filter);
|
|
|
|
foreach ($list as $key => $row) {
|
|
$list[$key]->DT_RowIndex = $key + 1;
|
|
$list[$key]->action = "-";
|
|
unset($list[$key]->boundary_points);
|
|
}
|
|
|
|
$apiResp = Responses::success("success list zones");
|
|
$apiResp["data"] = $list;
|
|
$apiResp["count"] = count($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_zone(Request $req, $zid)
|
|
{
|
|
try {
|
|
$now = time();
|
|
|
|
$input = [
|
|
"zid" => $zid,
|
|
];
|
|
$rulesInput = [
|
|
"zid" => "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"]);
|
|
}
|
|
|
|
$zone = Zone::showZoneById($zid);
|
|
if (count($zone) < 1) {
|
|
$apiResp = Responses::not_found("zone not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$apiResp = Responses::success("success get detail zone");
|
|
$apiResp["data"] = $zone[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_zone(Request $req)
|
|
{
|
|
try {
|
|
$now = time();
|
|
|
|
$input = [
|
|
"zone_name" => $req->zone_name,
|
|
"zone_client" => $req->zone_client,
|
|
"zone_type" => $req->zone_type,
|
|
"workflow_zone_type" => $req->workflow_zone_type,
|
|
// "shiptocode" => $req->shiptocode,
|
|
// "prid" => $req->prid,
|
|
// "ktid" => $req->ktid,
|
|
// "kcid" => $req->kcid,
|
|
// "klid" => $req->klid,
|
|
"fulladdress" => $req->fulladdress,
|
|
"status" => $req->status,
|
|
"boundary_hex_color" => $req->boundary_hex_color,
|
|
"boundary_type" => $req->boundary_type,
|
|
"boundary_latlngs" => $req->boundary_latlngs,
|
|
"boundary_bounds" => $req->boundary_bounds,
|
|
"boundary_radius" => $req->boundary_radius,
|
|
"boundary_diameter" => $req->boundary_diameter,
|
|
"boundary_area" => $req->boundary_area, // square meter
|
|
"boundary_ha" => $req->boundary_ha, // hectare
|
|
];
|
|
$rulesInput = [
|
|
"zone_name" => "required|string|max:255",
|
|
"zone_client" => "nullable|integer|not_in:0",
|
|
"zone_type" => "required|integer|not_in:0",
|
|
"workflow_zone_type" => "required|integer|not_in:0",
|
|
// "shiptocode" => "string|min:5|max:6",
|
|
// "prid" => "required|numeric",
|
|
// "ktid" => "required|numeric",
|
|
// "kcid" => "required|numeric",
|
|
// "klid" => "required|numeric",
|
|
"fulladdress" => "required|string|min:55",
|
|
"status" => "required|integer|not_in:0",
|
|
"boundary_hex_color" => "required|string|min:7|max:7",
|
|
"boundary_type" => "required|string|max:25",
|
|
"boundary_latlngs" => "required|array",
|
|
"boundary_latlngs.*.lat" => "required",
|
|
"boundary_latlngs.*.lng" => "required",
|
|
"boundary_bounds" => "nullable|array",
|
|
"boundary_radius" => "nullable|numeric",
|
|
"boundary_diameter" => "nullable|numeric",
|
|
"boundary_area" => "nullable|numeric",
|
|
"boundary_ha" => "nullable|numeric",
|
|
];
|
|
|
|
// validasi input
|
|
$isValidInput = Validator::make($input, $rulesInput);
|
|
if (!$isValidInput->passes()) {
|
|
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$uniqName = Zone::getZoneByName($req->zone_name);
|
|
if (count($uniqName) > 0) {
|
|
$apiResp = Responses::bad_request("zone name has been used");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$user = Users::getUserById($req->auth->uid);
|
|
|
|
DB::beginTransaction();
|
|
|
|
$insZone = [
|
|
"name" => $req->zone_name,
|
|
"type" => $req->zone_type,
|
|
"workflow_type" => $req->workflow_zone_type,
|
|
"shiptocode" => "123456",
|
|
"prid" => "123456",
|
|
"ktid" => "123456",
|
|
"kcid" => "123456",
|
|
"klid" => "123456",
|
|
"fulladdress" => $req->fulladdress,
|
|
"boundary_type" => $req->boundary_type,
|
|
"boundary_hex_color" => strtoupper($req->boundary_hex_color),
|
|
"boundary_latlngs" => json_encode($req->boundary_latlngs),
|
|
"boundary_bounds" => $req->boundary_bounds ? json_encode($req->boundary_bounds) : null, // $req->boundary_bounds ?? null,
|
|
"boundary_radius" => $req->boundary_radius ?? 0,
|
|
"boundary_diameter" => $req->boundary_diameter ?? 0,
|
|
"boundary_area" => $req->boundary_area ?? 0,
|
|
"boundary_ha" => $req->boundary_ha ?? 0,
|
|
"status" => $req->status,
|
|
"client_group_id" => $req->zone_client ?? ($user[0]->client_group_id ?? null),
|
|
"crt" => $now,
|
|
"crt_by" => $req->auth->uid,
|
|
"updt" => $now,
|
|
"updt_by" => $req->auth->uid,
|
|
];
|
|
|
|
// $insZone['boundary_points'] = DB::raw("ST_GeomFromText('POINT($req->lng $req->lat)')");
|
|
$insZone["boundary_points"] = "ST_GeomFromText('MULTIPOINT(";
|
|
|
|
foreach ($req->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"]);
|
|
|
|
$zoneId = Zone::addZone($insZone);
|
|
|
|
$apiResp = Responses::created("success 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"]);
|
|
}
|
|
}
|
|
|
|
public function api_edit_zone(Request $req, $zid)
|
|
{
|
|
try {
|
|
$now = time();
|
|
|
|
$input = [
|
|
"zone_name" => $req->zone_name,
|
|
"zone_client" => $req->zone_client,
|
|
"zone_type" => $req->zone_type,
|
|
"workflow_zone_type" => $req->workflow_zone_type,
|
|
// "shiptocode" => $req->shiptocode,
|
|
// "prid" => $req->prid,
|
|
// "ktid" => $req->ktid,
|
|
// "kcid" => $req->kcid,
|
|
// "klid" => $req->klid,
|
|
"fulladdress" => $req->fulladdress,
|
|
"status" => $req->status,
|
|
"boundary_hex_color" => $req->boundary_hex_color,
|
|
"boundary_type" => $req->boundary_type,
|
|
"boundary_latlngs" => $req->boundary_latlngs,
|
|
"boundary_bounds" => $req->boundary_bounds,
|
|
"boundary_radius" => $req->boundary_radius,
|
|
"boundary_diameter" => $req->boundary_diameter,
|
|
"boundary_area" => $req->boundary_area, // square meter
|
|
"boundary_ha" => $req->boundary_ha, // hectare
|
|
];
|
|
$rulesInput = [
|
|
"zone_name" => "required|string|max:255",
|
|
"zone_client" => "nullable|integer|not_in:0",
|
|
"zone_type" => "required|integer|not_in:0",
|
|
"workflow_zone_type" => "required|integer|not_in:0",
|
|
// "shiptocode" => "required|string|min:5|max:6",
|
|
// "prid" => "required|numeric",
|
|
// "ktid" => "required|numeric",
|
|
// "kcid" => "required|numeric",
|
|
// "klid" => "required|numeric",
|
|
"fulladdress" => "required|string|min:55",
|
|
"status" => "required|integer|not_in:0",
|
|
"boundary_hex_color" => "required|string|min:7|max:7",
|
|
"boundary_type" => "required|string|max:25",
|
|
"boundary_latlngs" => "required|array",
|
|
"boundary_latlngs.*.lat" => "required",
|
|
"boundary_latlngs.*.lng" => "required",
|
|
"boundary_bounds" => "nullable|array",
|
|
"boundary_radius" => "nullable|numeric",
|
|
"boundary_diameter" => "nullable|numeric",
|
|
"boundary_area" => "nullable|numeric",
|
|
"boundary_ha" => "nullable|numeric",
|
|
];
|
|
|
|
// validasi input
|
|
$isValidInput = Validator::make($input, $rulesInput);
|
|
if (!$isValidInput->passes()) {
|
|
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$zone = Zone::showZoneById($zid);
|
|
if (count($zone) < 1) {
|
|
$apiResp = Responses::not_found("zone not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$uniqName = Zone::getZoneByName($req->zone_name);
|
|
if (count($uniqName) > 0) {
|
|
$notSameUser = 1;
|
|
foreach ($uniqName as $key => $row) {
|
|
if ($row->id == $zid) {
|
|
$notSameUser = 0;
|
|
}
|
|
}
|
|
if ($notSameUser) {
|
|
$apiResp = Responses::bad_request("zone name has been used");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
}
|
|
|
|
$user = Users::getUserById($req->auth->uid);
|
|
|
|
DB::beginTransaction();
|
|
|
|
$updtZone = [
|
|
"name" => $req->zone_name,
|
|
"type" => $req->zone_type,
|
|
"workflow_type" => $req->workflow_zone_type,
|
|
"shiptocode" => "123456",
|
|
"prid" => "123456",
|
|
"ktid" => "123456",
|
|
"kcid" => "123456",
|
|
"klid" => "123456",
|
|
"fulladdress" => $req->fulladdress,
|
|
"boundary_type" => $req->boundary_type,
|
|
"boundary_hex_color" => strtoupper($req->boundary_hex_color),
|
|
"boundary_latlngs" => json_encode($req->boundary_latlngs),
|
|
"boundary_bounds" => $req->boundary_bounds ? json_encode($req->boundary_bounds) : null, // $req->boundary_bounds ?? null,
|
|
"boundary_radius" => $req->boundary_radius ?? 0,
|
|
"boundary_diameter" => $req->boundary_diameter ?? 0,
|
|
"boundary_area" => $req->boundary_area ?? 0,
|
|
"boundary_ha" => $req->boundary_ha ?? 0,
|
|
"status" => $req->status,
|
|
"client_group_id" => $req->zone_client ?? ($user[0]->client_group_id ?? null),
|
|
"updt" => $now,
|
|
"updt_by" => $req->auth->uid,
|
|
];
|
|
|
|
// $updtZone['boundary_points'] = DB::raw("ST_GeomFromText('POINT($req->lng $req->lat)')");
|
|
$updtZone["boundary_points"] = "ST_GeomFromText('MULTIPOINT(";
|
|
|
|
foreach ($req->boundary_latlngs as $key => $val) {
|
|
$updtZone["boundary_points"] .= $val["lng"] . " " . $val["lat"] . ", ";
|
|
}
|
|
$updtZone["boundary_points"] = substr($updtZone["boundary_points"], 0, -2); // remove 2 last character
|
|
$updtZone["boundary_points"] .= ")')";
|
|
$updtZone["boundary_points"] = DB::raw($updtZone["boundary_points"]);
|
|
|
|
Zone::updateZone($zid, $updtZone);
|
|
|
|
DB::commit();
|
|
|
|
$apiResp = Responses::success("success update zone");
|
|
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_zone(Request $req, $zid)
|
|
{
|
|
try {
|
|
$now = time();
|
|
|
|
$input = [
|
|
"zid" => $zid,
|
|
];
|
|
$rulesInput = [
|
|
"zid" => "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"]);
|
|
}
|
|
|
|
$zone = Zone::showZoneById($zid);
|
|
if (count($zone) < 1) {
|
|
$apiResp = Responses::not_found("zone not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
DB::beginTransaction();
|
|
|
|
Zone::updateZone($zid, [
|
|
"dlt" => $now,
|
|
"dlt_by" => $req->auth->uid,
|
|
]);
|
|
|
|
DB::commit();
|
|
|
|
$apiResp = Responses::success("success delete zone");
|
|
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_list_client_zones(Request $req)
|
|
{
|
|
try {
|
|
// cptid (client_group_id / client_pt_id / company_id)
|
|
$now = time();
|
|
|
|
$input = [
|
|
"cptid" => $req->cptid,
|
|
"workflow_type" => $req->workflow_type,
|
|
];
|
|
$rulesInput = [
|
|
"cptid" => "nullable|integer|not_in:0",
|
|
"workflow_type" => "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"]);
|
|
}
|
|
|
|
if ($req->cptid) {
|
|
$client = Clients::getClientById($req->cptid);
|
|
if (count($client) < 1) {
|
|
$apiResp = Responses::not_found("client not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
}
|
|
|
|
// $zones = Zone::getActiveZones($req->cptid, Zone::ZONE_TYPE_WAREHOUSE, $req->workflow_type);
|
|
$zones = Zone::getActiveZones(
|
|
$req->cptid,
|
|
[Zone::ZONE_TYPE_WAREHOUSE, Zone::ZONE_TYPE_AREA],
|
|
$req->workflow_type
|
|
);
|
|
if (count($zones) < 1) {
|
|
$apiResp = Responses::not_found("no available zones for client " . $client[0]->c_name);
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
foreach ($zones as $key => $val) {
|
|
unset($zones[$key]->boundary_points);
|
|
}
|
|
|
|
$apiResp = Responses::success("success list client zone");
|
|
$apiResp["data"] = $zones;
|
|
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_list_checkpoints(Request $req)
|
|
{
|
|
try {
|
|
$now = time();
|
|
|
|
$input = [
|
|
"cptid" => $req->cptid,
|
|
// 'type' => $req->type,
|
|
// 'workflow_type' => $req->workflow_type,
|
|
];
|
|
$rulesInput = [
|
|
"cptid" => "nullable|integer|not_in:0",
|
|
// 'type' => 'required|integer|not_in:0',
|
|
// 'workflow_type' => '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"]);
|
|
}
|
|
|
|
$zones = Zone::listZones($req->auth, [
|
|
"is_active" => Zone::STATUS_ACTIVE,
|
|
]);
|
|
if (count($zones) < 1) {
|
|
$apiResp = Responses::not_found("no available checkpoints");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
foreach ($zones as $key => $val) {
|
|
unset($zones[$key]->boundary_points);
|
|
}
|
|
|
|
$apiResp = Responses::success("success list checkpoints");
|
|
$apiResp["data"] = $zones;
|
|
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_user_checker_change_zone(Request $req)
|
|
{
|
|
try {
|
|
$now = time();
|
|
|
|
$input = [
|
|
"ord_code" => $req->ord_code,
|
|
"zid" => $req->zid,
|
|
"zone_name" => $req->zone_name,
|
|
"zone_client" => $req->zone_client,
|
|
"zone_type" => $req->zone_type,
|
|
"workflow_zone_type" => $req->workflow_zone_type,
|
|
"shiptocode" => $req->shiptocode,
|
|
"prid" => $req->prid,
|
|
"ktid" => $req->ktid,
|
|
"kcid" => $req->kcid,
|
|
"klid" => $req->klid,
|
|
"fulladdress" => $req->fulladdress,
|
|
"status" => $req->status,
|
|
"boundary_hex_color" => $req->boundary_hex_color,
|
|
"boundary_type" => $req->boundary_type,
|
|
"boundary_latlngs" => $req->boundary_latlngs,
|
|
"boundary_bounds" => $req->boundary_bounds,
|
|
"boundary_radius" => $req->boundary_radius,
|
|
"boundary_diameter" => $req->boundary_diameter,
|
|
"boundary_area" => $req->boundary_area, // square meter
|
|
"boundary_ha" => $req->boundary_ha, // hectare
|
|
];
|
|
$rulesInput = [
|
|
"ord_code" => "required|string|max:12",
|
|
"zid" => "required|integer|not_in:0",
|
|
"zone_name" => "required|string|max:255",
|
|
"zone_client" => "nullable|integer|not_in:0",
|
|
"zone_type" => "required|integer|not_in:0",
|
|
"workflow_zone_type" => "required|integer|not_in:0",
|
|
"shiptocode" => "required|string|min:5|max:6",
|
|
"prid" => "required|numeric",
|
|
"ktid" => "required|numeric",
|
|
"kcid" => "required|numeric",
|
|
"klid" => "required|numeric",
|
|
"fulladdress" => "required|string|min:55",
|
|
"status" => "required|integer|not_in:0",
|
|
"boundary_hex_color" => "required|string|min:7|max:7",
|
|
"boundary_type" => "required|string|max:25",
|
|
"boundary_latlngs" => "required|array",
|
|
"boundary_latlngs.*.lat" => "required",
|
|
"boundary_latlngs.*.lng" => "required",
|
|
"boundary_bounds" => "nullable|array",
|
|
"boundary_radius" => "nullable|numeric",
|
|
"boundary_diameter" => "nullable|numeric",
|
|
"boundary_area" => "nullable|numeric",
|
|
"boundary_ha" => "nullable|numeric",
|
|
];
|
|
|
|
// validasi input
|
|
$isValidInput = Validator::make($input, $rulesInput);
|
|
if (!$isValidInput->passes()) {
|
|
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$zone = Zone::showZoneById($req->zid);
|
|
if (count($zone) < 1) {
|
|
$apiResp = Responses::not_found("zone not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$uniqName = Zone::getZoneByName($req->zone_name);
|
|
if (count($uniqName) > 0) {
|
|
$notSameUser = 1;
|
|
foreach ($uniqName as $key => $row) {
|
|
if ($row->id == $req->zid) {
|
|
$notSameUser = 0;
|
|
}
|
|
}
|
|
if ($notSameUser) {
|
|
$apiResp = Responses::bad_request("zone name has been used");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
}
|
|
|
|
$orders = Orders::showOrder([
|
|
"code" => $req->ord_code,
|
|
// 'get_stts_checker' => 1,
|
|
// 'get_prefer_type_truck' => 1,
|
|
// 'get_checker_data' => 1,
|
|
// 'get_client_pt' => 1,
|
|
// 'get_accidents' => 1,
|
|
"couple_pck_drop" => 1,
|
|
"get_pic_zone" => 1,
|
|
// 'get_user_aprv_pck' => 1,
|
|
// 'get_user_aprv_pck' => 1,
|
|
"group_by" => "ord.id",
|
|
]);
|
|
if (count($orders) < 1) {
|
|
$apiResp = Responses::not_found("order not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
$order = $orders[0];
|
|
|
|
$user = Users::getUserById($req->auth->uid);
|
|
|
|
DB::beginTransaction();
|
|
|
|
$updtZone = [
|
|
"name" => $req->zone_name,
|
|
"type" => $req->zone_type,
|
|
"workflow_type" => $req->workflow_zone_type,
|
|
"shiptocode" => $req->shiptocode,
|
|
"prid" => $req->prid,
|
|
"ktid" => $req->ktid,
|
|
"kcid" => $req->kcid,
|
|
"klid" => $req->klid,
|
|
"fulladdress" => $req->fulladdress,
|
|
"boundary_type" => $req->boundary_type,
|
|
"boundary_hex_color" => strtoupper($req->boundary_hex_color),
|
|
"boundary_latlngs" => json_encode($req->boundary_latlngs),
|
|
"boundary_bounds" => $req->boundary_bounds ? json_encode($req->boundary_bounds) : null, // $req->boundary_bounds ?? null,
|
|
"boundary_radius" => $req->boundary_radius ?? 0,
|
|
"boundary_diameter" => $req->boundary_diameter ?? 0,
|
|
"boundary_area" => $req->boundary_area ?? 0,
|
|
"boundary_ha" => $req->boundary_ha ?? 0,
|
|
"status" => $req->status,
|
|
"client_group_id" => $req->zone_client ?? ($user[0]->client_group_id ?? null),
|
|
"updt" => $now,
|
|
"updt_by" => $req->auth->uid,
|
|
];
|
|
|
|
// $updtZone['boundary_points'] = DB::raw("ST_GeomFromText('POINT($req->lng $req->lat)')");
|
|
$updtZone["boundary_points"] = "ST_GeomFromText('MULTIPOINT(";
|
|
|
|
foreach ($req->boundary_latlngs as $key => $val) {
|
|
$updtZone["boundary_points"] .= $val["lng"] . " " . $val["lat"] . ", ";
|
|
}
|
|
$updtZone["boundary_points"] = substr($updtZone["boundary_points"], 0, -2); // remove 2 last character
|
|
$updtZone["boundary_points"] .= ")')";
|
|
$updtZone["boundary_points"] = DB::raw($updtZone["boundary_points"]);
|
|
|
|
Zone::updateZone($req->zid, $updtZone);
|
|
|
|
/**
|
|
* UPDATE ABOUT ZONE DROP N TRANSACTIONS
|
|
*/
|
|
|
|
$drops = Zone::getZoneById($req->zid, ["region_name" => 1]);
|
|
if (count($drops) < 1) {
|
|
$apiResp = Responses::not_found("Lokasi pengantaran tidak ditemukan");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
if (empty($drops[0]->boundary_points)) {
|
|
$apiResp = Responses::bad_request("Lokasi pengantaran tidak valid");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
foreach ($drops as $iDrop => $drop) {
|
|
if ($drop->prid == 0 || $drop->ktid == 0 || $drop->kcid == 0 || $drop->klid == 0) {
|
|
$apiResp = Responses::bad_request(
|
|
"Zonasi wilayah(provinsi, kecamatan, ...) lokasi pengantaran " .
|
|
$drop->name .
|
|
" belum lengkap"
|
|
);
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
$drops[$iDrop]->inpt_pic_name = $order->drop_pic_name;
|
|
$drops[$iDrop]->inpt_pic_phone_code = 62;
|
|
$drops[$iDrop]->inpt_pic_phone_val = (int) $order->drop_pic_phone_val;
|
|
$drops[$iDrop]->inpt_pic_mail = null;
|
|
|
|
$updtDrop = [
|
|
"ord_id" => $order->ord_id,
|
|
"ord_code" => $order->ord_code,
|
|
// 'stts_drop' => OrdersDrops::STTS_WAIT,
|
|
"drop_id" => $drop->id,
|
|
"drop_name" => $drop->name,
|
|
"drop_desc" => $drop->desc,
|
|
"drop_type" => $drop->type,
|
|
"drop_workflow" => $drop->workflow_type,
|
|
"drop_shiptocode" => $drop->shiptocode,
|
|
"drop_prid" => $drop->prid,
|
|
"drop_ktid" => $drop->ktid,
|
|
"drop_kcid" => $drop->kcid,
|
|
"drop_klid" => $drop->klid,
|
|
"drop_addr" => $drop->fulladdress,
|
|
"drop_cgroup_id" => $drop->client_group_id,
|
|
"drop_cdiv_id" => $drop->client_div_id,
|
|
"drop_cgp_id" => $drop->client_gp_id,
|
|
"drop_hex_color" => $drop->boundary_hex_color,
|
|
"drop_shape" => $drop->boundary_type,
|
|
"drop_radius" => $drop->boundary_radius,
|
|
"drop_diameter" => $drop->boundary_diameter,
|
|
"drop_area" => $drop->boundary_area,
|
|
"drop_ha" => $drop->boundary_ha,
|
|
"drop_bounds" => $drop->boundary_bounds,
|
|
"drop_latlngs" => $drop->boundary_latlngs,
|
|
"drop_points" => $drop->boundary_points,
|
|
"pic_name" => $drop->inpt_pic_name,
|
|
"pic_phone_code" => $drop->inpt_pic_phone_code,
|
|
"pic_phone_val" => $drop->inpt_pic_phone_val,
|
|
"pic_mail" => $drop->inpt_pic_mail,
|
|
];
|
|
OrdersDrops::updtByOrdId($order->ord_id, $updtDrop);
|
|
|
|
// $main_item_dec = "Pengantaran Logistik<br>" . ucwords(strtolower($pckPoints[0]->ktid_name)) . " - " . ucwords(strtolower($dropPoints[0]->ktid_name)) . "<br>" . ucwords(strtolower($dropPoints[0]->name)) . ", " . ucwords(strtolower($dropPoints[0]->prid_name)) . " - " . $dropPoints[0]->shiptocode . "<br>" . strftime('%d %m %Y', $insPck['set_pck_at']) . "<br>" . $req->note_tonase;
|
|
$ktid_name = ucwords(strtolower($drop->ktid_name));
|
|
$drop_name = ucwords(strtolower($drop->name));
|
|
$prid_name = ucwords(strtolower($drop->prid_name));
|
|
$shiptocode = $drop->shiptocode;
|
|
}
|
|
|
|
$a_items = OrdersAItems::showAItem([
|
|
"ord_id" => $order->ord_id,
|
|
"a_item_type" => OrdersAItems::A_TYPE_PRIMARY,
|
|
]);
|
|
foreach ($a_items as $a_item) {
|
|
// splitter
|
|
$desc_br = explode("<br>", $a_item->desc);
|
|
$nol = $desc_br[0]; // (string) Pengantaran Logistik
|
|
$satu = explode("-", $desc_br[1]); // (array) pickup->ktid_name - drop->ktid_name
|
|
$dua_0 = explode(",", $desc_br[2]); // (array) drop->name, drop->prid_name - drop->shiptocode
|
|
$dua_1 = explode("-", $dua_0[1]); // (array) drop->prid_name - drop->shiptocode
|
|
$tiga = $desc_br[3]; // (string) DD MM YYYY
|
|
$empat = $desc_br[4]; // (string) $req->note_tonase
|
|
|
|
// update string
|
|
$satu[1] = " " . $ktid_name;
|
|
$dua_0[0] = $drop_name;
|
|
$dua_1[0] = " " . $prid_name . " ";
|
|
$dua_1[1] = " " . $shiptocode;
|
|
|
|
// concatination
|
|
$dua_1 = implode("-", $dua_1);
|
|
$dua_0[1] = $dua_1;
|
|
$dua_0 = implode(",", $dua_0);
|
|
$satu = implode("-", $satu);
|
|
// concatination 2
|
|
$desc_br[0] = $nol;
|
|
$desc_br[1] = $satu;
|
|
$desc_br[2] = $dua_0;
|
|
$desc_br[3] = $tiga;
|
|
$desc_br[4] = $empat;
|
|
$main_item_desc = implode("<br>", $desc_br);
|
|
|
|
OrdersAItems::updt($a_item->ord_a_item_id, [
|
|
"desc" => $main_item_desc,
|
|
]);
|
|
}
|
|
|
|
DB::commit();
|
|
|
|
$apiResp = Responses::success("success update zone");
|
|
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_user_checker_change_zone_by_zid(Request $req)
|
|
{
|
|
try {
|
|
$now = time();
|
|
|
|
$input = [
|
|
"ord_id" => $req->ord_id,
|
|
"ord_code" => $req->ord_code,
|
|
"ord_drop_id" => $req->ord_drop_id,
|
|
"drop_zid" => $req->drop_zid,
|
|
];
|
|
$rulesInput = [
|
|
"ord_id" => "required|integer|not_in:0",
|
|
"ord_code" => "required|string|max:12",
|
|
"ord_drop_id" => "required|integer|not_in:0",
|
|
"drop_zid" => "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"]);
|
|
}
|
|
|
|
$zone = Zone::showZoneById($req->drop_zid);
|
|
if (count($zone) < 1) {
|
|
$apiResp = Responses::not_found("zone not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$orders = Orders::showOrder([
|
|
"code" => $req->ord_code,
|
|
// 'get_stts_checker' => 1,
|
|
// 'get_prefer_type_truck' => 1,
|
|
// 'get_checker_data' => 1,
|
|
// 'get_client_pt' => 1,
|
|
// 'get_accidents' => 1,
|
|
"couple_pck_drop" => 1,
|
|
"get_pic_zone" => 1,
|
|
// 'get_user_aprv_pck' => 1,
|
|
// 'get_user_aprv_pck' => 1,
|
|
"group_by" => "ord.id",
|
|
]);
|
|
if (count($orders) < 1) {
|
|
$apiResp = Responses::not_found("order not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
$order = $orders[0];
|
|
|
|
$user = Users::getUserById($req->auth->uid);
|
|
|
|
DB::beginTransaction();
|
|
|
|
/**
|
|
* UPDATE ABOUT ZONE DROP N TRANSACTIONS
|
|
*/
|
|
|
|
$drops = Zone::getZoneById($req->drop_zid, ["region_name" => 1]);
|
|
if (count($drops) < 1) {
|
|
$apiResp = Responses::not_found("Lokasi pengantaran tidak ditemukan");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
if (empty($drops[0]->boundary_points)) {
|
|
$apiResp = Responses::bad_request("Lokasi pengantaran tidak valid");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
foreach ($drops as $iDrop => $drop) {
|
|
if ($drop->prid == 0 || $drop->ktid == 0 || $drop->kcid == 0 || $drop->klid == 0) {
|
|
$apiResp = Responses::bad_request(
|
|
"Zonasi wilayah(provinsi, kecamatan, ...) lokasi pengantaran " .
|
|
$drop->name .
|
|
" belum lengkap"
|
|
);
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
$drops[$iDrop]->inpt_pic_name = $order->drop_pic_name;
|
|
$drops[$iDrop]->inpt_pic_phone_code = 62;
|
|
$drops[$iDrop]->inpt_pic_phone_val = (int) $order->drop_pic_phone_val;
|
|
$drops[$iDrop]->inpt_pic_mail = null;
|
|
|
|
$updtDrop = [
|
|
"ord_id" => $order->ord_id,
|
|
"ord_code" => $order->ord_code,
|
|
// 'stts_drop' => OrdersDrops::STTS_WAIT,
|
|
"drop_id" => $drop->id,
|
|
"drop_name" => $drop->name,
|
|
"drop_desc" => $drop->desc,
|
|
"drop_type" => $drop->type,
|
|
"drop_workflow" => $drop->workflow_type,
|
|
"drop_shiptocode" => $drop->shiptocode,
|
|
"drop_prid" => $drop->prid,
|
|
"drop_ktid" => $drop->ktid,
|
|
"drop_kcid" => $drop->kcid,
|
|
"drop_klid" => $drop->klid,
|
|
"drop_addr" => $drop->fulladdress,
|
|
"drop_cgroup_id" => $drop->client_group_id,
|
|
"drop_cdiv_id" => $drop->client_div_id,
|
|
"drop_cgp_id" => $drop->client_gp_id,
|
|
"drop_hex_color" => $drop->boundary_hex_color,
|
|
"drop_shape" => $drop->boundary_type,
|
|
"drop_radius" => $drop->boundary_radius,
|
|
"drop_diameter" => $drop->boundary_diameter,
|
|
"drop_area" => $drop->boundary_area,
|
|
"drop_ha" => $drop->boundary_ha,
|
|
"drop_bounds" => $drop->boundary_bounds,
|
|
"drop_latlngs" => $drop->boundary_latlngs,
|
|
"drop_points" => $drop->boundary_points,
|
|
"pic_name" => $drop->inpt_pic_name,
|
|
"pic_phone_code" => $drop->inpt_pic_phone_code,
|
|
"pic_phone_val" => $drop->inpt_pic_phone_val,
|
|
"pic_mail" => $drop->inpt_pic_mail,
|
|
];
|
|
OrdersDrops::updt($order->ord_drop_id, $updtDrop);
|
|
|
|
// $main_item_dec = "Pengantaran Logistik<br>" . ucwords(strtolower($pckPoints[0]->ktid_name)) . " - " . ucwords(strtolower($dropPoints[0]->ktid_name)) . "<br>" . ucwords(strtolower($dropPoints[0]->name)) . ", " . ucwords(strtolower($dropPoints[0]->prid_name)) . " - " . $dropPoints[0]->shiptocode . "<br>" . strftime('%d %m %Y', $insPck['set_pck_at']) . "<br>" . $req->note_tonase;
|
|
$ktid_name = ucwords(strtolower($drop->ktid_name));
|
|
$drop_name = ucwords(strtolower($drop->name));
|
|
$prid_name = ucwords(strtolower($drop->prid_name));
|
|
$shiptocode = $drop->shiptocode;
|
|
}
|
|
|
|
$a_items = OrdersAItems::showAItem([
|
|
"ord_id" => $order->ord_id,
|
|
"a_item_type" => OrdersAItems::A_TYPE_PRIMARY,
|
|
]);
|
|
foreach ($a_items as $a_item) {
|
|
// splitter
|
|
$desc_br = explode("<br>", $a_item->desc);
|
|
$nol = $desc_br[0]; // (string) Pengantaran Logistik
|
|
$satu = explode("-", $desc_br[1]); // (array) pickup->ktid_name - drop->ktid_name
|
|
$dua_0 = explode(",", $desc_br[2]); // (array) drop->name, drop->prid_name - drop->shiptocode
|
|
$dua_1 = explode("-", $dua_0[1]); // (array) drop->prid_name - drop->shiptocode
|
|
$tiga = $desc_br[3]; // (string) DD MM YYYY
|
|
$empat = $desc_br[4]; // (string) $req->note_tonase
|
|
|
|
// update string
|
|
$satu[1] = " " . $ktid_name;
|
|
$dua_0[0] = $drop_name;
|
|
$dua_1[0] = " " . $prid_name . " ";
|
|
$dua_1[1] = " " . $shiptocode;
|
|
|
|
// concatination
|
|
$dua_1 = implode("-", $dua_1);
|
|
$dua_0[1] = $dua_1;
|
|
$dua_0 = implode(",", $dua_0);
|
|
$satu = implode("-", $satu);
|
|
// concatination 2
|
|
$desc_br[0] = $nol;
|
|
$desc_br[1] = $satu;
|
|
$desc_br[2] = $dua_0;
|
|
$desc_br[3] = $tiga;
|
|
$desc_br[4] = $empat;
|
|
$main_item_desc = implode("<br>", $desc_br);
|
|
|
|
OrdersAItems::updt($a_item->ord_a_item_id, [
|
|
"desc" => $main_item_desc,
|
|
]);
|
|
}
|
|
|
|
DB::commit();
|
|
|
|
$apiResp = Responses::success("success update zone");
|
|
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_universal_list_zones(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']);
|
|
// }
|
|
|
|
$filter = [];
|
|
if ($req->cptid) {
|
|
$filter["company"] = $req->cptid;
|
|
}
|
|
if ($req->status) {
|
|
$filter["is_active"] = $req->status;
|
|
}
|
|
|
|
if ($req->auth->role === Users::ROLE_SPECIAL_TRACKING) {
|
|
// $filter['vid'] = 0;
|
|
$filter["company"] = $req->auth->client_group_id;
|
|
}
|
|
|
|
$list = Zone::listZones($req->auth, $filter);
|
|
|
|
foreach ($list as $key => $row) {
|
|
$list[$key]->DT_RowIndex = $key + 1;
|
|
$list[$key]->action = "-";
|
|
unset($list[$key]->boundary_points);
|
|
}
|
|
|
|
$apiResp = Responses::success("success list zones");
|
|
$apiResp["data"] = $list;
|
|
$apiResp["count"] = count($list);
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
} catch (\Exception $e) {
|
|
$apiResp = Responses::error($e->getMessage());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
}
|
|
}
|