Memperbaiki Conflict Staging dan Tender

This commit is contained in:
2024-09-25 17:35:59 +07:00
45 changed files with 4082 additions and 31 deletions

View File

@@ -0,0 +1,152 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\StatusPermohonan;
class ActivityController extends Controller
{
public $user;
/**
* Display a listing of the resource.
*/
public function index()
{
$status_permohonan = StatusPermohonan::all();
return view('lpj::activity.index', compact('status_permohonan'));
}
/**
* Show the form for creating a new resource.
*/
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
//
}
/**
* Show the specified resource.
*/
public function show($id)
{
$status_permohonan = StatusPermohonan::orderBy('id')->get();
$permohonan = Permohonan::with(
[
'user',
'debiture.province',
'debiture.city',
'debiture.district',
'debiture.village',
'branch',
'tujuanPenilaian',
'penilaian'
],
)->findOrFail($id);
return view('lpj::activity.activitydetail', compact('id', 'status_permohonan', 'permohonan'));
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
return view('lpj::edit');
}
/**
* Update the specified resource in storage.
*/
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('debitur.view')) {
// abort(403, 'Sorry! You are not allowed to view users.');
}
// Retrieve data from the database
$query = Permohonan::query();
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%');
$q->orWhere('status', 'LIKE', '%' . $search . '%');
});
}
// Apply status filter if provided
if ($request->has('status') && !empty($request->get('status'))) {
$status = $request->get('status');
$query->where('status', '=', $status);
}
// Default sorting if no sort provided
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
$order = $request->get('sortOrder');
$column = $request->get('sortField');
$query->orderBy($column, $order);
} else {
$query->orderBy('nomor_registrasi', 'asc'); // Default order by nomor_registrasi
}
// Get the total count of records before paginating
$totalRecords = $query->count();
// Apply pagination if provided
if ($request->has('page') && $request->has('size')) {
$page = (int) $request->get('page', 1); // Default page is 1
$size = (int) $request->get('size', 10); // Default size is 10
$offset = ($page - 1) * $size; // Calculate the offset
// Limit results based on pagination
$query->skip($offset)->take($size);
}
// Get the filtered count of records (after search & filters applied)
$filteredRecords = $query->count();
// Get the data for the current page
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
// Calculate the total number of pages
$pageCount = ceil($totalRecords / $request->get('size', 10));
// Return the response data as a JSON object
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $request->get('page', 1),
'totalCount' => $totalRecords,
'data' => $data,
]);
}
/**
* Download the specified resource from storage.
*/
public function download($id)
{
$document = Permohonan::find($id);
return response()->download(storage_path('app/public/' . $document->dokumen));
}
}

View File

@@ -0,0 +1,156 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use Exception;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Modules\Lpj\Models\JenisPenilaian;
use Modules\Lpj\Http\Requests\JenisPenilaianRequest;
use Modules\Lpj\Exports\JenisPenilaianExport;
use Maatwebsite\Excel\Facades\Excel;
class JenisPenilaianController extends Controller
{
public $user;
/**
* Display a listing of the resource.
*/
public function index()
{
return view('lpj::jenis_penilaian.index');
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('lpj::jenis_penilaian.form');
}
/**
* Store a newly created resource in storage.
*/
public function store(JenisPenilaianRequest $request)
{
$validate = $request->validated();
try {
JenisPenilaian::create($validate);
return redirect()->route('basicdata.jenis-penilaian.index')->with('success', 'Jenis Penilaian created successfully');
} catch (Exception $e) {
return redirect()->route('basicdata.jenis-penilaian.create')->with('error', $e->getMessage());
}
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$jenisPenilaian = JenisPenilaian::find($id);
return view('lpj::jenis_penilaian.form', compact('jenisPenilaian'));
}
/**
* Update the specified resource in storage.
*/
public function update(JenisPenilaianRequest $request, $id)
{
$validated = $request->validated();
if ($validated) {
try {
$jenisPenilaian = JenisPenilaian::find($id);
$jenisPenilaian->update($validated);
return redirect()->route('basicdata.jenis-penilaian.index')->with('success', 'Jenis Penilaian updated successfully');
} catch (Exception $e) {
return redirect()->route('basicdata.jenis-penilaian.edit', $id)->with('error', $e->getMessage());
}
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
$jenisPenilaian = JenisPenilaian::find($id);
$jenisPenilaian->delete();
echo json_encode(['success' => true, 'message' => 'Jenis Penilaian deleted successfully']);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Failed to delete Jenis Penilaian']);
}
}
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('jenis_penilaian.view')) {
//abort(403, 'Sorry! You are not allowed to view users.');
}
$query = JenisPenilaian::query();
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('code', 'LIKE', "%$search%");
$q->orWhere('name', 'LIKE', "%$search%");
});
}
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
$order = $request->get('sortOrder');
$column = $request->get('sortField');
$query->orderBy($column, $order);
}
$totalRecords = $query->count();
$size = $request->get('size');
$pageCount = 1;
if ($size > 0) {
if ($request->has('page') && $request->has('size')) {
$page = $request->get('page');
$offset = ($page - 1) * $size;
$query->skip($offset)->take($size);
$filteredRecords = $query->count();
$pageCount = ceil($totalRecords / $size);
}
$data = $query->get();
} else {
$filteredRecords = $totalRecords;
$data = $query->get();
}
$currentPage = $request->get('page') ?? 1;
// Return the response data as a JSON object
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $currentPage,
'totalCount' => $totalRecords,
'data' => $data
]);
}
public function export()
{
return Excel::download(new JenisPenilaianExport(), 'jenis-penilaian.xlsx');
}
}

