added attribut uc plan

This commit is contained in:
Jagad R R
2025-06-18 19:15:53 +07:00
parent 7525909e9c
commit a7fd26d2e6
7 changed files with 153 additions and 72 deletions
@@ -40,66 +40,66 @@ class FormUpCountryController extends Controller
$startDay = (int) env('STARTING_DATE', 11);
$closingDay = (int) env('CLOSING_DATE', 10);
// Referensi waktu sekarang
// Current time reference
$now = Carbon::now();
// Tentukan periode
// Determine the period
if ($now->day >= $startDay) {
$startDate = Carbon::create($now->year, $now->month, $startDay)->startOfDay();
$closingDate = Carbon::create($now->copy()->addMonth()->year, $now->copy()->addMonth()->month, $closingDay)->endOfDay();
$currentPeriodStartDate = Carbon::create($now->year, $now->month, $startDay)->startOfDay();
$currentPeriodClosingDate = Carbon::create($now->copy()->addMonth()->year, $now->copy()->addMonth()->month, $closingDay)->endOfDay();
} else {
$startDate = Carbon::create($now->copy()->subMonth()->year, $now->copy()->subMonth()->month, $startDay)->startOfDay();
$closingDate = Carbon::create($now->year, $now->month, $closingDay)->endOfDay();
$currentPeriodStartDate = Carbon::create($now->copy()->subMonth()->year, $now->copy()->subMonth()->month, $startDay)->startOfDay();
$currentPeriodClosingDate = Carbon::create($now->year, $now->month, $closingDay)->endOfDay();
}
$forms = FormUpCountry::whereBetween('tanggal', [$startDate, $closingDate])
->orderBy('tanggal', 'desc')
->with(['rayon', 'user'])
->get();
// Calculate the actual start date for data retrieval (1 month before currentPeriodStartDate)
$dataRetrievalStartDate = $currentPeriodStartDate->copy()->subMonth()->startOfDay();
$forms = FormUpCountry::whereBetween('tanggal', [$dataRetrievalStartDate, $currentPeriodClosingDate])
->orderBy('tanggal', 'desc')
->with(['rayon', 'user'])
->get();
$availableBudget = null;
$periodeMonth = strtolower($startDate->format('F'));
$periodeYear = (int) $startDate->format('Y');
$periodeMonth = strtolower($currentPeriodStartDate->format('F'));
$periodeYear = (int) $currentPeriodStartDate->format('Y');
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
} else if ($role == 'Area Manager Cabang') {
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
if ($cabang_id) {
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
$availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
}
} else if ($role == 'Medical Representatif') {
$forms = $forms->where('user_id', auth()->user()->id);
$cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id;
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
}
else if ($role == 'Area Manager Cabang') {
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
if ($cabang_id) {
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
$availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
}
}
else if ($role == 'Medical Representatif') {
$forms = $forms->where('user_id', auth()->user()->id);
$cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id;
$availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
}
else {
$forms = $forms;
} else {
$forms = $forms;
}
session()->put('redirect_url', route('forms.up-country'));
return view('backend.pages.forms.upcountry.index', [
'forms' => $forms,
'availableBudget' => $availableBudget
]);
}
return view('backend.pages.forms.upcountry.index', [
'forms' => $forms,
'availableBudget' => $availableBudget
]);
}
public function detail($id)
{
@@ -110,6 +110,7 @@ class FormUpCountryController extends Controller
$form->bukti_transport_dalkot = $form->bukti_transport_dalkot ? NextCloudHelper::getFileUrl($form->bukti_transport_dalkot) : null;
$form->bukti_transport_ankot = $form->bukti_transport_ankot ? NextCloudHelper::getFileUrl($form->bukti_transport_ankot) : null;
$form->bukti_hotel = $form->bukti_hotel ? NextCloudHelper::getFileUrl($form->bukti_hotel) : null;
$form->uc_plan = $form->uc_plan ? NextCloudHelper::getFileUrl($form->uc_plan) : null;
return response()->json($form);
}
@@ -123,6 +124,7 @@ class FormUpCountryController extends Controller
$form->bukti_transport_dalkot = $form->bukti_transport_dalkot ? NextCloudHelper::getFileUrl($form->bukti_transport_dalkot) : null;
$form->bukti_transport_ankot = $form->bukti_transport_ankot ? NextCloudHelper::getFileUrl($form->bukti_transport_ankot) : null;
$form->bukti_hotel = $form->bukti_hotel ? NextCloudHelper::getFileUrl($form->bukti_hotel) : null;
$form->uc_plan = $form->uc_plan ? NextCloudHelper::getFileUrl($form->uc_plan) : null;
return view('backend.pages.forms.upcountry.view', [
'form' => $form,
@@ -156,6 +158,7 @@ class FormUpCountryController extends Controller
'bukti_transport_dalkot' => ['nullable', 'file', 'max:51200'],
'bukti_transport_ankot' => ['nullable', 'file', 'max:51200'],
'bukti_hotel' => ['nullable', 'file', 'max:51200'],
'uc_plan' => 'nullable|file|max:51200',
]);
$tanggal = Carbon::parse($request->tanggal);
@@ -229,6 +232,13 @@ class FormUpCountryController extends Controller
NextCloudHelper::uploadFile($folderPath, $bukti->getContent(), $filename);
}
if ($request->hasFile('uc_plan')) {
$ucPlan = $request->file('uc_plan');
$filename = Str::uuid() . '.' . $ucPlan->extension();
$filePaths['uc_plan'] = $folderPath . '/' . $filename;
NextCloudHelper::uploadFile($folderPath, $ucPlan->getContent(), $filename);
}
// Generate expense number
$sequence_number = FormUpCountry::withTrashed()
->where('expense_number', 'like', $region->code . '-' . $cabang->code . '-UPC-' . date('ym') . '%')
@@ -271,6 +281,7 @@ class FormUpCountryController extends Controller
'bukti_transport_dalkot' => $filePaths['bukti_transport_dalkot'] ?? null,
'bukti_transport_ankot' => $filePaths['bukti_transport_ankot'] ?? null,
'bukti_hotel' => $filePaths['bukti_hotel'] ?? null,
'uc_plan' => $filePaths['uc_plan'] ?? null,
'account_number' => $kategori->account_number,
'status' => 'On Progress',
]);
@@ -355,7 +366,7 @@ class FormUpCountryController extends Controller
return redirect()->back();
}
public function edit($id)
public function edit($id)
{
$this->checkAuthorization(auth()->user(), ['forms.country.edit']);
$role = auth()->user()->getRoleNames()[0];
@@ -392,6 +403,7 @@ class FormUpCountryController extends Controller
'bukti_transport_dalkot' => ['nullable', 'file', 'max:51200'],
'bukti_transport_ankot' => ['nullable', 'file', 'max:51200'],
'bukti_hotel' => ['nullable', 'file', 'max:51200'],
'uc_plan' => 'nullable|file|max:51200',
]);
$form = FormUpCountry::findOrFail($id);
@@ -453,6 +465,13 @@ class FormUpCountryController extends Controller
NextCloudHelper::uploadFile($folderPath, $file->getContent(), $filename);
}
if ($request->hasFile('uc_plan')) {
$file = $request->file('uc_plan');
$filename = Str::uuid() . '.' . $file->extension();
$filePaths['uc_plan'] = $folderPath . '/' . $filename;
NextCloudHelper::uploadFile($folderPath, $file->getContent(), $filename);
}
// Hitung total nominal
$data_nominal = [
'allowance' => $request->allowance ?? 0,
@@ -484,6 +503,7 @@ class FormUpCountryController extends Controller
'bukti_transport_dalkot' => $filePaths['bukti_transport_dalkot'] ?? $form->bukti_transport_dalkot,
'bukti_transport_ankot' => $filePaths['bukti_transport_ankot'] ?? $form->bukti_transport_ankot,
'bukti_hotel' => $filePaths['bukti_hotel'] ?? $form->bukti_hotel,
'uc_plan' => $filePaths['uc_plan'] ?? $form->uc_plan,
'account_number' => $kategori->account_number,
]);