Initial commit
This commit is contained in:
289
app/Http/Controllers/AItemsController.php
Executable file
289
app/Http/Controllers/AItemsController.php
Executable file
@ -0,0 +1,289 @@
|
||||
<?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\AItems;
|
||||
use App\Models\Users;
|
||||
use App\Models\OrdersAItems;
|
||||
use App\Models\UnitTypes;
|
||||
|
||||
class AItemsController extends Controller
|
||||
{
|
||||
public function view_a_items(Request $req)
|
||||
{
|
||||
$unitTypes = UnitTypes::listUnitTypes(['is_active' => UnitTypes::IS_ACTIVE, 'is_publish' => UnitTypes::IS_PUBLISH]);
|
||||
$data = [
|
||||
'unitTypes' => $unitTypes,
|
||||
'user' => $req->auth,
|
||||
];
|
||||
return view('menu_v2.Finance.adtItems', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_a_items(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->auth->role === Users::ROLE_ADMIN) {
|
||||
$filter['crt_type'] = AItems::CRT_TYPE_ADMIN;
|
||||
} else if ($req->auth->role === Users::ROLE_FINANCE) {
|
||||
$filter['crt_type'] = AItems::CRT_TYPE_FINANCE;
|
||||
} else {
|
||||
$filter['crt_type'] = 99;
|
||||
}
|
||||
|
||||
$list = AItems::listAItems($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list a_items');
|
||||
$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_a_items(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'id' => $id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'id' => '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']);
|
||||
}
|
||||
|
||||
$a_item = AItems::showAItemsById($id);
|
||||
if (count($a_item) < 1) {
|
||||
$apiResp = Responses::not_found('a_item not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get detail a_item');
|
||||
$apiResp['data'] = $a_item[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_a_items(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'name' => $req->name,
|
||||
'type' => $req->type,
|
||||
'price' => $req->price,
|
||||
'status' => $req->status,
|
||||
'is_adm_price' => $req->is_adm_price,
|
||||
];
|
||||
$rulesInput = [
|
||||
'name' => 'required|string',
|
||||
'type' => 'required|integer|not_in:0',
|
||||
'price' => 'required|numeric',
|
||||
'status' => 'required|integer|min:0',
|
||||
'is_adm_price' => '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']);
|
||||
}
|
||||
|
||||
$uniqName = AItems::getByName($req->name);
|
||||
if (count($uniqName) > 0) {
|
||||
$apiResp = Responses::bad_request('nama additional item sudah terdata');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
if ($req->auth->role === Users::ROLE_ADMIN) {
|
||||
$crt_type = AItems::CRT_TYPE_ADMIN;
|
||||
} else if ($req->auth->role === Users::ROLE_FINANCE) {
|
||||
$crt_type = AItems::CRT_TYPE_FINANCE;
|
||||
} else {
|
||||
$crt_type = 99;
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$insAItems = [
|
||||
'name' => $req->name,
|
||||
'type' => $req->type,
|
||||
'price' => $req->price,
|
||||
'is_active' => $req->status,
|
||||
'is_adm_price' => $req->is_adm_price,
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'crt_type' => $crt_type,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$id = AItems::add($insAItems);
|
||||
|
||||
$apiResp = Responses::created('success add new additional item');
|
||||
|
||||
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_updt_a_items(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'id' => $id,
|
||||
'name' => $req->name,
|
||||
'type' => $req->type,
|
||||
'price' => $req->price,
|
||||
'status' => $req->status,
|
||||
'is_adm_price' => $req->is_adm_price,
|
||||
];
|
||||
$rulesInput = [
|
||||
'id' => 'required|integer|not_in:0',
|
||||
'name' => 'required|string',
|
||||
'type' => 'required|integer|not_in:0',
|
||||
'price' => 'required|numeric',
|
||||
'status' => 'required|integer|min:0',
|
||||
'is_adm_price' => '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']);
|
||||
}
|
||||
|
||||
$a_item = AItems::showAItemsById($id);
|
||||
if (count($a_item) < 1) {
|
||||
$apiResp = Responses::not_found('additional item not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$uniqName = AItems::getByName($req->name);
|
||||
if (count($uniqName) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqName as $key => $row) {
|
||||
if ($row->id == $id) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request('nama additional item sudah terdata');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$updtAItems = [
|
||||
'name' => $req->name,
|
||||
'type' => $req->type,
|
||||
'price' => $req->price,
|
||||
'is_active' => $req->status,
|
||||
'is_adm_price' => $req->is_adm_price,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
AItems::updt($id, $updtAItems);
|
||||
|
||||
$apiResp = Responses::created('success update additional item');
|
||||
|
||||
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_a_items(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'id' => $id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'id' => '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']);
|
||||
}
|
||||
|
||||
$a_item = AItems::showAItemsById($id);
|
||||
if (count($a_item) < 1) {
|
||||
$apiResp = Responses::not_found('additional item not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
AItems::updt($id, [
|
||||
'dlt' => $now,
|
||||
'dlt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success('success delete additional item');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
51
app/Http/Controllers/Api/AuthController.php
Normal file
51
app/Http/Controllers/Api/AuthController.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Validator;
|
||||
use Auth;
|
||||
use Hash;
|
||||
use Session;
|
||||
use App\Models\User;
|
||||
use DB;
|
||||
|
||||
class AuthController extends Controller
|
||||
{
|
||||
public function login(Request $request)
|
||||
{
|
||||
// print_r($request->all());
|
||||
$response = ["success" => false];
|
||||
try {
|
||||
$data = [
|
||||
"email" => $request->email,
|
||||
"password" => $request->password,
|
||||
];
|
||||
|
||||
Auth::attempt($data);
|
||||
|
||||
if (Auth::check() && Auth::user()->status != 1) {
|
||||
Auth::logout();
|
||||
$response = [
|
||||
"success" => false,
|
||||
"code" => 400,
|
||||
"msg" =>
|
||||
"Your account is inactive, please contact the Administrator.",
|
||||
];
|
||||
}
|
||||
|
||||
$response = [
|
||||
"code" => 200,
|
||||
"success" => true,
|
||||
"data" => [
|
||||
"id" => Auth::user()->id,
|
||||
],
|
||||
];
|
||||
} catch (\Throwable $th) {
|
||||
$response["error"] = $th->getMessage();
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
40
app/Http/Controllers/Auth/ConfirmPasswordController.php
Executable file
40
app/Http/Controllers/Auth/ConfirmPasswordController.php
Executable file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Foundation\Auth\ConfirmsPasswords;
|
||||
|
||||
class ConfirmPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Confirm Password Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password confirmations and
|
||||
| uses a simple trait to include the behavior. You're free to explore
|
||||
| this trait and override any functions that require customization.
|
||||
|
|
||||
*/
|
||||
|
||||
use ConfirmsPasswords;
|
||||
|
||||
/**
|
||||
* Where to redirect users when the intended url fails.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
}
|
||||
}
|
||||
22
app/Http/Controllers/Auth/ForgotPasswordController.php
Executable file
22
app/Http/Controllers/Auth/ForgotPasswordController.php
Executable file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset emails and
|
||||
| includes a trait which assists in sending these notifications from
|
||||
| your application to your users. Feel free to explore this trait.
|
||||
|
|
||||
*/
|
||||
|
||||
use SendsPasswordResetEmails;
|
||||
}
|
||||
224
app/Http/Controllers/Auth/LoginController.php
Executable file
224
app/Http/Controllers/Auth/LoginController.php
Executable file
@ -0,0 +1,224 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Helper;
|
||||
use App\Models\Users;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Login Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles authenticating users for the application and
|
||||
| redirecting them to your home screen. The controller uses a trait
|
||||
| to conveniently provide its functionality to your applications.
|
||||
|
|
||||
*/
|
||||
|
||||
use AuthenticatesUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after login.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware("guest")->except("logout");
|
||||
}
|
||||
|
||||
public function username()
|
||||
{
|
||||
return "email";
|
||||
}
|
||||
|
||||
public function login(Request $req)
|
||||
{
|
||||
$this->validateLogin($req);
|
||||
|
||||
// If the class is using the ThrottlesLogins trait, we can automatically throttle
|
||||
// the login attempts for this application. We'll key this by the username and
|
||||
// the IP address of the client making these requests into this application.
|
||||
if (
|
||||
method_exists($this, "hasTooManyLoginAttempts") &&
|
||||
$this->hasTooManyLoginAttempts($req)
|
||||
) {
|
||||
$this->fireLockoutEvent($req);
|
||||
|
||||
return $this->sendLockoutResponse($req);
|
||||
}
|
||||
|
||||
if ($this->guard()->validate($this->credentials($req))) {
|
||||
$user = $this->guard()->getLastAttempted();
|
||||
if ($user->dlt != null) {
|
||||
$this->incrementLoginAttempts($req);
|
||||
throw ValidationException::withMessages([
|
||||
$this->username() => [trans("auth.failed")],
|
||||
]);
|
||||
}
|
||||
if ($user->status != Users::STATUS_ACTIVE) {
|
||||
// Increment the failed login attempts and redirect back to the
|
||||
// login form with an error message.
|
||||
$this->incrementLoginAttempts($req);
|
||||
// return redirect()
|
||||
// ->back()
|
||||
// ->withInput($req->only($this->username(), 'remember'))
|
||||
// ->withErrors(['active' => 'You must be active to login.']);
|
||||
throw ValidationException::withMessages([
|
||||
$this->username() => __(
|
||||
"Your account not active, please contact admin."
|
||||
),
|
||||
]);
|
||||
}
|
||||
|
||||
if ($this->attemptLogin($req)) {
|
||||
return $this->sendLoginResponse($req);
|
||||
}
|
||||
}
|
||||
|
||||
// If the login attempt was unsuccessful we will increment the number of attempts
|
||||
// to login and redirect the user back to the login form. Of course, when this
|
||||
// user surpasses their maximum number of attempts they will get locked out.
|
||||
$this->incrementLoginAttempts($req);
|
||||
|
||||
return $this->sendFailedLoginResponse($req);
|
||||
}
|
||||
|
||||
protected function validateLogin(Request $req)
|
||||
{
|
||||
$this->validate($req, [
|
||||
$this->username() => "required|string|email",
|
||||
"password" => "required|string",
|
||||
]);
|
||||
}
|
||||
|
||||
protected function sendLoginResponse(Request $req)
|
||||
{
|
||||
$req->session()->regenerate();
|
||||
|
||||
$this->clearLoginAttempts($req);
|
||||
|
||||
if ($response = $this->authenticated($req, $this->guard()->user())) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
// return $req->wantsJson()
|
||||
// ? new JsonResponse([], 204)
|
||||
// : redirect()->intended($this->redirectPath());
|
||||
// return $req->wantsJson()
|
||||
// ? new JsonResponse([], 204)
|
||||
// : redirect(route('view_dashboard'));
|
||||
|
||||
if ($req->wantsJson()) {
|
||||
return new JsonResponse([], 204);
|
||||
} else {
|
||||
$user = Auth::user();
|
||||
if ($user->role == Users::ROLE_ADMIN) {
|
||||
return redirect(route("view_dashboard"));
|
||||
} elseif ($user->role == Users::ROLE_VENDOR) {
|
||||
return redirect(route("view_dashboard"));
|
||||
} elseif ($user->role == Users::ROLE_CHECKER) {
|
||||
return redirect(route("view_user_checker"));
|
||||
} elseif ($user->role == Users::ROLE_CLIENT_ADMIN) {
|
||||
return redirect(
|
||||
route("view_user_client_transaction_add") . "?rdl=1"
|
||||
);
|
||||
} elseif ($user->role == Users::ROLE_SPECIAL_TRACKING) {
|
||||
return redirect(route("view_dashboard"));
|
||||
} elseif ($user->role == Users::ROLE_FINANCE) {
|
||||
return redirect(route("view_keuangan_payment"));
|
||||
} else {
|
||||
$this->guard()->logout();
|
||||
$req->session()->invalidate();
|
||||
$req->session()->regenerateToken();
|
||||
// return redirect(route('login'));
|
||||
return redirect(route("login"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function logout(Request $req)
|
||||
{
|
||||
$user = Auth::user();
|
||||
if ($user->role == Users::ROLE_ADMIN) {
|
||||
$this->guard()->logout();
|
||||
$req->session()->invalidate();
|
||||
$req->session()->regenerateToken();
|
||||
if ($response = $this->loggedOut($req)) {
|
||||
return $response;
|
||||
}
|
||||
return $req->wantsJson()
|
||||
? new JsonResponse([], 204)
|
||||
: redirect(route("login_admin"));
|
||||
} elseif ($user->role == Users::ROLE_FINANCE) {
|
||||
$this->guard()->logout();
|
||||
$req->session()->invalidate();
|
||||
$req->session()->regenerateToken();
|
||||
if ($response = $this->loggedOut($req)) {
|
||||
return $response;
|
||||
}
|
||||
return $req->wantsJson()
|
||||
? new JsonResponse([], 204)
|
||||
: redirect(route("login_admin"));
|
||||
} elseif ($user->role == Users::ROLE_VENDOR) {
|
||||
$this->guard()->logout();
|
||||
$req->session()->invalidate();
|
||||
$req->session()->regenerateToken();
|
||||
if ($response = $this->loggedOut($req)) {
|
||||
return $response;
|
||||
}
|
||||
return $req->wantsJson()
|
||||
? new JsonResponse([], 204)
|
||||
: redirect(route("login_vendor"));
|
||||
} elseif ($user->role == Users::ROLE_CHECKER) {
|
||||
$this->guard()->logout();
|
||||
$req->session()->invalidate();
|
||||
$req->session()->regenerateToken();
|
||||
if ($response = $this->loggedOut($req)) {
|
||||
return $response;
|
||||
}
|
||||
return $req->wantsJson()
|
||||
? new JsonResponse([], 204)
|
||||
: redirect(route("login_checker"));
|
||||
} elseif ($user->role == Users::ROLE_CLIENT_ADMIN) {
|
||||
$this->guard()->logout();
|
||||
$req->session()->invalidate();
|
||||
$req->session()->regenerateToken();
|
||||
if ($response = $this->loggedOut($req)) {
|
||||
return $response;
|
||||
}
|
||||
return $req->wantsJson()
|
||||
? new JsonResponse([], 204)
|
||||
: redirect(route("login_client"));
|
||||
} elseif ($user->role == Users::ROLE_SPECIAL_TRACKING) {
|
||||
$this->guard()->logout();
|
||||
$req->session()->invalidate();
|
||||
$req->session()->regenerateToken();
|
||||
if ($response = $this->loggedOut($req)) {
|
||||
return $response;
|
||||
}
|
||||
return $req->wantsJson()
|
||||
? new JsonResponse([], 204)
|
||||
: redirect(route("login_admin"));
|
||||
}
|
||||
}
|
||||
}
|
||||
73
app/Http/Controllers/Auth/RegisterController.php
Executable file
73
app/Http/Controllers/Auth/RegisterController.php
Executable file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use App\User;
|
||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Register Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles the registration of new users as well as their
|
||||
| validation and creation. By default this controller uses a trait to
|
||||
| provide this functionality without requiring any additional code.
|
||||
|
|
||||
*/
|
||||
|
||||
use RegistersUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after registration.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a validator for an incoming registration request.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \Illuminate\Contracts\Validation\Validator
|
||||
*/
|
||||
protected function validator(array $data)
|
||||
{
|
||||
return Validator::make($data, [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new user instance after a valid registration.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \App\User
|
||||
*/
|
||||
protected function create(array $data)
|
||||
{
|
||||
return User::create([
|
||||
'name' => $data['name'],
|
||||
'email' => $data['email'],
|
||||
'password' => Hash::make($data['password']),
|
||||
]);
|
||||
}
|
||||
}
|
||||
30
app/Http/Controllers/Auth/ResetPasswordController.php
Executable file
30
app/Http/Controllers/Auth/ResetPasswordController.php
Executable file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
|
||||
class ResetPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset requests
|
||||
| and uses a simple trait to include this behavior. You're free to
|
||||
| explore this trait and override any methods you wish to tweak.
|
||||
|
|
||||
*/
|
||||
|
||||
use ResetsPasswords;
|
||||
|
||||
/**
|
||||
* Where to redirect users after resetting their password.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
}
|
||||
42
app/Http/Controllers/Auth/VerificationController.php
Executable file
42
app/Http/Controllers/Auth/VerificationController.php
Executable file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Foundation\Auth\VerifiesEmails;
|
||||
|
||||
class VerificationController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Email Verification Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling email verification for any
|
||||
| user that recently registered with the application. Emails may also
|
||||
| be re-sent if the user didn't receive the original email message.
|
||||
|
|
||||
*/
|
||||
|
||||
use VerifiesEmails;
|
||||
|
||||
/**
|
||||
* Where to redirect users after verification.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = RouteServiceProvider::HOME;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
$this->middleware('signed')->only('verify');
|
||||
$this->middleware('throttle:6,1')->only('verify', 'resend');
|
||||
}
|
||||
}
|
||||
81
app/Http/Controllers/AuthController.php
Executable file
81
app/Http/Controllers/AuthController.php
Executable file
@ -0,0 +1,81 @@
|
||||
<?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\Users;
|
||||
|
||||
class AuthController extends Controller
|
||||
{
|
||||
// public function view_login(Request $req)
|
||||
// {
|
||||
// return 'Do login';
|
||||
// }
|
||||
public function view_login_admin(Request $req)
|
||||
{
|
||||
return view('auth.loginAdmin');
|
||||
}
|
||||
public function view_login_client(Request $req)
|
||||
{
|
||||
return view('auth.loginClient');
|
||||
}
|
||||
public function view_login_vendor(Request $req)
|
||||
{
|
||||
return view('auth.loginVendor');
|
||||
}
|
||||
public function view_login_checker(Request $req)
|
||||
{
|
||||
return view('auth.loginChecker');
|
||||
}
|
||||
|
||||
public function api_login(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'password' => $req->password,
|
||||
];
|
||||
$rulesInput = [
|
||||
'password' => 'required|string',
|
||||
];
|
||||
|
||||
if ($req->email) {
|
||||
$input['email'] = $req->email;
|
||||
$rulesInput['email'] = 'required|email';
|
||||
}
|
||||
if ($req->phone) {
|
||||
$input['phone'] = $req->phone;
|
||||
$rulesInput['phone'] = 'required|integer';
|
||||
}
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
}
|
||||
|
||||
$getUser = Users::getUserByEmail($req->email);
|
||||
if (count($getUser) < 1) {
|
||||
$getUser = Users::getUserByPhone($req->phone);
|
||||
if (count($getUser) < 1) {
|
||||
$apiResp = Responses::not_found('akun tidak ditemukan');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('sukses login');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
57
app/Http/Controllers/ChecklistController.php
Normal file
57
app/Http/Controllers/ChecklistController.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Validator;
|
||||
use Auth;
|
||||
use DataTables;
|
||||
|
||||
class ChecklistController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view("menu_v1.checklist");
|
||||
}
|
||||
public function table()
|
||||
{
|
||||
$table = DB::table("t_conf_checklists as tcc")
|
||||
->leftJoin("t_clients as tc", "tc.id", "tcc.client_id")
|
||||
->leftJoin("t_users as tu", "tu.id", "tcc.crt_by")
|
||||
->select("tcc.*", "tu.first_name as crt_name", "tc.c_name as company_name")
|
||||
->whereNull("tcc.dlt")
|
||||
->where("tcc.client_id", Auth::user()->client_id);
|
||||
|
||||
// dd($table);
|
||||
|
||||
return DataTables::of($table)
|
||||
->addIndexColumn()
|
||||
->make();
|
||||
}
|
||||
public function create()
|
||||
{
|
||||
return view("menu_v1._addChecklist");
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$now = time();
|
||||
$_dtPost = [
|
||||
"name" => $request->name,
|
||||
"client_id" => Auth::user()->client_id,
|
||||
"desc" => $request->desc,
|
||||
"status" => $request->status,
|
||||
"crt" => $now,
|
||||
"updt" => $now,
|
||||
"crt_by" => Auth::user()->id,
|
||||
"updt_by" => Auth::user()->id,
|
||||
];
|
||||
|
||||
$dtPost = DB::table("t_conf_checklists")->insert($_dtPost);
|
||||
if ($dtPost) {
|
||||
return redirect("checklist");
|
||||
}
|
||||
}
|
||||
}
|
||||
591
app/Http/Controllers/ClientController.php
Executable file
591
app/Http/Controllers/ClientController.php
Executable file
@ -0,0 +1,591 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Validator;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\Clients;
|
||||
use App\Models\Users;
|
||||
|
||||
class ClientController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function view_clients()
|
||||
{
|
||||
$data = [
|
||||
"disc_types" => Clients::select2DiscountTypes(),
|
||||
];
|
||||
return view("menu_v1.clients", $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_clients(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;
|
||||
}
|
||||
$list = Clients::listClients($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
// $list[$key]->count_trx = 0;
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success list clients");
|
||||
$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_client(Request $req, $cid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"cid" => $cid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"cid" => "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"]);
|
||||
}
|
||||
|
||||
$client = Clients::showClientById($cid);
|
||||
if (count($client) < 1) {
|
||||
$apiResp = Responses::not_found("client not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if ($client[0]->user_id) {
|
||||
$client[0]->c_credentials = Clients::CCREDENTIALS_CREATE;
|
||||
} else {
|
||||
$client[0]->c_credentials = Clients::CCREDENTIALS_NOT;
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success get detail client");
|
||||
$apiResp["data"] = $client[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_client(Request $req)
|
||||
{
|
||||
//dd($req->all());
|
||||
$url_clogo = "";
|
||||
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"client_logo" => $req->clogo_base64,
|
||||
"client_name" => $req->cname,
|
||||
"client_office_address" => $req->caddress_office,
|
||||
"client_phone" => $req->cphone,
|
||||
"client_email" => $req->cmail,
|
||||
"pic_name" => $req->picname,
|
||||
"pic_phone" => $req->picphone,
|
||||
"pic_email" => $req->picmail,
|
||||
// "disc_type" => $req->disc_type,
|
||||
// "disc_amount" => $req->disc_amount,
|
||||
"client_status" => $req->cstatus,
|
||||
"is_create_login_credentials" => $req->ccredentials,
|
||||
];
|
||||
$rulesInput = [
|
||||
"client_logo" => "required|string",
|
||||
"client_name" => "required|string|max:255",
|
||||
"client_office_address" => "required|string|min:45|max:300",
|
||||
"client_phone" => "required|integer|not_in:0",
|
||||
"client_email" => "required|string|email",
|
||||
"pic_name" => "required|string|max:255",
|
||||
"pic_phone" => "required|integer|not_in:0",
|
||||
"pic_email" => "required|string|email",
|
||||
// "disc_type" => "required|numeric|min:0",
|
||||
// "disc_amount" => "required|numeric|min:0",
|
||||
"client_status" => "required|numeric",
|
||||
"is_create_login_credentials" => "required|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"]);
|
||||
}
|
||||
|
||||
$uniqCPhone = Clients::getClientByPhone($req->cphone);
|
||||
if (count($uniqCPhone) > 0) {
|
||||
$apiResp = Responses::bad_request("client phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
$uniqCMail = Clients::getClientByEmail($req->cmail);
|
||||
if (count($uniqCMail) > 0) {
|
||||
$apiResp = Responses::bad_request("client email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$uniqPicPhone = Clients::getPicByPhone($req->picphone);
|
||||
if (count($uniqPicPhone) > 0) {
|
||||
$apiResp = Responses::bad_request("pic phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
$uniqPicMail = Clients::getPicByEmail($req->picmail);
|
||||
if (count($uniqPicMail) > 0) {
|
||||
$apiResp = Responses::bad_request("pic email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$uniqUserPhone = Users::getUserByPhone($req->cphone);
|
||||
if (count($uniqUserPhone) > 0) {
|
||||
$apiResp = Responses::bad_request("client phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
$uniqUserMail = Users::getUserByEmail($req->cmail);
|
||||
if (count($uniqUserMail) > 0) {
|
||||
$apiResp = Responses::bad_request("client email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if ($req->disc_type == Clients::DISC_TYPE_PERCENT && $req->disc_amount > 100) {
|
||||
$apiResp = Responses::bad_request("maximum percent is 100%");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$insClient = [
|
||||
"c_name" => $req->cname,
|
||||
"c_addr_office" => $req->caddress_office,
|
||||
"c_phone" => $req->cphone,
|
||||
"c_phone_code" => Clients::DEFAULT_PHONE_CODE,
|
||||
"c_mail" => $req->cmail,
|
||||
"c_logo" => $url_clogo,
|
||||
"pic_name" => $req->picname,
|
||||
"pic_phone" => $req->picphone,
|
||||
"pic_phone_code" => Clients::DEFAULT_PHONE_CODE,
|
||||
"pic_mail" => $req->picmail,
|
||||
"disc_type" => 0,
|
||||
"disc_amount" => 0,
|
||||
"c_status" => $req->cstatus,
|
||||
"crt" => $now,
|
||||
"crt_by" => $req->auth->uid,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
$clientId = Clients::addClient($insClient);
|
||||
|
||||
$url_clogo = "clients/$clientId/logo_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_clogo, base64_decode($req->clogo_base64))) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload client logo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
$updtClient = [
|
||||
"c_logo" => $url_clogo,
|
||||
];
|
||||
Clients::updateClient($clientId, $updtClient);
|
||||
|
||||
if ($req->ccredentials == Clients::CCREDENTIALS_CREATE) {
|
||||
$status = Users::STATUS_ACTIVE;
|
||||
if ($req->cstatus == Clients::CSTTS_INACTIVE) {
|
||||
$status = Users::STATUS_NOT_ACTIVE;
|
||||
}
|
||||
$insAccount = [
|
||||
"client_id" => $clientId,
|
||||
"client_group_id" => $clientId,
|
||||
"first_name" => $req->cname,
|
||||
"last_name" => null,
|
||||
"email" => $req->cmail,
|
||||
"phone" => $req->cphone,
|
||||
"phone_code" => Users::DEFAULT_PHONE_CODE,
|
||||
"fulladdress" => $req->caddress_office,
|
||||
"password" => Hash::make($req->cphone),
|
||||
"role" => Users::ROLE_VENDOR,
|
||||
"status" => $status,
|
||||
"crt" => $now,
|
||||
"crt_by" => $req->auth->uid,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
Users::addUser($insAccount);
|
||||
}
|
||||
|
||||
$apiResp = Responses::created("success add new client");
|
||||
|
||||
DB::commit();
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
Storage::disk("public")->delete($url_clogo);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
public function api_edit_client(Request $req, $cid)
|
||||
{
|
||||
$url_clogo = "";
|
||||
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"cid" => $cid,
|
||||
"client_logo" => $req->clogo_base64,
|
||||
"client_name" => $req->cname,
|
||||
"client_office_address" => $req->caddress_office,
|
||||
"client_phone" => $req->cphone,
|
||||
"client_email" => $req->cmail,
|
||||
"pic_name" => $req->picname,
|
||||
"pic_phone" => $req->picphone,
|
||||
"pic_email" => $req->picmail,
|
||||
"disc_type" => $req->disc_type,
|
||||
"disc_amount" => $req->disc_amount,
|
||||
"client_status" => $req->cstatus,
|
||||
"is_create_login_credentials" => $req->ccredentials,
|
||||
];
|
||||
$rulesInput = [
|
||||
"cid" => "required|integer|not_in:0",
|
||||
"client_logo" => "required|string",
|
||||
"client_name" => "required|string|max:255",
|
||||
"client_office_address" => "required|string|min:45|max:300",
|
||||
"client_phone" => "required|integer|not_in:0",
|
||||
"client_email" => "required|string|email",
|
||||
"pic_name" => "required|string|max:255",
|
||||
"pic_phone" => "required|integer|not_in:0",
|
||||
"pic_email" => "required|string|email",
|
||||
// "disc_type" => "required|numeric|min:0",
|
||||
// "disc_amount" => "required|numeric|min:0",
|
||||
"client_status" => "required|numeric",
|
||||
"is_create_login_credentials" => "required|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"]);
|
||||
}
|
||||
|
||||
$client = Clients::showClientById($cid);
|
||||
if (count($client) < 1) {
|
||||
$apiResp = Responses::not_found("client not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$uniqCPhone = Clients::getClientByPhone($req->cphone);
|
||||
if (count($uniqCPhone) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqCPhone as $key => $row) {
|
||||
if ($row->id == $cid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("client phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
$uniqCMail = Clients::getClientByEmail($req->cmail);
|
||||
if (count($uniqCMail) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqCMail as $key => $row) {
|
||||
if ($row->id == $cid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("client email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
$uniqPicPhone = Clients::getPicByPhone($req->picphone);
|
||||
if (count($uniqPicPhone) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqPicPhone as $key => $row) {
|
||||
if ($row->id == $cid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("pic phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
$uniqPicMail = Clients::getPicByEmail($req->picmail);
|
||||
if (count($uniqPicMail) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqPicMail as $key => $row) {
|
||||
if ($row->id == $cid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("pic email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
$uniqUserPhone = Users::getUserByPhone($req->cphone);
|
||||
if (count($uniqUserPhone) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqUserPhone as $key => $row) {
|
||||
if ($row->client_group_id == $cid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("client phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
$uniqUserMail = Users::getUserByEmail($req->cmail);
|
||||
if (count($uniqUserMail) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqUserMail as $key => $row) {
|
||||
if ($row->client_group_id == $cid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("client email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($req->disc_type == Clients::DISC_TYPE_PERCENT && $req->disc_amount > 100) {
|
||||
$apiResp = Responses::bad_request("maximum percent is 100%");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$user = Users::getUserByClientId($cid);
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$url_clogo = $client[0]->c_logo;
|
||||
if ($req->clogo_base64 && $req->clogo_base64 != "noupdate") {
|
||||
$url_clogo = "clients/$cid/logo_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_clogo, base64_decode($req->clogo_base64))) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload client logo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
Storage::disk("public")->delete($client[0]->c_logo);
|
||||
}
|
||||
|
||||
$updtClient = [
|
||||
"c_name" => $req->cname,
|
||||
"c_addr_office" => $req->caddress_office,
|
||||
"c_phone" => $req->cphone,
|
||||
"c_phone_code" => Clients::DEFAULT_PHONE_CODE,
|
||||
"c_mail" => $req->cmail,
|
||||
"c_logo" => $url_clogo,
|
||||
"pic_name" => $req->picname,
|
||||
"pic_phone" => $req->picphone,
|
||||
"pic_phone_code" => Clients::DEFAULT_PHONE_CODE,
|
||||
"pic_mail" => $req->picmail,
|
||||
"disc_type" => $req->disc_type,
|
||||
"disc_amount" => $req->disc_amount,
|
||||
"c_status" => $req->cstatus,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
Clients::updateClient($cid, $updtClient);
|
||||
|
||||
if ($req->ccredentials == Clients::CCREDENTIALS_CREATE && count($user) < 1) {
|
||||
$status = Users::STATUS_ACTIVE;
|
||||
if ($req->cstatus == Clients::CSTTS_INACTIVE) {
|
||||
$status = Users::STATUS_NOT_ACTIVE;
|
||||
}
|
||||
$insAccount = [
|
||||
"client_id" => $cid,
|
||||
"client_group_id" => $cid,
|
||||
"first_name" => $req->cname,
|
||||
"last_name" => null,
|
||||
"email" => $req->cmail,
|
||||
"phone" => $req->cphone,
|
||||
"phone_code" => Users::DEFAULT_PHONE_CODE,
|
||||
"fulladdress" => $req->caddress_office,
|
||||
"password" => Hash::make($req->cphone),
|
||||
"role" => Users::ROLE_CLIENT_ADMIN,
|
||||
"status" => $status,
|
||||
"crt" => $now,
|
||||
"crt_by" => $req->auth->uid,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
Users::addUser($insAccount);
|
||||
}
|
||||
|
||||
$status = Users::STATUS_ACTIVE;
|
||||
if ($req->cstatus == Clients::CSTTS_INACTIVE) {
|
||||
$status = Users::STATUS_NOT_ACTIVE;
|
||||
}
|
||||
|
||||
// update the client credentials only
|
||||
if (count($user) > 0) {
|
||||
$updtAccount = [
|
||||
"status" => $status,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
Users::UpdateUser($user[0]->id, $updtAccount);
|
||||
}
|
||||
|
||||
// update user group by this client
|
||||
$updtGroupAccount = [
|
||||
"status" => $status,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
Users::updateUsersByGroupClientId($client[0]->id, $updtGroupAccount);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success("success update client");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
Storage::disk("public")->delete($url_clogo);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
public function api_del_client(Request $req, $cid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"cid" => $cid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"cid" => "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"]);
|
||||
}
|
||||
|
||||
$client = Clients::showClientById($cid);
|
||||
if (count($client) < 1) {
|
||||
$apiResp = Responses::not_found("client not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$user = Users::getUserByClientId($cid);
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
Clients::updateClient($cid, [
|
||||
"dlt" => $now,
|
||||
"dlt_by" => $req->auth->uid,
|
||||
]);
|
||||
|
||||
// delete the client credentials only
|
||||
if (count($user) > 0) {
|
||||
// Users::updateUser($user[0]->id, [
|
||||
// 'dlt' => $now,
|
||||
// 'dlt_by' => $req->auth->uid,
|
||||
// ]);
|
||||
}
|
||||
|
||||
// delete user group by this client
|
||||
Users::updateUsersByGroupClientId($client[0]->id, [
|
||||
"dlt" => $now,
|
||||
"dlt_by" => $req->auth->uid,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success("success delete client");
|
||||
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_show_client_pt(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"cptid" => $req->cptid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"cptid" => "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"]);
|
||||
}
|
||||
|
||||
$client = Clients::showClientById($req->cptid);
|
||||
if (count($client) < 1) {
|
||||
$apiResp = Responses::not_found("client not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if ($client[0]->user_id) {
|
||||
$client[0]->c_credentials = Clients::CCREDENTIALS_CREATE;
|
||||
} else {
|
||||
$client[0]->c_credentials = Clients::CCREDENTIALS_NOT;
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success get detail client");
|
||||
$apiResp["data"] = $client[0];
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
387
app/Http/Controllers/ConfRateController.php
Executable file
387
app/Http/Controllers/ConfRateController.php
Executable file
@ -0,0 +1,387 @@
|
||||
<?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 Hidehalo\Nanoid\GeneratorInterface as NanoidInterface;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\ConfRates;
|
||||
use App\Models\Region;
|
||||
use App\Models\ConfTruckTypes;
|
||||
use App\Models\Users;
|
||||
|
||||
class ConfRateController extends Controller
|
||||
{
|
||||
/**
|
||||
* View
|
||||
*/
|
||||
|
||||
public function view_rates(Request $req)
|
||||
{
|
||||
$data = [
|
||||
'lanes' => 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']));
|
||||
}
|
||||
}
|
||||
}
|
||||
321
app/Http/Controllers/ConfTruckTypeController.php
Executable file
321
app/Http/Controllers/ConfTruckTypeController.php
Executable file
@ -0,0 +1,321 @@
|
||||
<?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 Hidehalo\Nanoid\GeneratorInterface as NanoidInterface;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\ConfRates;
|
||||
use App\Models\ConfTruckTypes;
|
||||
use App\Models\Vehicles;
|
||||
|
||||
class ConfTruckTypeController extends Controller
|
||||
{
|
||||
/**
|
||||
* View
|
||||
*/
|
||||
|
||||
public function view_truck_types(Request $req)
|
||||
{
|
||||
$data = [];
|
||||
|
||||
return view('menu_v1.configs.truck_types', $data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_truck_types(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 = ConfTruckTypes::listTruckTypes();
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list truck types');
|
||||
$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_truck_type(Request $req, $ttid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'ttid' => $ttid,
|
||||
];
|
||||
$rulesInput = [
|
||||
'ttid' => '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']);
|
||||
}
|
||||
|
||||
$truckType = ConfTruckTypes::showTruckTypeById($ttid);
|
||||
if (count($truckType) < 1) {
|
||||
$apiResp = Responses::not_found('truck type not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get detail truck type');
|
||||
$apiResp['data'] = $truckType[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_truck_type(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'type_name' => $req->type_name,
|
||||
'max_kg' => $req->max_kg,
|
||||
'max_cbm' => $req->max_cbm,
|
||||
'max_koli' => $req->max_koli,
|
||||
'status' => $req->status,
|
||||
'publish' => $req->publish,
|
||||
];
|
||||
$rulesInput = [
|
||||
'type_name' => 'required|string',
|
||||
'max_kg' => 'nullable|numeric|min:0',
|
||||
'max_cbm' => 'nullable|numeric|min:0',
|
||||
'max_koli' => 'nullable|numeric|min:0',
|
||||
'status' => 'required|numeric|min:0',
|
||||
'publish' => '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']);
|
||||
}
|
||||
|
||||
$uniqName = ConfTruckTypes::getTruckTypeByName($req->type_name);
|
||||
if (count($uniqName) > 0) {
|
||||
$apiResp = Responses::bad_request('type name has been used');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$type_id = ConfTruckTypes::addTypes([
|
||||
'cat_id' => Vehicles::DEFAULT_CAT_ID,
|
||||
'name' => $req->type_name,
|
||||
'desc' => $req->type_name,
|
||||
'is_active' => $req->status,
|
||||
'is_publish' => $req->publish,
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
$insTruckType = [
|
||||
'type_id' => $type_id,
|
||||
'max_kg' => $req->max_kg ?? 0,
|
||||
'max_cbm' => $req->max_cbm ?? 0,
|
||||
'max_koli' => $req->max_koli ?? 0,
|
||||
'is_active' => $req->status,
|
||||
'is_publish' => $req->publish,
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$ttid = ConfTruckTypes::addTruckType($insTruckType);
|
||||
|
||||
$apiResp = Responses::created('success add new truck type');
|
||||
|
||||
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_truck_type(Request $req, $ttid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'ttid' => $ttid,
|
||||
'type_name' => $req->type_name,
|
||||
'max_kg' => $req->max_kg,
|
||||
'max_cbm' => $req->max_cbm,
|
||||
'max_koli' => $req->max_koli,
|
||||
'status' => $req->status,
|
||||
'publish' => $req->publish,
|
||||
];
|
||||
$rulesInput = [
|
||||
'ttid' => 'required|integer|not_in:0',
|
||||
'type_name' => 'required|string',
|
||||
'max_kg' => 'nullable|numeric|min:0',
|
||||
'max_cbm' => 'nullable|numeric|min:0',
|
||||
'max_koli' => 'nullable|numeric|min:0',
|
||||
'status' => 'required|numeric|min:0',
|
||||
'publish' => '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']);
|
||||
}
|
||||
|
||||
$truckType = ConfTruckTypes::showTruckTypeById($ttid);
|
||||
if (count($truckType) < 1) {
|
||||
$apiResp = Responses::not_found('truck type not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$uniqName = ConfTruckTypes::getTruckTypeByName($req->type_name);
|
||||
if (count($uniqName) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqName as $key => $row) {
|
||||
if ($row->id == $ttid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request('type name has been used');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
|
||||
if ($req->status == ConfTruckTypes::IS_INACTIVE) {
|
||||
$checkVhcType = ConfRates::checkVhcType($truckType[0]->type_id);
|
||||
if (count($checkVhcType) > 0) {
|
||||
$apiResp = Responses::bad_request('cannot change to inactive, still connected on rates');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
ConfTruckTypes::updtTypes($truckType[0]->type_id, [
|
||||
'name' => $req->type_name,
|
||||
'desc' => $req->type_name,
|
||||
'is_active' => $req->status,
|
||||
'is_publish' => $req->publish,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
$insTruckType = [
|
||||
'type_id' => $truckType[0]->type_id,
|
||||
'max_kg' => $req->max_kg ?? 0,
|
||||
'max_cbm' => $req->max_cbm ?? 0,
|
||||
'max_koli' => $req->max_koli ?? 0,
|
||||
'is_active' => $req->status,
|
||||
'is_publish' => $req->publish,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$ttid = ConfTruckTypes::updateTruckType($ttid, $insTruckType);
|
||||
|
||||
$apiResp = Responses::created('success update truck type');
|
||||
|
||||
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_truck_type(Request $req, $ttid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'ttid' => $ttid,
|
||||
];
|
||||
$rulesInput = [
|
||||
'ttid' => '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']);
|
||||
}
|
||||
|
||||
$truckType = ConfTruckTypes::showTruckTypeById($ttid);
|
||||
if (count($truckType) < 1) {
|
||||
$apiResp = Responses::not_found('truck type not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$checkVhcType = ConfRates::checkVhcType($truckType[0]->type_id);
|
||||
if (count($checkVhcType) > 0) {
|
||||
$apiResp = Responses::bad_request('cannot delete, still connected on rates');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
ConfTruckTypes::updtTypes($truckType[0]->type_id, [
|
||||
'dlt' => $now,
|
||||
'dlt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
ConfTruckTypes::updateTruckType($ttid, [
|
||||
'dlt' => $now,
|
||||
'dlt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success('success delete truck type');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
13
app/Http/Controllers/Controller.php
Executable file
13
app/Http/Controllers/Controller.php
Executable file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Illuminate\Routing\Controller as BaseController;
|
||||
|
||||
class Controller extends BaseController
|
||||
{
|
||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
||||
}
|
||||
85
app/Http/Controllers/DanaController.php
Executable file
85
app/Http/Controllers/DanaController.php
Executable file
@ -0,0 +1,85 @@
|
||||
<?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\Dana;
|
||||
|
||||
class DanaController extends Controller
|
||||
{
|
||||
/**
|
||||
* View
|
||||
*/
|
||||
|
||||
public function view_dana(Request $req)
|
||||
{
|
||||
$data = [
|
||||
'dana' => Dana::getDanaById(Dana::PK_ID)[0],
|
||||
];
|
||||
|
||||
$data['dana']->amt = number_format($data['dana']->amt, 0, ',', '.');
|
||||
|
||||
return view('menu_v2.Finance._dana', $data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_edit_dana(Request $req, $dana_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'dana_id' => $dana_id,
|
||||
'saldo' => $req->amt,
|
||||
];
|
||||
$rulesInput = [
|
||||
'dana_id' => 'required|integer|not_in:0',
|
||||
'saldo' => 'required|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']);
|
||||
}
|
||||
|
||||
$dana = Dana::getDanaById(Dana::PK_ID);
|
||||
if (count($dana) < 1) {
|
||||
$apiResp = Responses::not_found('Dana not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
if ($input['saldo'] < Dana::MINIMUM_AMT) {
|
||||
$apiResp = Responses::bad_request('Minimum saldo dana Rp'.number_format(Dana::MINIMUM_AMT, 0, ',', '.'));
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$updtDana = [
|
||||
'amt' => $input['saldo'],
|
||||
];
|
||||
Dana::updateDana($input['dana_id'], $updtDana);
|
||||
|
||||
$apiResp = Responses::success('success update dana');
|
||||
|
||||
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']));
|
||||
}
|
||||
}
|
||||
}
|
||||
91
app/Http/Controllers/DataTypesController.php
Executable file
91
app/Http/Controllers/DataTypesController.php
Executable file
@ -0,0 +1,91 @@
|
||||
<?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\DataTypes;
|
||||
|
||||
class DataTypesController extends Controller
|
||||
{
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_dtypes(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$input = [
|
||||
'is_active' => $req->is_active,
|
||||
];
|
||||
$rulesInput = [
|
||||
'is_active' => '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']);
|
||||
}
|
||||
$filter = [];
|
||||
if ($input['is_active'] != null && $input['is_active'] != 0) {
|
||||
$filter['is_active'] = $input['is_active'];
|
||||
}
|
||||
|
||||
$list = DataTypes::listDataTypes($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list data types');
|
||||
$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_dtypes(Request $req, $dtypes_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'dtypes_id' => $dtypes_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'dtypes_id' => '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']);
|
||||
}
|
||||
|
||||
$lgb_key = DataTypes::showDataType(['dtypes_id' => $dtypes_id]);
|
||||
if (count($lgb_key) < 1) {
|
||||
$apiResp = Responses::not_found('data type key not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get detail data type key');
|
||||
$apiResp['data'] = $lgb_key[0];
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
407
app/Http/Controllers/DevicesController.php
Executable file
407
app/Http/Controllers/DevicesController.php
Executable file
@ -0,0 +1,407 @@
|
||||
<?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\Devices;
|
||||
use App\Models\Vehicles;
|
||||
|
||||
class DevicesController extends Controller
|
||||
{
|
||||
public function view_devices(Request $req)
|
||||
{
|
||||
$vhcs = Vehicles::listVehicles($req->auth);
|
||||
$data = [
|
||||
'vhcs' => $vhcs,
|
||||
];
|
||||
return view('menu_v1.configs.devices', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_devices(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 = Devices::listDevices();
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
if ($row->vhc_id == null) {
|
||||
$list[$key]->is_idle = 'yes';
|
||||
} else {
|
||||
$list[$key]->is_idle = 'no';
|
||||
}
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list devices');
|
||||
$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_device(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'id' => $id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'id' => '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']);
|
||||
}
|
||||
|
||||
$device = Devices::showDeviceById($id);
|
||||
if (count($device) < 1) {
|
||||
$apiResp = Responses::not_found('device not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get detail device');
|
||||
$apiResp['data'] = $device[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_device(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'device_id' => $req->device_id,
|
||||
'name' => $req->name,
|
||||
'simcard' => $req->simcard,
|
||||
'type' => $req->type,
|
||||
'status' => $req->status,
|
||||
'assigned' => $req->assigned,
|
||||
'vid' => $req->vid,
|
||||
'available' => $req->available,
|
||||
];
|
||||
$rulesInput = [
|
||||
'device_id' => 'required|numeric',
|
||||
'name' => 'required|string',
|
||||
'simcard' => 'required|numeric',
|
||||
'type' => 'required|integer|not_in:0',
|
||||
'status' => 'required|numeric|min:0',
|
||||
'assigned' => 'required|numeric',
|
||||
'vid' => 'nullable|numeric',
|
||||
'available' => 'required|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']);
|
||||
}
|
||||
|
||||
$device_id = str_pad($req->device_id, Devices::MAX_DEVICE_ID, '0', STR_PAD_LEFT);
|
||||
if (strlen($device_id) > 16) {
|
||||
$apiResp = Responses::bad_request('device id maksimal 16 digit');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
if (strlen($req->simcard) > 14) {
|
||||
$apiResp = Responses::bad_request('simcard maksimal 14 digit');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$uniqDeviceId = Devices::getDeviceByDeviceId($device_id);
|
||||
if (count($uniqDeviceId) > 0) {
|
||||
$apiResp = Responses::bad_request('device id has been used');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
$uniqSimcard = Devices::getDeviceBySimcard($req->simcard);
|
||||
if (count($uniqSimcard) > 0) {
|
||||
$apiResp = Responses::bad_request('simcard has been used');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$insDevice = [
|
||||
'device_id' => $device_id,
|
||||
'name' => $req->name,
|
||||
'simcard' => (int)$req->simcard,
|
||||
'type' => $req->type,
|
||||
'is_active' => $req->status,
|
||||
'is_assigned' => $req->assigned,
|
||||
'is_available' => $req->available,
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$id = Devices::addDevice($insDevice);
|
||||
|
||||
if ($req->assigned == Devices::IS_ASSIGNED) {
|
||||
if ($req->vid == null || $req->vid == "") {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request('kendaraan belum dipilih');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
$vhc = Vehicles::getVehicleByDeviceId($device_id);
|
||||
if (count($vhc) > 0) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request('kendaraan sudah dipasang oleh device id ' . $vhc[0]->device_id);
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
$vhc = Vehicles::getVehicleById($req->vid);
|
||||
if (count($vhc) > 0 && $vhc[0]->dvc_id !== 0 && $vhc[0]->device_id !== $device_id) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request('kendaraan sudah dipasang oleh device id ' . $vhc[0]->device_id);
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
$vid = $req->vid;
|
||||
Vehicles::updateVehicle($vid, [
|
||||
'dvc_id' => $id,
|
||||
'device_id' => $device_id,
|
||||
'simcard' => (int)$req->simcard,
|
||||
]);
|
||||
} else {
|
||||
$vid = 0;
|
||||
}
|
||||
|
||||
$apiResp = Responses::created('success add new device');
|
||||
|
||||
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_updt_device(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'id' => $id,
|
||||
'device_id' => $req->device_id,
|
||||
'name' => $req->name,
|
||||
'simcard' => $req->simcard,
|
||||
'type' => $req->type,
|
||||
'status' => $req->status,
|
||||
'assigned' => $req->assigned,
|
||||
'vid' => $req->vid,
|
||||
'available' => $req->available,
|
||||
];
|
||||
$rulesInput = [
|
||||
'id' => 'required|integer|not_in:0',
|
||||
'device_id' => 'required|numeric',
|
||||
'name' => 'required|string',
|
||||
'simcard' => 'required|numeric',
|
||||
'type' => 'required|integer|not_in:0',
|
||||
'status' => 'required|numeric',
|
||||
'assigned' => 'required|numeric',
|
||||
'vid' => 'nullable|numeric',
|
||||
'available' => 'required|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']);
|
||||
}
|
||||
|
||||
$device = Devices::showDeviceById($id);
|
||||
if (count($device) < 1) {
|
||||
$apiResp = Responses::not_found('device not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$device_id = str_pad($req->device_id, Devices::MAX_DEVICE_ID, '0', STR_PAD_LEFT);
|
||||
if (strlen($device_id) > 16) {
|
||||
$apiResp = Responses::bad_request('device id maksimal 16 digit');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
if (strlen($req->simcard) > 14) {
|
||||
$apiResp = Responses::bad_request('simcard maksimal 14 digit');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$uniqDeviceId = Devices::getDeviceByDeviceId($device_id);
|
||||
if (count($uniqDeviceId) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqDeviceId as $key => $row) {
|
||||
if ($row->id == $id) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request('device id has been used');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
$uniqSimcard = Devices::getDeviceBySimcard($req->simcard);
|
||||
if (count($uniqSimcard) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqSimcard as $key => $row) {
|
||||
if ($row->id == $id) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request('simcard has been used');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
|
||||
if ($req->status == Devices::IS_INACTIVE) {
|
||||
$isUsed = Vehicles::getVehicleByDeviceId($device_id);
|
||||
if (count($isUsed) > 0) {
|
||||
$apiResp = Responses::bad_request('tidak dapat mengubah menjadi nonaktif, device sedang digunakan');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
if ($device[0]->vhc_id) {
|
||||
Vehicles::updateVehicle($device[0]->vhc_id, [
|
||||
'dvc_id' => 0,
|
||||
'device_id' => str_pad(0, Devices::MAX_DEVICE_ID, '0', STR_PAD_LEFT),
|
||||
'simcard' => 0,
|
||||
]);
|
||||
}
|
||||
|
||||
if ($req->assigned == Devices::IS_ASSIGNED) {
|
||||
if ($req->vid == null || $req->vid == "") {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request('kendaraan belum dipilih');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
$vhc = Vehicles::getVehicleById($req->vid);
|
||||
if (count($vhc) > 0 && $vhc[0]->dvc_id !== 0 && $vhc[0]->device_id !== $device_id) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request('kendaraan sudah dipasang dengan device id ' . $vhc[0]->device_id);
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
$vid = $req->vid;
|
||||
Vehicles::updateVehicle($vid, [
|
||||
'dvc_id' => $id,
|
||||
'device_id' => $device_id,
|
||||
'simcard' => (int)$req->simcard,
|
||||
]);
|
||||
} else {
|
||||
$vhc = Vehicles::getVehicleByDeviceId($device_id);
|
||||
if (count($vhc) > 0) {
|
||||
$vid = $vhc[0]->id;
|
||||
Vehicles::updateVehicle($vid, [
|
||||
'dvc_id' => 0,
|
||||
'device_id' => str_pad(0, Devices::MAX_DEVICE_ID, '0', STR_PAD_LEFT),
|
||||
'simcard' => 0,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
$updtDevice = [
|
||||
'device_id' => $req->device_id,
|
||||
'name' => $req->name,
|
||||
'simcard' => (int)$req->simcard,
|
||||
'type' => $req->type,
|
||||
'is_active' => $req->status,
|
||||
'is_assigned' => $req->assigned,
|
||||
'is_available' => $req->available,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
Devices::updateDevice($id, $updtDevice);
|
||||
|
||||
$apiResp = Responses::created('success update device');
|
||||
|
||||
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_device(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'id' => $id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'id' => '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']);
|
||||
}
|
||||
|
||||
$device = Devices::showDeviceById($id);
|
||||
if (count($device) < 1) {
|
||||
$apiResp = Responses::not_found('device not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$isUsed = Vehicles::getVehicleByDeviceId($device[0]->device_id);
|
||||
if (count($isUsed) > 0) {
|
||||
$apiResp = Responses::bad_request('tidak dapat menghapus, device sedang digunakan');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
Devices::updateDevice($id, [
|
||||
'dlt' => $now,
|
||||
'dlt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success('success delete device');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
678
app/Http/Controllers/DriversController.php
Executable file
678
app/Http/Controllers/DriversController.php
Executable file
@ -0,0 +1,678 @@
|
||||
<?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 Illuminate\Support\Facades\Hash;
|
||||
use Validator;
|
||||
use Auth;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\Drivers;
|
||||
use App\Models\DriversDetail;
|
||||
use App\Models\Users;
|
||||
use App\Models\DrvPhoneDevices;
|
||||
|
||||
class DriversController extends Controller
|
||||
{
|
||||
public function api_list_drivers(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;
|
||||
}
|
||||
$list = Drivers::listDrivers($req->auth, $filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->mileage_km = "-";
|
||||
$list[$key]->action = "-";
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success list drivers");
|
||||
$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_driver(Request $req, $did)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"did" => $did,
|
||||
];
|
||||
$rulesInput = [
|
||||
"did" => "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"]);
|
||||
}
|
||||
|
||||
$driver = Drivers::showDriverById($did);
|
||||
if (count($driver) < 1) {
|
||||
$apiResp = Responses::not_found("driver not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success get detail driver");
|
||||
$apiResp["data"] = $driver[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_driver(Request $req)
|
||||
{
|
||||
$url_ktp = "";
|
||||
$url_npwp = "";
|
||||
$url_license = "";
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"ktp_photo" => $req->ktp_base64,
|
||||
"nik" => $req->nik,
|
||||
"fullname" => $req->fullname,
|
||||
"fullname2" => $req->fullname2,
|
||||
"phone" => $req->phone,
|
||||
"phone2" => $req->phone2,
|
||||
"email" => $req->email,
|
||||
"date_of_birth" => $req->dob,
|
||||
"age" => $req->age,
|
||||
"blood" => $req->blood,
|
||||
"home_address" => $req->fulladdress,
|
||||
"npwp_photo" => $req->npwp_base64,
|
||||
"npwp_number" => $req->npwp_string,
|
||||
"npwp_number_hidden" => $req->npwp_number,
|
||||
"license_photo" => $req->license_base64,
|
||||
"license_number" => $req->license_number,
|
||||
"license_exp" => $req->license_exp,
|
||||
"emergency_fullname" => $req->em_fullname,
|
||||
"emergency_relationship" => $req->em_relationship,
|
||||
"emergency_phone" => $req->em_phone,
|
||||
"bank_id" => $req->bank_id,
|
||||
"bank_code" => $req->bank_code,
|
||||
"bank_short" => $req->bank_short,
|
||||
"bank_name" => $req->bank_name,
|
||||
"bank_kcp" => $req->bank_branch_name,
|
||||
"bank_acc_number" => $req->bank_acc_number,
|
||||
"bank_acc_name" => $req->bank_acc_name,
|
||||
"vendor_id" => Auth::user()->id,
|
||||
];
|
||||
$rulesInput = [
|
||||
"ktp_photo" => "nullable|string", // required
|
||||
"nik" => "nullable|integer", // required
|
||||
"fullname" => "required|string|min:3|max:125",
|
||||
"fullname2" => "nullable|string",
|
||||
"phone" => "required|integer|not_in:0",
|
||||
"phone2" => "nullable|integer|not_in:0",
|
||||
"email" => "nullable|email", // required
|
||||
"date_of_birth" => "nullable|date_format:Y-m-d", // required
|
||||
"age" => "nullable|integer", // required
|
||||
"blood" => "nullable|string|max:4", // required
|
||||
"home_address" => "nullable|string|min:25", // required
|
||||
"npwp_photo" => "nullable|string", // required
|
||||
"npwp_number" => "nullable|string", // required
|
||||
"npwp_number_hidden" => "nullable|numeric", // required
|
||||
"license_photo" => "nullable|string", // required
|
||||
"license_number" => "nullable|numeric", // required
|
||||
"license_exp" => "nullable|date_format:Y-m-d", // required
|
||||
"emergency_fullname" => "nullable|string|min:3", // required
|
||||
"emergency_relationship" => "nullable|string", // required
|
||||
"emergency_phone" => "nullable|integer|not_in:0", // required
|
||||
"bank_id" => "required|integer|not_in:0",
|
||||
"bank_code" => "required|numeric",
|
||||
"bank_short" => "required|string",
|
||||
"bank_name" => "required|string",
|
||||
"bank_kcp" => "nullable|string",
|
||||
"bank_acc_number" => "nullable|numeric", // required
|
||||
"bank_acc_name" => "nullable|string|max:255", // required
|
||||
"vendor_id" => "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->nik && strlen($req->nik) != 16) {
|
||||
$apiResp = Responses::bad_input("nik must be 16 digit");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
if ($req->license_number && strlen($req->license_number) < 12) {
|
||||
$apiResp = Responses::bad_input("license number must be at least 12 digit");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if ($req->nik) {
|
||||
$uniqNik = Drivers::getDriverByNik($req->nik);
|
||||
if (count($uniqNik) > 0) {
|
||||
$apiResp = Responses::bad_request("nik has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
if ($req->phone) {
|
||||
$uniqPhone = Drivers::getDriverByPhone($req->phone);
|
||||
if (count($uniqPhone) > 0) {
|
||||
$apiResp = Responses::bad_request("phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
if ($req->email) {
|
||||
$uniqEmail = Drivers::getDriverByEmail($req->email);
|
||||
if (count($uniqEmail) > 0) {
|
||||
$apiResp = Responses::bad_request("email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$insDriver = [
|
||||
"nik" => $req->nik ? $req->nik : 0,
|
||||
"fullname" => $req->fullname,
|
||||
"email" => $req->email,
|
||||
"fullname2" => $req->fullname2,
|
||||
"phone" => $req->phone,
|
||||
"phone_code" => Drivers::DEFAULT_PHONE_CODE,
|
||||
"phone2" => $req->phone2 ?? 0,
|
||||
"phone2_code" => Drivers::DEFAULT_PHONE_CODE,
|
||||
"dob" => $req->dob,
|
||||
"age" => $req->age ? $req->age : 0,
|
||||
"blood" => $req->blood,
|
||||
"fulladdress" => $req->fulladdress,
|
||||
"client_group_id" => $req->auth->client_group_id ?? null,
|
||||
"crt" => $now,
|
||||
"crt_by" => $req->auth->uid,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
if ($req->auth->role == Users::ROLE_VENDOR) {
|
||||
$insDriver["vendor_id"] = $req->auth->uid;
|
||||
} else {
|
||||
$insDriver["vendor_id"] = Auth::user()->id ?? 0;
|
||||
}
|
||||
$did = Drivers::addDriver($insDriver);
|
||||
|
||||
if ($req->ktp_base64) {
|
||||
$url_ktp = "drivers/$did/ktp_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_ktp, base64_decode($req->ktp_base64))) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload ktp photo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
if ($req->npwp_base64) {
|
||||
$url_npwp = "drivers/$did/npwp_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_npwp, base64_decode($req->npwp_base64))) {
|
||||
Storage::disk("public")->delete($url_ktp);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload npwp photo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
if ($req->license_base64) {
|
||||
$url_license = "drivers/$did/license_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_license, base64_decode($req->license_base64))) {
|
||||
Storage::disk("public")->delete($url_ktp);
|
||||
Storage::disk("public")->delete($url_npwp);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload license photo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
$insDetail = [
|
||||
"did" => $did,
|
||||
"ktp_img" => $url_ktp ? $url_ktp : "",
|
||||
"npwp_img" => $url_npwp ? $url_npwp : "",
|
||||
"npwp_string" => $req->npwp_string,
|
||||
"npwp_number" => $req->npwp_number,
|
||||
"license_img" => $url_license ? $url_license : "",
|
||||
"license_number" => $req->license_number,
|
||||
"license_exp" => $req->license_exp,
|
||||
"em_fullname" => $req->em_fullname,
|
||||
"em_phone" => $req->em_phone,
|
||||
"em_relationship" => $req->em_relationship,
|
||||
"bank_id" => $req->bank_id,
|
||||
"bank_code" => $req->bank_code,
|
||||
"bank_short_name" => $req->bank_short,
|
||||
"bank_name" => $req->bank_name,
|
||||
"bank_branch_name" => $req->bank_branch_name,
|
||||
"bank_acc_number" => $req->bank_acc_number,
|
||||
"bank_acc_name" => $req->bank_acc_name,
|
||||
];
|
||||
DriversDetail::addDetail($insDetail);
|
||||
|
||||
$insAccount = [
|
||||
"client_id" => Auth::user()->client_id,
|
||||
"client_group_id" => Auth::user()->client_group_id,
|
||||
"first_name" => $req->fullname,
|
||||
"last_name" => null,
|
||||
"email" => $req->email,
|
||||
"phone" => $req->phone,
|
||||
"phone_code" => Users::DEFAULT_PHONE_CODE,
|
||||
"fulladdress" => $req->fulladdress,
|
||||
"password" => Hash::make("0" . $req->phone),
|
||||
"role" => Users::ROLE_VENDOR_DRIVER,
|
||||
"is_driver" => 1,
|
||||
"status" => 1,
|
||||
"crt" => $now,
|
||||
"crt_by" => $req->auth->uid,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
Users::addUser($insAccount);
|
||||
|
||||
$apiResp = Responses::created("success add new driver");
|
||||
|
||||
DB::commit();
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
Storage::disk("public")->delete($url_ktp);
|
||||
Storage::disk("public")->delete($url_npwp);
|
||||
Storage::disk("public")->delete($url_license);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
public function api_edit_driver(Request $req, $did)
|
||||
{
|
||||
$url_ktp = "";
|
||||
$url_npwp = "";
|
||||
$url_license = "";
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"did" => $did,
|
||||
"ktp_photo" => $req->ktp_base64,
|
||||
"nik" => $req->nik,
|
||||
"fullname" => $req->fullname,
|
||||
"fullname2" => $req->fullname2,
|
||||
"phone" => $req->phone,
|
||||
"phone2" => $req->phone2,
|
||||
"email" => $req->email,
|
||||
"date_of_birth" => $req->dob,
|
||||
"age" => $req->age,
|
||||
"blood" => $req->blood,
|
||||
"home_address" => $req->fulladdress,
|
||||
"npwp_photo" => $req->npwp_base64,
|
||||
"npwp_number" => $req->npwp_string,
|
||||
"npwp_number_hidden" => $req->npwp_number,
|
||||
"license_photo" => $req->license_base64,
|
||||
"license_number" => $req->license_number,
|
||||
"license_exp" => $req->license_exp,
|
||||
"emergency_fullname" => $req->em_fullname,
|
||||
"emergency_relationship" => $req->em_relationship,
|
||||
"emergency_phone" => $req->em_phone,
|
||||
"bank_id" => $req->bank_id,
|
||||
"bank_code" => $req->bank_code,
|
||||
"bank_short" => $req->bank_short,
|
||||
"bank_name" => $req->bank_name,
|
||||
"bank_kcp" => $req->bank_branch_name,
|
||||
"bank_acc_number" => $req->bank_acc_number,
|
||||
"bank_acc_name" => $req->bank_acc_name,
|
||||
"vendor_id" => Auth::user()->id,
|
||||
];
|
||||
$rulesInput = [
|
||||
"did" => "required|integer|not_in:0",
|
||||
"ktp_photo" => "nullable|string",
|
||||
"nik" => "required|integer",
|
||||
"fullname" => "nullable|string|min:3|max:125", // required
|
||||
"fullname2" => "nullable|string",
|
||||
"phone" => "required|integer|not_in:0",
|
||||
"phone2" => "nullable|integer|not_in:0",
|
||||
"email" => "nullable|email", // required
|
||||
"date_of_birth" => "nullable|date_format:Y-m-d", // required
|
||||
"age" => "nullable|integer", // required
|
||||
"blood" => "nullable|string|max:4", // required
|
||||
"home_address" => "nullable|string|min:25", // required
|
||||
"npwp_photo" => "nullable|string",
|
||||
"npwp_number" => "nullable|string", // required
|
||||
"npwp_number_hidden" => "nullable|numeric", // required
|
||||
"license_photo" => "nullable|string",
|
||||
"license_number" => "nullable|numeric", // required
|
||||
"license_exp" => "nullable|date_format:Y-m-d", // required
|
||||
"emergency_fullname" => "nullable|string|min:3", // required
|
||||
"emergency_relationship" => "nullable|string", // required
|
||||
"emergency_phone" => "nullable|integer|not_in:0", // required
|
||||
"bank_id" => "required|integer|not_in:0", // required
|
||||
"bank_code" => "required|numeric",
|
||||
"bank_short" => "required|string",
|
||||
"bank_name" => "required|string",
|
||||
"bank_kcp" => "nullable|string",
|
||||
"bank_acc_number" => "required|numeric",
|
||||
"bank_acc_name" => "required|string|max:255",
|
||||
"vendor_id" => "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->nik && strlen($req->nik) != 16) {
|
||||
$apiResp = Responses::bad_input("nik must be 16 digit");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
if ($req->license_number && strlen($req->license_number) < 12) {
|
||||
$apiResp = Responses::bad_input("license number must be at least 12 digit");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$driver = Drivers::showDriverById($did);
|
||||
if (count($driver) < 1) {
|
||||
$apiResp = Responses::not_found("driver not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if ($req->nik) {
|
||||
$uniqNik = Drivers::getDriverByNik($req->nik);
|
||||
if (count($uniqNik) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqNik as $key => $row) {
|
||||
if ($row->id == $did) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("nik has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($req->phone) {
|
||||
$uniqPhone = Drivers::getDriverByPhone($req->phone);
|
||||
if (count($uniqPhone) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqPhone as $key => $row) {
|
||||
if ($row->id == $did) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($req->email) {
|
||||
$uniqEmail = Drivers::getDriverByEmail($req->email);
|
||||
if (count($uniqEmail) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqEmail as $key => $row) {
|
||||
if ($row->id == $did) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$updtDriver = [
|
||||
"nik" => $req->nik ? $req->nik : 0,
|
||||
"fullname" => $req->fullname,
|
||||
"email" => $req->email,
|
||||
"fullname2" => $req->fullname2,
|
||||
"phone" => $req->phone,
|
||||
"phone_code" => Drivers::DEFAULT_PHONE_CODE,
|
||||
"phone2" => $req->phone2 ?? 0,
|
||||
"phone2_code" => Drivers::DEFAULT_PHONE_CODE,
|
||||
"dob" => $req->dob,
|
||||
"age" => $req->age ? $req->age : 0,
|
||||
"blood" => $req->blood,
|
||||
"fulladdress" => $req->fulladdress,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
if ($req->auth->role == Users::ROLE_VENDOR) {
|
||||
$updtDriver["vendor_id"] = $req->auth->uid;
|
||||
} else {
|
||||
$updtDriver["vendor_id"] = Auth::user()->id ?? 0;
|
||||
}
|
||||
Drivers::updateDriver($did, $updtDriver);
|
||||
|
||||
if ($req->ktp_base64) {
|
||||
$url_ktp = "drivers/$did/ktp_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_ktp, base64_decode($req->ktp_base64))) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload ktp photo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
Storage::disk("public")->delete($driver[0]->ktp_img);
|
||||
}
|
||||
if ($req->npwp_base64) {
|
||||
$url_npwp = "drivers/$did/npwp_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_npwp, base64_decode($req->npwp_base64))) {
|
||||
Storage::disk("public")->delete($url_ktp);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload npwp photo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
Storage::disk("public")->delete($driver[0]->npwp_img);
|
||||
}
|
||||
if ($req->license_base64) {
|
||||
$url_license = "drivers/$did/license_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_license, base64_decode($req->license_base64))) {
|
||||
Storage::disk("public")->delete($url_ktp);
|
||||
Storage::disk("public")->delete($url_npwp);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload license photo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
Storage::disk("public")->delete($driver[0]->license_img);
|
||||
}
|
||||
|
||||
$updtDetail = [
|
||||
"npwp_string" => $req->npwp_string,
|
||||
"npwp_number" => $req->npwp_number,
|
||||
"license_number" => $req->license_number,
|
||||
"license_exp" => $req->license_exp,
|
||||
"em_fullname" => $req->em_fullname,
|
||||
"em_phone" => $req->em_phone,
|
||||
"em_relationship" => $req->em_relationship,
|
||||
"bank_id" => $req->bank_id,
|
||||
"bank_code" => $req->bank_code,
|
||||
"bank_short_name" => $req->bank_short,
|
||||
"bank_name" => $req->bank_name,
|
||||
"bank_branch_name" => $req->bank_branch_name,
|
||||
"bank_acc_number" => $req->bank_acc_number,
|
||||
"bank_acc_name" => $req->bank_acc_name,
|
||||
];
|
||||
if ($req->ktp_base64) {
|
||||
$updtDetail["ktp_img"] = $url_ktp;
|
||||
}
|
||||
if ($req->npwp_base64) {
|
||||
$updtDetail["npwp_img"] = $url_npwp;
|
||||
}
|
||||
if ($req->license_base64) {
|
||||
$updtDetail["license_img"] = $url_license;
|
||||
}
|
||||
DriversDetail::updateDetailByDid($did, $updtDetail);
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success("success update driver");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
Storage::disk("public")->delete($url_ktp);
|
||||
Storage::disk("public")->delete($url_npwp);
|
||||
Storage::disk("public")->delete($url_license);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
public function api_del_driver(Request $req, $did)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"did" => $did,
|
||||
];
|
||||
$rulesInput = [
|
||||
"did" => "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"]);
|
||||
}
|
||||
|
||||
$driver = Drivers::showDriverById($did);
|
||||
if (count($driver) < 1) {
|
||||
$apiResp = Responses::not_found("driver not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
Drivers::updateDriver($did, [
|
||||
"dlt" => $now,
|
||||
"dlt_by" => $req->auth->uid,
|
||||
]);
|
||||
|
||||
// Storage::disk('public')->delete($driver[0]->ktp_img);
|
||||
// Storage::disk('public')->delete($driver[0]->npwp_img);
|
||||
// Storage::disk('public')->delete($driver[0]->license_img);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success("success delete driver");
|
||||
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_search_driver_name(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"name" => $req->name,
|
||||
];
|
||||
$rulesInput = [
|
||||
"name" => "required|string|max:125",
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$drivers = Drivers::likeName($req->name);
|
||||
|
||||
if (count($drivers) < 1) {
|
||||
$apiResp = Responses::not_found("driver not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success search driver by name");
|
||||
$apiResp["data"] = $drivers;
|
||||
|
||||
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_reset_login_driver(Request $req, $did)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"did" => $did,
|
||||
];
|
||||
$rulesInput = [
|
||||
"did" => "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"]);
|
||||
}
|
||||
|
||||
$driver = Drivers::showDriverById($did);
|
||||
if (count($driver) < 1) {
|
||||
$apiResp = Responses::not_found("driver not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
DrvPhoneDevices::dltByOrdDrvId($did);
|
||||
|
||||
$_dtUpdate = [
|
||||
"phone" => $driver[0]->phone,
|
||||
"password" => Hash::make("0" . $driver[0]->phone),
|
||||
"updt" => $now,
|
||||
"updt_by" => Auth::user()->id,
|
||||
];
|
||||
DB::table("t_users")
|
||||
->where("email", $driver[0]->email)
|
||||
->where("status", 1)
|
||||
->whereNull("dlt")
|
||||
->update($_dtUpdate);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success("success reset login driver");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
233
app/Http/Controllers/DummyController.php
Executable file
233
app/Http/Controllers/DummyController.php
Executable file
@ -0,0 +1,233 @@
|
||||
<?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\Dummy;
|
||||
|
||||
class DummyController extends Controller
|
||||
{
|
||||
public function api_haversineGreatCircleDistance(Request $req)
|
||||
{
|
||||
try {
|
||||
$apiResp = Responses::success();
|
||||
$apiResp['data'] = [];
|
||||
|
||||
// round up with precisions digits = 4
|
||||
|
||||
// $distance == miles
|
||||
// $distance = Helper::haversineGreatCircleDistance($req->start_lat, $req->start_lng, $req->end_lat, $req->end_lng, Helper::EARTH_RADIUS_MILES);
|
||||
// $apiResp['data']['distance_in_km'] = round($distance*1.609, 4);
|
||||
// $apiResp['data']['distance_in_miles'] = round($distance, 4);
|
||||
// $apiResp['data']['distance_in_meters'] = round($distance*1609, 4);
|
||||
|
||||
// $distance == km
|
||||
// $distance = Helper::haversineGreatCircleDistance($req->start_lat, $req->start_lng, $req->end_lat, $req->end_lng, Helper::EARTH_RADIUS_KM);
|
||||
// $apiResp['data']['distance_in_km'] = round($distance, 4);
|
||||
// $apiResp['data']['distance_in_miles'] = round($distance/1.609, 4);
|
||||
// $apiResp['data']['distance_in_meters'] = round($distance*1000, 4);
|
||||
|
||||
// $distance == meters
|
||||
$distance = Helper::haversineGreatCircleDistance($req->start_lat, $req->start_lng, $req->end_lat, $req->end_lng, Helper::EARTH_RADIUS_M);
|
||||
$apiResp['data']['distance_in_km'] = round($distance / 1000, 4);
|
||||
$apiResp['data']['distance_in_miles'] = round($distance / 1609, 4);
|
||||
$apiResp['data']['distance_in_meters'] = round($distance, 4);
|
||||
|
||||
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_addBatchDummyTracks(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$apiResp = Responses::success();
|
||||
$batch_tracks = $req->batch_tracks;
|
||||
DB::beginTransaction();
|
||||
|
||||
foreach ($batch_tracks as $key => $val) {
|
||||
$batch_tracks[$key]['crt'] = $now;
|
||||
$now = strtotime('+2 seconds', $now);
|
||||
Dummy::addDummyTrack($batch_tracks[$key]);
|
||||
}
|
||||
$apiResp['data'] = $batch_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']));
|
||||
}
|
||||
}
|
||||
|
||||
public function api_getTracksBySeconds(Request $req)
|
||||
{
|
||||
try {
|
||||
$routes = Dummy::getByGpsId($req->gps_id);
|
||||
if (!isset($routes[0])) {
|
||||
$apiResp = Responses::not_found();
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
/**
|
||||
* ngebandingin dari row yg belum berbeda ke row berikutnya
|
||||
* jika data: 2,4,6,8,10
|
||||
* diff_sec: 2
|
||||
* results: 2,6,...
|
||||
* diff_sec: 4
|
||||
* results: 2,8,...
|
||||
* diff_sec: 6
|
||||
* results: 2,10,...
|
||||
*/
|
||||
// $start_now = strtotime('+'.$req->sec.' seconds', $routes[0]->crt);
|
||||
// $init_per_chunk = 0;
|
||||
// foreach ($routes as $key => $val) {
|
||||
// if ($init_per_chunk == 1) {
|
||||
// if ($val->crt >= $start_now) {
|
||||
// $start_now = strtotime('+'.$req->sec.' seconds', $routes[$key-1]->crt);
|
||||
// $init_per_chunk = 0;
|
||||
// }
|
||||
// continue;
|
||||
// }
|
||||
// $init_per_chunk = 1;
|
||||
// $chunk_by_sec[] = $val;
|
||||
// }
|
||||
|
||||
/**
|
||||
* ngebandingin dari row yg belum berbeda ke row berikutnya
|
||||
* jika data: 2,4,6,8,10,12,14
|
||||
* diff_sec: 2
|
||||
* results: 2,4,6,8
|
||||
* diff_sec: 4
|
||||
* results: 2,6,10
|
||||
* diff_sec: 6
|
||||
* results: 2,8,14
|
||||
*/
|
||||
$chunk_by_sec = [];
|
||||
$chunk_by_sec[] = $routes[0];
|
||||
foreach ($routes as $key => $val) {
|
||||
$diffSec = $val->crt - end($chunk_by_sec)->crt;
|
||||
if ($diffSec >= $req->sec) {
|
||||
$chunk_by_sec[] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
$apiResp = Responses::success();
|
||||
$apiResp['total'] = count($chunk_by_sec);
|
||||
$apiResp['data'] = $chunk_by_sec;
|
||||
|
||||
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_addDummyHub(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
DB::beginTransaction();
|
||||
|
||||
$input = [
|
||||
'name' => $req->name,
|
||||
'lat' => $req->lat,
|
||||
'lng' => $req->lng,
|
||||
'polygon' => $req->polygon,
|
||||
];
|
||||
$rulesInput = [
|
||||
'name' => 'required|string|max:45',
|
||||
'lat' => 'required',
|
||||
'lng' => 'required',
|
||||
'polygon' => 'required|array',
|
||||
'polygon.*.lat' => 'required',
|
||||
'polygon.*.lng' => 'required',
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
DB::rollBack();
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
}
|
||||
|
||||
/**
|
||||
* The axis order for coordinates in WKT is Cartesian, so (X Y) or (longitude latitude).
|
||||
* https://stackoverflow.com/questions/29315117/what-is-the-correct-mysql-polygon-format-for-latitude-and-longitude
|
||||
* https://stackoverflow.com/questions/5756232/moving-lat-lon-text-columns-into-a-point-type-column
|
||||
*/
|
||||
|
||||
$ins = [
|
||||
'name' => $req->name,
|
||||
'lat' => $req->lat,
|
||||
'lng' => $req->lng,
|
||||
'lnglat' => DB::raw("ST_GeomFromText('POINT($req->lng $req->lat)')"),
|
||||
'shape' => "ST_GeomFromText('MULTIPOINT(",
|
||||
];
|
||||
foreach ($req->polygon as $key => $val) {
|
||||
$ins['shape'] .= $val['lng'] . " " . $val['lat'].", ";
|
||||
}
|
||||
$ins['shape'] = substr($ins['shape'], 0, -2);
|
||||
$ins['shape'] .= ")')";
|
||||
$ins['shape'] = DB::raw($ins['shape']);
|
||||
// return (new Response($ins['shape'], 200));
|
||||
Dummy::addDummyHub($ins);
|
||||
|
||||
$apiResp = Responses::success();
|
||||
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_nearestHub(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'lat' => $req->lat,
|
||||
'lng' => $req->lng,
|
||||
];
|
||||
$rulesInput = [
|
||||
'lat' => 'required',
|
||||
'lng' => 'required',
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success();
|
||||
/**
|
||||
* The axis order for coordinates in WKT is Cartesian, so (X Y) or (longitude latitude).
|
||||
* https://stackoverflow.com/questions/29315117/what-is-the-correct-mysql-polygon-format-for-latitude-and-longitude
|
||||
* https://stackoverflow.com/questions/5756232/moving-lat-lon-text-columns-into-a-point-type-column
|
||||
*/
|
||||
|
||||
$apiResp['data'] = Dummy::nearestHubInCircle($req->lat, $req->lng);
|
||||
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
3599
app/Http/Controllers/FinanceController.php
Executable file
3599
app/Http/Controllers/FinanceController.php
Executable file
File diff suppressed because it is too large
Load Diff
37
app/Http/Controllers/HomeController.php
Executable file
37
app/Http/Controllers/HomeController.php
Executable file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
// public function __construct()
|
||||
// {
|
||||
// $this->middleware('auth');
|
||||
// }
|
||||
|
||||
/**
|
||||
* Show the application dashboard.
|
||||
*
|
||||
* @return \Illuminate\Contracts\Support\Renderable
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('home');
|
||||
}
|
||||
|
||||
public function check_redirect()
|
||||
{
|
||||
if (Auth::guest()) {
|
||||
return redirect(route('login'));
|
||||
}
|
||||
return redirect(route('view_dashboard'));
|
||||
}
|
||||
}
|
||||
513
app/Http/Controllers/InjectController.php
Executable file
513
app/Http/Controllers/InjectController.php
Executable file
@ -0,0 +1,513 @@
|
||||
<?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']));
|
||||
}
|
||||
}
|
||||
}
|
||||
254
app/Http/Controllers/InsuranceController.php
Executable file
254
app/Http/Controllers/InsuranceController.php
Executable file
@ -0,0 +1,254 @@
|
||||
<?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\Users;
|
||||
use App\Models\Clients;
|
||||
use App\Models\Insurances;
|
||||
|
||||
class InsuranceController extends Controller
|
||||
{
|
||||
public function view_insurances(Request $req)
|
||||
{
|
||||
return view('menu_v1.configs.insurances');
|
||||
}
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_insurances(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 = Insurances::listInsurances();
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list insurances');
|
||||
$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_insurance(Request $req, $iid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'iid' => $iid,
|
||||
];
|
||||
$rulesInput = [
|
||||
'iid' => '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']);
|
||||
}
|
||||
|
||||
$insurance = Insurances::showInsuranceById($iid);
|
||||
if (count($insurance) < 1) {
|
||||
$apiResp = Responses::not_found('insurance not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get detail insurance');
|
||||
$apiResp['data'] = $insurance[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_insurance(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'name' => $req->name,
|
||||
'desc' => $req->desc,
|
||||
'price' => $req->price,
|
||||
'min_price' => $req->min_price,
|
||||
'max_price' => $req->max_price,
|
||||
'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'name' => 'required|string',
|
||||
'desc' => 'nullable|string',
|
||||
'price' => 'required|numeric|min:0',
|
||||
'min_price' => 'required|numeric|min:0',
|
||||
'max_price' => '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']);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$insInsurance = [
|
||||
'premi_name' => $req->name,
|
||||
'desc' => $req->desc,
|
||||
'premi_price' => $req->price,
|
||||
'premi_min_price' => $req->min_price,
|
||||
'premi_max_price' => $req->max_price,
|
||||
'is_active' => $req->status,
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$iid = Insurances::addInsurance($insInsurance);
|
||||
|
||||
$apiResp = Responses::created('success add new insurance');
|
||||
|
||||
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_insurance(Request $req, $iid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'iid' => $iid,
|
||||
'name' => $req->name,
|
||||
'desc' => $req->desc,
|
||||
'price' => $req->price,
|
||||
'min_price' => $req->min_price,
|
||||
'max_price' => $req->max_price,
|
||||
'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'iid' => 'required|integer|not_in:0',
|
||||
'name' => 'required|string',
|
||||
'desc' => 'nullable|string',
|
||||
'price' => 'required|numeric|min:0',
|
||||
'min_price' => 'required|numeric|min:0',
|
||||
'max_price' => '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']);
|
||||
}
|
||||
|
||||
$insurance = Insurances::showInsuranceById($iid);
|
||||
if (count($insurance) < 1) {
|
||||
$apiResp = Responses::not_found('insurance not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$updtInsurance = [
|
||||
'premi_name' => $req->name,
|
||||
'desc' => $req->desc,
|
||||
'premi_price' => $req->price,
|
||||
'premi_min_price' => $req->min_price,
|
||||
'premi_max_price' => $req->max_price,
|
||||
'is_active' => $req->status,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
if ($req->dest_district) {
|
||||
$updtInsurance['dest_district'] = $req->dest_district;
|
||||
}
|
||||
$iid = Insurances::updateInsurance($iid, $updtInsurance);
|
||||
|
||||
$apiResp = Responses::created('success update insurance');
|
||||
|
||||
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_insurance(Request $req, $iid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'iid' => $iid,
|
||||
];
|
||||
$rulesInput = [
|
||||
'iid' => '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']);
|
||||
}
|
||||
|
||||
$insurance = Insurances::showInsuranceById($iid);
|
||||
if (count($insurance) < 1) {
|
||||
$apiResp = Responses::not_found('insurance not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
Insurances::updateInsurance($iid, [
|
||||
'dlt' => $now,
|
||||
'dlt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success('success delete insurance');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
312
app/Http/Controllers/LogbookKeysController.php
Executable file
312
app/Http/Controllers/LogbookKeysController.php
Executable file
@ -0,0 +1,312 @@
|
||||
<?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\LogbookTypes;
|
||||
use App\Models\LogbookKeys;
|
||||
use App\Models\DataTypes;
|
||||
|
||||
class LogbookKeysController extends Controller
|
||||
{
|
||||
/**
|
||||
* View
|
||||
*/
|
||||
|
||||
public function view_lgb_keys(Request $req)
|
||||
{
|
||||
$data = [
|
||||
'types' => LogbookTypes::listLgbTypes(['is_active' => LogbookTypes::IS_ACTIVE]),
|
||||
'dtypes' => DataTypes::listDataTypes(['is_active' => DataTypes::IS_ACTIVE]),
|
||||
];
|
||||
|
||||
return view('menu_v1.logbook_keys', $data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_lgb_keys(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$input = [
|
||||
'cptid' => $req->cptid,
|
||||
'is_active' => $req->is_active,
|
||||
];
|
||||
$rulesInput = [
|
||||
'cptid' => 'nullable|numeric',
|
||||
'is_active' => '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']);
|
||||
}
|
||||
$filter = [];
|
||||
if ($input['cptid'] != null && $input['cptid'] != 0) {
|
||||
$filter['cptid'] = $input['cptid'];
|
||||
}
|
||||
if ($input['is_active'] != null && $input['is_active'] != 0) {
|
||||
$filter['is_active'] = $input['is_active'];
|
||||
}
|
||||
|
||||
$list = LogbookKeys::listLgbKeys($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list lgb_keys');
|
||||
$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_lgb_key(Request $req, $lgb_key_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'lgb_key_id' => $lgb_key_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'lgb_key_id' => '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']);
|
||||
}
|
||||
|
||||
$lgb_key = LogbookKeys::showLgbKey(['lgb_key_id' => $lgb_key_id]);
|
||||
if (count($lgb_key) < 1) {
|
||||
$apiResp = Responses::not_found('logbook master not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get detail logbook master');
|
||||
$apiResp['data'] = $lgb_key[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_lgb_key(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'name' => $req->add_name,
|
||||
'type' => $req->add_type,
|
||||
'keys' => $req->add_keys,
|
||||
'units' => $req->add_units,
|
||||
'dtypes' => $req->add_dtypes,
|
||||
'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'name' => 'required|string|max:255',
|
||||
'type' => 'required|numeric|min:0',
|
||||
'keys' => 'required|array',
|
||||
'units' => 'required|array',
|
||||
'dtypes' => 'required|array',
|
||||
'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']);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$insLgbKey = [
|
||||
'name' => $input['name'],
|
||||
'type' => $input['type'],
|
||||
'keys' => json_encode($input['keys']),
|
||||
'units' => json_encode($input['units']),
|
||||
'dtypes' => json_encode($input['dtypes']),
|
||||
'is_active' => $input['status'],
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$lgb_key_id = LogbookKeys::addLgbKey($insLgbKey);
|
||||
|
||||
$apiResp = Responses::created('success add new logbook master');
|
||||
|
||||
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_lgb_key(Request $req, $lgb_key_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'lgb_key_id' => $lgb_key_id,
|
||||
'name' => $req->updt_name,
|
||||
'type' => $req->updt_type,
|
||||
'keys' => $req->updt_keys,
|
||||
'units' => $req->updt_units,
|
||||
'dtypes' => $req->updt_dtypes,
|
||||
'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'lgb_key_id' => 'required|integer|not_in:0',
|
||||
'name' => 'required|string|max:255',
|
||||
'type' => 'required|numeric|min:0',
|
||||
'keys' => 'required|array',
|
||||
'units' => 'required|array',
|
||||
'dtypes' => 'required|array',
|
||||
'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']);
|
||||
}
|
||||
|
||||
$lgb_key = LogbookKeys::showLgbKey(['lgb_key_id' => $lgb_key_id]);
|
||||
if (count($lgb_key) < 1) {
|
||||
$apiResp = Responses::not_found('logbook master not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$updtPocket = [
|
||||
'name' => $input['name'],
|
||||
'type' => $input['type'],
|
||||
'keys' => json_encode($input['keys']),
|
||||
'units' => json_encode($input['units']),
|
||||
'dtypes' => json_encode($input['dtypes']),
|
||||
'is_active' => $input['status'],
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
LogbookKeys::updateLgbKey($input['lgb_key_id'], $updtPocket);
|
||||
|
||||
$apiResp = Responses::created('success update logbook master');
|
||||
|
||||
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_lgb_key(Request $req, $lgb_key_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'lgb_key_id' => $lgb_key_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'lgb_key_id' => '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']);
|
||||
}
|
||||
|
||||
$lgb_key = LogbookKeys::showLgbKey(['lgb_key_id' => $lgb_key_id]);
|
||||
if (count($lgb_key) < 1) {
|
||||
$apiResp = Responses::not_found('logbook master not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
LogbookKeys::updateLgbKey($lgb_key_id, [
|
||||
'dlt' => $now,
|
||||
'dlt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success('success delete logbook master');
|
||||
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_selection_lgb_keys(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$input = [
|
||||
'is_active' => $req->is_active,
|
||||
];
|
||||
$rulesInput = [
|
||||
'is_active' => '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']);
|
||||
}
|
||||
$filter = [];
|
||||
if ($input['is_active'] != null && $input['is_active'] != 0) {
|
||||
$filter['is_active'] = $input['is_active'];
|
||||
}
|
||||
|
||||
$list = LogbookKeys::listLgbKeys($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list logbook master');
|
||||
$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']));
|
||||
}
|
||||
}
|
||||
}
|
||||
278
app/Http/Controllers/LogbookTypesController.php
Executable file
278
app/Http/Controllers/LogbookTypesController.php
Executable file
@ -0,0 +1,278 @@
|
||||
<?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\LogbookTypes;
|
||||
|
||||
class LogbookTypesController extends Controller
|
||||
{
|
||||
/**
|
||||
* View
|
||||
*/
|
||||
|
||||
public function view_lgb_types(Request $req)
|
||||
{
|
||||
$data = [];
|
||||
|
||||
return view('menu_v1.logbook_types', $data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_lgb_types(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$input = [
|
||||
'cptid' => $req->cptid,
|
||||
];
|
||||
$rulesInput = [
|
||||
'cptid' => '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']);
|
||||
}
|
||||
$filter = [];
|
||||
if ($input['cptid'] != null && $input['cptid'] != 0) {
|
||||
$filter['cptid'] = $input['cptid'];
|
||||
}
|
||||
|
||||
$list = LogbookTypes::listLgbTypes($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list lgb_types');
|
||||
$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_lgb_type(Request $req, $lgb_type_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'lgb_type_id' => $lgb_type_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'lgb_type_id' => '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']);
|
||||
}
|
||||
|
||||
$lgb_type = LogbookTypes::showLgbType(['lgb_type_id' => $lgb_type_id]);
|
||||
if (count($lgb_type) < 1) {
|
||||
$apiResp = Responses::not_found('logbook type not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get detail logbook type');
|
||||
$apiResp['data'] = $lgb_type[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_lgb_type(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'name' => $req->add_name,
|
||||
'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'name' => 'required|string|max:255',
|
||||
'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']);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$insLgbType = [
|
||||
'name' => $input['name'],
|
||||
'is_active' => $input['status'],
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$lgb_type_id = LogbookTypes::addLgbType($insLgbType);
|
||||
|
||||
$apiResp = Responses::created('success add new lgb_type');
|
||||
|
||||
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_lgb_type(Request $req, $lgb_type_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'lgb_type_id' => $lgb_type_id,
|
||||
'name' => $req->updt_name,
|
||||
'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'lgb_type_id' => 'required|integer|not_in:0',
|
||||
'name' => 'required|string|max:255',
|
||||
'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']);
|
||||
}
|
||||
|
||||
$lgb_type = LogbookTypes::showLgbType(['lgb_type_id' => $lgb_type_id]);
|
||||
if (count($lgb_type) < 1) {
|
||||
$apiResp = Responses::not_found('logbook type not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$updtPocket = [
|
||||
'name' => $input['name'],
|
||||
'is_active' => $input['status'],
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
LogbookTypes::updateLgbType($input['lgb_type_id'], $updtPocket);
|
||||
|
||||
$apiResp = Responses::created('success update logbook type');
|
||||
|
||||
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_lgb_type(Request $req, $lgb_type_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'lgb_type_id' => $lgb_type_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'lgb_type_id' => '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']);
|
||||
}
|
||||
|
||||
$lgb_type = LogbookTypes::showLgbType(['lgb_type_id' => $lgb_type_id]);
|
||||
if (count($lgb_type) < 1) {
|
||||
$apiResp = Responses::not_found('logbook type not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
LogbookTypes::updateLgbType($lgb_type_id, [
|
||||
'dlt' => $now,
|
||||
'dlt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success('success delete logbook type');
|
||||
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_selection_lgb_types(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$input = [
|
||||
'is_active' => $req->is_active,
|
||||
];
|
||||
$rulesInput = [
|
||||
'is_active' => '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']);
|
||||
}
|
||||
$filter = [];
|
||||
if ($input['is_active'] != null && $input['is_active'] != 0) {
|
||||
$filter['is_active'] = $input['is_active'];
|
||||
}
|
||||
|
||||
$list = LogbookTypes::listLgbTypes($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list logbook type');
|
||||
$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']));
|
||||
}
|
||||
}
|
||||
}
|
||||
75
app/Http/Controllers/LoggerController.php
Executable file
75
app/Http/Controllers/LoggerController.php
Executable file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Validator;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
|
||||
class LoggerController extends Controller
|
||||
{
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function logger(Request $req)
|
||||
{
|
||||
$now = time();
|
||||
try {
|
||||
$input = [
|
||||
'label' => $req->label,
|
||||
'level' => $req->level,
|
||||
'logtype' => $req->logtype,
|
||||
'keys' => $req->keys,
|
||||
'act' => 'email',
|
||||
'to' => ['rafifmreswara@gmail.com'],
|
||||
'errors' => $req->errors,
|
||||
'vers' => '1.2.1',
|
||||
'source' => 'service',
|
||||
'payloads' => $req->payloads,
|
||||
];
|
||||
$rulesInput = [
|
||||
'label' => 'required|string',
|
||||
'level' => 'required|numeric',
|
||||
'logtype' => 'required|string',
|
||||
'keys' => 'required|array',
|
||||
'act' => 'required|string',
|
||||
'to' => 'nullable|array',
|
||||
'errors' => 'nullable|string',
|
||||
'vers' => 'required|string',
|
||||
'source' => 'required|string',
|
||||
'payloads' => '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']);
|
||||
}
|
||||
|
||||
$payload = Helper::createPayload([
|
||||
'usnme' => 'rafif',
|
||||
'paswd' => 12345678
|
||||
]);
|
||||
$login = Helper::req_post('https://api.simerahputih.com/logger/login', [
|
||||
'Content-Type: application/x-www-form-urlencoded',
|
||||
], $payload);
|
||||
|
||||
// $payload = Helper::createPayload($input);
|
||||
// dd($payload);
|
||||
$resp = Helper::req_post('https://api.simerahputih.com/logger/log', [
|
||||
'Content-Type: application/json',
|
||||
'x-api-key: ' . $login['data']->data->token
|
||||
], json_encode($input));
|
||||
|
||||
$apiResp = Responses::success('success send log');
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
} catch (\Exception $e) {
|
||||
dd($e);
|
||||
}
|
||||
}
|
||||
}
|
||||
900
app/Http/Controllers/MenuController.php
Executable file
900
app/Http/Controllers/MenuController.php
Executable file
@ -0,0 +1,900 @@
|
||||
<?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 Carbon\Carbon;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\Users;
|
||||
use App\Models\Drivers;
|
||||
use App\Models\Vehicles;
|
||||
use App\Models\Devices;
|
||||
use App\Models\Clients;
|
||||
use App\Models\ConfRates;
|
||||
use App\Models\ConfTruckTypes;
|
||||
use App\Models\Zone;
|
||||
use App\Models\Banks;
|
||||
use App\Models\Orders;
|
||||
use App\Models\OrdersVendors;
|
||||
use App\Models\OrdersItems;
|
||||
use App\Models\OrdersAItems;
|
||||
use App\Models\UnitTypes;
|
||||
use App\Models\AItems;
|
||||
use App\Models\OrdersRates;
|
||||
use App\Models\Finance;
|
||||
use App\Models\OrdersCheckpoints;
|
||||
use App\Models\OrdersInvoices;
|
||||
use App\Models\OrdersDriversUploads;
|
||||
|
||||
class MenuController extends Controller
|
||||
{
|
||||
public function view_dashboard(Request $req)
|
||||
{
|
||||
$data = [
|
||||
"client_group" => Clients::getClientById($req->auth->client_group_id),
|
||||
];
|
||||
|
||||
if (count($data["client_group"]) > 0) {
|
||||
$data["client_group"] = $data["client_group"][0];
|
||||
} else {
|
||||
$data["client_group"] = null;
|
||||
}
|
||||
|
||||
return view("menu_v1.dashboard", $data);
|
||||
}
|
||||
|
||||
public function view_drivers(Request $req)
|
||||
{
|
||||
$data = [
|
||||
"bloods" => Helper::listBloods(),
|
||||
"relationships" => Drivers::listRelationships(),
|
||||
"vendors" => Users::listUsersByRole(Users::ROLE_VENDOR),
|
||||
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
||||
];
|
||||
return view("menu_v1.drivers", $data);
|
||||
}
|
||||
|
||||
public function view_vehicles(Request $req)
|
||||
{
|
||||
$data = [
|
||||
// 'cats' => Vehicles::listCats(), // default Truck
|
||||
"brands" => Vehicles::listBrands(),
|
||||
"types" => Vehicles::listTypes(),
|
||||
"drivers" => Drivers::getDrivers($req->auth),
|
||||
"vendors" => Users::listUsersByRole(Users::ROLE_VENDOR),
|
||||
"devices" => Devices::listDevices([
|
||||
"is_active" => Devices::IS_ACTIVE,
|
||||
"type" => Devices::TYPE_BUILT_IN,
|
||||
"is_idle_yes" => 1,
|
||||
"is_available" => Devices::IS_AVAIL,
|
||||
]),
|
||||
];
|
||||
// dd($data);
|
||||
return view("menu_v1.vehicles", $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* ADMIN TRX
|
||||
*/
|
||||
|
||||
public function view_transactions()
|
||||
{
|
||||
$data = [
|
||||
"availOrdToMerge" => Finance::availOrdToMerge(),
|
||||
];
|
||||
return view("menu_v1.transactions", $data);
|
||||
}
|
||||
public function view_transactions_view__bak(Request $req)
|
||||
{
|
||||
$codes = explode(",", $req->code);
|
||||
$limit = count($codes);
|
||||
if ($limit > 2) {
|
||||
return redirect(route("view_transactions"));
|
||||
}
|
||||
// dd($codes[0]);
|
||||
$orders = Orders::showOrder([
|
||||
"codes" => $codes,
|
||||
"get_stts_checker" => 1,
|
||||
"get_checker_data" => 1,
|
||||
"get_checker_user" => 1,
|
||||
// 'get_prefer_type_truck' => 1,
|
||||
"get_additional_vehicles_info" => 1,
|
||||
"get_accidents" => 1,
|
||||
"couple_pck_drop" => 1,
|
||||
"get_user_aprv_pck" => 1,
|
||||
"group_by" => "ord.id",
|
||||
"limit" => $limit,
|
||||
]);
|
||||
// dd($orders);
|
||||
if (count($orders) < 1) {
|
||||
return redirect(route("view_transactions"));
|
||||
}
|
||||
|
||||
// uang saku / pocket money
|
||||
$checkpoints = OrdersCheckpoints::listCheckpoints([
|
||||
"ord_id" => $orders[0]->ord_id,
|
||||
]);
|
||||
|
||||
$bladeViewOrders = [];
|
||||
foreach ($orders as $iOrd => $order) {
|
||||
// get multiple point (pick,drop)
|
||||
$adtPoints = Orders::getPoints([
|
||||
"id" => $order->ord_id,
|
||||
"limit" => $order->drop_total,
|
||||
]);
|
||||
// hilangkan index 0, karena yang didapatkan adalah childnya
|
||||
array_splice($adtPoints, 0, 1);
|
||||
$orders[$iOrd]->adtPoints = $adtPoints;
|
||||
|
||||
// uang saku / pocket money
|
||||
$orders[$iOrd]->checkpoints = $checkpoints;
|
||||
|
||||
// formated for blade views
|
||||
$tmpBladeView = clone $order;
|
||||
if ($order->ord_pck_docs_client_img) {
|
||||
$tmpBladeView->ord_pck_docs_client_img = json_decode($order->ord_pck_docs_client_img);
|
||||
}
|
||||
if ($order->ord_acdnt_imgs) {
|
||||
$tmpBladeView->ord_acdnt_imgs = json_decode($order->ord_acdnt_imgs);
|
||||
}
|
||||
$bladeViewOrders[] = clone $tmpBladeView;
|
||||
}
|
||||
$drvs_ups = OrdersDriversUploads::list([
|
||||
"ord_id" => $orders[0]->ord_id,
|
||||
"pck_id" => $orders[0]->ord_pck_id,
|
||||
"drop_id" => $orders[0]->ord_drop_id,
|
||||
"ord_pck_drop_id" => $orders[0]->ord_pck_drop_id,
|
||||
]);
|
||||
$data = [
|
||||
"orders" => $orders,
|
||||
"bladeViewOrders" => $bladeViewOrders,
|
||||
"drvs_ups" => $drvs_ups,
|
||||
"items" => AItems::listAItems([
|
||||
"is_active" => AItems::IS_ACTIVE,
|
||||
"is_adm_price" => AItems::IS_ADM_PRICE_NO,
|
||||
"crt_type" => AItems::CRT_TYPE_ADMIN,
|
||||
]),
|
||||
"unitTypes" => UnitTypes::listUnitTypes([
|
||||
"is_active" => UnitTypes::IS_ACTIVE,
|
||||
"is_publish" => UnitTypes::IS_PUBLISH,
|
||||
]),
|
||||
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
||||
];
|
||||
return view("menu_v1._viewTransactions", $data);
|
||||
}
|
||||
public function view_transactions_view(Request $req)
|
||||
{
|
||||
$codes = explode(",", $req->code);
|
||||
$limit = count($codes);
|
||||
if ($limit > 2) {
|
||||
return redirect(route("view_transactions"));
|
||||
}
|
||||
$orders = Orders::showOrder([
|
||||
"codes" => $codes,
|
||||
"get_stts_checker" => 1,
|
||||
"get_checker_data" => 1,
|
||||
"get_checker_user" => 1,
|
||||
// 'get_prefer_type_truck' => 1,
|
||||
"get_additional_vehicles_info" => 1,
|
||||
"get_accidents" => 1,
|
||||
"group_by" => "ord.id",
|
||||
"limit" => $limit,
|
||||
]);
|
||||
|
||||
if (count($orders) < 1) {
|
||||
return redirect(route("view_transactions"));
|
||||
}
|
||||
$bladeViewOrders = [];
|
||||
foreach ($orders as $iOrd => $order) {
|
||||
// get multiple point (pick,drop)
|
||||
$adtPoints = Orders::getPoints([
|
||||
"id" => $order->ord_id,
|
||||
"limit" => $order->drop_total,
|
||||
]);
|
||||
// hilangkan index 0, karena yang didapatkan adalah childnya
|
||||
array_splice($adtPoints, 0, 1);
|
||||
$orders[$iOrd]->adtPoints = $adtPoints;
|
||||
// dd($adtPoints);
|
||||
// formated for blade views
|
||||
$tmpBladeView = clone $order;
|
||||
if ($order->ord_pck_docs_client_img) {
|
||||
$tmpBladeView->ord_pck_docs_client_img = json_decode($order->ord_pck_docs_client_img);
|
||||
}
|
||||
if ($order->ord_acdnt_imgs) {
|
||||
$tmpBladeView->ord_acdnt_imgs = json_decode($order->ord_acdnt_imgs);
|
||||
}
|
||||
$bladeViewOrders[] = clone $tmpBladeView;
|
||||
}
|
||||
|
||||
$rawData = DB::table("t_orders_pck_drop as topd")
|
||||
->leftJoin("t_orders_pickups as top", "top.id", "topd.pck_id")
|
||||
->leftJoin("t_orders_drops as tod", "tod.id", "topd.drop_id")
|
||||
->where("topd.ord_code", $codes)
|
||||
->selectRaw(
|
||||
"topd.id,
|
||||
FROM_UNIXTIME(top.set_pck_at, '%d %M %Y') as pck_date,
|
||||
FROM_UNIXTIME(top.set_pck_at, '%H:%i:%s') as pck_time,
|
||||
top.pck_name,
|
||||
top.pck_addr,
|
||||
tod.drop_name,
|
||||
tod.drop_addr"
|
||||
)
|
||||
->get();
|
||||
foreach ($rawData as $_data) {
|
||||
$ehck = DB::table("t_orders_drivers_uploads")
|
||||
->select(
|
||||
"id", //
|
||||
"checklist_name",
|
||||
"checklist_desc",
|
||||
"img",
|
||||
"updt"
|
||||
)
|
||||
->where("ord_pck_drop_id", $_data->id)
|
||||
->get();
|
||||
$data[] = [
|
||||
"id" => $_data->id,
|
||||
"pck_date" => $_data->pck_date,
|
||||
"pck_time" => $_data->pck_time,
|
||||
"pck_name" => $_data->pck_name,
|
||||
"pck_addr" => $_data->pck_addr,
|
||||
"drop_name" => $_data->drop_name,
|
||||
"drop_addr" => $_data->drop_addr,
|
||||
"checklist_array" => $ehck,
|
||||
];
|
||||
}
|
||||
// dd($data[0]["checklist_array"]);
|
||||
// dd($data);
|
||||
$data = [
|
||||
"data" => $data,
|
||||
"orders" => $orders,
|
||||
"bladeViewOrders" => $bladeViewOrders,
|
||||
];
|
||||
// dd($data);
|
||||
return view("menu_v1._viewTransactions", $data);
|
||||
}
|
||||
public function view_transactions_view_bak_single(Request $req)
|
||||
{
|
||||
$codes = explode(",", $req->code);
|
||||
$order = Orders::showOrder([
|
||||
"code" => $codes[0],
|
||||
"get_stts_checker" => 1,
|
||||
"get_checker_data" => 1,
|
||||
"get_checker_user" => 1,
|
||||
// 'get_prefer_type_truck' => 1,
|
||||
"get_additional_vehicles_info" => 1,
|
||||
"get_accidents" => 1,
|
||||
]);
|
||||
if (count($order) < 1) {
|
||||
return redirect(route("view_transactions"));
|
||||
}
|
||||
$cantConfirmPrice = [Orders::STTS_WAIT, Orders::STTS_CONFIRM, Orders::STTS_HAVE_GET_VHC];
|
||||
$show_confirm_price = 1;
|
||||
if (in_array($order[0]->status, $cantConfirmPrice)) {
|
||||
$show_confirm_price = 0;
|
||||
}
|
||||
$adtPoints = Orders::getPoints([
|
||||
"id" => $order[0]->ord_id,
|
||||
"limit" => $order[0]->drop_total,
|
||||
]);
|
||||
array_splice($adtPoints, 0, 1);
|
||||
$data = [
|
||||
"order" => $order[0],
|
||||
"adtPoints" => $adtPoints,
|
||||
"adtPointsJson" => json_encode($adtPoints),
|
||||
"items" => AItems::listAItems([
|
||||
"is_active" => AItems::IS_ACTIVE,
|
||||
"is_adm_price" => AItems::IS_ADM_PRICE_NO,
|
||||
"crt_type" => AItems::CRT_TYPE_ADMIN,
|
||||
]),
|
||||
"unitTypes" => UnitTypes::listUnitTypes([
|
||||
"is_active" => UnitTypes::IS_ACTIVE,
|
||||
"is_publish" => UnitTypes::IS_PUBLISH,
|
||||
]),
|
||||
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
||||
];
|
||||
return view("menu_v1._viewTransactions", $data);
|
||||
}
|
||||
public function view_transactions_confirm(Request $req)
|
||||
{
|
||||
$order = Orders::showOrder([
|
||||
"code" => $req->code,
|
||||
"center_pck" => 1,
|
||||
"get_prefer_type_truck" => 1,
|
||||
]);
|
||||
if (count($order) < 1) {
|
||||
return redirect(route("view_transactions"));
|
||||
}
|
||||
if (isset($order[0]->pck_center)) {
|
||||
$split = explode(" ", $order[0]->pck_center);
|
||||
$order[0]->pck_center_lat = substr($split[1], 0, -1);
|
||||
$order[0]->pck_center_lng = substr($split[0], 6);
|
||||
}
|
||||
$rate = OrdersRates::getById($order[0]->ord_rate_id);
|
||||
$data = [
|
||||
"order" => $order[0],
|
||||
"vendors" => OrdersVendors::searchVendorsByRate([
|
||||
"active_rates" => $rate[0],
|
||||
"prefer_truck_type" => $order[0]->prefer_truck_type,
|
||||
]),
|
||||
];
|
||||
return view("menu_v1._confirmTransactions", $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* ADMIN CONFIG
|
||||
*/
|
||||
|
||||
public function view_logs_gps()
|
||||
{
|
||||
return view("menu_v1.configs.index_logs_gps");
|
||||
}
|
||||
|
||||
/**
|
||||
* CLIENT TRX
|
||||
*/
|
||||
|
||||
public function view_transactions_add(Request $req)
|
||||
{
|
||||
$data = [
|
||||
"uclients" => Users::listUsers([
|
||||
"role" => Users::ROLE_CLIENT_ADMIN,
|
||||
"status" => Users::STATUS_ACTIVE,
|
||||
]),
|
||||
"truck_types" => ConfTruckTypes::listTruckTypesRates(
|
||||
ConfTruckTypes::IS_ACTIVE,
|
||||
ConfRates::LANE_EARTH
|
||||
),
|
||||
];
|
||||
return view("menu_v2.Clients._addTransactions", $data);
|
||||
}
|
||||
|
||||
public function view_user_client_transaction()
|
||||
{
|
||||
return view("menu_v2.Clients.transactions");
|
||||
}
|
||||
public function view_user_client_transaction_view(Request $req)
|
||||
{
|
||||
$order = Orders::showOrder([
|
||||
"code" => $req->code,
|
||||
"get_stts_checker" => 1,
|
||||
// 'get_prefer_type_truck' => 1,
|
||||
"get_additional_vehicles_info" => 1,
|
||||
"get_accidents" => 1,
|
||||
]);
|
||||
if (count($order) < 1) {
|
||||
return redirect(route("view_user_client_transaction"));
|
||||
}
|
||||
$adtPoints = Orders::getPoints([
|
||||
"id" => $order[0]->ord_id,
|
||||
"limit" => $order[0]->drop_total,
|
||||
]);
|
||||
array_splice($adtPoints, 0, 1);
|
||||
$data = [
|
||||
"order" => $order[0],
|
||||
"adtPoints" => $adtPoints,
|
||||
"adtPointsJson" => json_encode($adtPoints),
|
||||
];
|
||||
return view("menu_v2.Clients._viewTransactions", $data);
|
||||
}
|
||||
public function view_user_client_transaction_add(Request $req)
|
||||
{
|
||||
$client_group_id = $req->auth->client_group_id;
|
||||
|
||||
// if ($req->rdl == 1) {
|
||||
// // $inActive = Orders::getOrdersClientActive($req->auth->uid);
|
||||
// $haveOrder = Orders::getOrdersByClient($req->auth->uid, 1);
|
||||
// if (count($haveOrder) > 0) {
|
||||
// return redirect(route('view_user_client_transaction'));
|
||||
// }
|
||||
// }
|
||||
|
||||
$data = [
|
||||
"pickups" => Zone::getActiveZones($client_group_id, 0, Zone::ZONE_WORKFLOW_PICKUP),
|
||||
"drops" => Zone::getActiveZones($client_group_id, 0, Zone::ZONE_WORKFLOW_DEST),
|
||||
"truck_types" => ConfTruckTypes::listTruckTypesRates(
|
||||
ConfTruckTypes::IS_ACTIVE,
|
||||
ConfRates::LANE_EARTH
|
||||
),
|
||||
];
|
||||
return view("menu_v2.Clients._addTransactions", $data);
|
||||
}
|
||||
// public function view_user_client() {
|
||||
// return view('menu_v2.Clients._addTransactions');
|
||||
// }
|
||||
|
||||
/**
|
||||
* VENDOR TRX
|
||||
*/
|
||||
|
||||
public function view_user_vendor_transaction()
|
||||
{
|
||||
return view("menu_v2.Vendors.transactions");
|
||||
}
|
||||
public function view_user_vendor_transaction_view(Request $req)
|
||||
{
|
||||
$codes = explode(",", $req->code);
|
||||
$limit = count($codes);
|
||||
if ($limit > 2) {
|
||||
return redirect(route("view_transactions"));
|
||||
}
|
||||
$orders = Orders::showOrder([
|
||||
"codes" => $codes,
|
||||
"get_stts_checker" => 1,
|
||||
"get_checker_data" => 1,
|
||||
"get_checker_user" => 1,
|
||||
// 'get_prefer_type_truck' => 1,
|
||||
"get_additional_vehicles_info" => 1,
|
||||
"get_accidents" => 1,
|
||||
"group_by" => "ord.id",
|
||||
"limit" => $limit,
|
||||
]);
|
||||
|
||||
if (count($orders) < 1) {
|
||||
return redirect(route("view_transactions"));
|
||||
}
|
||||
$bladeViewOrders = [];
|
||||
foreach ($orders as $iOrd => $order) {
|
||||
// get multiple point (pick,drop)
|
||||
$adtPoints = Orders::getPoints([
|
||||
"id" => $order->ord_id,
|
||||
"limit" => $order->drop_total,
|
||||
]);
|
||||
// hilangkan index 0, karena yang didapatkan adalah childnya
|
||||
array_splice($adtPoints, 0, 1);
|
||||
$orders[$iOrd]->adtPoints = $adtPoints;
|
||||
// dd($adtPoints);
|
||||
// formated for blade views
|
||||
$tmpBladeView = clone $order;
|
||||
if ($order->ord_pck_docs_client_img) {
|
||||
$tmpBladeView->ord_pck_docs_client_img = json_decode($order->ord_pck_docs_client_img);
|
||||
}
|
||||
if ($order->ord_acdnt_imgs) {
|
||||
$tmpBladeView->ord_acdnt_imgs = json_decode($order->ord_acdnt_imgs);
|
||||
}
|
||||
$bladeViewOrders[] = clone $tmpBladeView;
|
||||
}
|
||||
|
||||
$rawData = DB::table("t_orders_pck_drop as topd")
|
||||
->leftJoin("t_orders_pickups as top", "top.id", "topd.pck_id")
|
||||
->leftJoin("t_orders_drops as tod", "tod.id", "topd.drop_id")
|
||||
->where("topd.ord_code", $codes)
|
||||
->selectRaw(
|
||||
"topd.id,
|
||||
FROM_UNIXTIME(top.set_pck_at, '%d %M %Y') as pck_date,
|
||||
FROM_UNIXTIME(top.set_pck_at, '%H:%i:%s') as pck_time,
|
||||
top.pck_name,
|
||||
top.pck_addr,
|
||||
tod.drop_name,
|
||||
tod.drop_addr"
|
||||
)
|
||||
->get();
|
||||
foreach ($rawData as $_data) {
|
||||
$ehck = DB::table("t_orders_drivers_uploads")
|
||||
->select(
|
||||
"id", //
|
||||
"checklist_name",
|
||||
"checklist_desc",
|
||||
"img",
|
||||
"updt"
|
||||
)
|
||||
->where("ord_pck_drop_id", $_data->id)
|
||||
->get();
|
||||
$data[] = [
|
||||
"id" => $_data->id,
|
||||
"pck_date" => $_data->pck_date,
|
||||
"pck_time" => $_data->pck_time,
|
||||
"pck_name" => $_data->pck_name,
|
||||
"pck_addr" => $_data->pck_addr,
|
||||
"drop_name" => $_data->drop_name,
|
||||
"drop_addr" => $_data->drop_addr,
|
||||
"checklist_array" => $ehck,
|
||||
];
|
||||
}
|
||||
// dd($data[0]["checklist_array"]);
|
||||
// dd($data);
|
||||
$data = [
|
||||
"data" => $data,
|
||||
"orders" => $orders,
|
||||
"bladeViewOrders" => $bladeViewOrders,
|
||||
];
|
||||
// dd($data);
|
||||
return view("menu_v2.Vendors._viewTransactions", $data);
|
||||
}
|
||||
public function view_user_vendor_transaction_view_bak_single(Request $req)
|
||||
{
|
||||
$order = Orders::showOrder([
|
||||
"code" => $req->code,
|
||||
]);
|
||||
if (count($order) < 1) {
|
||||
return redirect(route("view_transactions"));
|
||||
}
|
||||
$adtPoints = Orders::getPoints([
|
||||
"id" => $order[0]->ord_id,
|
||||
"limit" => $order[0]->drop_total,
|
||||
]);
|
||||
array_splice($adtPoints, 0, 1);
|
||||
$data = [
|
||||
"order" => $order[0],
|
||||
"adtPoints" => $adtPoints,
|
||||
"adtPointsJson" => json_encode($adtPoints),
|
||||
];
|
||||
return view("menu_v2.Vendors._viewTransactions", $data);
|
||||
}
|
||||
public function view_user_vendor_transaction_new_order(Request $req)
|
||||
{
|
||||
// dd($req->code);
|
||||
$order = Orders::showOrder([
|
||||
"code" => $req->code,
|
||||
"get_exp_vendor" => 1,
|
||||
"vdr_id" => $req->auth->uid,
|
||||
"get_bid_info" => 1,
|
||||
]);
|
||||
// dd($order);
|
||||
// if (count($order) < 1) {
|
||||
// return redirect(route("view_user_vendor_transaction"));
|
||||
// }
|
||||
// if ($order[0]->vdr_status !== OrdersVendors::STTS_WAIT) {
|
||||
// return redirect(route("view_user_vendor_transaction"));
|
||||
// }
|
||||
// if (
|
||||
// $order[0]->status === Orders::STTS_WAIT ||
|
||||
// $order[0]->status === Orders::STTS_CONFIRM
|
||||
// ) {
|
||||
// } else {
|
||||
// return redirect(route("view_user_vendor_transaction"));
|
||||
// }
|
||||
// // date('Y-m-d H:i:s', $order[0]->vdr_exp_at);
|
||||
// if ($order[0]->vdr_is_exp === OrdersVendors::LINK_WILL_EXP) {
|
||||
// if ($order[0]->vdr_exp_at < time()) {
|
||||
// return redirect(route("view_user_vendor_transaction"));
|
||||
// }
|
||||
// }
|
||||
// if ($order[0]->is_mailing_bid != OrdersVendors::IS_MAILING_BID_SEND) {
|
||||
// return redirect(route("view_user_vendor_transaction"));
|
||||
// }
|
||||
$haveBeenAcc = OrdersVendors::getByOrdIdByStatus($order[0]->ord_id, OrdersVendors::STTS_ACC);
|
||||
if (count($haveBeenAcc) > 0) {
|
||||
return redirect(route("view_user_vendor_transaction"));
|
||||
}
|
||||
$vehicles = Vehicles::getVehiclesInIdsActiveNoInOrder($order[0]->find_vhcs);
|
||||
// $drivers = Drivers::getDriversNoInOrder($req->auth, [
|
||||
// 'status' => Drivers::STTS_ACTIVE
|
||||
// ]);
|
||||
$drivers = Drivers::getDriversNoInOrderNew($req->auth, [
|
||||
"status" => Drivers::STTS_ACTIVE,
|
||||
]);
|
||||
|
||||
$data = [
|
||||
"order" => $order[0],
|
||||
"vehicles" => $vehicles,
|
||||
"drivers" => $drivers,
|
||||
];
|
||||
return view("menu_v2.Vendors._newOrder", $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* CHECKER TRX
|
||||
*/
|
||||
|
||||
// public function view_user_checker()
|
||||
// {
|
||||
// return view('menu_v2.Checker.index');
|
||||
// }
|
||||
// public function view_user_checker_view(Request $req)
|
||||
// {
|
||||
// $order = Orders::showOrder([
|
||||
// 'code' => $req->code,
|
||||
// 'get_stts_checker' => 1,
|
||||
// ]);
|
||||
// if (count($order) < 1) {
|
||||
// return redirect(route('view_user_checker'));
|
||||
// }
|
||||
// $filter = [
|
||||
// 'get_not_deleted' => 1,
|
||||
// ];
|
||||
// $items = OrdersItems::getsByOrdId($order[0]->ord_id, $filter);
|
||||
// $data = [
|
||||
// 'order' => $order[0],
|
||||
// 'items' => $items,
|
||||
// ];
|
||||
// return view('menu_v2.Checker._view', $data);
|
||||
// }
|
||||
|
||||
public function view_user_checker()
|
||||
{
|
||||
return view("menu_v2.Checker.index");
|
||||
}
|
||||
public function view_user_checker_view(Request $req)
|
||||
{
|
||||
$data = [];
|
||||
$orders = Orders::showOrder([
|
||||
"code" => $req->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,
|
||||
"join_pockets" => 1,
|
||||
"group_by" => "ord.id",
|
||||
]);
|
||||
if (count($orders) < 1) {
|
||||
return redirect(route("view_user_checker"));
|
||||
}
|
||||
$orderOne = clone $orders[0];
|
||||
if ($orders[0]->group_merge_code) {
|
||||
$orders = Orders::showOrder([
|
||||
"group_merge_code" => $orders[0]->group_merge_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,
|
||||
"join_pockets" => 1,
|
||||
"group_by" => "ord.id",
|
||||
"limit" => 2,
|
||||
]);
|
||||
}
|
||||
|
||||
// uang saku / pocket money
|
||||
$checkpoints = OrdersCheckpoints::listCheckpoints([
|
||||
"ord_id" => $orders[0]->ord_id,
|
||||
]);
|
||||
|
||||
$truck_types = ConfTruckTypes::listTruckTypes(ConfTruckTypes::IS_ACTIVE, [
|
||||
"is_publish" => ConfTruckTypes::IS_PUBLISH,
|
||||
]);
|
||||
$bladeViewOrders = [];
|
||||
foreach ($orders as $iOrd => $order) {
|
||||
// get multiple point (pick,drop)
|
||||
$adtPoints = Orders::getPoints([
|
||||
"id" => $order->ord_id,
|
||||
"limit" => $order->drop_total,
|
||||
]);
|
||||
// hilangkan index 0, karena yang didapatkan adalah childnya
|
||||
array_splice($adtPoints, 0, 1);
|
||||
$orders[$iOrd]->adtPoints = $adtPoints;
|
||||
|
||||
// uang saku / pocket money
|
||||
$orders[$iOrd]->checkpoints = $checkpoints;
|
||||
|
||||
// formated for blade views
|
||||
$tmpBladeView = clone $order;
|
||||
if ($order->ord_pck_docs_client_img) {
|
||||
$tmpBladeView->ord_pck_docs_client_img = json_decode($order->ord_pck_docs_client_img);
|
||||
}
|
||||
if ($order->ord_acdnt_imgs) {
|
||||
$tmpBladeView->ord_acdnt_imgs = json_decode($order->ord_acdnt_imgs);
|
||||
}
|
||||
$bladeViewOrders[] = clone $tmpBladeView;
|
||||
|
||||
// special case for checker, karena meskipun merge tapi tampilnya tetap 1-1 per trx
|
||||
if ($req->code === $order->ord_code) {
|
||||
$orderOne = clone $order;
|
||||
}
|
||||
}
|
||||
|
||||
$drvs_ups = OrdersDriversUploads::list([
|
||||
"ord_id" => $orders[0]->ord_id,
|
||||
"pck_id" => $orders[0]->ord_pck_id,
|
||||
"drop_id" => $orders[0]->ord_drop_id,
|
||||
"ord_pck_drop_id" => $orders[0]->ord_pck_drop_id,
|
||||
]);
|
||||
|
||||
$data = [
|
||||
"orders" => $orders,
|
||||
"drvs_ups" => $drvs_ups,
|
||||
"order" => $orderOne,
|
||||
"truck_types" => $truck_types,
|
||||
"adtPoints" => $orders[0]->adtPoints,
|
||||
"adtPointsJson" => json_encode($orders[0]->adtPoints),
|
||||
];
|
||||
return view("menu_v2.Checker._view", $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* FINANCE
|
||||
*/
|
||||
public function view_keuangan_payment()
|
||||
{
|
||||
return view("menu_v2.Finance.payment");
|
||||
}
|
||||
public function view_keuangan_payment_view(Request $req)
|
||||
{
|
||||
$codes = explode(",", $req->code);
|
||||
$limit = count($codes);
|
||||
if ($limit > 2) {
|
||||
return redirect(route("view_transactions"));
|
||||
}
|
||||
$orders = Orders::showOrder([
|
||||
"codes" => $codes,
|
||||
// 'get_prefer_type_truck' => 1,
|
||||
"get_additional_vehicles_info" => 1,
|
||||
"get_pic_zone" => 1,
|
||||
// 'get_stts_checker' => 1,
|
||||
// 'get_checker_data' => 1,
|
||||
// 'get_checker_user' => 1,
|
||||
// 'get_accidents' => 1,
|
||||
"couple_pck_drop" => 1,
|
||||
"get_user_aprv_pck" => 1,
|
||||
"group_by" => "ord.id",
|
||||
"limit" => $limit,
|
||||
]);
|
||||
if (count($orders) < 1) {
|
||||
return redirect(route("view_keuangan_payment"));
|
||||
}
|
||||
$bladeViewOrders = [];
|
||||
foreach ($orders as $iOrd => $order) {
|
||||
// get multiple point (pick,drop)
|
||||
$adtPoints = Orders::getPoints([
|
||||
"id" => $order->ord_id,
|
||||
"limit" => $order->drop_total,
|
||||
]);
|
||||
// hilangkan index 0, karena yang didapatkan adalah childnya
|
||||
array_splice($adtPoints, 0, 1);
|
||||
$orders[$iOrd]->adtPoints = $adtPoints;
|
||||
|
||||
// formated for blade views
|
||||
$tmpBladeView = clone $order;
|
||||
// if ($order->ord_pck_docs_client_img) $tmpBladeView->ord_pck_docs_client_img = json_decode($order->ord_pck_docs_client_img);
|
||||
// if ($order->ord_acdnt_imgs) $tmpBladeView->ord_acdnt_imgs = json_decode($order->ord_acdnt_imgs);
|
||||
$bladeViewOrders[] = clone $tmpBladeView;
|
||||
}
|
||||
|
||||
$drvs_ups = OrdersDriversUploads::list([
|
||||
"ord_id" => $orders[0]->ord_id,
|
||||
"pck_id" => $orders[0]->ord_pck_id,
|
||||
"drop_id" => $orders[0]->ord_drop_id,
|
||||
"ord_pck_drop_id" => $orders[0]->ord_pck_drop_id,
|
||||
]);
|
||||
|
||||
$data = [
|
||||
"orders" => $orders,
|
||||
"bladeViewOrders" => $bladeViewOrders,
|
||||
"drvs_ups" => $drvs_ups,
|
||||
"items" => AItems::listAItems([
|
||||
"is_active" => AItems::IS_ACTIVE,
|
||||
"crt_type" => AItems::CRT_TYPE_FINANCE,
|
||||
]),
|
||||
"unitTypes" => UnitTypes::listUnitTypes([
|
||||
"is_active" => UnitTypes::IS_ACTIVE,
|
||||
"is_publish" => UnitTypes::IS_PUBLISH,
|
||||
]),
|
||||
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
||||
"availOrdToMerge" => Finance::availOrdToMerge([
|
||||
"except_ord_id" => $orders[0]->ord_id,
|
||||
]),
|
||||
];
|
||||
return view("menu_v2.Finance._viewPayment", $data);
|
||||
}
|
||||
public function view_keuangan_payment_view_single_bak(Request $req)
|
||||
{
|
||||
$order = Orders::showOrder([
|
||||
"code" => $req->code,
|
||||
// 'get_prefer_type_truck' => 1,
|
||||
"get_additional_vehicles_info" => 1,
|
||||
"get_pic_zone" => 1,
|
||||
// 'get_stts_checker' => 1,
|
||||
// 'get_checker_data' => 1,
|
||||
// 'get_checker_user' => 1,
|
||||
// 'get_accidents' => 1,
|
||||
]);
|
||||
if (count($order) < 1) {
|
||||
return redirect(route("view_keuangan_payment"));
|
||||
}
|
||||
$adtPoints = Orders::getPoints([
|
||||
"id" => $order[0]->ord_id,
|
||||
"limit" => $order[0]->drop_total,
|
||||
]);
|
||||
array_splice($adtPoints, 0, 1);
|
||||
|
||||
$data = [
|
||||
"order" => $order[0],
|
||||
"adtPoints" => $adtPoints,
|
||||
"adtPointsJson" => json_encode($adtPoints),
|
||||
"items" => AItems::listAItems([
|
||||
"is_active" => AItems::IS_ACTIVE,
|
||||
"crt_type" => AItems::CRT_TYPE_FINANCE,
|
||||
]),
|
||||
"unitTypes" => UnitTypes::listUnitTypes([
|
||||
"is_active" => UnitTypes::IS_ACTIVE,
|
||||
"is_publish" => UnitTypes::IS_PUBLISH,
|
||||
]),
|
||||
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
||||
"availOrdToMerge" => Finance::availOrdToMerge([
|
||||
"except_ord_id" => $order[0]->ord_id,
|
||||
]),
|
||||
];
|
||||
return view("menu_v2.Finance._viewPayment", $data);
|
||||
}
|
||||
public function view_keuangan_billing()
|
||||
{
|
||||
return view("menu_v2.Finance.billing");
|
||||
}
|
||||
public function view_keuangan_billing_view(Request $req)
|
||||
{
|
||||
$order = Orders::showOrder([
|
||||
"code" => $req->code,
|
||||
// 'get_prefer_type_truck' => 1,
|
||||
"get_additional_vehicles_info" => 1,
|
||||
"get_pic_zone" => 1,
|
||||
// 'get_stts_checker' => 1,
|
||||
// 'get_checker_data' => 1,
|
||||
// 'get_checker_user' => 1,
|
||||
// 'get_accidents' => 1,
|
||||
"get_client_pt" => 1,
|
||||
"couple_pck_drop" => 1,
|
||||
"get_user_aprv_pck" => 1,
|
||||
]);
|
||||
if (count($order) < 1) {
|
||||
return redirect(route("view_keuangan_billing"));
|
||||
}
|
||||
|
||||
$a_items = Finance::listAdtItemsBillings([
|
||||
"ord_id" => $order[0]->ord_id,
|
||||
"group_by" => "ord_a_item.id",
|
||||
"is_bill_aprv" => OrdersAItems::IS_APRV_YES,
|
||||
]);
|
||||
$group_items_by_termin = [];
|
||||
foreach ($a_items as $i => $row) {
|
||||
if (!isset($group_items_by_termin[$row->c_group_termin_id])) {
|
||||
if (
|
||||
$row->a_item_type === OrdersAItems::A_TYPE_PRIMARY &&
|
||||
$row->stts_merge !== OrdersAItems::STTS_MERGE_RESULT
|
||||
) {
|
||||
$row->previous_termin = OrdersAItems::showAItem([
|
||||
"ord_id" => $row->ord_id,
|
||||
"is_active" => OrdersAItems::IS_ACTIVE_YES,
|
||||
"a_item_type" => OrdersAItems::A_TYPE_PRIMARY,
|
||||
"prev_main_item_id" => $row->ord_a_item_id,
|
||||
"c_termin_id_not_zero" => 1,
|
||||
"limit" => 1,
|
||||
]);
|
||||
}
|
||||
$group_items_by_termin[$row->c_group_termin_id] = [];
|
||||
$group_items_by_termin[$row->c_group_termin_id][] = $row;
|
||||
continue;
|
||||
}
|
||||
$group_items_by_termin[$row->c_group_termin_id][] = $row;
|
||||
}
|
||||
$adtPoints = Orders::getPoints([
|
||||
"id" => $order[0]->ord_id,
|
||||
"limit" => $order[0]->drop_total,
|
||||
]);
|
||||
array_splice($adtPoints, 0, 1);
|
||||
|
||||
$drvs_ups = OrdersDriversUploads::list([
|
||||
"ord_id" => $order[0]->ord_id,
|
||||
"pck_id" => $order[0]->ord_pck_id,
|
||||
"drop_id" => $order[0]->ord_drop_id,
|
||||
"ord_pck_drop_id" => $order[0]->ord_pck_drop_id,
|
||||
]);
|
||||
|
||||
$data = [
|
||||
"order" => $order[0],
|
||||
"adtPoints" => $adtPoints,
|
||||
"adtPointsJson" => json_encode($adtPoints),
|
||||
"drvs_ups" => $drvs_ups,
|
||||
"items" => AItems::listAItems([
|
||||
"is_active" => AItems::IS_ACTIVE,
|
||||
"crt_type" => AItems::CRT_TYPE_FINANCE,
|
||||
]),
|
||||
"unitTypes" => UnitTypes::listUnitTypes([
|
||||
"is_active" => UnitTypes::IS_ACTIVE,
|
||||
"is_publish" => UnitTypes::IS_PUBLISH,
|
||||
]),
|
||||
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
||||
"group_items_by_termin" => $group_items_by_termin,
|
||||
];
|
||||
return view("menu_v2.Finance._viewBilling", $data);
|
||||
}
|
||||
}
|
||||
87
app/Http/Controllers/OSMController.php
Executable file
87
app/Http/Controllers/OSMController.php
Executable file
@ -0,0 +1,87 @@
|
||||
<?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 GuzzleHttp\Client as GuzzleClient;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\Zone;
|
||||
|
||||
class OSMController extends Controller
|
||||
{
|
||||
public function api_geo_addr(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'address' => $req->address,
|
||||
'country_code' => $req->country_code,
|
||||
];
|
||||
$rulesInput = [
|
||||
'address' => 'required|string|min:45',
|
||||
'country_code' => 'required|string|min:2',
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
}
|
||||
|
||||
$payload = [
|
||||
'countrycodes' => $req->country_code,
|
||||
'format' => 'geojson',
|
||||
'q' => $req->address,
|
||||
];
|
||||
$payload = http_build_query($payload);
|
||||
// $url = env('API_URL_NOMINATIM') . '/search?format=geojson&countrycodes=' . $req->country_code . '&q=' . $req->address;
|
||||
$url = env('API_URL_NOMINATIM') . '/search?' . $payload;
|
||||
|
||||
// $respNominatim = Helper::req_get($url, [
|
||||
// 'User-Agent: PostmanRuntime/7.28.4',
|
||||
// 'Accept: */*',
|
||||
// 'Accept-Encoding: gzip, deflate, br',
|
||||
// 'Connection: keep-alive'
|
||||
// ]);
|
||||
|
||||
$guzReq = new GuzzleClient();
|
||||
$respNominatim = $guzReq->request('GET', $url, [
|
||||
'headers' => [
|
||||
'Host' => $_SERVER['SERVER_ADDR'] ?? '127.0.0.1',
|
||||
'User-Agent' => 'curl/7.65.3',
|
||||
'Accept' => '*/*',
|
||||
'Accept-Encoding' => 'gzip, deflate, br',
|
||||
// 'Connection' => 'keep-alive',
|
||||
]
|
||||
]);
|
||||
|
||||
if ($respNominatim->getStatusCode() != 200) {
|
||||
$apiResp = Responses::bad_request('fail geo address');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$body = json_decode($respNominatim->getBody()->getContents());
|
||||
$data = null;
|
||||
if (count($body->features) > 0) {
|
||||
$data = [
|
||||
'lat' => $body->features[0]->geometry->coordinates[1],
|
||||
'lng' => $body->features[0]->geometry->coordinates[0],
|
||||
];
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success geo address');
|
||||
$apiResp['data'] = $data;
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
498
app/Http/Controllers/PocketController.php
Executable file
498
app/Http/Controllers/PocketController.php
Executable file
@ -0,0 +1,498 @@
|
||||
<?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 Hidehalo\Nanoid\Client as Nanoid;
|
||||
use Hidehalo\Nanoid\GeneratorInterface as NanoidInterface;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\Clients;
|
||||
use App\Models\PocketMoney;
|
||||
use App\Models\Checkpoints;
|
||||
use App\Models\Zone;
|
||||
|
||||
class PocketController extends Controller
|
||||
{
|
||||
/**
|
||||
* View
|
||||
*/
|
||||
|
||||
public function view_pockets(Request $req)
|
||||
{
|
||||
$data = [
|
||||
'types' => PocketMoney::getTypes(),
|
||||
'flows' => PocketMoney::getFlows(),
|
||||
// 'clients' => Clients::listClients(['c_status' => Clients::CSTTS_ACTIVE]),
|
||||
// 'pickups' => Zone::listZones($req->auth, ['is_active' => Zone::STATUS_ACTIVE, 'type' => Zone::ZONE_TYPE_WAREHOUSE, 'workflow_type' => Zone::ZONE_WORKFLOW_PICKUP]),
|
||||
// 'drops' => Zone::listZones($req->auth, ['is_active' => Zone::STATUS_ACTIVE, 'type' => Zone::ZONE_TYPE_WAREHOUSE, 'workflow_type' => Zone::ZONE_WORKFLOW_DEST]),
|
||||
];
|
||||
|
||||
return view('menu_v1.configs.pocket_money', $data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_pockets(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$input = [
|
||||
'cptid' => $req->cptid,
|
||||
];
|
||||
$rulesInput = [
|
||||
'cptid' => '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']);
|
||||
}
|
||||
$filter = [];
|
||||
if ($input['cptid'] != null && $input['cptid'] != 0) {
|
||||
$filter['cptid'] = $input['cptid'];
|
||||
}
|
||||
|
||||
$list = PocketMoney::listPockets($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list pockets');
|
||||
$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_pocket(Request $req, $pocket_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'pocket_id' => $pocket_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'pocket_id' => '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']);
|
||||
}
|
||||
|
||||
$pocket = PocketMoney::showPocketById($pocket_id);
|
||||
if (count($pocket) < 1) {
|
||||
$apiResp = Responses::not_found('pocket not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$pocket[0]->checkpoints = Checkpoints::listCheckpoints(['pocket_id' => $pocket[0]->id]);
|
||||
|
||||
$apiResp = Responses::success('success get detail pocket');
|
||||
$apiResp['data'] = $pocket[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_pocket(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'name' => $req->add_name,
|
||||
'type' => $req->add_type,
|
||||
'pck' => $req->add_pck,
|
||||
'drop' => $req->add_drop,
|
||||
'price' => $req->add_price,
|
||||
'start_checkpoint' => $req->add_start_checkpoints,
|
||||
// 'end_checkpoint' => $req->add_end_checkpoints,
|
||||
'price_checkpoint' => $req->add_price_checkpoints,
|
||||
'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'name' => 'required|string|max:255',
|
||||
'type' => 'required|numeric|min:0',
|
||||
'pck' => 'required|numeric|min:0',
|
||||
'drop' => 'required|numeric|min:0',
|
||||
'price' => 'required|numeric|min:0',
|
||||
'start_checkpoint' => 'nullable|array',
|
||||
'start_checkpoint.*' => 'nullable|numeric|min:0',
|
||||
// 'end_checkpoint' => 'nullable|array',
|
||||
// 'end_checkpoint.*' => 'nullable|numeric|min:0',
|
||||
'price_checkpoint' => 'nullable|array',
|
||||
'price_checkpoint.*' => 'nullable|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('0123456789', 9);
|
||||
// $code = $now;
|
||||
$doWhile = true;
|
||||
do {
|
||||
if (substr($code, 0, 1) == 0) {
|
||||
$code = $nanoid->formattedId('0123456789', 9);
|
||||
} else {
|
||||
$doWhile = false;
|
||||
}
|
||||
} while ($doWhile);
|
||||
$uniqCode = PocketMoney::getPocketByCode($code);
|
||||
if (count($uniqCode) > 0) {
|
||||
$apiResp = Responses::bad_request('code has been used, try again');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
// $uniqPckDrop = PocketMoney::getPocketByPckDrop($input['pck'], $input['drop']);
|
||||
// if (count($uniqPckDrop) > 0) {
|
||||
// $apiResp = Responses::bad_request('Pickup dan Drop sudah pernah ditambahkan');
|
||||
// return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
// }
|
||||
|
||||
if ($input['start_checkpoint']) {
|
||||
if ($input['start_checkpoint'][0] != $input['pck']) {
|
||||
$apiResp = Responses::bad_request('Titik lokasi pertama checkpoint haruslah sama dengan pickup');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
|
||||
$pck = Zone::showZoneById($input['pck']);
|
||||
if (count($pck) < 1) {
|
||||
$apiResp = Responses::not_found('lokasi pickup tidak ditemukan');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
$drop = Zone::showZoneById($input['drop']);
|
||||
if (count($drop) < 1) {
|
||||
$apiResp = Responses::not_found('lokasi drop tidak ditemukan');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
if ($pck[0]->client_group_id !== $drop[0]->client_group_id) {
|
||||
$apiResp = Responses::bad_request('Lokasi pickup dan drop sudah beda perusahaan');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$insPocket = [
|
||||
'code' => $code,
|
||||
'name' => $input['name'],
|
||||
'type' => $input['type'],
|
||||
'flow' => PocketMoney::FLOW_HYBRID,
|
||||
'pck_id' => $input['pck'],
|
||||
'drop_id' => $input['drop'],
|
||||
'is_active' => $input['status'],
|
||||
'total' => 0,
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$pocket_id = PocketMoney::addPocket($insPocket);
|
||||
|
||||
$total = 0;
|
||||
if ($input['start_checkpoint']) {
|
||||
foreach ($input['start_checkpoint'] as $i => $row) {
|
||||
$insCheckpoint = [
|
||||
'pocket_id' => $pocket_id,
|
||||
'pck_id' => $input['start_checkpoint'][$i],
|
||||
// 'drop_id' => $input['end_checkpoint'][$i],
|
||||
'total' => $input['price_checkpoint'][$i],
|
||||
'sort' => $i + 1,
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$total += $input['price_checkpoint'][$i];
|
||||
Checkpoints::addCheckpoint($insCheckpoint);
|
||||
}
|
||||
} else {
|
||||
$insCheckpoint = [
|
||||
'pocket_id' => $pocket_id,
|
||||
'pck_id' => $input['pck'],
|
||||
'drop_id' => $input['drop'],
|
||||
'total' => $input['price'],
|
||||
'sort' => 1,
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$total += $input['price'];
|
||||
Checkpoints::addCheckpoint($insCheckpoint);
|
||||
}
|
||||
|
||||
PocketMoney::updatePocket($pocket_id, ['total' => $total]);
|
||||
|
||||
$apiResp = Responses::created('success add new pocket');
|
||||
|
||||
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_pocket(Request $req, $pocket_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'pocket_id' => $pocket_id,
|
||||
'name' => $req->updt_name,
|
||||
'type' => $req->updt_type,
|
||||
'pck' => $req->updt_pck,
|
||||
'drop' => $req->updt_drop,
|
||||
'price' => $req->updt_price,
|
||||
'start_checkpoint' => $req->updt_start_checkpoints,
|
||||
// 'end_checkpoint' => $req->updt_end_checkpoints,
|
||||
'price_checkpoint' => $req->updt_price_checkpoints,
|
||||
'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'pocket_id' => 'required|integer|not_in:0',
|
||||
'name' => 'required|string|max:255',
|
||||
'type' => 'required|numeric|min:0',
|
||||
'pck' => 'required|numeric|min:0',
|
||||
'drop' => 'required|numeric|min:0',
|
||||
'price' => 'required|numeric|min:0',
|
||||
'start_checkpoint' => 'nullable|array',
|
||||
'start_checkpoint.*' => 'nullable|numeric|min:0',
|
||||
// 'end_checkpoint' => 'nullable|array',
|
||||
// 'end_checkpoint.*' => 'nullable|numeric|min:0',
|
||||
'price_checkpoint' => 'nullable|array',
|
||||
'price_checkpoint.*' => 'nullable|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']);
|
||||
}
|
||||
|
||||
$pocket = PocketMoney::showPocketById($pocket_id);
|
||||
if (count($pocket) < 1) {
|
||||
$apiResp = Responses::not_found('pocket not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$pocket[0]->checkpoints = Checkpoints::listCheckpoints(['pocket_id' => $pocket[0]->id]);
|
||||
|
||||
if ($input['start_checkpoint']) {
|
||||
if ($input['start_checkpoint'][0] != $input['pck']) {
|
||||
$apiResp = Responses::bad_request('Titik lokasi pertama checkpoint haruslah sama dengan pickup');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
|
||||
$pck = Zone::showZoneById($input['pck']);
|
||||
if (count($pck) < 1) {
|
||||
$apiResp = Responses::not_found('lokasi pickup tidak ditemukan');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
$drop = Zone::showZoneById($input['drop']);
|
||||
if (count($drop) < 1) {
|
||||
$apiResp = Responses::not_found('lokasi drop tidak ditemukan');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
if ($pck[0]->client_group_id !== $drop[0]->client_group_id) {
|
||||
$apiResp = Responses::bad_request('Lokasi pickup dan drop sudah beda perusahaan');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$updtPocket = [
|
||||
// 'code' => $code,
|
||||
'type' => $input['type'],
|
||||
'name' => $input['name'],
|
||||
// 'flow' => PocketMoney::FLOW_HYBRID,
|
||||
'pck_id' => $input['pck'],
|
||||
'drop_id' => $input['drop'],
|
||||
'is_active' => $input['status'],
|
||||
'total' => 0,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
PocketMoney::updatePocket($input['pocket_id'], $updtPocket);
|
||||
|
||||
$total = 0;
|
||||
if ($input['start_checkpoint']) {
|
||||
Checkpoints::deleteCheckpointByPocketId($input['pocket_id']);
|
||||
foreach ($input['start_checkpoint'] as $i => $row) {
|
||||
$insCheckpoint = [
|
||||
'pocket_id' => $input['pocket_id'],
|
||||
'pck_id' => $input['start_checkpoint'][$i],
|
||||
// 'drop_id' => $input['end_checkpoint'][$i],
|
||||
'total' => $input['price_checkpoint'][$i],
|
||||
'sort' => $i + 1,
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$total += $input['price_checkpoint'][$i];
|
||||
Checkpoints::addCheckpoint($insCheckpoint);
|
||||
}
|
||||
} else {
|
||||
Checkpoints::deleteCheckpointByPocketId($input['pocket_id']);
|
||||
$updtCheckpoint = [
|
||||
'pocket_id' => $input['pocket_id'],
|
||||
'pck_id' => $input['pck'],
|
||||
'drop_id' => $input['drop'],
|
||||
'total' => $input['price'],
|
||||
'sort' => 1,
|
||||
'crt' => $now,
|
||||
'crt_by' => $req->auth->uid,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
$total += $input['price'];
|
||||
// Checkpoints::updateCheckpoint($pocket[0]->checkpoints[0]->id, $updtCheckpoint);
|
||||
Checkpoints::addCheckpoint($updtCheckpoint);
|
||||
}
|
||||
|
||||
PocketMoney::updatePocket($input['pocket_id'], ['total' => $total]);
|
||||
|
||||
$apiResp = Responses::created('success update pocket');
|
||||
|
||||
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_pocket(Request $req, $pocket_id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'pocket_id' => $pocket_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'pocket_id' => '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']);
|
||||
}
|
||||
|
||||
$pocket = PocketMoney::showPocketById($pocket_id);
|
||||
if (count($pocket) < 1) {
|
||||
$apiResp = Responses::not_found('pocket not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
$pocket[0]->checkpoints = Checkpoints::listCheckpoints(['pocket_id' => $pocket[0]->id]);
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
PocketMoney::updatePocket($pocket_id, [
|
||||
'dlt' => $now,
|
||||
'dlt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
foreach ($pocket[0]->checkpoints as $row) {
|
||||
Checkpoints::updateCheckpoint($row->id, [
|
||||
'dlt' => $now,
|
||||
'dlt_by' => $req->auth->uid,
|
||||
]);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success('success delete pocket');
|
||||
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_pck_drop_pocket(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'client_id' => $req->client_id,
|
||||
'pck_id' => $req->pck_id,
|
||||
'drop_id' => $req->drop_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'client_id' => 'required|integer|not_in:0',
|
||||
'pck_id' => 'required|integer|not_in:0',
|
||||
'drop_id' => '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']);
|
||||
}
|
||||
|
||||
$pockets = PocketMoney::listPockets([
|
||||
'cptid' => $input['client_id'],
|
||||
'pck_id' => $input['pck_id'],
|
||||
'drop_id' => $input['drop_id'],
|
||||
'is_active' => PocketMoney::IS_ACTIVE,
|
||||
]);
|
||||
if (count($pockets) < 1) {
|
||||
$apiResp = Responses::not_found('pocket not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
foreach ($pockets as $i => $pkt) {
|
||||
$pockets[$i]->checkpoints = Checkpoints::listCheckpoints(['pocket_id' => $pkt->id]);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get pockets');
|
||||
$apiResp['data'] = $pockets;
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
100
app/Http/Controllers/RegionController.php
Executable file
100
app/Http/Controllers/RegionController.php
Executable file
@ -0,0 +1,100 @@
|
||||
<?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\Region;
|
||||
|
||||
class RegionController extends Controller
|
||||
{
|
||||
public function api_list_city(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'kodeProv' => $req->kodeProv,
|
||||
];
|
||||
$rulesInput = [
|
||||
'kodeProv' => 'required|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']);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get list district');
|
||||
$apiResp['data'] = Region::listCity($req->kodeProv);
|
||||
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_district(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'kodeKab' => $req->kodeKab,
|
||||
];
|
||||
$rulesInput = [
|
||||
'kodeKab' => 'required|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']);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get list village');
|
||||
$apiResp['data'] = Region::listDistrict($req->kodeKab);
|
||||
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_village(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'kodeKec' => $req->kodeKec,
|
||||
];
|
||||
$rulesInput = [
|
||||
'kodeKec' => 'required|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']);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get list village');
|
||||
$apiResp['data'] = Region::listVillage($req->kodeKec);
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
146
app/Http/Controllers/StaticInsuranceController.php
Executable file
146
app/Http/Controllers/StaticInsuranceController.php
Executable file
@ -0,0 +1,146 @@
|
||||
<?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\Users;
|
||||
use App\Models\Clients;
|
||||
use App\Models\StaticInsurances;
|
||||
|
||||
class StaticInsuranceController extends Controller
|
||||
{
|
||||
public function view_static_insurances(Request $req)
|
||||
{
|
||||
return view('menu_v1.configs.static_insurances');
|
||||
}
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_static_insurances(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 = StaticInsurances::listStaticInsurances();
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list insurances');
|
||||
$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_static_insurance(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'id' => $id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'id' => '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']);
|
||||
}
|
||||
|
||||
$insurance = StaticInsurances::getInsuranceById($id);
|
||||
if (count($insurance) < 1) {
|
||||
$apiResp = Responses::not_found('insurance not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get detail insurance');
|
||||
$apiResp['data'] = $insurance[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_edit_static_insurance(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'id' => $id,
|
||||
'desc' => $req->desc,
|
||||
'amt_percent' => $req->amt_percent,
|
||||
// 'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'id' => 'required|integer|not_in:0',
|
||||
'desc' => 'required|string',
|
||||
'amt_percent' => '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']);
|
||||
}
|
||||
|
||||
$insurance = StaticInsurances::getInsuranceById($id);
|
||||
if (count($insurance) < 1) {
|
||||
$apiResp = Responses::not_found('insurance not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$updtInsurance = [
|
||||
'desc' => $req->desc,
|
||||
'amt_percent' => $req->amt_percent,
|
||||
// 'is_active' => $req->status,
|
||||
'updt' => $now,
|
||||
'updt_by' => $req->auth->uid,
|
||||
];
|
||||
if ($req->dest_district) {
|
||||
$updtInsurance['dest_district'] = $req->dest_district;
|
||||
}
|
||||
$id = StaticInsurances::updateInsurance($id, $updtInsurance);
|
||||
|
||||
$apiResp = Responses::created('success update insurance');
|
||||
|
||||
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']));
|
||||
}
|
||||
}
|
||||
}
|
||||
79
app/Http/Controllers/StorageController.php
Executable file
79
app/Http/Controllers/StorageController.php
Executable file
@ -0,0 +1,79 @@
|
||||
<?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 Illuminate\Support\Str;
|
||||
use Validator;
|
||||
use Hidehalo\Nanoid\Client as Nanoid;
|
||||
use GuzzleHttp\Client as GuzzleClient;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
|
||||
class StorageController extends Controller
|
||||
{
|
||||
|
||||
public function save_photos(Request $req)
|
||||
{
|
||||
|
||||
$url_photos_base64 = [];
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'names' => $req->names,
|
||||
'photos' => $req->photos,
|
||||
];
|
||||
$rulesInput = [
|
||||
'names' => 'required|array',
|
||||
'names.*' => 'required|string|max:255',
|
||||
'photos' => 'required|array',
|
||||
'photos.*' => 'required|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']);
|
||||
}
|
||||
|
||||
if ($req->names && count($req->names) < 1) {
|
||||
$apiResp = Responses::bad_input('names is required');
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
}
|
||||
if ($req->photos && count($req->photos) < 1) {
|
||||
$apiResp = Responses::bad_input('photos is required');
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
}
|
||||
|
||||
foreach ($req->photos as $i => $img) {
|
||||
$clearBase64 = preg_replace('/^data:(image|application)\/(png|jpg|jpeg|pdf);base64,/', '', $img);
|
||||
// $type = 'jpeg';
|
||||
// if (strpos($img, 'application/pdf') !== false) $type = 'pdf';
|
||||
// $url_photos_base64[$i] = "orders/" . $order[0]->ord_id . "/a_items/" . $oa_id . "/submission/" . $req->auth->uid . "/submission_proof_img_$now" . "_" . "$i.$type";
|
||||
$url_photos_base64[$i] = $req->names[$i];
|
||||
if (!Storage::disk('public')->put($url_photos_base64[$i], base64_decode($clearBase64))) {
|
||||
$apiResp = Responses::bad_request('fail save photo');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success save photos');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
if (count($url_photos_base64) > 0) {
|
||||
foreach ($url_photos_base64 as $path) {
|
||||
Storage::disk('public')->delete($path);
|
||||
}
|
||||
}
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
249
app/Http/Controllers/TrackController.php
Executable file
249
app/Http/Controllers/TrackController.php
Executable file
@ -0,0 +1,249 @@
|
||||
<?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 App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\Tracks;
|
||||
use App\Models\Vehicles;
|
||||
use App\Models\Zone;
|
||||
use App\Models\Users;
|
||||
use App\Models\Orders;
|
||||
|
||||
class TrackController extends Controller
|
||||
{
|
||||
public function api_list_currect_track_vhc(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 = [
|
||||
"get_order_data" => 1,
|
||||
];
|
||||
if ($req->cptid) {
|
||||
$filter["company"] = $req->cptid;
|
||||
}
|
||||
|
||||
if ($req->auth->is_tracking === Users::IS_TRACK_VHC_YES) {
|
||||
if ($req->auth->vhcs) {
|
||||
$filter["vids"] = explode(",", $req->auth->vhcs);
|
||||
} else {
|
||||
$filter["vid"] = 0;
|
||||
}
|
||||
} elseif ($req->auth->is_tracking === Users::IS_TRACK_VHC_DEFAULT) {
|
||||
if ($req->auth->role === Users::ROLE_ADMIN) {
|
||||
if ($req->ord_id) {
|
||||
$ord = Orders::showOrder(["id" => $req->ord_id]);
|
||||
if (count($ord) > 0) {
|
||||
$filter["vid"] = $ord[0]->vhc_id;
|
||||
} else {
|
||||
$filter["vid"] = 0;
|
||||
}
|
||||
} elseif ($req->ord_code) {
|
||||
$ord = Orders::showOrder(["code" => $req->ord_code]);
|
||||
if (count($ord) > 0) {
|
||||
$filter["vid"] = $ord[0]->vhc_id;
|
||||
} else {
|
||||
$filter["vid"] = 0;
|
||||
}
|
||||
}
|
||||
} elseif ($req->auth->role === Users::ROLE_VENDOR) {
|
||||
$filter["own_by_vdr_id"] = $req->auth->uid;
|
||||
} elseif ($req->auth->role === Users::ROLE_CLIENT_ADMIN) {
|
||||
$ords = Orders::listOrders([
|
||||
"client_id_active_orders" => $req->auth->uid,
|
||||
"is_accident" => Orders::IS_ACCIDENT_NO,
|
||||
]);
|
||||
$filter["vids"] = [];
|
||||
$filter["client_id"] = $req->auth->uid;
|
||||
foreach ($ords as $k => $v) {
|
||||
$filter["vids"][] = $v->vhc_id;
|
||||
}
|
||||
} elseif ($req->auth->role === Users::ROLE_SPECIAL_TRACKING) {
|
||||
// $filter['vid'] = 0;
|
||||
$filter["company"] = $req->auth->client_group_id;
|
||||
} else {
|
||||
$filter["vid"] = 0;
|
||||
}
|
||||
} else {
|
||||
$filter["vid"] = 0;
|
||||
}
|
||||
|
||||
$list = Tracks::listCurrentTracks($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
// $list[$key]->mileage_km = '-';
|
||||
$list[$key]->track_schedule = $row->track_sch_h . "/" . $row->track_sch_d; // combine track_sch_h + track_sch_d
|
||||
$list[$key]->is_track_holiday_text =
|
||||
$list[$key]->is_track_holiday == Vehicles::ENABLED_TRACK_HOLIDAY ? "Enabled" : "Disabled";
|
||||
$list[$key]->alert_zones = "-";
|
||||
$list[$key]->cameras = "-";
|
||||
|
||||
$insideZones = [];
|
||||
$insideZoneCircle = Zone::insideZoneCircle($row->lst_lat, $row->lst_lng);
|
||||
if (count($insideZoneCircle) > 0) {
|
||||
array_push($insideZones, ...$insideZoneCircle);
|
||||
}
|
||||
$insideZoneShape = Zone::insideZoneShape($row->lst_lat, $row->lst_lng);
|
||||
if (count($insideZoneShape) > 0) {
|
||||
array_push($insideZones, ...$insideZoneShape);
|
||||
}
|
||||
if (count($insideZones) > 0) {
|
||||
$list[$key]->inside_zones = $insideZones;
|
||||
} else {
|
||||
$list[$key]->inside_zones = null;
|
||||
}
|
||||
}
|
||||
$apiResp = Responses::success("success list vehicles");
|
||||
$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_last_move_track_vhc(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"vid" => $req->vid,
|
||||
"end_at" => $req->end_at,
|
||||
];
|
||||
$rulesInput = [
|
||||
"vid" => "required|integer",
|
||||
"end_at" => "nullable|date",
|
||||
];
|
||||
|
||||
// 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 = [
|
||||
"limit" => 500,
|
||||
];
|
||||
// default 500, jika ada filter date maka max 5K
|
||||
if (
|
||||
$req->start_date != null &&
|
||||
$req->start_date != "" &&
|
||||
($req->end_date != null && $req->end_date != "")
|
||||
) {
|
||||
$filter["start_date"] = $req->start_date;
|
||||
$filter["end_date"] = $req->end_date;
|
||||
$filter["limit"] = 5000;
|
||||
}
|
||||
|
||||
$list = Tracks::lastMoveTracks($req->vid, $filter);
|
||||
|
||||
$apiResp = Responses::success("success get last movements");
|
||||
$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_conf_list_logs_gps(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 = [
|
||||
"limit" => 1000,
|
||||
"crt_greater_than" => 1646122574,
|
||||
];
|
||||
|
||||
$list = Tracks::listLogsGps($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = "-";
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success list gps tracker");
|
||||
$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_track_order(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']);
|
||||
// }
|
||||
|
||||
$ord = [];
|
||||
$filter = [
|
||||
"get_pic_zone" => 1,
|
||||
"get_zone_data" => 1,
|
||||
];
|
||||
if ($req->ord_id) {
|
||||
$filter["id"] = $req->ord_id;
|
||||
} elseif ($req->ord_code) {
|
||||
$filter["code"] = $req->ord_code;
|
||||
}
|
||||
$ord = Orders::showOrder($filter);
|
||||
|
||||
if (count($ord) < 1) {
|
||||
$apiResp = Responses::not_found("order not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$vid = $ord[0]->vhc_id;
|
||||
|
||||
$history = Tracks::lastMoveTracks($vid, [
|
||||
"start_at" => $ord[0]->confirm_at,
|
||||
]);
|
||||
|
||||
$apiResp = Responses::success("success track order");
|
||||
$apiResp["data"] = [
|
||||
"order" => $ord[0],
|
||||
"history" => $history,
|
||||
];
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
5590
app/Http/Controllers/TransactionController.php
Executable file
5590
app/Http/Controllers/TransactionController.php
Executable file
File diff suppressed because it is too large
Load Diff
1850
app/Http/Controllers/TransactionSpcController.php
Executable file
1850
app/Http/Controllers/TransactionSpcController.php
Executable file
File diff suppressed because it is too large
Load Diff
2280
app/Http/Controllers/TransactionSpcController.php.bak
Executable file
2280
app/Http/Controllers/TransactionSpcController.php.bak
Executable file
File diff suppressed because it is too large
Load Diff
1845
app/Http/Controllers/TransactionSpcController_bak_many_to_many.php
Executable file
1845
app/Http/Controllers/TransactionSpcController_bak_many_to_many.php
Executable file
File diff suppressed because it is too large
Load Diff
651
app/Http/Controllers/UsersController.php
Executable file
651
app/Http/Controllers/UsersController.php
Executable file
@ -0,0 +1,651 @@
|
||||
<?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\Hash;
|
||||
use Validator;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\Users;
|
||||
use App\Models\Clients;
|
||||
use App\Models\Vehicles;
|
||||
use App\Models\Banks;
|
||||
use App\Models\UsersMenuPermissions;
|
||||
|
||||
class UsersController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function view_users(Request $req)
|
||||
{
|
||||
$data = [
|
||||
"roles" => Users::listRoles($req->auth->role),
|
||||
"pernus" => UsersMenuPermissions::listPermissionsMenus([
|
||||
"is_active" => UsersMenuPermissions::IS_ACTIVE,
|
||||
]),
|
||||
"vehicles" => Vehicles::getVehicles(),
|
||||
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
||||
];
|
||||
|
||||
if ($req->auth->role == Users::ROLE_SUPERADMIN) {
|
||||
$data["clients"] = Clients::select2Client();
|
||||
} elseif ($req->auth->role == Users::ROLE_ADMIN) {
|
||||
$data["clients"] = Clients::select2Client();
|
||||
} else {
|
||||
$data["clients"] = Clients::select2Client($req->auth->client_group_id);
|
||||
}
|
||||
|
||||
return view("menu_v1.users", $data);
|
||||
}
|
||||
|
||||
public function view_profile(Request $req)
|
||||
{
|
||||
$data = [
|
||||
"roles" => Users::listRoles($req->auth->role),
|
||||
"pernus" => UsersMenuPermissions::listPermissionsMenus([
|
||||
"is_active" => UsersMenuPermissions::IS_ACTIVE,
|
||||
]),
|
||||
"vehicles" => Vehicles::getVehicles(),
|
||||
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
||||
];
|
||||
|
||||
if ($req->auth->role == Users::ROLE_SUPERADMIN) {
|
||||
$data["clients"] = Clients::select2Client();
|
||||
} elseif ($req->auth->role == Users::ROLE_ADMIN) {
|
||||
$data["clients"] = Clients::select2Client();
|
||||
} else {
|
||||
$data["clients"] = Clients::select2Client($req->auth->client_group_id);
|
||||
}
|
||||
|
||||
return view("menu_v1._profile", $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_users(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;
|
||||
}
|
||||
$list = Users::listUsers($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->count_trx = 0;
|
||||
$list[$key]->action = "-";
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success list users");
|
||||
$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_user(Request $req, $uid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"uid" => $uid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"uid" => "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"]);
|
||||
}
|
||||
|
||||
$user = Users::showUserById($uid);
|
||||
if (count($user) < 1) {
|
||||
$apiResp = Responses::not_found("user not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success get detail user");
|
||||
$apiResp["data"] = $user[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_user(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$roles = Users::arrRoles();
|
||||
$statuses = Users::arrStatus();
|
||||
|
||||
$input = [
|
||||
"first_name" => $req->first_name,
|
||||
"last_name" => $req->last_name,
|
||||
"phone" => $req->phone,
|
||||
"email" => $req->email,
|
||||
"fulladdress" => $req->fulladdress,
|
||||
"password" => $req->password,
|
||||
"clients_id" => $req->clients,
|
||||
"roles" => $req->roles,
|
||||
"chk_type" => $req->chk_type,
|
||||
"bank_id" => $req->bank_id,
|
||||
"bank_code" => $req->bank_code,
|
||||
"bank_short" => $req->bank_short,
|
||||
"bank_name" => $req->bank_name,
|
||||
"bank_kcp" => $req->bank_branch_name,
|
||||
"bank_acc_number" => $req->bank_acc_number,
|
||||
"bank_acc_name" => $req->bank_acc_name,
|
||||
"status" => $req->status,
|
||||
"is_tracking" => $req->is_tracking,
|
||||
"vehicles" => $req->vehicles,
|
||||
"is_vdr_bcng" => $req->is_vdr_bcng,
|
||||
];
|
||||
$rulesInput = [
|
||||
"first_name" => "required|string|max:125",
|
||||
"last_name" => "nullable|max:125",
|
||||
"phone" => "required|numeric",
|
||||
"email" => "required|email",
|
||||
"fulladdress" => "required|string|min:45",
|
||||
"password" => "required|string|max:25",
|
||||
"clients_id" => "required|integer|not_in:0",
|
||||
"roles" => "required|integer|not_in:0",
|
||||
"chk_type" => "nullable|integer|not_in:0",
|
||||
"bank_id" => "nullable|integer|not_in:0",
|
||||
"bank_code" => "nullable|numeric",
|
||||
"bank_short" => "nullable|string",
|
||||
"bank_name" => "nullable|string",
|
||||
"bank_kcp" => "nullable|string",
|
||||
"bank_acc_number" => "nullable|numeric",
|
||||
"bank_acc_name" => "nullable|string|max:255",
|
||||
"status" => "required|integer|not_in:0",
|
||||
"is_tracking" => "nullable|numeric",
|
||||
"vehicles" => "nullable|array",
|
||||
"is_vdr_bcng" => "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"]);
|
||||
}
|
||||
|
||||
if (in_array($req->roles, $roles)) {
|
||||
} else {
|
||||
$apiResp = Responses::bad_request("role not valid");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if (in_array($req->status, $statuses)) {
|
||||
} else {
|
||||
$apiResp = Responses::bad_request("status not valid");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if ($req->roles == Users::ROLE_VENDOR) {
|
||||
if (!$req->bank_id) {
|
||||
$apiResp = Responses::bad_request("bank wajib diisi");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
if (!$req->bank_acc_number) {
|
||||
$apiResp = Responses::bad_request("nomor rekening wajib diisi");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
if (!$req->bank_acc_name) {
|
||||
$apiResp = Responses::bad_request("nama pemilik rekening wajib diisi");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($req->clients) {
|
||||
$clients = Clients::getClientById($req->clients);
|
||||
if (count($clients) < 1) {
|
||||
$apiResp = Responses::not_found("clients not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
$uniqEmail = Users::getUserByEmail($req->email);
|
||||
if (count($uniqEmail) > 0) {
|
||||
$apiResp = Responses::bad_request("email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$uniqPhone = Users::getUserByPhone((int) $req->phone);
|
||||
if (count($uniqPhone) > 0) {
|
||||
$apiResp = Responses::bad_request("phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$uniqCPhone = Clients::getClientByPhone((int) $req->phone);
|
||||
if (count($uniqCPhone) > 0) {
|
||||
$apiResp = Responses::bad_request("phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$vhcs = null;
|
||||
if ($req->is_tracking == Users::IS_TRACK_VHC_YES) {
|
||||
if (!$req->vehicles) {
|
||||
$apiResp = Responses::bad_request("vehicles must be filled");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
foreach ($req->vehicles as $k => $v) {
|
||||
$vhcs .= $v . ",";
|
||||
}
|
||||
if ($vhcs) {
|
||||
if (substr($vhcs, -1) === ",") {
|
||||
$vhcs = substr($vhcs, 0, -1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$data = [
|
||||
"first_name" => $req->first_name,
|
||||
"last_name" => $req->last_name ?? null,
|
||||
"email" => $req->email,
|
||||
"phone" => (int) $req->phone,
|
||||
"phone_code" => Users::DEFAULT_PHONE_CODE,
|
||||
"fulladdress" => $req->fulladdress,
|
||||
"password" => Hash::make($req->password),
|
||||
"role" => $req->roles,
|
||||
"client_id" => $req->clients,
|
||||
"client_group_id" => $req->clients,
|
||||
"status" => $req->status,
|
||||
"is_tracking" => $req->is_tracking,
|
||||
"vhcs" => $vhcs,
|
||||
"crt" => $now,
|
||||
"crt_by" => $req->auth->uid,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
if ($req->roles == Users::ROLE_CHECKER) {
|
||||
// $data['chk_type'] = $req->chk_type;
|
||||
$data["chk_type"] = Users::CHK_TYPE_ALL;
|
||||
}
|
||||
if ($req->roles == Users::ROLE_VENDOR) {
|
||||
$data["bank_id"] = $req->bank_id;
|
||||
$data["bank_code"] = $req->bank_code;
|
||||
$data["bank_name"] = $req->bank_name;
|
||||
$data["bank_short_name"] = $req->bank_short;
|
||||
$data["bank_branch_name"] = $req->bank_branch_name;
|
||||
$data["bank_acc_number"] = $req->bank_acc_number;
|
||||
$data["bank_acc_name"] = $req->bank_acc_name;
|
||||
$data["is_vdr_bcng"] = $req->is_vdr_bcng;
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
Users::addUser($data);
|
||||
|
||||
$apiResp = Responses::created("success add new user");
|
||||
|
||||
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_user(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$roles = Users::arrRoles();
|
||||
$statuses = Users::arrStatus();
|
||||
|
||||
$input = [
|
||||
"uid" => $req->uid,
|
||||
"is_tracking" => $req->is_tracking,
|
||||
"vehicles" => $req->vehicles,
|
||||
"bank_id" => $req->bank_id,
|
||||
"bank_code" => $req->bank_code,
|
||||
"bank_short" => $req->bank_short,
|
||||
"bank_name" => $req->bank_name,
|
||||
"bank_kcp" => $req->bank_branch_name,
|
||||
"bank_acc_number" => $req->bank_acc_number,
|
||||
"bank_acc_name" => $req->bank_acc_name,
|
||||
"is_vdr_bcng" => $req->is_vdr_bcng,
|
||||
];
|
||||
$rulesInput = [
|
||||
"uid" => "required|integer|not_in:0",
|
||||
"is_tracking" => "nullable|numeric",
|
||||
"vehicles" => "nullable|array",
|
||||
"bank_id" => "nullable|integer|not_in:0",
|
||||
"bank_code" => "nullable|numeric",
|
||||
"bank_short" => "nullable|string",
|
||||
"bank_name" => "nullable|string",
|
||||
"bank_kcp" => "nullable|string",
|
||||
"bank_acc_number" => "nullable|numeric",
|
||||
"bank_acc_name" => "nullable|string|max:255",
|
||||
"is_vdr_bcng" => "nullable|numeric",
|
||||
];
|
||||
$data = [
|
||||
"id" => $req->uid,
|
||||
];
|
||||
|
||||
if ($req->first_name) {
|
||||
$input["first_name"] = $req->first_name;
|
||||
$rulesInput["first_name"] = "required|string|max:125";
|
||||
$data["first_name"] = $req->first_name;
|
||||
}
|
||||
if ($req->last_name) {
|
||||
$input["last_name"] = $req->last_name;
|
||||
$rulesInput["last_name"] = "required|string|max:125";
|
||||
$data["last_name"] = $req->last_name ?? null;
|
||||
}
|
||||
if ($req->email) {
|
||||
$input["email"] = $req->email;
|
||||
$rulesInput["email"] = "required|email";
|
||||
$data["email"] = $req->email;
|
||||
}
|
||||
if ($req->phone) {
|
||||
$input["phone"] = $req->phone;
|
||||
$rulesInput["phone"] = "required|integer|not_in:0";
|
||||
$data["phone"] = $req->phone;
|
||||
$data["phone_code"] = Users::DEFAULT_PHONE_CODE;
|
||||
}
|
||||
if ($req->fulladdress) {
|
||||
$input["fulladdress"] = $req->fulladdress;
|
||||
$rulesInput["fulladdress"] = "required|string|min:45";
|
||||
$data["fulladdress"] = $req->fulladdress;
|
||||
}
|
||||
if ($req->password) {
|
||||
$input["password"] = $req->password;
|
||||
$rulesInput["password"] = "required|string";
|
||||
$data["password"] = Hash::make($req->password);
|
||||
}
|
||||
if ($req->clients) {
|
||||
$input["clients"] = $req->clients;
|
||||
$rulesInput["clients"] = "required|integer|not_in:0";
|
||||
$data["client_group_id"] = $req->clients;
|
||||
|
||||
$clients = Clients::getClientById($req->clients);
|
||||
if (count($clients) < 1) {
|
||||
$apiResp = Responses::not_found("clients not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
if ($req->roles) {
|
||||
$input["roles"] = $req->roles;
|
||||
$rulesInput["roles"] = "required|integer|not_in:0";
|
||||
$data["role"] = $req->roles;
|
||||
|
||||
if (in_array($req->roles, $roles)) {
|
||||
} else {
|
||||
$apiResp = Responses::bad_request("role not valid");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
if ($req->roles) {
|
||||
if ($req->roles == Users::ROLE_CHECKER) {
|
||||
// $data['chk_type'] = $req->chk_type;
|
||||
$data["chk_type"] = Users::CHK_TYPE_ALL;
|
||||
}
|
||||
}
|
||||
if ($req->status) {
|
||||
$input["status"] = $req->status;
|
||||
$rulesInput["status"] = "required|integer|not_in:0";
|
||||
$data["status"] = $req->status;
|
||||
|
||||
if (in_array($req->status, $statuses)) {
|
||||
} else {
|
||||
$apiResp = Responses::bad_request("status not valid");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$getUser = Users::getUserById($req->uid);
|
||||
if (count($getUser) < 1) {
|
||||
$apiResp = Responses::not_found("user not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if ($req->roles == Users::ROLE_VENDOR) {
|
||||
if (!$req->bank_id) {
|
||||
$apiResp = Responses::bad_request("bank wajib diisi");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
if (!$req->bank_branch_name) {
|
||||
$apiResp = Responses::bad_request("bank kcp wajib diisi");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
if (!$req->bank_acc_number) {
|
||||
$apiResp = Responses::bad_request("nomor rekening wajib diisi");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
if (!$req->bank_acc_name) {
|
||||
$apiResp = Responses::bad_request("nama pemilik rekening wajib diisi");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
$uniqEmail = Users::getUserByEmail($req->email);
|
||||
if (count($uniqEmail) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqEmail as $key => $row) {
|
||||
if ($row->id == $req->uid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
$uniqPhone = Users::getUserByPhone($req->phone);
|
||||
if (count($uniqPhone) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqPhone as $key => $row) {
|
||||
if ($row->id == $req->uid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
// $uniqCPhone = Clients::getClientByPhone($req->phone);
|
||||
// if (count($uniqCPhone) > 0) {
|
||||
// $notSameUser = 1;
|
||||
// foreach ($uniqCPhone as $key => $row) {
|
||||
// if ($row->id == $getUser[0]->client_id) {
|
||||
// $notSameUser = 0;
|
||||
// }
|
||||
// }
|
||||
// if ($notSameUser) {
|
||||
// $apiResp = Responses::bad_request('phone has been used');
|
||||
// return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
// }
|
||||
// }
|
||||
|
||||
$vhcs = null;
|
||||
if ($req->is_tracking == Users::IS_TRACK_VHC_YES) {
|
||||
if (!$req->vehicles) {
|
||||
$apiResp = Responses::bad_request("vehicles must be filled");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
foreach ($req->vehicles as $k => $v) {
|
||||
$vhcs .= $v . ",";
|
||||
}
|
||||
if ($vhcs) {
|
||||
if (substr($vhcs, -1) === ",") {
|
||||
$vhcs = substr($vhcs, 0, -1);
|
||||
}
|
||||
}
|
||||
}
|
||||
$data["is_tracking"] = $req->is_tracking;
|
||||
$data["vhcs"] = $vhcs;
|
||||
|
||||
if ($req->roles == Users::ROLE_VENDOR) {
|
||||
$data["bank_id"] = $req->bank_id;
|
||||
$data["bank_code"] = $req->bank_code;
|
||||
$data["bank_name"] = $req->bank_name;
|
||||
$data["bank_short_name"] = $req->bank_short;
|
||||
$data["bank_branch_name"] = $req->bank_branch_name;
|
||||
$data["bank_acc_number"] = $req->bank_acc_number;
|
||||
$data["bank_acc_name"] = $req->bank_acc_name;
|
||||
$data["is_vdr_bcng"] = $req->is_vdr_bcng;
|
||||
}
|
||||
|
||||
$data["updt"] = $now;
|
||||
$data["updt_by"] = $req->auth->uid;
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
Users::updateUser($req->uid, $data);
|
||||
|
||||
$apiResp = Responses::created("success update user");
|
||||
|
||||
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_user(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"uid" => $req->uid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"uid" => "required|integer|not_in:0",
|
||||
];
|
||||
$data = [
|
||||
"id" => $req->uid,
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$getUser = Users::getUserById($req->uid);
|
||||
if (count($getUser) < 1) {
|
||||
$apiResp = Responses::not_found("user not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$data["dlt"] = $now;
|
||||
$data["dlt_by"] = $req->auth->uid;
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
Users::updateUser($req->uid, $data);
|
||||
|
||||
$apiResp = Responses::created("success delete user");
|
||||
|
||||
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_search_user_name(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$roles = Users::arrRoles();
|
||||
$statuses = Users::arrStatus();
|
||||
|
||||
$input = [
|
||||
"name" => $req->name,
|
||||
"roles" => $req->roles,
|
||||
];
|
||||
$rulesInput = [
|
||||
"name" => "required|string|max:125",
|
||||
"roles" => "nullable|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->roles) {
|
||||
if (in_array($req->roles, $roles)) {
|
||||
} else {
|
||||
$apiResp = Responses::bad_request("role not valid");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
$users = Users::likeName($req->name, $req->roles);
|
||||
} else {
|
||||
$users = Users::likeName($req->name);
|
||||
}
|
||||
|
||||
if (count($users) < 1) {
|
||||
$apiResp = Responses::not_found("user not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
foreach ($users as $k => $v) {
|
||||
// remove from array but no reindex array
|
||||
// unset($users[$k]);
|
||||
// remove from array and reindex array
|
||||
// array_splice($users, $k, 1);
|
||||
unset($users[$k]->password);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success search user by name");
|
||||
$apiResp["data"] = $users;
|
||||
|
||||
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"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
358
app/Http/Controllers/UsersMenuPermissionsController.php
Executable file
358
app/Http/Controllers/UsersMenuPermissionsController.php
Executable file
@ -0,0 +1,358 @@
|
||||
<?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\Users;
|
||||
use App\Models\UsersMenuPermissions;
|
||||
|
||||
class UsersMenuPermissionsController extends Controller
|
||||
{
|
||||
public function view_menu_permissions(Request $req)
|
||||
{
|
||||
$data = [
|
||||
'user' => $req->auth,
|
||||
];
|
||||
return view('menu_v1.configs.usersMenuPermissions', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list_menu_permissions(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 = [];
|
||||
|
||||
$list = UsersMenuPermissions::listPermissionsMenus($filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->action = '-';
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success list menu permissions');
|
||||
$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_menu_permissions(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'id' => $id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'id' => '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']);
|
||||
}
|
||||
|
||||
$permis = UsersMenuPermissions::showPermissionsMenusById($id);
|
||||
if (count($permis) < 1) {
|
||||
$apiResp = Responses::not_found('permissions not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
$apiResp = Responses::success('success get detail permissions');
|
||||
$apiResp['data'] = $permis[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_menu_permissions(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'name' => $req->name,
|
||||
// menu admin
|
||||
'menu_trx' => $req->menu_trx,
|
||||
'menu_company' => $req->menu_company,
|
||||
'menu_zone' => $req->menu_zone,
|
||||
'menu_users' => $req->menu_users,
|
||||
'menu_conf_rates' => $req->menu_conf_rates,
|
||||
'menu_conf_insurance' => $req->menu_conf_insurance,
|
||||
'menu_conf_truck_type' => $req->menu_conf_truck_type,
|
||||
'menu_devices' => $req->menu_devices,
|
||||
'menu_logs_devices' => $req->menu_logs_devices,
|
||||
'menu_conf_adt_items' => $req->menu_conf_adt_items,
|
||||
'menu_drivers' => $req->menu_drivers,
|
||||
'menu_vehicles' => $req->menu_vehicles,
|
||||
'menu_menu_permission' => $req->menu_menu_permission,
|
||||
// menu finance
|
||||
'menu_fnc_ledger_balance' => $req->menu_fnc_ledger_balance,
|
||||
'menu_fnc_payment' => $req->menu_fnc_payment,
|
||||
'menu_fnc_billing' => $req->menu_fnc_billing,
|
||||
'menu_fnc_conf_adt_items' => $req->menu_fnc_conf_adt_items,
|
||||
'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'name' => 'required|string',
|
||||
// menu admin
|
||||
'menu_trx' => 'required|numeric|max:2',
|
||||
'menu_company' => 'required|numeric|max:2',
|
||||
'menu_zone' => 'required|numeric|max:2',
|
||||
'menu_users' => 'required|numeric|max:2',
|
||||
'menu_conf_rates' => 'required|numeric|max:2',
|
||||
'menu_conf_insurance' => 'required|numeric|max:2',
|
||||
'menu_conf_truck_type' => 'required|numeric|max:2',
|
||||
'menu_devices' => 'required|numeric|max:2',
|
||||
'menu_logs_devices' => 'required|numeric|max:2',
|
||||
'menu_conf_adt_items' => 'required|numeric|max:2',
|
||||
'menu_drivers' => 'required|numeric|max:2',
|
||||
'menu_vehicles' => 'required|numeric|max:2',
|
||||
'menu_menu_permission' => 'required|numeric|max:2',
|
||||
// menu finance
|
||||
'menu_fnc_ledger_balance' => 'required|numeric|max:2',
|
||||
'menu_fnc_payment' => 'required|numeric|max:2',
|
||||
'menu_fnc_billing' => 'required|numeric|max:2',
|
||||
'menu_fnc_conf_adt_items' => 'required|numeric|max:2',
|
||||
'status' => 'required|integer|min:0|max:2',
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
}
|
||||
|
||||
$isAdmin = 0;
|
||||
$isFinance = 0;
|
||||
if ($req->menu_trx || $req->menu_company || $req->menu_zone || $req->menu_users || $req->menu_conf_rates || $req->menu_conf_insurance || $req->menu_conf_truck_type || $req->menu_devices || $req->menu_logs_devices || $req->menu_conf_adt_items || $req->menu_drivers || $req->menu_vehicles) {
|
||||
$isAdmin = 1;
|
||||
}
|
||||
if ($req->menu_fnc_ledger_balance || $req->menu_fnc_payment || $req->menu_fnc_billing || $req->menu_fnc_conf_adt_items) {
|
||||
$isFinance = 1;
|
||||
}
|
||||
|
||||
if ($isAdmin && $isFinance) {
|
||||
$apiResp = Responses::bad_request('Jika salah satu menu admin diizinkan, maka tidak bisa mengizinkan menu finance');
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$insPer = [
|
||||
'name' => $req->name,
|
||||
// menu admin
|
||||
'is_trx' => $req->menu_trx,
|
||||
'is_company' => $req->menu_company,
|
||||
'is_zone' => $req->menu_zone,
|
||||
'is_users' => $req->menu_users,
|
||||
'is_conf_rates' => $req->menu_conf_rates,
|
||||
'is_conf_insurance' => $req->menu_conf_insurance,
|
||||
'is_conf_truck_type' => $req->menu_conf_truck_type,
|
||||
'is_devices' => $req->menu_devices,
|
||||
'is_logs_devices' => $req->menu_logs_devices,
|
||||
'is_conf_adt_items' => $req->menu_conf_adt_items,
|
||||
'is_drivers' => $req->menu_drivers,
|
||||
'is_vehicles' => $req->menu_vehicles,
|
||||
'is_menu_permission' => $req->menu_menu_permission,
|
||||
// menu finance
|
||||
'is_fnc_ledger_balance' => $req->menu_fnc_ledger_balance,
|
||||
'is_fnc_payment' => $req->menu_fnc_payment,
|
||||
'is_fnc_billing' => $req->menu_fnc_billing,
|
||||
'is_fnc_conf_adt_items' => $req->menu_fnc_conf_adt_items,
|
||||
'is_active' => $req->status,
|
||||
];
|
||||
$id = UsersMenuPermissions::add($insPer);
|
||||
|
||||
$apiResp = Responses::created('success add new permission');
|
||||
|
||||
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_updt_menu_permissions(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'name' => $req->name,
|
||||
// menu admin
|
||||
'menu_trx' => $req->menu_trx,
|
||||
'menu_company' => $req->menu_company,
|
||||
'menu_zone' => $req->menu_zone,
|
||||
'menu_users' => $req->menu_users,
|
||||
'menu_conf_rates' => $req->menu_conf_rates,
|
||||
'menu_conf_insurance' => $req->menu_conf_insurance,
|
||||
'menu_conf_truck_type' => $req->menu_conf_truck_type,
|
||||
'menu_devices' => $req->menu_devices,
|
||||
'menu_logs_devices' => $req->menu_logs_devices,
|
||||
'menu_conf_adt_items' => $req->menu_conf_adt_items,
|
||||
'menu_drivers' => $req->menu_drivers,
|
||||
'menu_vehicles' => $req->menu_vehicles,
|
||||
'menu_menu_permission' => $req->menu_menu_permission,
|
||||
// menu finance
|
||||
'menu_fnc_ledger_balance' => $req->menu_fnc_ledger_balance,
|
||||
'menu_fnc_payment' => $req->menu_fnc_payment,
|
||||
'menu_fnc_billing' => $req->menu_fnc_billing,
|
||||
'menu_fnc_conf_adt_items' => $req->menu_fnc_conf_adt_items,
|
||||
'status' => $req->status,
|
||||
];
|
||||
$rulesInput = [
|
||||
'name' => 'required|string',
|
||||
// menu admin
|
||||
'menu_trx' => 'required|numeric|max:2',
|
||||
'menu_company' => 'required|numeric|max:2',
|
||||
'menu_zone' => 'required|numeric|max:2',
|
||||
'menu_users' => 'required|numeric|max:2',
|
||||
'menu_conf_rates' => 'required|numeric|max:2',
|
||||
'menu_conf_insurance' => 'required|numeric|max:2',
|
||||
'menu_conf_truck_type' => 'required|numeric|max:2',
|
||||
'menu_devices' => 'required|numeric|max:2',
|
||||
'menu_logs_devices' => 'required|numeric|max:2',
|
||||
'menu_conf_adt_items' => 'required|numeric|max:2',
|
||||
'menu_drivers' => 'required|numeric|max:2',
|
||||
'menu_vehicles' => 'required|numeric|max:2',
|
||||
'menu_menu_permission' => 'required|numeric|max:2',
|
||||
// menu finance
|
||||
'menu_fnc_ledger_balance' => 'required|numeric|max:2',
|
||||
'menu_fnc_payment' => 'required|numeric|max:2',
|
||||
'menu_fnc_billing' => 'required|numeric|max:2',
|
||||
'menu_fnc_conf_adt_items' => 'required|numeric|max:2',
|
||||
'status' => 'required|integer|min:0|max:2',
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
}
|
||||
|
||||
$isAdmin = 0;
|
||||
$isFinance = 0;
|
||||
if ($req->menu_trx || $req->menu_company || $req->menu_zone || $req->menu_users || $req->menu_conf_rates || $req->menu_conf_insurance || $req->menu_conf_truck_type || $req->menu_devices || $req->menu_logs_devices || $req->menu_conf_adt_items || $req->menu_drivers || $req->menu_vehicles) {
|
||||
$isAdmin = 1;
|
||||
}
|
||||
if ($req->menu_fnc_ledger_balance || $req->menu_fnc_payment || $req->menu_fnc_billing || $req->menu_fnc_conf_adt_items) {
|
||||
$isFinance = 1;
|
||||
}
|
||||
|
||||
if ($isAdmin && $isFinance) {
|
||||
$apiResp = Responses::bad_request('Jika salah satu menu admin diizinkan, maka tidak bisa mengizinkan menu finance');
|
||||
return new Response($apiResp, $apiResp['meta']['code']);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$updtPer = [
|
||||
'name' => $req->name,
|
||||
// menu admin
|
||||
'is_trx' => $req->menu_trx,
|
||||
'is_company' => $req->menu_company,
|
||||
'is_zone' => $req->menu_zone,
|
||||
'is_users' => $req->menu_users,
|
||||
'is_conf_rates' => $req->menu_conf_rates,
|
||||
'is_conf_insurance' => $req->menu_conf_insurance,
|
||||
'is_conf_truck_type' => $req->menu_conf_truck_type,
|
||||
'is_devices' => $req->menu_devices,
|
||||
'is_logs_devices' => $req->menu_logs_devices,
|
||||
'is_conf_adt_items' => $req->menu_conf_adt_items,
|
||||
'is_drivers' => $req->menu_drivers,
|
||||
'is_vehicles' => $req->menu_vehicles,
|
||||
'is_menu_permission' => $req->menu_menu_permission,
|
||||
// menu finance
|
||||
'is_fnc_ledger_balance' => $req->menu_fnc_ledger_balance,
|
||||
'is_fnc_payment' => $req->menu_fnc_payment,
|
||||
'is_fnc_billing' => $req->menu_fnc_billing,
|
||||
'is_fnc_conf_adt_items' => $req->menu_fnc_conf_adt_items,
|
||||
'is_active' => $req->status,
|
||||
];
|
||||
UsersMenuPermissions::updt($id, $updtPer);
|
||||
|
||||
$apiResp = Responses::created('success update permissions');
|
||||
|
||||
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_menu_permissions(Request $req, $id)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
'id' => $id,
|
||||
];
|
||||
$rulesInput = [
|
||||
'id' => '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']);
|
||||
}
|
||||
|
||||
$a_item = UsersMenuPermissions::showPermissionsMenusById($id);
|
||||
if (count($a_item) < 1) {
|
||||
$apiResp = Responses::not_found('permissions not found');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
UsersMenuPermissions::updt($id, [
|
||||
'dlt' => $now,
|
||||
'dlt_by' => $req->auth->uid,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success('success delete permissions');
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
}
|
||||
}
|
||||
}
|
||||
706
app/Http/Controllers/VehiclesController.php
Executable file
706
app/Http/Controllers/VehiclesController.php
Executable file
@ -0,0 +1,706 @@
|
||||
<?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 Auth;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\Vehicles;
|
||||
use App\Models\Devices;
|
||||
use App\Models\VehiclesDetail;
|
||||
use App\Models\Users;
|
||||
|
||||
class VehiclesController extends Controller
|
||||
{
|
||||
public function api_list_vehicles(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;
|
||||
}
|
||||
$list = Vehicles::listVehicles($req->auth, $filter);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
// $list[$key]->mileage_km = '-';
|
||||
// $list[$key]->div_name = 'All Division';
|
||||
// $list[$key]->group_name = 'All Group';
|
||||
// $list[$key]->track_schedule = $row->track_sch_h.'/'.$row->track_sch_d; // combine track_sch_h + track_sch_d
|
||||
// $list[$key]->is_track_holiday_text = ($list[$key]->is_track_holiday == Vehicles::ENABLED_TRACK_HOLIDAY) ? 'Enabled' : 'Disabled';
|
||||
// $list[$key]->alert_zones = '-';
|
||||
// $list[$key]->cameras = '-';
|
||||
$list[$key]->action = "-";
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success list vehicles");
|
||||
$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_vehicle(Request $req, $vid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"vid" => $vid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"vid" => "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"]);
|
||||
}
|
||||
|
||||
$vehicle = Vehicles::showVehicleById($vid);
|
||||
if (count($vehicle) < 1) {
|
||||
$apiResp = Responses::not_found("vehicle not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success get detail vehicle");
|
||||
$apiResp["data"] = $vehicle[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_vehicle(Request $req)
|
||||
{
|
||||
$url_fvhc = "";
|
||||
$url_stnk = "";
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$device_id = str_pad($req->device_id, Vehicles::MAX_DEVICE_ID, "0", STR_PAD_LEFT);
|
||||
|
||||
$input = [
|
||||
"front_vehicle_photo" => $req->fvhc_base64,
|
||||
"dvc_id" => $req->dvc_id,
|
||||
"simcard" => $req->simcard,
|
||||
"device_id" => $req->device_id,
|
||||
"vehicle_name" => $req->vhc_name,
|
||||
"brand_id" => $req->brand_id,
|
||||
"type_id" => $req->type_id,
|
||||
"model_id" => $req->model_id,
|
||||
"speed_limit" => $req->speed_limit,
|
||||
"fuel_capacity" => $req->fuel_capacity,
|
||||
"fuel_drop_treshold" => $req->fuel_drop_treshold,
|
||||
"max_pressure" => $req->max_pressure,
|
||||
"current_driver" => $req->d_current,
|
||||
"assign_driver" => $req->d_assign,
|
||||
"stnk_photo" => $req->stnk_base64,
|
||||
"stnk_exp" => $req->stnk_exp,
|
||||
"nopol1" => $req->nopol1,
|
||||
"nopol2" => $req->nopol2,
|
||||
"nopol3" => $req->nopol3,
|
||||
"manufacture_year" => $req->stnk_vyear,
|
||||
"cylinder_capacity" => $req->cc,
|
||||
"vehicle_identity_number" => $req->vin,
|
||||
"engine_number" => $req->en,
|
||||
"vehicle_color" => $req->color,
|
||||
"fuel_type" => $req->fuel_type,
|
||||
"license_plat_color" => $req->tnkb_color,
|
||||
"regis_year" => $req->regis_year,
|
||||
"tax_exp" => $req->tax_exp,
|
||||
"kir_exp" => $req->kir_exp,
|
||||
"vendor_id" => $req->vendor_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
"front_vehicle_photo" => "required|string",
|
||||
"dvc_id" => "nullable|integer",
|
||||
"simcard" => "nullable|numeric",
|
||||
"device_id" => "nullable|numeric",
|
||||
"vehicle_name" => "required|string",
|
||||
"brand_id" => "required|integer",
|
||||
"type_id" => "required|integer",
|
||||
"model_id" => "nullable|integer",
|
||||
"speed_limit" => "required|numeric",
|
||||
// "fuel_capacity" => "required|numeric",
|
||||
// "fuel_drop_treshold" => "required|numeric",
|
||||
// "max_pressure" => "required|numeric",
|
||||
"current_driver" => "nullable|integer",
|
||||
"assign_driver" => "nullable|integer",
|
||||
"stnk_photo" => "required|string",
|
||||
"stnk_exp" => "required|date_format:Y-m-d",
|
||||
"nopol1" => "required|string|max:2",
|
||||
"nopol2" => "required|string|max:4",
|
||||
"nopol3" => "required|string|max:3",
|
||||
"manufacture_year" => "required|digits:4",
|
||||
"cylinder_capacity" => "required|integer",
|
||||
"vehicle_identity_number" => "required|string|min:17|max:45",
|
||||
"engine_number" => "required|string|min:9|max:45",
|
||||
"vehicle_color" => "required|string|min:3|max:25",
|
||||
"fuel_type" => "required|string|min:3|max:25",
|
||||
"license_plat_color" => "required|string|min:3|max:25",
|
||||
"regis_year" => "required|digits:4",
|
||||
"tax_exp" => "required|date_format:Y-m-d",
|
||||
"kir_exp" => "required|date_format:Y-m-d",
|
||||
"vendor_id" => "nullable|integer|not_in:0",
|
||||
];
|
||||
|
||||
if ($req->auth->role == Users::ROLE_VENDOR) {
|
||||
$rulesInput["simcard"] = "nullable";
|
||||
}
|
||||
|
||||
// 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 (strlen($req->device_id) > Vehicles::MAX_DEVICE_ID) {
|
||||
$apiResp = Responses::bad_input("device_id max length is " . Vehicles::MAX_DEVICE_ID);
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if ($device_id !== str_pad(0, Vehicles::MAX_DEVICE_ID, "0", STR_PAD_LEFT)) {
|
||||
$uniqDeviceId = Vehicles::getVehicleByDeviceId($device_id);
|
||||
if (count($uniqDeviceId) > 0) {
|
||||
$apiResp = Responses::bad_request("device id has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
$uniqSimcard = Vehicles::getVehicleBySimcard($req->simcard);
|
||||
if (count($uniqSimcard) > 0) {
|
||||
$apiResp = Responses::bad_request("simcard has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$uniqPlatNo = Vehicles::getVehicleByPlatNo($req->nopol1, $req->nopol2, $req->nopol3);
|
||||
if (count($uniqPlatNo) > 0) {
|
||||
$apiResp = Responses::bad_request("plat number has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$insVhc = [
|
||||
"name" => $req->vhc_name,
|
||||
"dvc_id" => $req->dvc_id ?? 0,
|
||||
"device_id" => $device_id,
|
||||
"simcard" => $req->simcard ?? 0,
|
||||
"cat_id" => Vehicles::DEFAULT_CAT_ID,
|
||||
"brand_id" => $req->brand_id,
|
||||
"type_id" => $req->type_id,
|
||||
"nopol1" => strtoupper($req->nopol1),
|
||||
"nopol2" => strtoupper($req->nopol2),
|
||||
"nopol3" => strtoupper($req->nopol3),
|
||||
"c_did" => $req->d_current ?? 0,
|
||||
"a_did" => $req->d_assign ?? 0,
|
||||
"is_track_holiday" => Vehicles::DEFAULT_TRACK_HOLIDAY,
|
||||
"track_sch_d" => Vehicles::DEFAULT_TRACK_SCH_D,
|
||||
"track_sch_h" => Vehicles::DEFAULT_TRACK_SCH_H,
|
||||
"client_group_id" => $req->auth->client_group_id ?? null,
|
||||
"crt" => $now,
|
||||
"crt_by" => $req->auth->uid,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
if ($req->model_id) {
|
||||
$insVhc["model_id"] = $req->model_id;
|
||||
}
|
||||
if ($req->auth->role == Users::ROLE_VENDOR) {
|
||||
$insVhc["vendor_id"] = $req->auth->uid;
|
||||
$insVhc["simcard"] = 0;
|
||||
} else {
|
||||
$insVhc["vendor_id"] = $req->vendor_id ?? 0;
|
||||
}
|
||||
$vid = Vehicles::addVehicle($insVhc);
|
||||
|
||||
if ($req->auth->role == Users::ROLE_VENDOR) {
|
||||
$getUsrId = DB::table("t_users")
|
||||
->where("id", Auth::user()->id)
|
||||
->first();
|
||||
$vhclid = DB::table("t_vehicles")->insertGetId($insVhc);
|
||||
$new = $getUsrId->vhcs . "," . $vhclid;
|
||||
$dtupdate = [
|
||||
"vhcs" => $new,
|
||||
];
|
||||
DB::table("t_users")
|
||||
->where("id", Auth::user()->id)
|
||||
->update($dtupdate);
|
||||
$dtUpdataIsTracking = [
|
||||
"is_tracking" => 1,
|
||||
];
|
||||
DB::table("t_users")
|
||||
->where("id", Auth::user()->id)
|
||||
->update($dtUpdataIsTracking);
|
||||
}
|
||||
$url_fvhc = "vehicles/$vid/front_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_fvhc, base64_decode($req->fvhc_base64))) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload front photo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
$url_stnk = "vehicles/$vid/stnk_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_stnk, base64_decode($req->stnk_base64))) {
|
||||
Storage::disk("public")->delete($url_fvhc);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload front photo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$insDetail = [
|
||||
"vid" => $vid,
|
||||
"speed_limit" => $req->speed_limit,
|
||||
"fuel_capacity" => $req->fuel_capacity,
|
||||
"fuel_drop_treshold" => $req->fuel_drop_treshold,
|
||||
"max_pressure" => $req->max_pressure,
|
||||
"fvhc_img" => $url_fvhc,
|
||||
"stnk_img" => $url_stnk,
|
||||
"stnk_exp" => $req->stnk_exp,
|
||||
"vyear" => $req->stnk_vyear, // manufacture_year
|
||||
"cc" => $req->cc, // cylinder_capacity
|
||||
"vin" => strtoupper($req->vin), // vehicle_identity_number
|
||||
"en" => strtoupper($req->en), // engine_number
|
||||
"vcolor" => strtoupper($req->color),
|
||||
"fuel_type" => strtoupper($req->fuel_type),
|
||||
"tnkb_color" => strtoupper($req->tnkb_color), // license_plat_color
|
||||
"regis_year" => $req->regis_year,
|
||||
"tax_exp" => $req->tax_exp,
|
||||
"kir_exp" => $req->kir_exp,
|
||||
];
|
||||
VehiclesDetail::addDetail($insDetail);
|
||||
|
||||
$apiResp = Responses::created("success add new vehicle");
|
||||
|
||||
DB::commit();
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
Storage::disk("public")->delete($url_fvhc);
|
||||
Storage::disk("public")->delete($url_stnk);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
public function api_edit_vehicle(Request $req, $vid)
|
||||
{
|
||||
$url_fvhc = "";
|
||||
$url_stnk = "";
|
||||
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$device_id = str_pad($req->device_id, Vehicles::MAX_DEVICE_ID, "0", STR_PAD_LEFT);
|
||||
|
||||
$input = [
|
||||
"vid" => $vid,
|
||||
"front_vehicle_photo" => $req->fvhc_base64,
|
||||
"dvc_id" => $req->dvc_id ?? 0,
|
||||
"simcard" => $req->simcard,
|
||||
"device_id" => $req->device_id,
|
||||
"vehicle_name" => $req->vhc_name,
|
||||
"brand_id" => $req->brand_id,
|
||||
"type_id" => $req->type_id,
|
||||
"model_id" => $req->model_id,
|
||||
"speed_limit" => $req->speed_limit,
|
||||
"fuel_capacity" => $req->fuel_capacity,
|
||||
"fuel_drop_treshold" => $req->fuel_drop_treshold,
|
||||
"max_pressure" => $req->max_pressure,
|
||||
"current_driver" => $req->d_current,
|
||||
"assign_driver" => $req->d_assign,
|
||||
"stnk_photo" => $req->stnk_base64,
|
||||
"stnk_exp" => $req->stnk_exp,
|
||||
"nopol1" => $req->nopol1,
|
||||
"nopol2" => $req->nopol2,
|
||||
"nopol3" => $req->nopol3,
|
||||
"manufacture_year" => $req->stnk_vyear,
|
||||
"cylinder_capacity" => $req->cc,
|
||||
"vehicle_identity_number" => $req->vin,
|
||||
"engine_number" => $req->en,
|
||||
"vehicle_color" => $req->color,
|
||||
"fuel_type" => $req->fuel_type,
|
||||
"license_plat_color" => $req->tnkb_color,
|
||||
"regis_year" => $req->regis_year,
|
||||
"tax_exp" => $req->tax_exp,
|
||||
"kir_exp" => $req->kir_exp,
|
||||
"vendor_id" => $req->vendor_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
"vid" => "required|integer|not_in:0",
|
||||
"front_vehicle_photo" => "nullable|string",
|
||||
// "dvc_id" => "nullable|integer",
|
||||
"simcard" => "nullable|numeric",
|
||||
"device_id" => "nullable|numeric",
|
||||
"vehicle_name" => "required|string",
|
||||
"brand_id" => "required|integer",
|
||||
"type_id" => "required|integer",
|
||||
"model_id" => "nullable|integer",
|
||||
"speed_limit" => "required|numeric",
|
||||
// "fuel_capacity" => "required|numeric",
|
||||
// "fuel_drop_treshold" => "required|numeric",
|
||||
// "max_pressure" => "required|numeric",
|
||||
"current_driver" => "nullable|integer",
|
||||
"assign_driver" => "nullable|integer",
|
||||
"stnk_photo" => "nullable|string",
|
||||
"stnk_exp" => "required|date_format:Y-m-d",
|
||||
"nopol1" => "required|string|max:2",
|
||||
"nopol2" => "required|string|max:4",
|
||||
"nopol3" => "required|string|max:3",
|
||||
"manufacture_year" => "required|digits:4",
|
||||
"cylinder_capacity" => "required|integer",
|
||||
"vehicle_identity_number" => "required|string|min:17|max:45",
|
||||
"engine_number" => "required|string|min:9|max:45",
|
||||
"vehicle_color" => "required|string|min:3|max:25",
|
||||
"fuel_type" => "required|string|min:3|max:25",
|
||||
"license_plat_color" => "required|string|min:3|max:25",
|
||||
"regis_year" => "required|digits:4",
|
||||
"tax_exp" => "required|date_format:Y-m-d",
|
||||
"kir_exp" => "required|date_format:Y-m-d",
|
||||
"vendor_id" => "nullable|integer|not_in:0",
|
||||
];
|
||||
|
||||
if ($req->auth->role == Users::ROLE_VENDOR) {
|
||||
$rulesInput["simcard"] = "nullable";
|
||||
}
|
||||
|
||||
// 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 (strlen($req->device_id) > Vehicles::MAX_DEVICE_ID) {
|
||||
$apiResp = Responses::bad_input("device id max length is " . Vehicles::MAX_DEVICE_ID);
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$vhc = Vehicles::getVehicleById($vid);
|
||||
if (count($vhc) < 1) {
|
||||
$apiResp = Responses::bad_request("vehicle not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
$vd = VehiclesDetail::getDetailByVid($vid);
|
||||
if (count($vd) < 1) {
|
||||
$apiResp = Responses::bad_request("vehicle not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
// if ($req->dvc_id) {
|
||||
// $uniqDeviceId = Vehicles::getVehicleByDeviceId($device_id);
|
||||
// if (count($uniqDeviceId) > 0) {
|
||||
// $notSameUser = 1;
|
||||
// foreach ($uniqDeviceId as $key => $row) {
|
||||
// if ($row->id == $vid) {
|
||||
// $notSameUser = 0;
|
||||
// }
|
||||
// }
|
||||
// if ($notSameUser) {
|
||||
// $apiResp = Responses::bad_request("device id has been used");
|
||||
// return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
$uniqSimcard = Vehicles::getVehicleBySimcard($req->simcard);
|
||||
if (count($uniqSimcard) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqSimcard as $key => $row) {
|
||||
if ($row->id == $vid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("simcard has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
$uniqPlatNo = Vehicles::getVehicleByPlatNo($req->nopol1, $req->nopol2, $req->nopol3);
|
||||
if (count($uniqPlatNo) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqPlatNo as $key => $row) {
|
||||
if ($row->id == $vid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("plat number has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$updtVhc = [
|
||||
"name" => $req->vhc_name,
|
||||
"dvc_id" => $req->dvc_id,
|
||||
"device_id" => $device_id,
|
||||
"simcard" => (int) $req->simcard,
|
||||
"cat_id" => Vehicles::DEFAULT_CAT_ID,
|
||||
"brand_id" => $req->brand_id,
|
||||
"type_id" => $req->type_id,
|
||||
"nopol1" => strtoupper($req->nopol1),
|
||||
"nopol2" => strtoupper($req->nopol2),
|
||||
"nopol3" => strtoupper($req->nopol3),
|
||||
"c_did" => $req->d_current ?? 0,
|
||||
"a_did" => $req->d_assign ?? 0,
|
||||
"is_track_holiday" => Vehicles::DEFAULT_TRACK_HOLIDAY,
|
||||
"track_sch_d" => Vehicles::DEFAULT_TRACK_SCH_D,
|
||||
"track_sch_h" => Vehicles::DEFAULT_TRACK_SCH_H,
|
||||
"updt" => $now,
|
||||
"updt_by" => $req->auth->uid,
|
||||
];
|
||||
if ($req->model_id) {
|
||||
$updtVhc["model_id"] = $req->model_id;
|
||||
}
|
||||
if ($req->auth->role == Users::ROLE_VENDOR) {
|
||||
$updtVhc["vendor_id"] = $req->auth->uid;
|
||||
// $updtVhc["simcard"] = (int) $uniqDeviceId[0]->simcard;
|
||||
} else {
|
||||
$updtVhc["vendor_id"] = $req->vendor_id ?? 0;
|
||||
}
|
||||
Vehicles::updateVehicle($vid, $updtVhc);
|
||||
|
||||
if ($req->dvc_id) {
|
||||
Devices::updateDevice($req->dvc_id, [
|
||||
"is_assigned" => Devices::IS_ASSIGNED,
|
||||
]);
|
||||
} else {
|
||||
Devices::updateDevice($vhc[0]->dvc_id, [
|
||||
"is_assigned" => Devices::IS_UNASSIGNED,
|
||||
]);
|
||||
}
|
||||
|
||||
if ($req->fvhc_base64) {
|
||||
$url_fvhc = "vehicles/$vid/front_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_fvhc, base64_decode($req->fvhc_base64))) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload front photo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
Storage::disk("public")->delete($vd[0]->fvhc_img);
|
||||
}
|
||||
if ($req->stnk_base64) {
|
||||
$url_stnk = "vehicles/$vid/stnk_$now.jpeg";
|
||||
if (!Storage::disk("public")->put($url_stnk, base64_decode($req->stnk_base64))) {
|
||||
Storage::disk("public")->delete($url_fvhc);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::bad_request("fail upload front photo");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
Storage::disk("public")->delete($vd[0]->stnk_img);
|
||||
}
|
||||
|
||||
$updtDetail = [
|
||||
"vid" => $vid,
|
||||
"speed_limit" => $req->speed_limit,
|
||||
"fuel_capacity" => $req->fuel_capacity,
|
||||
"fuel_drop_treshold" => $req->fuel_drop_treshold,
|
||||
"max_pressure" => $req->max_pressure,
|
||||
"stnk_exp" => $req->stnk_exp,
|
||||
"vyear" => $req->stnk_vyear, // manufacture_year
|
||||
"cc" => $req->cc, // cylinder_capacity
|
||||
"vin" => strtoupper($req->vin), // vehicle_identity_number
|
||||
"en" => strtoupper($req->en), // engine_number
|
||||
"vcolor" => strtoupper($req->color),
|
||||
"fuel_type" => strtoupper($req->fuel_type),
|
||||
"tnkb_color" => strtoupper($req->tnkb_color), // license_plat_color
|
||||
"regis_year" => $req->regis_year,
|
||||
"tax_exp" => $req->tax_exp,
|
||||
"kir_exp" => $req->kir_exp,
|
||||
];
|
||||
if ($req->fvhc_base64) {
|
||||
$updtDetail["fvhc_img"] = $url_fvhc;
|
||||
}
|
||||
if ($req->stnk_base64) {
|
||||
$updtDetail["stnk_img"] = $url_stnk;
|
||||
}
|
||||
VehiclesDetail::updateDetailByVid($vid, $updtDetail);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success("success update vehicle");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
Storage::disk("public")->delete($url_fvhc);
|
||||
Storage::disk("public")->delete($url_stnk);
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
public function api_del_vehicle(Request $req, $vid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"vid" => $vid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"vid" => "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"]);
|
||||
}
|
||||
|
||||
$vehicle = Vehicles::showVehicleById($vid);
|
||||
if (count($vehicle) < 1) {
|
||||
$apiResp = Responses::not_found("vehicle not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$device_id = str_pad(0, Devices::MAX_DEVICE_ID, "0", STR_PAD_LEFT);
|
||||
Vehicles::updateVehicle($vid, [
|
||||
"dvc_id" => 0,
|
||||
"device_id" => $device_id,
|
||||
"simcard" => 0,
|
||||
"dlt" => $now,
|
||||
"dlt_by" => $req->auth->uid,
|
||||
]);
|
||||
if ($vehicle[0]->dvc_id != 0) {
|
||||
Devices::updateDevice($vehicle[0]->dvc_id, [
|
||||
"is_assigned" => Devices::IS_UNASSIGNED,
|
||||
]);
|
||||
}
|
||||
|
||||
// Storage::disk('public')->delete($vehicle[0]->fvhc_img);
|
||||
// Storage::disk('public')->delete($vehicle[0]->stnk_img);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success("success delete vehicle");
|
||||
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_search_device_id(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"device_id" => $req->device_id,
|
||||
];
|
||||
$rulesInput = [
|
||||
"device_id" => "required|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"]);
|
||||
}
|
||||
|
||||
if (strlen($req->device_id) > Vehicles::MAX_DEVICE_ID) {
|
||||
$apiResp = Responses::bad_input("device id max length is " . Vehicles::MAX_DEVICE_ID);
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$device_id = str_pad($req->device_id, Vehicles::MAX_DEVICE_ID, "0", STR_PAD_LEFT);
|
||||
$devices = Vehicles::getVehicleByDeviceId($device_id);
|
||||
|
||||
if (count($devices) < 1) {
|
||||
$apiResp = Responses::not_found("device id not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success search device id");
|
||||
$apiResp["data"] = $devices;
|
||||
|
||||
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_search_nopol(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"nopol" => $req->nopol,
|
||||
];
|
||||
$rulesInput = [
|
||||
"nopol" => "required|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"]);
|
||||
}
|
||||
|
||||
$nopol = explode(" ", strtoupper($req->nopol));
|
||||
$cNopol = count($nopol);
|
||||
if ($cNopol === 3) {
|
||||
} elseif ($cNopol === 2) {
|
||||
$nopol[2] = "";
|
||||
} elseif ($cNopol === 1) {
|
||||
$nopol[1] = "";
|
||||
$nopol[2] = "";
|
||||
} else {
|
||||
$apiResp = Responses::bad_input("Nomor polisi kendaraan tidak valid");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$vehicles = Vehicles::searchVehicleByPlatNo($nopol[0], $nopol[1], $nopol[2]);
|
||||
|
||||
if (count($vehicles) < 1) {
|
||||
$apiResp = Responses::not_found("vehicles not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success search vehicles");
|
||||
$apiResp["data"] = $vehicles;
|
||||
|
||||
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"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
1183
app/Http/Controllers/ZoneController.php
Executable file
1183
app/Http/Controllers/ZoneController.php
Executable file
File diff suppressed because it is too large
Load Diff
68
app/Http/Kernel.php
Executable file
68
app/Http/Kernel.php
Executable file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http;
|
||||
|
||||
use Illuminate\Foundation\Http\Kernel as HttpKernel;
|
||||
|
||||
class Kernel extends HttpKernel
|
||||
{
|
||||
/**
|
||||
* The application's global HTTP middleware stack.
|
||||
*
|
||||
* These middleware are run during every request to your application.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middleware = [
|
||||
// \App\Http\Middleware\TrustHosts::class,
|
||||
\App\Http\Middleware\TrustProxies::class,
|
||||
\Fruitcake\Cors\HandleCors::class,
|
||||
\App\Http\Middleware\CheckForMaintenanceMode::class,
|
||||
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
|
||||
\App\Http\Middleware\TrimStrings::class,
|
||||
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
|
||||
];
|
||||
|
||||
/**
|
||||
* The application's route middleware groups.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middlewareGroups = [
|
||||
'web' => [
|
||||
\App\Http\Middleware\EncryptCookies::class,
|
||||
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
|
||||
\Illuminate\Session\Middleware\StartSession::class,
|
||||
// \Illuminate\Session\Middleware\AuthenticateSession::class,
|
||||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||
\App\Http\Middleware\VerifyCsrfToken::class,
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'throttle:60,1',
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* The application's route middleware.
|
||||
*
|
||||
* These middleware may be assigned to groups or used individually.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $routeMiddleware = [
|
||||
'auth' => \App\Http\Middleware\Authenticate::class,
|
||||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
||||
'auth.user' => \App\Http\Middleware\AuthUser::class,
|
||||
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
|
||||
'can' => \Illuminate\Auth\Middleware\Authorize::class,
|
||||
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
|
||||
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
|
||||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
];
|
||||
}
|
||||
242
app/Http/Middleware/AuthUser.php
Executable file
242
app/Http/Middleware/AuthUser.php
Executable file
@ -0,0 +1,242 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Models\Users;
|
||||
|
||||
class AuthUser
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$request->auth = Auth::user();
|
||||
$request->auth->uid = $request->auth->id;
|
||||
|
||||
if ($request->auth->role == Users::ROLE_ADMIN) {
|
||||
// views
|
||||
if ($request->is("home/*")) {
|
||||
} elseif ($request->is("home")) {
|
||||
} elseif ($request->is("dashboard/*")) {
|
||||
} elseif ($request->is("dashboard")) {
|
||||
} elseif ($request->is("drivers/*")) {
|
||||
} elseif ($request->is("drivers")) {
|
||||
} elseif ($request->is("transactions/*")) {
|
||||
} elseif ($request->is("transactions")) {
|
||||
} elseif ($request->is("vehicles/*")) {
|
||||
} elseif ($request->is("vehicles")) {
|
||||
} elseif ($request->is("clients/*")) {
|
||||
} elseif ($request->is("clients")) {
|
||||
} elseif ($request->is("zone/*")) {
|
||||
} elseif ($request->is("zone")) {
|
||||
} elseif ($request->is("users/*")) {
|
||||
} elseif ($request->is("users")) {
|
||||
} elseif ($request->is("profile/*")) {
|
||||
} elseif ($request->is("profile")) {
|
||||
} elseif ($request->is("config/*")) {
|
||||
} elseif ($request->is("config")) {
|
||||
} elseif ($request->is("pocket/*")) {
|
||||
} elseif ($request->is("pocket")) {
|
||||
} elseif ($request->is("lgb_types/*")) {
|
||||
} elseif ($request->is("lgb_types")) {
|
||||
} elseif ($request->is("lgb_masters/*")) {
|
||||
} elseif ($request->is("lgb_masters")) {
|
||||
} elseif ($request->is("insurances/*")) {
|
||||
} elseif ($request->is("static_insurances/*")) {
|
||||
}
|
||||
// api
|
||||
elseif ($request->is("api/conf/*")) {
|
||||
} elseif ($request->is("api/conf")) {
|
||||
} elseif ($request->is("api/osm/*")) {
|
||||
} elseif ($request->is("api/osm")) {
|
||||
} elseif ($request->is("api/region/*")) {
|
||||
} elseif ($request->is("api/region")) {
|
||||
} elseif ($request->is("api/zones/*")) {
|
||||
} elseif ($request->is("api/zones")) {
|
||||
} elseif ($request->is("api/vehicles/*")) {
|
||||
} elseif ($request->is("api/vehicles")) {
|
||||
} elseif ($request->is("api/drivers/*")) {
|
||||
} elseif ($request->is("api/drivers")) {
|
||||
} elseif ($request->is("api/users/*")) {
|
||||
} elseif ($request->is("api/users")) {
|
||||
} elseif ($request->is("api/clients/*")) {
|
||||
} elseif ($request->is("api/clients")) {
|
||||
} elseif ($request->is("api/tracks/*")) {
|
||||
} elseif ($request->is("api/tracks")) {
|
||||
} elseif ($request->is("api/transactions/*")) {
|
||||
} elseif ($request->is("api/transactions")) {
|
||||
} elseif ($request->is("api/transactions_spc/*")) {
|
||||
} elseif ($request->is("api/transactions_spc")) {
|
||||
} elseif ($request->is("api/insurances/*")) {
|
||||
} elseif ($request->is("api/insurances")) {
|
||||
} elseif ($request->is("api/devices/*")) {
|
||||
} elseif ($request->is("api/devices")) {
|
||||
} elseif ($request->is("api/user/clients/*")) {
|
||||
} elseif ($request->is("api/user/clients")) {
|
||||
} elseif ($request->is("api/a_items/*")) {
|
||||
} elseif ($request->is("api/a_items")) {
|
||||
} elseif ($request->is("api/admin/*")) {
|
||||
} elseif ($request->is("api/admin")) {
|
||||
} elseif ($request->is("api/static_insurances/*")) {
|
||||
} elseif ($request->is("api/static_insurances")) {
|
||||
} elseif ($request->is("api/menu_permissions/*")) {
|
||||
} elseif ($request->is("api/menu_permissions")) {
|
||||
} elseif ($request->is("api/pocket/*")) {
|
||||
} elseif ($request->is("api/pocket")) {
|
||||
} elseif ($request->is("api/lgb_types/*")) {
|
||||
} elseif ($request->is("api/lgb_types")) {
|
||||
} elseif ($request->is("api/lgb_keys/*")) {
|
||||
} elseif ($request->is("api/lgb_keys")) {
|
||||
} elseif ($request->is("api/dtypes/*")) {
|
||||
} elseif ($request->is("api/dtypes")) {
|
||||
} elseif ($request->is("api/dana/*")) {
|
||||
} elseif ($request->is("api/dana")) {
|
||||
} elseif ($request->is("api/universal/*")) {
|
||||
} elseif ($request->is("api/universal")) {
|
||||
} else {
|
||||
return abort(403, "Unauthorized action.");
|
||||
}
|
||||
} elseif ($request->auth->role == Users::ROLE_VENDOR) {
|
||||
// views
|
||||
if ($request->is("home/*")) {
|
||||
} elseif ($request->is("home")) {
|
||||
} elseif ($request->is("dashboard/*")) {
|
||||
} elseif ($request->is("dashboard")) {
|
||||
} elseif ($request->is("checklist/*")) {
|
||||
} elseif ($request->is("checklist")) {
|
||||
} elseif ($request->is("zone/*")) {
|
||||
} elseif ($request->is("zone")) {
|
||||
} elseif ($request->is("drivers/*")) {
|
||||
} elseif ($request->is("drivers")) {
|
||||
} elseif ($request->is("vehicles/*")) {
|
||||
} elseif ($request->is("vehicles")) {
|
||||
} elseif ($request->is("profile/*")) {
|
||||
} elseif ($request->is("transactions/*")) {
|
||||
} elseif ($request->is("transactions")) {
|
||||
} elseif ($request->is("profile")) {
|
||||
} elseif ($request->is("user/vendor/*")) {
|
||||
} elseif ($request->is("user/vendor")) {
|
||||
}
|
||||
// api
|
||||
elseif ($request->is("api/conf")) {
|
||||
} elseif ($request->is("api/osm/*")) {
|
||||
} elseif ($request->is("api/osm")) {
|
||||
} elseif ($request->is("api/region/*")) {
|
||||
} elseif ($request->is("api/region")) {
|
||||
} elseif ($request->is("api/tracks/*")) {
|
||||
} elseif ($request->is("api/tracks")) {
|
||||
} elseif ($request->is("api/vehicles/*")) {
|
||||
} elseif ($request->is("api/vehicles")) {
|
||||
} elseif ($request->is("api/drivers/*")) {
|
||||
} elseif ($request->is("api/drivers")) {
|
||||
} elseif ($request->is("api/user/vendor/*")) {
|
||||
} elseif ($request->is("api/user/vendor")) {
|
||||
} elseif ($request->is("api/transactions_spc/*")) {
|
||||
} elseif ($request->is("api/transactions_spc")) {
|
||||
} elseif ($request->is("api/zones/*")) {
|
||||
} elseif ($request->is("api/zones")) {
|
||||
} elseif ($request->is("api/users/*")) {
|
||||
} elseif ($request->is("api/users")) {
|
||||
} elseif ($request->is("api/universal/*")) {
|
||||
} elseif ($request->is("api/universal")) {
|
||||
} else {
|
||||
return abort(403, "Unauthorized action.");
|
||||
}
|
||||
} elseif ($request->auth->role == Users::ROLE_CLIENT_ADMIN) {
|
||||
// views
|
||||
if ($request->is("home/*")) {
|
||||
} elseif ($request->is("home")) {
|
||||
} elseif ($request->is("dashboard/*")) {
|
||||
} elseif ($request->is("dashboard")) {
|
||||
} elseif ($request->is("zone/*")) {
|
||||
} elseif ($request->is("zone")) {
|
||||
} elseif ($request->is("profile/*")) {
|
||||
} elseif ($request->is("profile")) {
|
||||
} elseif ($request->is("user/clients/*")) {
|
||||
} elseif ($request->is("user/clients")) {
|
||||
}
|
||||
// api
|
||||
elseif ($request->is("api/conf")) {
|
||||
} elseif ($request->is("api/osm/*")) {
|
||||
} elseif ($request->is("api/osm")) {
|
||||
} elseif ($request->is("api/region/*")) {
|
||||
} elseif ($request->is("api/region")) {
|
||||
} elseif ($request->is("api/zones/*")) {
|
||||
} elseif ($request->is("api/zones")) {
|
||||
} elseif ($request->is("api/tracks/*")) {
|
||||
} elseif ($request->is("api/tracks")) {
|
||||
} elseif ($request->is("api/user/clients/*")) {
|
||||
} elseif ($request->is("api/user/clients")) {
|
||||
} elseif ($request->is("api/users/*")) {
|
||||
} elseif ($request->is("api/users")) {
|
||||
} elseif ($request->is("api/universal/*")) {
|
||||
} elseif ($request->is("api/universal")) {
|
||||
} else {
|
||||
return abort(403, "Unauthorized action.");
|
||||
}
|
||||
} elseif ($request->auth->role == Users::ROLE_CHECKER) {
|
||||
// views
|
||||
if ($request->is("user/checker/*")) {
|
||||
} elseif ($request->is("user/checker")) {
|
||||
} elseif ($request->is("profile/*")) {
|
||||
} elseif ($request->is("profile")) {
|
||||
}
|
||||
// api
|
||||
elseif ($request->is("api/user/checker/*")) {
|
||||
} elseif ($request->is("api/user/checker")) {
|
||||
} elseif ($request->is("api/users/*")) {
|
||||
} elseif ($request->is("api/users")) {
|
||||
} elseif ($request->is("api/universal/*")) {
|
||||
} elseif ($request->is("api/universal")) {
|
||||
} else {
|
||||
return abort(403, "Unauthorized action.");
|
||||
}
|
||||
} elseif ($request->auth->role == Users::ROLE_FINANCE) {
|
||||
// views
|
||||
if ($request->is("finance/*")) {
|
||||
} elseif ($request->is("profile/*")) {
|
||||
} elseif ($request->is("profile")) {
|
||||
}
|
||||
// api
|
||||
elseif ($request->is("api/finance/*")) {
|
||||
} elseif ($request->is("api/finance")) {
|
||||
} elseif ($request->is("api/a_items/*")) {
|
||||
} elseif ($request->is("api/a_items")) {
|
||||
} elseif ($request->is("api/users/*")) {
|
||||
} elseif ($request->is("api/users")) {
|
||||
} elseif ($request->is("api/dana/*")) {
|
||||
} elseif ($request->is("api/dana")) {
|
||||
} elseif ($request->is("api/universal/*")) {
|
||||
} elseif ($request->is("api/universal")) {
|
||||
} else {
|
||||
return abort(403, "Unauthorized action.");
|
||||
}
|
||||
} elseif ($request->auth->role == Users::ROLE_SPECIAL_TRACKING) {
|
||||
// views
|
||||
if ($request->is("dashboard/*")) {
|
||||
} elseif ($request->is("dashboard")) {
|
||||
}
|
||||
// api
|
||||
elseif ($request->is("api/tracks/*")) {
|
||||
} elseif ($request->is("api/tracks")) {
|
||||
} elseif ($request->is("api/users/*")) {
|
||||
} elseif ($request->is("api/users")) {
|
||||
} elseif ($request->is("api/universal/*")) {
|
||||
} elseif ($request->is("api/universal")) {
|
||||
} else {
|
||||
return abort(403, "Unauthorized action.");
|
||||
}
|
||||
} else {
|
||||
return abort(403, "Unauthorized action.");
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
22
app/Http/Middleware/Authenticate.php
Executable file
22
app/Http/Middleware/Authenticate.php
Executable file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Auth\Middleware\Authenticate as Middleware;
|
||||
|
||||
class Authenticate extends Middleware
|
||||
{
|
||||
/**
|
||||
* Get the path the user should be redirected to when they are not authenticated.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return string|null
|
||||
*/
|
||||
protected function redirectTo($request)
|
||||
{
|
||||
if (! $request->expectsJson()) {
|
||||
return route('login');
|
||||
}
|
||||
}
|
||||
}
|
||||
17
app/Http/Middleware/CheckForMaintenanceMode.php
Executable file
17
app/Http/Middleware/CheckForMaintenanceMode.php
Executable file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
|
||||
|
||||
class CheckForMaintenanceMode extends Middleware
|
||||
{
|
||||
/**
|
||||
* The URIs that should be reachable while maintenance mode is enabled.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
];
|
||||
}
|
||||
17
app/Http/Middleware/EncryptCookies.php
Executable file
17
app/Http/Middleware/EncryptCookies.php
Executable file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
|
||||
|
||||
class EncryptCookies extends Middleware
|
||||
{
|
||||
/**
|
||||
* The names of the cookies that should not be encrypted.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
];
|
||||
}
|
||||
27
app/Http/Middleware/RedirectIfAuthenticated.php
Executable file
27
app/Http/Middleware/RedirectIfAuthenticated.php
Executable file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Closure;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class RedirectIfAuthenticated
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @param string|null $guard
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next, $guard = null)
|
||||
{
|
||||
if (Auth::guard($guard)->check()) {
|
||||
return redirect(RouteServiceProvider::HOME);
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
18
app/Http/Middleware/TrimStrings.php
Executable file
18
app/Http/Middleware/TrimStrings.php
Executable file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
|
||||
|
||||
class TrimStrings extends Middleware
|
||||
{
|
||||
/**
|
||||
* The names of the attributes that should not be trimmed.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
'password',
|
||||
'password_confirmation',
|
||||
];
|
||||
}
|
||||
20
app/Http/Middleware/TrustHosts.php
Executable file
20
app/Http/Middleware/TrustHosts.php
Executable file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Http\Middleware\TrustHosts as Middleware;
|
||||
|
||||
class TrustHosts extends Middleware
|
||||
{
|
||||
/**
|
||||
* Get the host patterns that should be trusted.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function hosts()
|
||||
{
|
||||
return [
|
||||
$this->allSubdomainsOfApplicationUrl(),
|
||||
];
|
||||
}
|
||||
}
|
||||
29
app/Http/Middleware/TrustProxies.php
Executable file
29
app/Http/Middleware/TrustProxies.php
Executable file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Http\Middleware\TrustProxies as Middleware;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class TrustProxies extends Middleware
|
||||
{
|
||||
/**
|
||||
* The trusted proxies for this application.
|
||||
*
|
||||
* @var array|string|null
|
||||
*/
|
||||
protected $proxies;
|
||||
|
||||
/**
|
||||
* The headers that should be used to detect proxies.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $headers =
|
||||
Request::HEADER_X_FORWARDED_FOR |
|
||||
Request::HEADER_X_FORWARDED_HOST |
|
||||
Request::HEADER_X_FORWARDED_PORT |
|
||||
Request::HEADER_X_FORWARDED_PROTO |
|
||||
Request::HEADER_X_FORWARDED_AWS_ELB;
|
||||
|
||||
}
|
||||
17
app/Http/Middleware/VerifyCsrfToken.php
Executable file
17
app/Http/Middleware/VerifyCsrfToken.php
Executable file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
|
||||
|
||||
class VerifyCsrfToken extends Middleware
|
||||
{
|
||||
/**
|
||||
* The URIs that should be excluded from CSRF verification.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user