validasi
This commit is contained in:
@@ -145,6 +145,13 @@ class KolomBasisDataController extends Controller
|
|||||||
'is_browse' => ['nullable', 'boolean'],
|
'is_browse' => ['nullable', 'boolean'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
if (!empty($validated['enum_opsi'])) {
|
||||||
|
$validated['enum_opsi'] = json_decode($validated['enum_opsi'], true);
|
||||||
|
}
|
||||||
|
if (!empty($validated['validasi'])) {
|
||||||
|
$validated['validasi'] = json_decode($validated['validasi'], true);
|
||||||
|
}
|
||||||
|
|
||||||
$kolom->update([...$validated,
|
$kolom->update([...$validated,
|
||||||
'updated_by' => auth()->id(),
|
'updated_by' => auth()->id(),
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ use Illuminate\Http\JsonResponse;
|
|||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
|
use Illuminate\Support\Facades\Hash;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
use App\Models\Ekosistem\TabelBasisData;
|
use App\Models\Ekosistem\TabelBasisData;
|
||||||
use App\Models\Ekosistem\KolomBasisData;
|
use App\Models\Ekosistem\KolomBasisData;
|
||||||
@@ -207,7 +209,7 @@ class ValueBasisDataController extends Controller
|
|||||||
if ($k->tipe == 'foreign_key') {
|
if ($k->tipe == 'foreign_key') {
|
||||||
$relasi['kolom_id'] = $k->id;
|
$relasi['kolom_id'] = $k->id;
|
||||||
try {
|
try {
|
||||||
$modelClass = Arr::get($this->tableModelClassMap, 'master_desa_kelurahan');
|
$modelClass = Arr::get($this->tableModelClassMap, $k->relasi_tabel);
|
||||||
if ($modelClass) {
|
if ($modelClass) {
|
||||||
$options_kolom = $modelClass::select($k->relasi_kolom_label . ' as label', $k->relasi_kolom_id . ' as value')->limit(10000);
|
$options_kolom = $modelClass::select($k->relasi_kolom_label . ' as label', $k->relasi_kolom_id . ' as value')->limit(10000);
|
||||||
} else {
|
} else {
|
||||||
@@ -226,6 +228,70 @@ class ValueBasisDataController extends Controller
|
|||||||
return view('ekosistem.value-basis-data.add', compact('tabel', 'kolom', 'program', 'list_relasi'));
|
return view('ekosistem.value-basis-data.add', compact('tabel', 'kolom', 'program', 'list_relasi'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function prepareValidationRules($kolom)
|
||||||
|
{
|
||||||
|
$rules = [];
|
||||||
|
foreach ($kolom as $k) {
|
||||||
|
if ($k->validasi && is_array($k->validasi)) {
|
||||||
|
$rules[$k->kolom] = $k->validasi;
|
||||||
|
|
||||||
|
if (!in_array('required', $k->validasi) && !in_array('nullable', $k->validasi)) {
|
||||||
|
$rules[$k->kolom][] = 'nullable';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!in_array('string', $k->validasi) && ($k->tipe == 'varchar' || $k->tipe == 'text')) {
|
||||||
|
$rules[$k->kolom][] = 'string';
|
||||||
|
}
|
||||||
|
if (!in_array('size', $k->validasi) && ($k->tipe == 'varchar')) {
|
||||||
|
$rules[$k->kolom][] = 'size:255';
|
||||||
|
}
|
||||||
|
if (!in_array('integer', $k->validasi) && $k->tipe == 'integer') {
|
||||||
|
$rules[$k->kolom][] = 'integer';
|
||||||
|
}
|
||||||
|
if (!in_array('boolean', $k->validasi) && $k->tipe == 'boolean') {
|
||||||
|
$rules[$k->kolom][] = 'boolean';
|
||||||
|
}
|
||||||
|
if (!in_array('date', $k->validasi) && ($k->tipe == 'date' || $k->tipe == 'datetime')) {
|
||||||
|
$rules[$k->kolom][] = 'date';
|
||||||
|
}
|
||||||
|
if ($k->tipe == 'foreign_key') {
|
||||||
|
$rules[$k->kolom][] = 'exists:' . $k->relasi_tabel . ',' . $k->relasi_kolom_id;
|
||||||
|
}
|
||||||
|
if ($k->tipe == 'enum') {
|
||||||
|
$enumValues = collect($k->enum_opsi)->pluck('value')->toArray();
|
||||||
|
$rules[$k->kolom][] = Rule::in($enumValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$rules[$k->kolom] = ['nullable'];
|
||||||
|
|
||||||
|
if ($k->tipe == 'varchar' || $k->tipe == 'text') {
|
||||||
|
$rules[$k->kolom][] = 'string';
|
||||||
|
}
|
||||||
|
if ($k->tipe == 'varchar') {
|
||||||
|
$rules[$k->kolom][] = 'size:255';
|
||||||
|
}
|
||||||
|
if ($k->tipe == 'integer') {
|
||||||
|
$rules[$k->kolom][] = 'integer';
|
||||||
|
}
|
||||||
|
if ($k->tipe == 'boolean') {
|
||||||
|
$rules[$k->kolom][] = 'boolean';
|
||||||
|
}
|
||||||
|
if ($k->tipe == 'date' || $k->tipe == 'datetime') {
|
||||||
|
$rules[$k->kolom][] = 'date';
|
||||||
|
}
|
||||||
|
if ($k->tipe == 'foreign_key') {
|
||||||
|
$rules[$k->kolom][] = 'exists:' . $k->relasi_tabel . ',' . $k->relasi_kolom_id;
|
||||||
|
}
|
||||||
|
if ($k->tipe == 'enum') {
|
||||||
|
$enumValues = collect($k->enum_opsi)->pluck('value')->toArray();
|
||||||
|
$rules[$k->kolom][] = Rule::in($enumValues);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
public function store(Request $request, string $tabelId): RedirectResponse
|
public function store(Request $request, string $tabelId): RedirectResponse
|
||||||
{
|
{
|
||||||
if (!Gate::any(['super_admin', 'admin'])) {
|
if (!Gate::any(['super_admin', 'admin'])) {
|
||||||
@@ -258,15 +324,7 @@ class ValueBasisDataController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$validationRules = [];
|
$validated = $request->validate($this->prepareValidationRules($kolom));
|
||||||
foreach ($kolom as $k) {
|
|
||||||
if ($k->validasi && is_array($k->validasi)) {
|
|
||||||
$validationRules[$k->kolom] = $k->validasi;
|
|
||||||
} else {
|
|
||||||
$validationRules[$k->kolom] = ['nullable'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$validated = $request->validate($validationRules);
|
|
||||||
|
|
||||||
DB::transaction(function () use ($program, $tabelId, $validated, $kolom) {
|
DB::transaction(function () use ($program, $tabelId, $validated, $kolom) {
|
||||||
$maxId = ValueBasisData::where('tabel_id', $tabelId)
|
$maxId = ValueBasisData::where('tabel_id', $tabelId)
|
||||||
@@ -425,9 +483,6 @@ class ValueBasisDataController extends Controller
|
|||||||
return view('ekosistem.value-basis-data.edit', compact('tabel', 'kolom', 'program', 'values', 'value_id', 'list_relasi'));
|
return view('ekosistem.value-basis-data.edit', compact('tabel', 'kolom', 'program', 'values', 'value_id', 'list_relasi'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Update the specified resource in storage.
|
|
||||||
*/
|
|
||||||
public function update(Request $request, string $tabelId, string $id): RedirectResponse
|
public function update(Request $request, string $tabelId, string $id): RedirectResponse
|
||||||
{
|
{
|
||||||
if (!Gate::any(['super_admin', 'admin'])) {
|
if (!Gate::any(['super_admin', 'admin'])) {
|
||||||
@@ -469,15 +524,7 @@ class ValueBasisDataController extends Controller
|
|||||||
abort(404, 'Data tidak ditemukan.');
|
abort(404, 'Data tidak ditemukan.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$validationRules = [];
|
$validated = $request->validate($this->prepareValidationRules($kolom));
|
||||||
foreach ($kolom as $k) {
|
|
||||||
if ($k->validasi && is_array($k->validasi)) {
|
|
||||||
$validationRules[$k->kolom] = $k->validasi;
|
|
||||||
} else {
|
|
||||||
$validationRules[$k->kolom] = ['nullable'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$validated = $request->validate($validationRules);
|
|
||||||
|
|
||||||
DB::transaction(function () use ($program, $tabelId, $validated, $kolom, $id, $values) {
|
DB::transaction(function () use ($program, $tabelId, $validated, $kolom, $id, $values) {
|
||||||
foreach ($validated as $kol => $val) {
|
foreach ($validated as $kol => $val) {
|
||||||
|
|||||||
Reference in New Issue
Block a user