Update Master Data
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Illuminate\Support\Facades\Session;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Carbon\Carbon;
|
||||
class AuthController extends Controller
|
||||
{
|
||||
public function login()
|
||||
{
|
||||
return view('auth.login');
|
||||
}
|
||||
|
||||
public function register()
|
||||
{
|
||||
return view('auth.register');
|
||||
}
|
||||
|
||||
public function createAccount(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => 'required|string|max:255',
|
||||
'email' => 'required|string|email|max:255|unique:users',
|
||||
'password' => 'required|string|min:8|confirmed',
|
||||
]);
|
||||
|
||||
User::create([
|
||||
'name' => $request->name,
|
||||
'email' => $request->email,
|
||||
'password' => Hash::make($request->password),
|
||||
'email_verified_at' => null,
|
||||
'created_by' => null,
|
||||
'updated_by' => null,
|
||||
'deleted_by' => null,
|
||||
]);
|
||||
|
||||
return redirect()->route('auth.login')->with('success', 'Account created successfully. Please login.');
|
||||
}
|
||||
|
||||
public function verify(User $user)
|
||||
{
|
||||
try {
|
||||
$newStatus = $user->email_verified_at ? null : now();
|
||||
|
||||
$user->update([
|
||||
'email_verified_at' => $newStatus
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'User status updated successfully'
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json(['message' => 'Server Error'], 500);
|
||||
}
|
||||
}
|
||||
|
||||
public function authenticate(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'email_username' => 'required|string',
|
||||
'password' => 'required|string',
|
||||
]);
|
||||
|
||||
$login = $request->input('email_username');
|
||||
|
||||
$field = filter_var($login, FILTER_VALIDATE_EMAIL)
|
||||
? 'email'
|
||||
: 'name';
|
||||
|
||||
if (Auth::attempt([$field => $login, 'password' => $request->password])) {
|
||||
if (Auth::user()->email_verified_at === null) {
|
||||
Auth::logout();
|
||||
|
||||
return back()->withErrors([
|
||||
'email_username' => 'Akun belum diverifikasi.',
|
||||
]);
|
||||
}
|
||||
$request->session()->regenerate();
|
||||
return redirect()->intended('');
|
||||
}
|
||||
|
||||
throw ValidationException::withMessages([
|
||||
'email_username' => ['Email atau username salah.'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class DesaKelurahanController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view('index');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Wilayah\KabupatenKota;
|
||||
use App\Models\Wilayah\Provinsi;
|
||||
|
||||
class KabupatenKotaController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view('master.kabupatenkota.index');
|
||||
}
|
||||
|
||||
public function getKabupatenKota(Request $request)
|
||||
{
|
||||
$kabupatenKotaQuery = KabupatenKota::with(['provinsi']);
|
||||
|
||||
if ($request->has('provinsi_id') && !empty($request->provinsi_id)) {
|
||||
$kabupatenKotaQuery->where('provinsi_id', $request->provinsi_id);
|
||||
}
|
||||
|
||||
$kabupatenKota = $kabupatenKotaQuery->get()->map(function($item) {
|
||||
return [
|
||||
'id' => $item->id,
|
||||
'kode_kabupaten_kota' => $item->kode_kabupaten_kota,
|
||||
'nama_kabupaten_kota' => $item->nama_kabupaten_kota,
|
||||
'nama_provinsi' => $item->provinsi->nama_provinsi ?? '-',
|
||||
];
|
||||
});
|
||||
|
||||
return response()->json(['data' => $kabupatenKota]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Wilayah\Kecamatan;
|
||||
use App\Models\Wilayah\KabupatenKota;
|
||||
|
||||
class KecamatanController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view('master.kecamatan.index');
|
||||
}
|
||||
|
||||
public function getKecamatan(Request $request)
|
||||
{
|
||||
$kecamatanQuery = Kecamatan::with(['kabupatenKota.provinsi']);
|
||||
if ($request->has('kabupaten_kota_id') && !empty($request->kabupaten_kota_id)) {
|
||||
$kecamatanQuery->where('kabupaten_kota_id', $request->kabupaten_kota_id);
|
||||
}
|
||||
$kecamatan = $kecamatanQuery->get()->map(function($item) {
|
||||
return [
|
||||
'id' => $item->id,
|
||||
'kode_kecamatan' => $item->kode_kecamatan,
|
||||
'nama_kecamatan' => $item->nama_kecamatan,
|
||||
'nama_kabupaten_kota' => $item->kabupatenKota->nama_kabupaten_kota ?? '-',
|
||||
'nama_provinsi' => $item->kabupatenKota->provinsi->nama_provinsi ?? '-',
|
||||
];
|
||||
});
|
||||
return response()->json(['data' => $kecamatan]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Wilayah\Provinsi;
|
||||
|
||||
class ProvinsiController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view('master.provinsi.index');
|
||||
}
|
||||
|
||||
public function getProvinsi()
|
||||
{
|
||||
$provinsi = Provinsi::select(['id', 'kode_provinsi', 'nama_provinsi', 'iso'])->get();
|
||||
return response()->json(['data' => $provinsi]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\User;
|
||||
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$users = User::all();
|
||||
$totalUsers = $users->count();
|
||||
return view('users.user.index', compact('users', 'totalUsers'));
|
||||
}
|
||||
|
||||
public function getUsers()
|
||||
{
|
||||
$users = User::select(['id', 'name', 'email', 'email_verified_at', 'created_at'])->get();
|
||||
return response()->json(['data' => $users]);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$user = User::findOrFail($id);
|
||||
return view('users.user.show', compact('user'));
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$user = User::findOrFail($id);
|
||||
$user->delete();
|
||||
|
||||
return redirect()->route('users.user.index')->with('success', 'User deleted successfully.');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class UserRoleController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view('users.role.index');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
// Logic to store a new role
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
// Logic to delete a role
|
||||
}
|
||||
}
|
||||
+1
-18
@@ -10,35 +10,18 @@ use Laravel\Sanctum\HasApiTokens;
|
||||
|
||||
class User extends Authenticatable
|
||||
{
|
||||
/** @use HasFactory<\Database\Factories\UserFactory> */
|
||||
use HasFactory, Notifiable, HasApiTokens;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var list<string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'email',
|
||||
'password',
|
||||
'email_verified_at',
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var list<string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
'password',
|
||||
'remember_token',
|
||||
];
|
||||
|
||||
/**
|
||||
* Get the attributes that should be cast.
|
||||
*
|
||||
* @return array<string, string>
|
||||
*/
|
||||
protected function casts(): array
|
||||
{
|
||||
return [
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\wilayah;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class DesaKelurahan extends Model
|
||||
{
|
||||
protected $table = 'master_desa_kelurahan';
|
||||
|
||||
protected $fillable = [
|
||||
'kode_desa_kelurahan',
|
||||
'nama_desa_kelurahan',
|
||||
'path',
|
||||
'kecamatan_id',
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Wilayah;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class KabupatenKota extends Model
|
||||
{
|
||||
protected $table = 'master_kabupaten_kota';
|
||||
|
||||
protected $fillable = [
|
||||
'kode_kabupaten_kota',
|
||||
'nama_kabupaten_kota',
|
||||
'path',
|
||||
'provinsi_id',
|
||||
];
|
||||
|
||||
public function provinsi()
|
||||
{
|
||||
return $this->belongsTo(Provinsi::class, 'provinsi_id');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Wilayah;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Kecamatan extends Model
|
||||
{
|
||||
protected $table = 'master_kecamatan';
|
||||
|
||||
protected $fillable = [
|
||||
'kode_kecamatan',
|
||||
'nama_kecamatan',
|
||||
'path',
|
||||
'kabupaten_kota_id',
|
||||
];
|
||||
|
||||
public function kabupatenKota()
|
||||
{
|
||||
return $this->belongsTo(KabupatenKota::class, 'kabupaten_kota_id');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Wilayah;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Provinsi extends Model
|
||||
{
|
||||
protected $table = 'master_provinsi';
|
||||
|
||||
protected $fillable = [
|
||||
'kode_provinsi',
|
||||
'nama_provinsi',
|
||||
'path',
|
||||
'iso',
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user