174 lines
5.8 KiB
PHP
174 lines
5.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\API;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Pickup;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use Illuminate\Support\Str;
|
|
use App\Mail\VerifMail;
|
|
|
|
class ApiAuth extends Controller
|
|
{
|
|
|
|
// private VerifMail $verifMail;
|
|
// Required apikey mobile
|
|
public function __construct()
|
|
{
|
|
// $this->verifMail = new VerifMail();
|
|
}
|
|
|
|
public function loginUser(Request $request)
|
|
{
|
|
$validadte = Validator::make($request->all(), [
|
|
'email' => 'required|email',
|
|
'password' => 'required',
|
|
]);
|
|
|
|
$dataEmail = $request->email;
|
|
|
|
if ($validadte->fails()) {
|
|
return $this->sendMassage($validadte->errors()->first(), 400, false);
|
|
} else {
|
|
$customer = User::where('email', $dataEmail)->first();
|
|
if ($customer) {
|
|
if (Hash::check($request->password, $customer->password)) {
|
|
$token = Str::random(200);
|
|
User::where('email', $dataEmail)->update([
|
|
'token' => $token,
|
|
]);
|
|
$dataCustomer = User::where('email', $dataEmail)->first();
|
|
return $this->sendMassage($dataCustomer, 200, true);
|
|
}
|
|
return $this->sendMassage('Password salah', 400, false);
|
|
}
|
|
return $this->sendMassage('Username tidak ditemukan', 400, false);
|
|
}
|
|
}
|
|
|
|
public function loginPegawai(Request $request)
|
|
{
|
|
$validadte = Validator::make($request->all(), [
|
|
'email' => 'required|email',
|
|
'password' => 'required',
|
|
]);
|
|
|
|
$dataEmail = $request->email;
|
|
|
|
if ($validadte->fails()) {
|
|
return $this->sendMassage($validadte->errors()->first(), 400, false);
|
|
} else {
|
|
$customer = User::where('email', $dataEmail)->first();
|
|
if ($customer) {
|
|
if (Hash::check($request->password, $customer->password)) {
|
|
$token = Str::random(200);
|
|
User::where('email', $dataEmail)->update([
|
|
'token' => $token,
|
|
]);
|
|
$dataCustomer = User::where('email', $dataEmail)->first();
|
|
return $this->sendMassage($dataCustomer, 200, true);
|
|
}
|
|
return $this->sendMassage('Password salah', 400, false);
|
|
}
|
|
return $this->sendMassage('Username tidak ditemukan', 400, false);
|
|
}
|
|
}
|
|
|
|
public function registerUser(Request $request)
|
|
{
|
|
$validadte = Validator::make($request->all(), [
|
|
'nama' => 'required',
|
|
'email' => 'required|email',
|
|
]);
|
|
$RandomNumber = rand(10000, 99999);
|
|
|
|
if ($validadte->fails()) {
|
|
return $this->sendMassage($validadte->errors()->first(), 400, false);
|
|
} else {
|
|
$dataEmail = $request->input('email');
|
|
$customer = User::where('email', $dataEmail)->first();
|
|
if ($customer) {
|
|
return $this->sendMassage('Akun yang anda gunakan telah terdapat pada list', 400, false);
|
|
} else {
|
|
$isRegister = User::create([
|
|
'id_user' => "IDCUST" . $RandomNumber,
|
|
'nama' => $request->input('nama'),
|
|
'no_telepon' => $request->input('no_telepon'),
|
|
'alamat' => $request->input('alamat'),
|
|
'email' => $request->input('email'),
|
|
'id_role' => "1",
|
|
'password' => Hash::make($request->input('password')),
|
|
'longitude' => $request->input('longitude'),
|
|
'latitude' => $request->input('latitude'),
|
|
]);
|
|
if (isset($isRegister)) {
|
|
$dataUser = [
|
|
'email' => $dataEmail,
|
|
'kode' => null
|
|
];
|
|
return $this->sendMassage("Selamat anda berhasil registrasi", 200, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
function infoPegawai(Request $request)
|
|
{
|
|
|
|
$cekPegawaiFree = User::where('user.id_role', 2)
|
|
->get()
|
|
->pluck('id_user')->toArray();
|
|
|
|
$cekPegawaiNotFree = User::leftJoin('pickup', 'user.id_user', '=', 'pickup.id_pegawai')
|
|
->where('user.id_role', 2)
|
|
->where(function ($query) {
|
|
$query->orWhere('pickup.status_penjemputan', 'pending')
|
|
->orWhere('pickup.status_penjemputan', 'pickup');
|
|
})
|
|
->get()
|
|
->pluck('id_user')
|
|
->toArray();
|
|
|
|
$pegawaiBebas = User::whereIn('id_user', array_diff($cekPegawaiFree, $cekPegawaiNotFree))->get()->toArray();
|
|
|
|
$jumlahPegawaiBebas = count($pegawaiBebas);
|
|
$jumlahPegawaiTotal = count($cekPegawaiFree);
|
|
|
|
$hasil = "$jumlahPegawaiBebas/$jumlahPegawaiTotal";
|
|
|
|
return $this->sendMassage($hasil, 200, true);
|
|
|
|
}
|
|
|
|
function slotAntri(Request $request)
|
|
{
|
|
$jumlahAntrian = Pickup::where(function ($query) {
|
|
$query->orWhere('pickup.status_penjemputan', 'pending')
|
|
->orWhere('pickup.status_penjemputan', 'pickup');
|
|
})->count();
|
|
|
|
if ($jumlahAntrian >= 10) {
|
|
return $this->sendMassage("0/10", 200, true);
|
|
} else {
|
|
$hasil = 10 - $jumlahAntrian;
|
|
$infoSlot = "$hasil/10";
|
|
return $this->sendMassage($infoSlot, 200, true);
|
|
}
|
|
}
|
|
|
|
// Function Massage
|
|
public function sendMassage($text, $kode, $status)
|
|
{
|
|
return response()->json([
|
|
'data' => $text,
|
|
'code' => $kode,
|
|
'status' => $status
|
|
], $kode);
|
|
}
|
|
}
|