92 lines
3.0 KiB
PHP
92 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace Modules\Lpj\Http\Requests;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class TenderPenawaranRequest extends FormRequest
|
|
{
|
|
/**
|
|
* Get the validation rules that apply to the request.
|
|
*/
|
|
public function rules(): array
|
|
{
|
|
$rules = [
|
|
'nama_kjpp_sebelumnya' => 'nullable',
|
|
'biaya_kjpp_sebelumnya' => 'nullable|numeric',
|
|
'tanggal_penilaian_sebelumnya' => 'nullable',
|
|
'nomor_registrasi' => 'required',
|
|
'kjpp.*' => 'exists:kjpp,id',
|
|
'tujuan_penilaian_kjpp_id' => 'required',
|
|
'jenis_laporan_id' => 'required',
|
|
'start_date' => 'required',
|
|
'end_date' => 'required',
|
|
'catatan' => 'nullable',
|
|
'status' => 'nullable'
|
|
];
|
|
|
|
if ($this->method() == 'PUT') {
|
|
$rules['code'] = 'required|max:50';
|
|
} else {
|
|
$rules['code'] = 'required|max:50|unique:penawaran,code';
|
|
}
|
|
|
|
return $rules;
|
|
}
|
|
|
|
/**
|
|
* Determine if the user is authorized to make this request.
|
|
*/
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function messages(): array
|
|
{
|
|
return [
|
|
'code.required' => 'Kode Penawaran Wajib diisi!',
|
|
'code.max' => 'Kode Penawaran maksimal 255 huruf!',
|
|
'code.unique' => 'Kode Penawaran tidak boleh sama!',
|
|
'nomor_registrasi.required' => 'Nomor Registrasi Wajib diisi!',
|
|
'tujuan_penilaian_kjpp_id.required' => 'Tujuan Penilaian KJPP Wajib diisi!',
|
|
'jenis_laporan_id.required' => 'Jenis Laporan Wajib diisi!',
|
|
'start_date.required' => 'Tanggal Awal Wajib diisi!',
|
|
'end_date.required' => 'Tanggal Akhir Wajib diisi!',
|
|
];
|
|
}
|
|
|
|
public function withValidator($validator)
|
|
{
|
|
$validator->after(function ($validator) {
|
|
$startDate = strtotime($this->input('start_date'));
|
|
$endDate = strtotime($this->input('end_date'));
|
|
$today = strtotime(date('Y-m-d'));
|
|
|
|
// Jika dalam keadaan tambah penawaran maka munculkan pesan ini
|
|
if ($this->method() !== 'PUT') {
|
|
if ($startDate < $today) {
|
|
$validator->errors()->add('start_date', 'Tanggal Awal tidak boleh sebelum hari ini.');
|
|
}
|
|
}
|
|
|
|
if ($endDate < $startDate) {
|
|
$validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.');
|
|
}
|
|
|
|
|
|
// Validasi minimal 3 pilihan pada nama_kjpp
|
|
$namaKjpp = $this->input('kjpp', []);
|
|
|
|
// jika nama KJPP itu kosong
|
|
if (empty($namaKjpp)) {
|
|
$validator->errors()->add('kjpp', 'Nama KJPP wajib diisi.');
|
|
}
|
|
// jika terisi kurang dari 3 item
|
|
elseif (is_array($namaKjpp) && count($namaKjpp) < 3) {
|
|
$validator->errors()->add('kjpp', 'Nama KJPP Sebelumnya harus memiliki minimal 3 pilihan jika diisi.');
|
|
}
|
|
});
|
|
}
|
|
}
|