Merge remote-tracking branch 'composer/feature/senior-officer' into staging
This commit is contained in:
@@ -30,31 +30,44 @@ class ActivityController extends Controller
|
||||
*/
|
||||
|
||||
|
||||
public function progres_activity()
|
||||
{
|
||||
// Ambil user yang sedang login
|
||||
$user = auth()->user();
|
||||
$roles = $user->load('roles');
|
||||
$regionId = null;
|
||||
public function progres_activity()
|
||||
{
|
||||
// Ambil user yang sedang login
|
||||
$user = auth()->user();
|
||||
$roles = $user->load('roles');
|
||||
|
||||
// Cek apakah user memiliki role 'senior officer'
|
||||
if ($roles->roles->pluck('name')->contains('senior officer')) {
|
||||
$regionId = TeamsUsers::with('team.regions')
|
||||
->where('user_id', $user->id)
|
||||
->first()?->team->regions_id;
|
||||
}
|
||||
// Inisialisasi regionId dan teamId sebagai null agar bisa dinamis
|
||||
$regionId = null;
|
||||
$teamId = null;
|
||||
|
||||
$teamsActivity = TeamsUsers::with(['user', 'team', 'team.regions'])
|
||||
->whereHas('team', function ($q) use ($regionId) {
|
||||
if ($regionId) {
|
||||
$q->where('regions_id', $regionId);
|
||||
}
|
||||
})
|
||||
->where('user_id', '!=', $user->id)
|
||||
->get();
|
||||
if ($roles->roles->pluck('name')->contains('senior-officer')) {
|
||||
$userTeam = TeamsUsers::with('team')
|
||||
->where('user_id', $user->id)
|
||||
->first();
|
||||
$regionId = $userTeam?->team->regions_id;
|
||||
$teamId = $userTeam?->teams_id;
|
||||
|
||||
}
|
||||
|
||||
$teamsActivity = TeamsUsers::with(['user', 'team', 'team.regions', 'user.roles'])
|
||||
->whereHas('team', function ($q) use ($regionId, $teamId) {
|
||||
if ($regionId) {
|
||||
$q->where('regions_id', $regionId);
|
||||
}
|
||||
if ($teamId) {
|
||||
$q->where('id', $teamId); // Hanya tim yang sama
|
||||
}
|
||||
})
|
||||
->where('user_id', '!=', $user->id)
|
||||
->whereHas('user.roles', function ($query) {
|
||||
// Filter hanya peran 'surveyor' atau 'surveyor-penilai'
|
||||
$query->whereIn('name', ['surveyor', 'surveyor-penilai']);
|
||||
})
|
||||
->get();
|
||||
|
||||
return view('lpj::activity.progres_activity.index', compact('teamsActivity'));
|
||||
}
|
||||
|
||||
return view('lpj::activity.progres_activity.index', compact('teamsActivity'));
|
||||
}
|
||||
|
||||
|
||||
public function senior()
|
||||
@@ -194,13 +207,23 @@ class ActivityController extends Controller
|
||||
|
||||
public function dataTablesForActivity(Request $request, $id)
|
||||
{
|
||||
|
||||
if (is_null($this->user) || !$this->user->can('debitur.view')) {
|
||||
// abort(403, 'Sorry! You are not allowed to view users.');
|
||||
}
|
||||
// Query Penilaian dengan relasi yang diperlukan
|
||||
$query = Penilaian::with(['permohonan', 'permohonan.debiture', 'permohonan.tujuanPenilaian'])
|
||||
->where(function($q) use ($id) {
|
||||
$q->where('surveyor_id', $id)
|
||||
->orWhere('penilaian_id', $id)
|
||||
->orWhere('penilai_surveyor_id', $id);
|
||||
});
|
||||
$query = Penilaian::with([
|
||||
'permohonan',
|
||||
'permohonan.debiture',
|
||||
'permohonan.tujuanPenilaian',
|
||||
'permohonan.debiture.documents.jenisJaminan',
|
||||
'userPenilai'
|
||||
])
|
||||
->whereHas('userPenilai', function ($q) use ($id) {
|
||||
$q->where('user_id', $id);
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Filter pencarian
|
||||
if ($request->has('search') && !empty($request->get('search'))) {
|
||||
|
||||
@@ -5,14 +5,18 @@ namespace Modules\Lpj\Http\Controllers;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Lpj\Http\Requests\PenilaianRequest;
|
||||
use Modules\Lpj\Models\JenisPenilaian;
|
||||
use Modules\Lpj\Models\Penilaian;
|
||||
use Modules\Lpj\Models\PenilaianTeam;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\StatusPermohonan;
|
||||
use Modules\Lpj\Models\Teams;
|
||||
use Modules\Lpj\Models\Regions;
|
||||
use Modules\Lpj\Models\TeamsUsers;
|
||||
use Modules\Usermanagement\Models\User;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class PenilaianController extends Controller
|
||||
{
|
||||
@@ -37,17 +41,84 @@ class PenilaianController extends Controller
|
||||
|
||||
if ($validatedData) {
|
||||
try {
|
||||
$penilaian = Penilaian::create($validatedData);
|
||||
DB::beginTransaction();
|
||||
|
||||
$penilaian = Penilaian::create($validatedData);
|
||||
$validatedData['penilaian_id'] = $penilaian->id;
|
||||
|
||||
$teams_ids = [];
|
||||
$user_ids = [];
|
||||
$roles = [];
|
||||
|
||||
if ($validatedData['surveyor_id'] === 'pilih_dari_region') {
|
||||
$surveyor_region_id = $validatedData['surveyor_region_id'];
|
||||
|
||||
// Hapus team_id sebelumnya di Permohonan jika ada
|
||||
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first();
|
||||
if ($permohonan) {
|
||||
$permohonan->update([
|
||||
'region_id' => $surveyor_region_id,
|
||||
]);
|
||||
}
|
||||
|
||||
$teams_ids[] = $surveyor_region_id;
|
||||
$user_ids[] = null;
|
||||
$roles[] = 'surveyor';
|
||||
} else {
|
||||
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first();
|
||||
$teams_ids[] = $validatedData['teams_id'];
|
||||
$user_ids[] = $validatedData['surveyor_id'];
|
||||
$roles[] = 'surveyor';
|
||||
|
||||
}
|
||||
|
||||
if ($validatedData['penilai_id'] === 'pilih_dari_region') {
|
||||
$penilaian_region_id = $validatedData['penilai_region_id'];
|
||||
|
||||
// Hapus team_id sebelumnya di Permohonan jika ada
|
||||
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first();
|
||||
if ($permohonan) {
|
||||
$permohonan->update([
|
||||
'region_id' => $penilaian_region_id,
|
||||
]);
|
||||
}
|
||||
|
||||
$teams_ids[] = $penilaian_region_id;
|
||||
$user_ids[] = null;
|
||||
$roles[] = 'penilai';
|
||||
} else {
|
||||
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first();
|
||||
$teams_ids[] = $validatedData['teams_id'];
|
||||
$user_ids[] = $validatedData['penilai_id'];
|
||||
$roles[] = 'penilai';
|
||||
|
||||
}
|
||||
|
||||
foreach ($teams_ids as $key => $teams_id) {
|
||||
PenilaianTeam::create([
|
||||
'penilaian_id' => $validatedData['penilaian_id'],
|
||||
'team_id' => $teams_id,
|
||||
'user_id' => $user_ids[$key],
|
||||
'role' => $roles[$key],
|
||||
]);
|
||||
}
|
||||
|
||||
if ($validatedData['surveyor_id'] === 'pilih_dari_region' || $validatedData['penilai_id'] === 'pilih_dari_region') {
|
||||
$status = 'registered';
|
||||
} else {
|
||||
$status = 'assign';
|
||||
}
|
||||
|
||||
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi);
|
||||
$permohonan->update([
|
||||
'status' => 'assign',
|
||||
'status' => $status,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan');
|
||||
} catch (Exception $e) {
|
||||
|
||||
return redirect()->route('penilaian.index')->with('error', $e->getMessage());
|
||||
DB::rollBack();
|
||||
return response()->json(array('error' => $e->getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,22 +134,43 @@ class PenilaianController extends Controller
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*/
|
||||
public function update(PenilaianRequest $request, $id)
|
||||
public function update(Request $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',
|
||||
]);
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$penilaian = Penilaian::where('nomor_registrasi', $request->nomor_registrasi)->first();
|
||||
|
||||
$penilaianId = $penilaian->id;
|
||||
|
||||
$penilainTeam = PenilaianTeam::where('penilaian_id', $penilaianId)->get();
|
||||
|
||||
|
||||
foreach ($penilainTeam as $item) {
|
||||
if ($item->role === 'surveyor' && $item->user_id === null) {
|
||||
$item->update([
|
||||
'user_id' => $request->surveyor_id,
|
||||
'role' => 'surveyor',
|
||||
]);
|
||||
}
|
||||
|
||||
if ($item->role === 'penilai' && $item->user_id === null) {
|
||||
$item->update([
|
||||
'user_id' => $request->penilai_id,
|
||||
'role' => 'penilai',
|
||||
]);
|
||||
}
|
||||
|
||||
return redirect()->route('penilaian.index', $id)->with('success', 'Penilaian berhasil diubah');
|
||||
} catch (Exception $e) {
|
||||
return redirect()->route('penilaian.index', $id)->with('error', $e->getMessage());
|
||||
}
|
||||
|
||||
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi);
|
||||
$permohonan->update([
|
||||
'status' => 'assign',
|
||||
]);
|
||||
DB::commit();
|
||||
return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan');
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
return response()->json(array('error' => $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,42 +179,66 @@ class PenilaianController extends Controller
|
||||
*/
|
||||
public function assignment($id)
|
||||
{
|
||||
$permohonan = Permohonan::with(
|
||||
[
|
||||
'user',
|
||||
'debiture.province',
|
||||
'debiture.city',
|
||||
'debiture.district',
|
||||
'debiture.village',
|
||||
'branch',
|
||||
'tujuanPenilaian',
|
||||
],
|
||||
)->findOrFail($id);
|
||||
$permohonan = Permohonan::with([
|
||||
'user',
|
||||
'debiture.province',
|
||||
'debiture.city',
|
||||
'debiture.district',
|
||||
'debiture.village',
|
||||
'branch',
|
||||
'tujuanPenilaian',
|
||||
])->findOrFail($id);
|
||||
|
||||
$idPenilaian = $permohonan->jenis_penilaian_id;
|
||||
$idPenilaian = $permohonan->jenis_penilaian_id;
|
||||
$idRegion = $permohonan->region_id;
|
||||
|
||||
$jenisPenilaian = JenisPenilaian::find($idPenilaian);
|
||||
|
||||
$userTeam = Teams::with(['regions', 'teamsUsers.user'])
|
||||
->whereHas('regions', function ($q) use ($idRegion) {
|
||||
$q->where('id', $idRegion);
|
||||
})
|
||||
->get();
|
||||
|
||||
$teamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user', ])
|
||||
->whereHas('regions', function ($q) use ($idRegion) {
|
||||
$q->where('id', $idRegion);
|
||||
})->get();
|
||||
$teamPenilai = $userTeam->flatMap(function ($team) {
|
||||
return $team->teamsUsers->filter(function ($teamUser) {
|
||||
return $teamUser->user->roles->contains(function ($role) {
|
||||
return $role->name === 'surveyor' || $role->name === 'surveyor-penilai';
|
||||
});
|
||||
})->map(function ($teamUser) {
|
||||
return $teamUser->user;
|
||||
});
|
||||
})->unique('id');
|
||||
|
||||
$existingTeamIds = $teamPenilai->pluck('id')->toArray();
|
||||
|
||||
$updateTeamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user'])
|
||||
->whereNotIn('id', $existingTeamIds)
|
||||
->get();
|
||||
|
||||
$regionName = null;
|
||||
foreach ($teamPenilai as $item) {
|
||||
foreach ($userTeam as $item) {
|
||||
$regionName = $item->regions;
|
||||
}
|
||||
// $regionName = $userTeam->first()?->regions->name;
|
||||
|
||||
|
||||
// dd($teamPenilai);
|
||||
|
||||
$penilaian = Penilaian::where('nomor_registrasi', $permohonan->nomor_registrasi)->first();
|
||||
|
||||
return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian', 'regionName'));
|
||||
}
|
||||
|
||||
$penilaianTeam = collect();
|
||||
if ($penilaian && $penilaian->id) {
|
||||
$penilaianTeam = PenilaianTeam::where('penilaian_id', $penilaian->id)->get();
|
||||
}
|
||||
|
||||
// return response()->json([
|
||||
// 'penilaianTeam' => $penilaianTeam
|
||||
// ]);
|
||||
|
||||
|
||||
return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian', 'regionName', 'updateTeamPenilai', 'penilaianTeam'));
|
||||
}
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*/
|
||||
@@ -160,8 +276,9 @@ class PenilaianController extends Controller
|
||||
|
||||
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();
|
||||
@@ -180,6 +297,9 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
$query->whereRaw('LOWER(status) = ?', ['registered']);
|
||||
$query->whereHas('region.teams.teamsUsers.user', function ($q) {
|
||||
$q->where('id', Auth::user()->id);
|
||||
});
|
||||
|
||||
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||
$order = $request->get('sortOrder');
|
||||
@@ -202,7 +322,7 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
$filteredRecords = $query->count();
|
||||
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
||||
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers.user'])->get();
|
||||
|
||||
$pageCount = ceil($totalRecords / $size);
|
||||
|
||||
@@ -222,7 +342,8 @@ class PenilaianController extends Controller
|
||||
|
||||
|
||||
|
||||
public function otorisator(Request $request){
|
||||
public function otorisator(Request $request)
|
||||
{
|
||||
|
||||
$type = $request->route('type');
|
||||
$header = '';
|
||||
@@ -248,7 +369,8 @@ class PenilaianController extends Controller
|
||||
return view('lpj::penilaian.otorisator.index', compact('header'));
|
||||
}
|
||||
|
||||
public function show($id){
|
||||
public function show($id)
|
||||
{
|
||||
|
||||
$permohonan = Permohonan::find($id);
|
||||
|
||||
@@ -272,7 +394,10 @@ class PenilaianController extends Controller
|
||||
$status = 'proses paparan';
|
||||
break;
|
||||
case 'Pembayaran':
|
||||
$status = 'proses pembayaran';
|
||||
$status = 'proses';
|
||||
break;
|
||||
case 'Pembatalan':
|
||||
$status = 'order';
|
||||
break;
|
||||
default:
|
||||
$status = '';
|
||||
@@ -298,7 +423,11 @@ class PenilaianController extends Controller
|
||||
|
||||
|
||||
if (!empty($otorisator)) {
|
||||
$query->whereRaw('LOWER(status) = ?', [strtolower($status)]);
|
||||
if ($status == 'proses') {
|
||||
$query->whereIn('status_bayar', ['sudah_bayar', 'belum_bayar']);
|
||||
} else {
|
||||
$query->whereRaw('LOWER(status) = ?', [strtolower($status)]);
|
||||
}
|
||||
}
|
||||
|
||||
// Sorting berdasarkan sortField dan sortOrder
|
||||
|
||||
@@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Http\Response;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\Branch;
|
||||
@@ -32,9 +33,14 @@ use Modules\Lpj\Models\Denah;
|
||||
use Modules\Lpj\Models\FotoJaminan;
|
||||
use Modules\Lpj\Models\Lingkungan;
|
||||
use Modules\Lpj\Models\LantaiUnit;
|
||||
use Modules\Lpj\Models\Lantai;
|
||||
use Modules\Lpj\Models\ViewUnit;
|
||||
use Modules\Lpj\Models\ObjekJaminan;
|
||||
use Modules\Lpj\Models\RuteJaminan;
|
||||
use Modules\Lpj\Models\AnalisaUnit;
|
||||
use Modules\Lpj\Models\GolonganMasySekitar;
|
||||
use Modules\Lpj\Models\TingkatKeramaian;
|
||||
use Modules\Lpj\Models\LaluLintasLokasi;
|
||||
use Modules\Lpj\Models\SpekBagunanAnalisaDetail;
|
||||
use Modules\Lpj\Http\Requests\SurveyorRequest;
|
||||
use Modules\Lpj\Http\Requests\FormSurveyorRequest;
|
||||
@@ -42,6 +48,7 @@ use Modules\Lpj\Http\Requests\FormSurveyorRequest;
|
||||
class SurveyorController extends Controller
|
||||
{
|
||||
public $user;
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
@@ -113,6 +120,8 @@ class SurveyorController extends Controller
|
||||
->where('permohonan_id', $id)
|
||||
->get();
|
||||
|
||||
|
||||
|
||||
return view('lpj::surveyor.detail', compact(
|
||||
'buttonDisable',
|
||||
'fotojaminan',
|
||||
@@ -508,6 +517,11 @@ class SurveyorController extends Controller
|
||||
|
||||
$query->whereRaw('LOWER(status) = ?', ['assign']);
|
||||
|
||||
$query->whereHas('region.teams.teamsUsers.user', function ($q) {
|
||||
$q->where('id', Auth::user()->id);
|
||||
});
|
||||
|
||||
|
||||
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||
$order = $request->get('sortOrder');
|
||||
$column = $request->get('sortField');
|
||||
@@ -552,6 +566,8 @@ class SurveyorController extends Controller
|
||||
{
|
||||
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId);
|
||||
|
||||
|
||||
|
||||
$branches = Branch::all();
|
||||
$provinces = Province::all();
|
||||
|
||||
@@ -570,6 +586,11 @@ class SurveyorController extends Controller
|
||||
$spekBangunan = SpekBangunan::all();
|
||||
$saranaPelengkap = SaranaPelengkap::all();
|
||||
$arahMataAngin = ArahMataAngin::all();
|
||||
$lantai = Lantai::all();
|
||||
$viewUnit = ViewUnit::all();
|
||||
$golMasySekitar = GolonganMasySekitar::all();
|
||||
$tingkatKeramaian = TingkatKeramaian::all();
|
||||
$laluLintasLokasi = LaluLintasLokasi::all();
|
||||
|
||||
|
||||
$analisa = Analisa::with('analisaTanahBangunan', 'analisaLingkungan', 'analisaFakta', 'jenisJaminan')
|
||||
@@ -597,6 +618,11 @@ class SurveyorController extends Controller
|
||||
'spekBangunan',
|
||||
'saranaPelengkap',
|
||||
'arahMataAngin',
|
||||
'lantai',
|
||||
'viewUnit',
|
||||
'golMasySekitar',
|
||||
'tingkatKeramaian',
|
||||
'laluLintasLokasi'
|
||||
));
|
||||
}
|
||||
|
||||
@@ -625,10 +651,6 @@ class SurveyorController extends Controller
|
||||
$provinces = Province::all();
|
||||
|
||||
$fotoJaminan = FotoJaminan::with(['objekJaminan', 'lantaiUnit' ,'ruteJaminan', 'lingkungan'])->where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
||||
|
||||
// return response()->json([
|
||||
// 'data' => $fotoJaminan,
|
||||
// ]);
|
||||
return view('lpj::surveyor.components.foto', compact('permohonan', 'surveyor', 'branches', 'provinces', 'fotoJaminan'));
|
||||
}
|
||||
|
||||
@@ -658,25 +680,18 @@ class SurveyorController extends Controller
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private function getHeader(string $type): array
|
||||
{
|
||||
return self::HEADERS[$type] ?? [];
|
||||
}
|
||||
|
||||
public function data(Request $request)
|
||||
{
|
||||
|
||||
$type = $request->route('type');
|
||||
|
||||
$headers = [
|
||||
'bentuk-tanah' => ['Bentuk Tanah', 'bentuk-tanah'],
|
||||
'kontur-tanah' => ['Kontur Tanah', 'kontur-tanah'],
|
||||
'posisi-kavling' => ['Posisi Kavling', 'posisi-kavling'],
|
||||
'ketinggian-tanah' => ['Ketinggian Tanah', 'ketinggian-tanah'],
|
||||
'kondisi-fisik-tanah' => ['Kondisi Fisik Tanah', 'kondisi-fisik-tanah'],
|
||||
'jenis-bangunan' => ['Jenis Bangunan', 'jenis-bangunan'],
|
||||
'kondisi-bangunan' => ['Kondisi Bangunan', 'kondisi-bangunan'],
|
||||
'sifat-bangunan' => ['Sifat Bangunan', 'sifat-bangunan'],
|
||||
'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap'],
|
||||
];
|
||||
|
||||
$header = $headers[$type] ?? '';
|
||||
|
||||
$header = $this->getHeader($request->route('type'));
|
||||
return view('lpj::surveyor.data.index', compact('header'));
|
||||
}
|
||||
|
||||
@@ -684,21 +699,9 @@ class SurveyorController extends Controller
|
||||
public function createData($type)
|
||||
{
|
||||
|
||||
$headers = [
|
||||
'bentuk-tanah' => ['Bentuk Tanah', 'bentuk-tanah'],
|
||||
'kontur-tanah' => ['Kontur Tanah', 'kontur-tanah'],
|
||||
'posisi-kavling' => ['Posisi Kavling', 'posisi-kavling'],
|
||||
'ketinggian-tanah' => ['Ketinggian Tanah', 'ketinggian-tanah'],
|
||||
'kondisi-fisik-tanah' => ['Kondisi Fisik Tanah', 'kondisi-fisik-tanah'],
|
||||
'jenis-bangunan' => ['Jenis Bangunan', 'jenis-bangunan'],
|
||||
'kondisi-bangunan' => ['Kondisi Bangunan', 'kondisi-bangunan'],
|
||||
'sifat-bangunan' => ['Sifat Bangunan', 'sifat-bangunan'],
|
||||
'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap'],
|
||||
];
|
||||
|
||||
|
||||
$header = $headers[$type] ?? '';
|
||||
return view('lpj::surveyor.data.form', compact('header'));
|
||||
$spekKategoriBagunan = SpekKategoritBangunan::all();
|
||||
$header = $this->getHeader($type);
|
||||
return view('lpj::surveyor.data.form', compact('header', 'spekKategoriBagunan'));
|
||||
}
|
||||
|
||||
|
||||
@@ -710,30 +713,21 @@ class SurveyorController extends Controller
|
||||
|
||||
$type = $request->route('type');
|
||||
|
||||
$modelClasses = [
|
||||
'bentuk-tanah' => BentukTanah::class,
|
||||
'kontur-tanah' => KonturTanah::class,
|
||||
'posisi-kavling' => PosisiKavling::class,
|
||||
'bentuk-tanah' => BentukTanah::class,
|
||||
'kontur-tanah' => KonturTanah::class,
|
||||
'posisi-kavling' => PosisiKavling::class,
|
||||
'ketinggian-tanah' => KetinggianTanah::class,
|
||||
'kondisi-fisik-tanah' => KondisiFisikTanah::class,
|
||||
'jenis-bangunan' => JenisBangunan::class,
|
||||
'kondisi-bangunan' => KondisiBangunan::class,
|
||||
'sifat-bangunan' => SifatBangunan::class,
|
||||
'sarana-pelengkap' => SaranaPelengkap::class,
|
||||
];
|
||||
$modelClass = $this->getModelClass($type);
|
||||
|
||||
if (!array_key_exists($type, $modelClasses)) {
|
||||
if (!$modelClass) {
|
||||
return redirect()
|
||||
->route('basicdata.'. $type .'.index')
|
||||
->with('error', 'Invalid type specified.');
|
||||
}
|
||||
|
||||
$modelClass = $modelClasses[$type];
|
||||
$data = $request->all();
|
||||
$data['status'] = true;
|
||||
if ($type == 'spek-bangunan') {
|
||||
$validate['spek_kategori_bagunan_id'] = $request->spek_kategori_bagunan_id;
|
||||
|
||||
}
|
||||
|
||||
|
||||
$data = array_merge($validate, ['status' => true]);
|
||||
$modelClass::create($data);
|
||||
|
||||
return redirect()
|
||||
@@ -757,6 +751,9 @@ class SurveyorController extends Controller
|
||||
'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan', SpekBangunan::class],
|
||||
'spek-kategori-bangunan' => ['Spek Kategori Bangunan', 'spek-kategori-bangunan', SpekKategoritBangunan::class],
|
||||
'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap', SaranaPelengkap::class],
|
||||
'lantai-unit' => ['Lantai Unit', 'lantai-unit', Lantai::class],
|
||||
'view-unit' => ['View Unit', 'view-unit', ViewUnit::class],
|
||||
'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar', GolonganMasySekitar::class],
|
||||
];
|
||||
|
||||
|
||||
@@ -769,7 +766,13 @@ class SurveyorController extends Controller
|
||||
$header = $dataMap[$type] ?? '';
|
||||
$model = $modelClass::findOrFail($id);
|
||||
|
||||
return view('lpj::surveyor.data.form', compact('header', 'model'));
|
||||
if ($type == 'spek-bangunan') {
|
||||
$spekKategoriBagunan = SpekKategoritBangunan::all();
|
||||
|
||||
}
|
||||
|
||||
|
||||
return view('lpj::surveyor.data.form', compact('header', 'model', 'spekKategoriBagunan'));
|
||||
}
|
||||
|
||||
|
||||
@@ -777,26 +780,22 @@ class SurveyorController extends Controller
|
||||
{
|
||||
$validate = $request->validated();
|
||||
if ($validate) {
|
||||
$modelClasses = [
|
||||
'bentuk-tanah' => BentukTanah::class,
|
||||
'kontur-tanah' => KonturTanah::class,
|
||||
'posisi-kavling' => PosisiKavling::class,
|
||||
'ketinggian-tanah' => KetinggianTanah::class,
|
||||
'kondisi-fisik-tanah' => KondisiFisikTanah::class,
|
||||
'jenis-bangunan' => JenisBangunan::class,
|
||||
'kondisi-bangunan' => KondisiBangunan::class,
|
||||
'sifat-bangunan' => SifatBangunan::class,
|
||||
'sarana-pelengkap' => SaranaPelengkap::class,
|
||||
$modelClass = $this->getModelClass($type);
|
||||
|
||||
];
|
||||
if ($type == 'spek-bangunan') {
|
||||
$validate['spek_kategori_bagunan_id'] = $request->spek_kategori_bagunan_id;
|
||||
|
||||
}
|
||||
|
||||
// Check if the provided type exists in the modelClasses
|
||||
if (!array_key_exists($type, $modelClasses)) {
|
||||
if (!$modelClass) {
|
||||
return redirect()
|
||||
->route('basicdata.' . $type . '.index')
|
||||
->with('error', 'Invalid type specified.');
|
||||
}
|
||||
$modelClass = $modelClasses[$type];
|
||||
|
||||
|
||||
|
||||
$model = $modelClass::findOrFail($id);
|
||||
$model->update($validate);
|
||||
|
||||
@@ -817,8 +816,6 @@ class SurveyorController extends Controller
|
||||
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||
}
|
||||
|
||||
// Retrieve data from the database
|
||||
|
||||
$models = [
|
||||
'Bentuk Tanah' => BentukTanah::class,
|
||||
'Kontur Tanah' => KonturTanah::class,
|
||||
@@ -828,9 +825,14 @@ class SurveyorController extends Controller
|
||||
'Jenis Bangunan' => JenisBangunan::class,
|
||||
'Kondisi Bangunan' => KondisiBangunan::class,
|
||||
'Sifat Bangunan' => SifatBangunan::class,
|
||||
// 'Spek Kategori Bangunan' => SpekKategoritBangunan::class,
|
||||
// 'Spek Bangunan' => SpekBangunan::class,
|
||||
'Spek Kategori Bangunan' => SpekKategoritBangunan::class,
|
||||
'Spek Bangunan' => SpekBangunan::class,
|
||||
'Sarana Pelengkap' => SaranaPelengkap::class,
|
||||
'Lalu Lintas Depan Lokasi' => LaluLintasLokasi::class,
|
||||
'Tingkat Keramaian' => TingkatKeramaian::class,
|
||||
'Golongan Masyarakat Sekitar' => GolonganMasySekitar::class,
|
||||
'Lantai Unit' => Lantai::class,
|
||||
'View Unit' => ViewUnit::class,
|
||||
];
|
||||
|
||||
|
||||
@@ -840,8 +842,6 @@ class SurveyorController extends Controller
|
||||
throw new InvalidArgumentException("Invalid type: $type");
|
||||
}
|
||||
|
||||
|
||||
// Apply search filter if provided
|
||||
if ($request->has('search') && !empty($request->get('search'))) {
|
||||
$search = $request->get('search');
|
||||
$query->where(function ($q) use ($search) {
|
||||
@@ -897,24 +897,13 @@ class SurveyorController extends Controller
|
||||
{
|
||||
try {
|
||||
|
||||
$modelClasses = [
|
||||
'bentuk-tanah' => BentukTanah::class,
|
||||
'kontur-tanah' => KonturTanah::class,
|
||||
'posisi-kavling' => PosisiKavling::class,
|
||||
'ketinggian-tanah' => KetinggianTanah::class,
|
||||
'kondisi-fisik-tanah' => KondisiFisikTanah::class,
|
||||
'jenis-bangunan' => JenisBangunan::class,
|
||||
'kondisi-bangunan' => KondisiBangunan::class,
|
||||
'sifat-bangunan' => SifatBangunan::class,
|
||||
'sarana-pelengkap' => SaranaPelengkap::class,
|
||||
];
|
||||
$modelClass = $this->getModelClass($type);
|
||||
|
||||
|
||||
if (!array_key_exists($type, $modelClasses)) {
|
||||
if (!$modelClass) {
|
||||
return response()->json(['success' => false, 'message' => 'Invalid type specified.'], 400);
|
||||
}
|
||||
|
||||
$modelClass = $modelClasses[$type];
|
||||
|
||||
$model = $modelClass::findOrFail($id);
|
||||
|
||||
$model->delete();
|
||||
@@ -948,6 +937,54 @@ class SurveyorController extends Controller
|
||||
->findOrFail($id);
|
||||
}
|
||||
|
||||
public function submitSurveyor(Request $request, $id)
|
||||
{
|
||||
|
||||
|
||||
$permohonan = Permohonan::find($id);
|
||||
$permohonan->update([
|
||||
'status' => 'done',
|
||||
]);
|
||||
return redirect()
|
||||
->route('surveyor.index')
|
||||
->with('success', 'form surveyor submitted successfully');
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function validateSubmit(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
private function getModelClass(string $type): ?string
|
||||
{
|
||||
return $this->modelClasses[$type] ?? null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private $modelClasses = [
|
||||
'bentuk-tanah' => BentukTanah::class,
|
||||
'kontur-tanah' => KonturTanah::class,
|
||||
'posisi-kavling' => PosisiKavling::class,
|
||||
'ketinggian-tanah' => KetinggianTanah::class,
|
||||
'kondisi-fisik-tanah' => KondisiFisikTanah::class,
|
||||
'jenis-bangunan' => JenisBangunan::class,
|
||||
'kondisi-bangunan' => KondisiBangunan::class,
|
||||
'sifat-bangunan' => SifatBangunan::class,
|
||||
'sarana-pelengkap' => SaranaPelengkap::class,
|
||||
'lalu-lintas-lokasi' => LaluLintasLokasi::class,
|
||||
'tingkat-keramaian' => TingkatKeramaian::class,
|
||||
'gol-mas-sekitar' => GolonganMasySekitar::class,
|
||||
'spek-kategori-bangunan' => SpekKategoritBangunan::class,
|
||||
'lantai-unit' => Lantai::class,
|
||||
'view-unit' => ViewUnit::class,
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
private function getCommonData()
|
||||
{
|
||||
return [
|
||||
@@ -964,21 +1001,34 @@ class SurveyorController extends Controller
|
||||
'spekKategoriBangunan' => SpekKategoritBangunan::all(),
|
||||
'spekBangunan' => SpekBangunan::all(),
|
||||
'saranaPelengkap' => SaranaPelengkap::all(),
|
||||
'arahMataAngin' => ArahMataAngin::all()
|
||||
'arahMataAngin' => ArahMataAngin::all(),
|
||||
'lantai' => Lantai::all(),
|
||||
'viewUnit' => ViewUnit::all(),
|
||||
'golMasySekitar' => GolonganMasySekitar::all(),
|
||||
'tingkatKeramaian' => TingkatKeramaian::all(),
|
||||
'laluLintasLokasi' => LaluLintasLokasi::all(),
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
public function submitSurveyor(Request $request, $id)
|
||||
{
|
||||
$permohonan = Permohonan::find($id);
|
||||
$permohonan->update([
|
||||
'status' => 'done',
|
||||
]);
|
||||
return redirect()
|
||||
->route('surveyor.index')
|
||||
->with('success', 'form surveyor submitted successfully');
|
||||
|
||||
}
|
||||
private const HEADERS = [
|
||||
'bentuk-tanah' => ['Bentuk Tanah', 'bentuk-tanah'],
|
||||
'kontur-tanah' => ['Kontur Tanah', 'kontur-tanah'],
|
||||
'posisi-kavling' => ['Posisi Kavling', 'posisi-kavling'],
|
||||
'ketinggian-tanah' => ['Ketinggian Tanah', 'ketinggian-tanah'],
|
||||
'kondisi-fisik-tanah' => ['Kondisi Fisik Tanah', 'kondisi-fisik-tanah'],
|
||||
'jenis-bangunan' => ['Jenis Bangunan', 'jenis-bangunan'],
|
||||
'kondisi-bangunan' => ['Kondisi Bangunan', 'kondisi-bangunan'],
|
||||
'sifat-bangunan' => ['Sifat Bangunan', 'sifat-bangunan'],
|
||||
'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap'],
|
||||
'lalu-lintas-lokasi' => ['Lalu Lintas Depan Lokasi', 'lalu-lintas-lokasi'],
|
||||
'tingkat-keramaian' => ['Tingkat Keramaian', 'tingkat-keramaian'],
|
||||
'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar'],
|
||||
'spek-kategori-bangunan' => ['Spek Kategori Bangunan', 'spek-kategori-bangunan'],
|
||||
'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan'],
|
||||
'lantai-unit' => ['Lantai Unit', 'lantai-unit'],
|
||||
'view-unit' => ['View Unit', 'view-unit'],
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
@@ -31,20 +31,26 @@ class TeamsController extends Controller
|
||||
* 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();
|
||||
$regionTeam = Teams::pluck('regions_id')->toArray();
|
||||
$regions = 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();
|
||||
$userTeam = TeamsUsers::pluck('user_id')->toArray();
|
||||
$usersWithRole = User::whereNotIn('id', $userTeam)
|
||||
->with('roles') // Eager load roles
|
||||
->get();
|
||||
|
||||
return view('lpj::teams.form', compact('region', 'user'));
|
||||
}
|
||||
$user = $usersWithRole->filter(function ($user) {
|
||||
return $user->roles->contains(function ($role) {
|
||||
return $role->name === 'surveyor' || $role->name === 'surveyor-penilai' || $role->name === 'senior-officer';
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
return view('lpj::teams.form', compact('regions', 'user'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
@@ -97,12 +103,19 @@ class TeamsController extends Controller
|
||||
{
|
||||
$teams = Teams::find($id);
|
||||
|
||||
|
||||
$region = Regions::all();
|
||||
$usedUsers = TeamsUsers::where('teams_id', '!=', $id)->pluck('user_id')->toArray();
|
||||
$user = User::whereNotIn('id', $usedUsers)
|
||||
$usersWithRole = User::whereNotIn('id', $usedUsers)
|
||||
->with('roles')
|
||||
->get();
|
||||
|
||||
|
||||
$user = $usersWithRole->filter(function ($user) {
|
||||
return $user->roles->contains(function ($role) {
|
||||
return $role->name === 'surveyor' || $role->name === 'surveyor-penilai' || $role->name === 'senior-officer';
|
||||
});
|
||||
});
|
||||
|
||||
// Ambil user yang sudah ada di tim ini
|
||||
$selectedUsers = $teams->teamsUsers->pluck('user_id')->toArray();
|
||||
|
||||
|
||||
@@ -33,9 +33,12 @@ class PenilaianRequest extends FormRequest
|
||||
'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',
|
||||
'surveyor_id' => 'nullable| required_without:penilai_surveyor_id',
|
||||
'penilai_id' => 'nullable|required_without:penilai_surveyor_id',
|
||||
'penilai_surveyor_id' => 'nullable|required_without_all:surveyor_id,penilai_id',
|
||||
'surveyor_region_id' => 'nullable|required_without:surveyor_id',
|
||||
'penilai_region_id' => 'nullable|required_without:penilai_id',
|
||||
|
||||
'keterangan' => 'nullable',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -4,62 +4,137 @@ namespace Modules\Lpj\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class SurveyorRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
* Table mapping for different actionszz
|
||||
*/
|
||||
public function rules()
|
||||
: array
|
||||
{
|
||||
|
||||
$action = $this->input('action');
|
||||
|
||||
$uniqueTable = [
|
||||
'bentuk-tanah' => 'bentuk_tanah',
|
||||
'kontur-tanah' => 'kontur_tanah',
|
||||
'posisi-kavling' => 'posisi_kavling',
|
||||
'ketinggian-tanah' => 'ketinggian_tanah',
|
||||
'kondisi-fisik-tanah' => 'kondisi_fisik_tanah',
|
||||
'kondisi-bangunan' => 'kondisi_bangunan',
|
||||
'jenis-bangunan' => 'jenis_bangunan',
|
||||
'sifat-bangunan' => 'sifat_bangunan',
|
||||
'sarana-pelengkap' => 'sarana_pelengkap',
|
||||
'lalu_lintas_lokasi' => 'lalu_lintas_lokasi',
|
||||
'tingkat-keramaian' => 'tingkat_keramaian',
|
||||
];
|
||||
|
||||
|
||||
|
||||
$rules = [
|
||||
'name' => 'required|max:255',
|
||||
|
||||
];
|
||||
|
||||
$id = $this->route('id');
|
||||
|
||||
if ($this->method() == 'PUT' || $this->method() == 'PATCH') {
|
||||
$rules['code'] = 'required|max:50|unique:' . $uniqueTable[$action] . ',code,' . $id;
|
||||
} else {
|
||||
|
||||
$rules['code'] = 'required|max:50|unique:' . $uniqueTable[$action] . ',code';
|
||||
}
|
||||
return $rules;
|
||||
}
|
||||
private const TABLE_MAPPING = [
|
||||
'bentuk-tanah' => 'bentuk_tanah',
|
||||
'kontur-tanah' => 'kontur_tanah',
|
||||
'posisi-kavling' => 'posisi_kavling',
|
||||
'ketinggian-tanah' => 'ketinggian_tanah',
|
||||
'kondisi-fisik-tanah' => 'kondisi_fisik_tanah',
|
||||
'kondisi-bangunan' => 'kondisi_bangunan',
|
||||
'jenis-bangunan' => 'jenis_bangunan',
|
||||
'sifat-bangunan' => 'sifat_bangunan',
|
||||
'sarana-pelengkap' => 'sarana_pelengkap',
|
||||
'lalu-lintas-lokasi' => 'lalu_lintas_lokasi',
|
||||
'tingkat-keramaian' => 'tingkat_keramaian',
|
||||
'gol-mas-sekitar' => 'gol_mas_sekitar',
|
||||
'spek-kategori-bangunan' => 'spek_kategori_bangunan',
|
||||
'spek-bangunan' => 'spek_bangunan',
|
||||
'lantai-unit' => 'lantai',
|
||||
'view-unit' => 'view_unit',
|
||||
];
|
||||
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize()
|
||||
: bool
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function prepareForValidation()
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return array_merge(
|
||||
$this->getBaseRules(),
|
||||
$this->getActionSpecificRules(),
|
||||
$this->getCodeValidationRules()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get base validation rules
|
||||
*/
|
||||
private function getBaseRules(): array
|
||||
{
|
||||
return [
|
||||
'name' => 'required|max:255',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get action specific validation rules
|
||||
*/
|
||||
private function getActionSpecificRules(): array
|
||||
{
|
||||
$action = $this->input('action');
|
||||
|
||||
return match ($action) {
|
||||
'spek-bangunan' => [
|
||||
'spek_kategori_bangunan_id' => [
|
||||
'required'
|
||||
],
|
||||
],
|
||||
// Add more action specific rules here
|
||||
default => [],
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get code validation rules
|
||||
*/
|
||||
private function getCodeValidationRules(): array
|
||||
{
|
||||
$action = $this->input('action');
|
||||
$table = self::TABLE_MAPPING[$action] ?? null;
|
||||
|
||||
if (!$table) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$rules = ['required', 'max:50'];
|
||||
|
||||
if ($this->isMethod('PUT') || $this->isMethod('PATCH')) {
|
||||
$rules[] = Rule::unique($table, 'code')->ignore($this->route('id'));
|
||||
} else {
|
||||
$rules[] = Rule::unique($table, 'code');
|
||||
}
|
||||
|
||||
return ['code' => $rules];
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the data for validation.
|
||||
*/
|
||||
protected function prepareForValidation(): void
|
||||
{
|
||||
$this->merge([
|
||||
'status' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get custom messages for validator errors.
|
||||
*/
|
||||
public function messages(): array
|
||||
{
|
||||
return [
|
||||
'name.required' => 'Nama harus diisi',
|
||||
'name.max' => 'Nama tidak boleh lebih dari 255 karakter',
|
||||
'code.required' => 'Kode harus diisi',
|
||||
'code.max' => 'Kode tidak boleh lebih dari 50 karakter',
|
||||
'code.unique' => 'Kode sudah digunakan',
|
||||
'spek_kategori_bangunan_id.required' => 'Kategori bangunan harus dipilih',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get custom attributes for validator errors.
|
||||
*/
|
||||
public function attributes(): array
|
||||
{
|
||||
return [
|
||||
'name' => 'Nama',
|
||||
'code' => 'Kode',
|
||||
'spek_kategori_bangunan_id' => 'Kategori Bangunan',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,10 +10,12 @@ class GolonganMasySekitar extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'gol_mas_sekitar';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = [];
|
||||
protected $fillable = ['code', 'name', 'status'];
|
||||
|
||||
|
||||
protected static function newFactory(): GolonganMasySekitarFactory
|
||||
{
|
||||
|
||||
23
app/Models/Lantai.php
Normal file
23
app/Models/Lantai.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Modules\Lpj\Database\Factories\LokasiUnitFactory;
|
||||
|
||||
class Lantai extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'lantai';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['name', 'code', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by'];
|
||||
|
||||
protected static function newFactory(): LokasiUnitFactory
|
||||
{
|
||||
//return LokasiUnitFactory::new();
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ class Penilaian extends Model
|
||||
*/
|
||||
protected $table = 'penilaian';
|
||||
protected $fillable = [
|
||||
'jenis_penilaian_id', 'teams_id', 'tanggal_kunjungan', 'keterangan','nomor_registrasi','penilaian_id','surveyor_id','penilai_surveyor_id',
|
||||
'jenis_penilaian_id', 'tanggal_kunjungan', 'keterangan','nomor_registrasi',
|
||||
'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_at',
|
||||
'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by'
|
||||
];
|
||||
@@ -39,18 +39,9 @@ class Penilaian extends Model
|
||||
|
||||
public function userPenilai()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'penilaian_id', 'id');
|
||||
return $this->hasMany(PenilaianTeam::class, 'penilaian_id', 'id');
|
||||
}
|
||||
|
||||
public function userSurveyor()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'surveyor_id', 'id');
|
||||
}
|
||||
|
||||
public function userPenilaiSurveyor()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'penilai_surveyor_id', 'id');
|
||||
}
|
||||
|
||||
public function permohonan()
|
||||
{
|
||||
|
||||
39
app/Models/PenilaianTeam.php
Normal file
39
app/Models/PenilaianTeam.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Modules\Lpj\Database\Factories\PenilaianTeamFactory;
|
||||
|
||||
class PenilaianTeam extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'penilaian_team';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['penilaian_id', 'team_id', 'user_id','role'];
|
||||
|
||||
|
||||
public function userPenilaiTeam()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'user_id', 'id');
|
||||
}
|
||||
|
||||
public function team(){
|
||||
|
||||
return $this->belongsTo(Team::class, 'team_id', 'id');
|
||||
}
|
||||
|
||||
public function penilaian(){
|
||||
|
||||
return $this->belongsTo(Penilaian::class, 'penilaian_id', 'id');
|
||||
}
|
||||
|
||||
protected static function newFactory(): PenilaianTeamFactory
|
||||
{
|
||||
//return PenilaianTeamFactory::new();
|
||||
}
|
||||
}
|
||||
@@ -84,4 +84,9 @@ class Permohonan extends Base
|
||||
{
|
||||
return $this->hasMany(PenawaranTender::class, 'nomor_registrasi');
|
||||
}
|
||||
|
||||
public function region()
|
||||
{
|
||||
return $this->belongsTo(Regions::class, 'region_id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ class SpekBangunan extends Model
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = [];
|
||||
protected $fillable = ['code','name','status','spek_kategori_bangunan_id','authorized_status'];
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ class SpekKategoritBangunan extends Model
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = [];
|
||||
protected $fillable = ['code','name','status','authorized_status'];
|
||||
|
||||
|
||||
public function bangunan()
|
||||
|
||||
@@ -30,8 +30,8 @@ class Teams extends Model
|
||||
return $this->hasMany(TeamsUsers::class, 'teams_id', 'id');
|
||||
}
|
||||
|
||||
public function penilaian(){
|
||||
return $this->hasMany(Penilaian::class, 'teams_id', 'id');
|
||||
public function penilaianTeam(){
|
||||
return $this->hasMany(penilaianTeam::class, 'team_id', 'id');
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ class TingkatKeramaian extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'tingkat_keramaian';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
|
||||
23
app/Models/ViewUnit.php
Normal file
23
app/Models/ViewUnit.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Modules\Lpj\Database\Factories\ViewUnitFactory;
|
||||
|
||||
class ViewUnit extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'view_unit';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['name', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'code'];
|
||||
|
||||
protected static function newFactory(): ViewUnitFactory
|
||||
{
|
||||
//return ViewUnitFactory::new();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user