View File

@@ -127,7 +127,7 @@ class KJPPController extends Controller
if ($file !== null) {
// Jika ada file dari database maka hapus file yang lama ke file yang baru
$kjpp = KJPP::find($id);
// Storage::delete('public/uploads_pdf/' . $kjpp->attachment);
Storage::delete('public/uploads_pdf/' . $kjpp->attachment);
// Simpan file yang diunggah
$file->storeAs('public/uploads_pdf', $filename);
$validated['attachment'] = $filename;

View File

@@ -0,0 +1,225 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Modules\Lpj\Http\Requests\PenilaianRequest;
use Modules\Lpj\Models\JenisPenilaian;
use Modules\Lpj\Models\Penilaian;
use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\StatusPermohonan;
use Modules\Lpj\Models\Teams;
use Modules\Lpj\Models\TeamsUsers;
use Modules\Usermanagement\Models\User;
class PenilaianController extends Controller
{
public $user;
/**
* Display a listing of the resource.
*/
public function index()
{
$status_permohonan = StatusPermohonan::all();
return view('lpj::penilaian.index', compact('status_permohonan'));
}
/**
* Store a newly created resource in storage.
*/
public function store(PenilaianRequest $request)
{
//print_r($request->all());exit;
$validatedData = $request->validated();
if ($validatedData) {
try {
$penilaian = Penilaian::create($validatedData);
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi);
$permohonan->update([
'status' => 'assign',
]);
return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan');
} catch (Exception $e) {
return redirect()->route('penilaian.index')->with('error', $e->getMessage());
}
}
}
/**
* Show the form for creating a new resource.
*/
public function create($id)
{
return view('lpj::penilaian.form');
}
/**
* Update the specified resource in storage.
*/
public function update(PenilaianRequest $request, $id)
{
$validate = $request->validated();
if ($validate) {
try {
$penilaian = Penilaian::where('nomor_registrasi', $request->nomor_registrasi)->firstOrFail();
$penilaian->update($validate);
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi);
$permohonan->update([
'status' => 'assign',
]);
return redirect()->route('penilaian.index', $id)->with('success', 'Penilaian berhasil diubah');
} catch (Exception $e) {
return redirect()->route('penilaian.index', $id)->with('error', $e->getMessage());
}
}
}
/**
* Show the form for editing the specified resource.
*/
public function assignment($id)
{
$permohonan = Permohonan::with(
[
'user',
'debiture.province',
'debiture.city',
'debiture.district',
'debiture.village',
'branch',
'tujuanPenilaian',
],
)->findOrFail($id);
$jenisPenilaian = JenisPenilaian::all();
$teamPenilai = Teams::with(['regions', 'teamsUsers'])->get();
$penilaian = Penilaian::where('nomor_registrasi', $permohonan->nomor_registrasi)->first();
return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian'));
}
/**
* Remove the specified resource from storage.
*/
public function revisi(PenilaianRequest $request, $nomor_registrasi)
{
$validatedData = $request->validated();
if ($validatedData) {
try {
if (isset($validatedData['dokumen']) && $request->hasFile('dokumen')) {
$file_name = $validatedData['dokumen']->getClientOriginalName();
$validatedData['dokumen']->storeAs('public/dokumen_revisi', $file_name);
}
$dataToUpdate = [
'keterangan' => $validatedData['keterangan'],
'dokumen' => 'dokumen_revisi/' . $file_name,
'status' => 'revisi',
];
// dump($dataToUpdate);
$permohonan = Permohonan::where('nomor_registrasi', $nomor_registrasi)->first();
$permohonan->update($dataToUpdate);
return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil direvisi');
} catch (Exception $e) {
dump($e->getMessage());
// return redirect()->route('penilaian.index')->with('error', $e->getMessage());
}
}
}
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('debitur.view')) {
// abort(403, 'Sorry! You are not allowed to view users.');
}
$query = Permohonan::query();
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%');
$q->orWhere('status', 'LIKE', '%' . $search . '%');
});
}
$query->whereRaw('LOWER(status) = ?', ['register']);
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
$order = $request->get('sortOrder');
$column = $request->get('sortField');
$query->orderBy($column, $order);
}
$totalRecords = $query->count();
$size = $request->get('size', 10);
if ($size == 0) {
$size = 10;
}
if ($request->has('page') && $request->has('size')) {
$page = $request->get('page', 1);
$offset = ($page - 1) * $size;
$query->skip($offset)->take($size);
}
$filteredRecords = $query->count();
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
$pageCount = ceil($totalRecords / $size);
$currentPage = max(1, $request->get('page', 1));
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $currentPage,
'totalCount' => $totalRecords,
'data' => $data,
]);
}
public function getUserTeams($id)
{
$teamsUser = TeamsUsers::where('teams_id', $id)->get();
$userIds = $teamsUser->pluck('user_id');
$users = User::whereIn('id', $userIds)
->with('roles')
->get();
if ($users->isNotEmpty()) {
return response()->json($users, 200);
}
return response()->json([], 200);
}
}

