update assigment lintas region
This commit is contained in:
@@ -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,29 +179,36 @@ 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();
|
||||
|
||||
@@ -117,19 +216,29 @@ class PenilaianController extends Controller
|
||||
->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', 'updateTeamPenilai'));
|
||||
}
|
||||
|
||||
$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.
|
||||
*/
|
||||
@@ -167,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();
|
||||
@@ -187,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');
|
||||
@@ -209,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);
|
||||
|
||||
@@ -312,7 +425,7 @@ class PenilaianController extends Controller
|
||||
if (!empty($otorisator)) {
|
||||
if ($status == 'proses') {
|
||||
$query->whereIn('status_bayar', ['sudah_bayar', 'belum_bayar']);
|
||||
}else{
|
||||
} else {
|
||||
$query->whereRaw('LOWER(status) = ?', [strtolower($status)]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user