Update Master Data

This commit is contained in:
2026-02-20 00:06:06 +07:00
parent 21ad516dce
commit 66c8bb6810
99 changed files with 67783 additions and 306 deletions
+93
View File
@@ -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
{
//
}
+13
View File
@@ -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]);
}
}
+37
View File
@@ -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
View File
@@ -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 [
+17
View File
@@ -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',
];
}
+22
View File
@@ -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');
}
}
+22
View File
@@ -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');
}
}
+17
View File
@@ -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',
];
}