View File

@@ -0,0 +1,164 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Lpj\Models\Regions;
use Modules\Lpj\Http\Requests\RegionRequest;
use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Exports\RegionExport;
class RegionController extends Controller
{
public $user;
public function index()
{
return view('lpj::region.index');
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('lpj::region.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(RegionRequest $request)
{
$validate = $request->validated();
if ($validate) {
try {
// Save to database
Regions::create($validate);
return redirect()
->route('basicdata.region.index')
->with('success', 'region created successfully');
} catch (Exception $e) {
return redirect()
->route('basicdata.region.create')
->with('error', 'Failed to create region');
}
}
}
public function edit($id)
{
$region = Regions::find($id);
return view('lpj::region.create', compact('region'));
}
/**
* Update the specified resource in storage.
*/
public function update(RegionRequest $request, $id)
{
$validate = $request->validated();
if ($validate) {
try {
// Update in database
$region = Regions::find($id);
$region->update($validate);
return redirect()
->route('basicdata.region.index')
->with('success', 'Region updated successfully');
} catch (Exception $e) {
return redirect()
->route('basicdata.region.edit', $id)
->with('error', 'Failed to update region');
}
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
try {
// Delete from database
$region = Regions::find($id);
$region->delete();
echo json_encode(['success' => true, 'message' => 'Region deleted successfully']);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Failed to delete region']);
}
}
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('region.view')) {
//abort(403, 'Sorry! You are not allowed to view users.');
}
$query = Regions::query();
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('code', 'LIKE', "%$search%");
$q->orWhere('name', 'LIKE', "%$search%");
});
}
if($request->has('sortOrder') && !empty($request->get('sortOrder'))){
$order = $request->get('sortOrder');
$column = $request->get('sortField');
$query->orderBy($column, $order);
}
$totalRecords = $query->count();
// Apply pagination if provided
if ($request->has('page') && $request->has('size')) {
$page = $request->get('page');
$size = $request->get('size');
$offset = ($page - 1) * $size; // Calculate the offset
$query->skip($offset)->take($size);
}
// Get the filtered count of records
$filteredRecords = $query->count();
// Get the data for the current page
$data = $query->get();
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));
// Calculate the current page number
$currentPage = 0 + 1;
// dump($data);
// Return the response data as a JSON object
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $currentPage,
'totalCount' => $totalRecords,
'data' => $data
]);
}
public function export()
{
return Excel::download(new RegionExport, 'region.xlsx');
}
}

View File

@@ -0,0 +1,260 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Lpj\Models\Regions;
use Modules\Usermanagement\Models\User;
use Modules\Lpj\Models\Teams;
use Modules\Lpj\Models\TeamsUsers;
use Modules\Lpj\Http\Requests\TeamsRequest;
use Illuminate\Support\Facades\DB;
use Modules\Lpj\Exports\TeamPenilaianExport;
use Maatwebsite\Excel\Facades\Excel;
class TeamsController extends Controller
{
public $user;
/**
* Display a listing of the resource.
*/
public function index()
{
return view('lpj::teams.index');
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
// cek region apakah sudah ada di tabel teams
$regionTeam = Teams::pluck('regions_id')->toArray();
$region = Regions::whereNotIn('id', $regionTeam)->get();
// cek user apakah sudah ada di tabel teams_users
$userTeam = TeamsUsers::pluck('user_id')->toArray();
$user = User::whereNotIn('id', $userTeam)
->with('roles')
->get();
return view('lpj::teams.form', compact('region', 'user'));
}
/**
* Store a newly created resource in storage.
*/
public function store(TeamsRequest $request)
{
$validate = $request->validated();
DB::beginTransaction();
try {
$teams = Teams::create($validate);
$users = $request->input('user', []);
// loop untuk insert data users ke tabel teams_users
foreach ($users as $user) {
TeamsUsers::create([
'teams_id' => $teams->id,
'user_id' => $user
]);
}
DB::commit();
return redirect()
->route('basicdata.teams.index')
->with('success', 'Data saved successfully. ');
} catch (Exception $e) {
DB::rollBack();
return redirect()
->route('basicdata.teams.create')
->with('error', 'Failed to save data. ');
}
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('lpj::show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$teams = Teams::find($id);
$region = Regions::all();
$usedUsers = TeamsUsers::where('teams_id', '!=', $id)->pluck('user_id')->toArray();
$user = User::whereNotIn('id', $usedUsers)
->with('roles')
->get();
// Ambil user yang sudah ada di tim ini
$selectedUsers = $teams->teamsUsers->pluck('user_id')->toArray();
return view('lpj::teams.form', compact('teams', 'region', 'user', 'selectedUsers'));
}
/**
* Update the specified resource in storage.
*/
public function update(TeamsRequest $request, $id)
{
$validate = $request->validated();
DB::beginTransaction();
try {
$teams = Teams::findOrFail($id);
// Update data tim
$teams->update($validate);
$userIds = $request->input('user', []);
$teams->teamsUsers()->delete();
foreach ($userIds as $userId) {
TeamsUsers::create([
'teams_id' => $teams->id,
'user_id' => $userId
]);
}
DB::commit();
return redirect()
->route('basicdata.teams.index')
->with('success', 'Data updated successfully. ');
} catch (Exception $e) {
DB::rollBack();
return redirect()
->route('basicdata.teams.create')
->with('error', 'Failed to update data. ');
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
DB::beginTransaction();
try {
$teams = Teams::findOrFail($id);
$teams->teamsUsers()->delete();
// Hapus tim
$teams->delete();
DB::commit();
echo json_encode(['success' => true, 'message' => 'Team has been deleted successfully']);
} catch (Exception $e) {
DB::rollBack();
echo json_encode(['success' => false, 'message' => 'Failed to delete Team']);
}
}
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('teams.view')) {
//abort(403, 'Sorry! You are not allowed to view users.');
}
// Inisialisasi query
$query = Teams::select('teams.id as id', 'teams.name as team_name', 'regions.name as region_name')
->join('regions', 'teams.regions_id', '=', 'regions.id')
->leftJoin('teams_users', 'teams.id', '=', 'teams_users.teams_id')
->leftJoin('users', 'teams_users.user_id', '=', 'users.id')
->addSelect('users.id as user_id', 'users.name as user_name');
// Filter pencarian
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('teams.name', 'LIKE', "%$search%")
->orWhere('regions.name', 'LIKE', "%$search%")
->orWhere('users.name', 'LIKE', "%$search%");
});
}
// Sorting
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
$order = $request->get('sortOrder');
$column = $request->get('sortField');
$query->orderBy($column, $order);
}
// Hitung total records
$totalRecords = $query->count();
// Pagination
$size = $request->get('size', 10);
$page = $request->get('page', 1);
$offset = ($page - 1) * $size;
// Ambil data dengan pagination
$data = $query->skip($offset)->take($size)->get();
$filteredRecords = $data->count();
$pageCount = ceil($totalRecords / $size);
// Ambil ID pengguna dari hasil query
$userIds = $data->pluck('user_id')->unique();
// Ambil data pengguna dengan peran mereka
$users = User::whereIn('id', $userIds)
->with('roles')
->get()
->keyBy('id');
// Format data
$formattedData = $data->groupBy('id')->map(function ($group) use ($users) {
$team = $group->first();
$team->user_team = $group->map(function ($item) use ($users) {
$user = $users->get($item->user_id);
return [
'nama' => $item->user_name,
'roles' => $user ? $user->roles->pluck('name')->toArray() : [],
];
})->toArray();
return $team;
})->values();
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $page,
'totalCount' => $totalRecords,
'data' => $formattedData
]);
}
public function export()
{
return Excel::download(new TeamPenilaianExport(), 'team-penilai.xlsx');
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class JenisPenilaianRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
$rules = [
'name' => 'required|string|max:255',
'status' => 'nullable|boolean',
'authorized_at' => 'nullable|datetime',
'authorized_status' => 'nullable|string|max:1',
'authorized_by' => 'nullable|exists:users,id',
];
if ($this->method() == 'PUT') {
$rules['code'] = 'required|string|max:3|unique:jenis_penilaian,code,' . $this->id;
} else {
$rules['code'] = 'required|string|max:3|unique:jenis_penilaian,code';
}
return $rules;
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,59 @@
<?php
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class PenilaianRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
$action = $this->input('action');
if ($action === 'revisi') {
return [
'dokumen' => 'required|file|mimes:pdf',
'keterangan' => 'required|string',
];
}
return [
'jenis_penilaian_id' => 'required|max:255',
'teams_id' => 'required|max:255',
'tanggal_kunjungan' => 'required|max:255',
'status' => 'required|string',
'nomor_registrasi' => 'required|string',
'surveyor_id' => 'nullable|required_without:penilai_surveyor_id',
'penilaian_id' => 'nullable|required_without:penilai_surveyor_id',
'penilai_surveyor_id' => 'nullable|required_without_all:surveyor_id,penilaian_id',
'keterangan' => 'nullable',
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
protected function prepareForValidation()
{
// Menetapkan nilai default untuk 'status' jika tidak ada dalam request
$this->merge([
'status' => $this->status ?? 'assign',
]);
}
}

View File

@@ -23,6 +23,8 @@
'status' => 'required|string',
'jenis_fasilitas_kredit_id' => 'required|exists:jenis_fasilitas_kredit,id',
'nilai_plafond_id' => 'required|exists:nilai_plafond,id',
'status_bayar' => 'required|string',
'nilai_njop' => 'nullable|numeric'
];
return $rules;

View File

@@ -0,0 +1,38 @@
<?php
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RegionRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
$rules = [
'name' => 'required|string|max:255',
'status' => 'nullable|boolean',
'authorized_at' => 'nullable|datetime',
'authorized_status' => 'nullable|string|max:1',
'authorized_by' => 'nullable|exists:users,id',
];
if ($this->method() == 'PUT') {
$rules['code'] = 'required|string|max:3|unique:regions,code,' . $this->id;
} else {
$rules['code'] = 'required|string|max:3|unique:regions,code';
}
return $rules;
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -16,6 +16,7 @@
$rules = [
'description' => 'nullable|max:255',
'status' => 'required|boolean',
'slug' => 'nullable|max:255',
];
if ($this->method() == 'PUT') {
@@ -37,9 +38,9 @@
public function prepareForValidation()
{
$this->merge([
return $this->merge([
'status' => isset($this->status) ? 1 : 0,
'slug'=> Str::slug($this->name)
'slug' => Str::slug($this->name),
]);
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class TeamsRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
$rules = [
'name' => 'required|string|max:255',
'status' => 'nullable|boolean',
'regions_id' => 'required|nullable|exists:regions,id',
'user.*' => 'nullable|exists:users,id',
'authorized_at' => 'nullable|datetime',
'authorized_status' => 'nullable|string|max:1',
'authorized_by' => 'nullable|exists:users,id',
];
if ($this->method() == 'PUT') {
$rules['code'] = 'required|string|max:3|unique:teams,code,' . $this->id;
} else {
$rules['code'] = 'required|string|max:3|unique:teams,code';
}
return $rules;
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}