update ayam

This commit is contained in:
ninavirgiana 2026-03-24 13:08:15 +07:00
parent ff786d572a
commit 3872207bf0
2 changed files with 136 additions and 59 deletions

View File

@ -67,6 +67,7 @@ public function store(Request $request)
'jenis_mutasi' => 'required|in:masuk,mati,afkir,pindah',
'jumlah' => 'required|integer|min:1|max:9999',
'tanggal' => 'required|date|before_or_equal:today',
'keterangan' => 'required_if:jenis_mutasi,masuk,mati,afkir|string|max:255',
], [
'jenis_mutasi.required' => 'Jenis mutasi wajib dipilih.',
'jenis_mutasi.in' => 'Jenis mutasi tidak valid.',
@ -78,6 +79,10 @@ public function store(Request $request)
'tanggal.required' => 'Tanggal wajib diisi.',
'tanggal.date' => 'Format tanggal tidak valid.',
'tanggal.before_or_equal' => 'Tanggal tidak boleh melebihi hari ini.',
'keterangan.required_if' => 'Keterangan wajib diisi.',
'keterangan.string' => 'Keterangan harus berupa teks.',
'keterangan.max' => 'Keterangan maksimal 255 karakter.',
]);
DB::transaction(function () use ($request) {
@ -135,7 +140,8 @@ public function store(Request $request)
'jumlah' => $request->jumlah,
'tanggal' => $request->tanggal,
'keterangan' => 'Pindahan dari ' . $kandangAsal->nama_kandang,
]);}
]);
}
// MUTASI BIASA
else {
@ -192,7 +198,13 @@ public function store(Request $request)
public function update(Request $request, $id)
{
$mutasi = MutasiAyam::findOrFail($id);
// CEGAH EDIT DATA PINDAH
if (
$mutasi->jenis_mutasi === 'pindah' ||
str_contains($mutasi->keterangan, 'Pindahan dari')
) {
abort(403, 'Data hasil pindahan tidak boleh diedit.');
}
/** @var \App\Models\User $user */
$user = Auth::user();
@ -203,8 +215,10 @@ public function update(Request $request, $id)
$validator = Validator::make($request->all(), [
'kandang_id' => 'required|exists:kandang,id',
'jenis_mutasi' => 'required|in:masuk,mati,afkir',
'jumlah' => 'required|integer|min:1',
'jumlah' => 'required|integer|min:1|max:9999',
'tanggal' => 'required|date|before_or_equal:today',
'keterangan' => 'required_if:jenis_mutasi,masuk,mati,afkir|string|max:255',
], [
'kandang_id.required' => 'Nama kandang wajib dipilih.',
'kandang_id.exists' => 'Kandang tidak ditemukan.',
@ -216,6 +230,9 @@ public function update(Request $request, $id)
'tanggal.required' => 'Tanggal wajib diisi.',
'tanggal.date' => 'Format tanggal tidak valid.',
'tanggal.before_or_equal' => 'Tanggal tidak boleh melebihi hari ini.',
'keterangan.required_if' => 'Keterangan wajib diisi.',
'keterangan.string' => 'Keterangan harus berupa teks.',
'keterangan.max' => 'Keterangan maksimal 255 karakter.',
]);
if ($validator->fails()) {
@ -280,8 +297,16 @@ public function destroy($id)
abort(403, 'Karyawan tidak boleh menghapus data.');
}
MutasiAyam::findOrFail($id)->delete();
$mutasi = MutasiAyam::findOrFail($id);
if (
$mutasi->jenis_mutasi === 'pindah' ||
str_contains($mutasi->keterangan, 'Pindahan dari')
) {
abort(403, 'Data hasil pindahan tidak boleh dihapus.');
}
$mutasi->delete();
return redirect()->route('ayam')
->with('success', 'Data berhasil dihapus.');
}

View File

@ -79,12 +79,12 @@ class="form-control form-control-sm" placeholder="Cari kandang/keterangan">
<label class="small text-muted">Tahun</label>
<select name="tahun" id="filterTahun" class="form-control form-control-sm">
<option value="">Semua</option>
@foreach ([2024, 2025, 2026] as $th)
@for ($th = now()->year - 2; $th <= now()->year; $th++)
<option value="{{ $th }}"
{{ request('tahun') == $th ? 'selected' : '' }}>
{{ $th }}
</option>
@endforeach
@endfor
</select>
</div>
@ -151,24 +151,43 @@ class="form-control form-control-sm">
</td>
<td class="text-center">
<button class="btn btn-warning btn-sm" data-toggle="modal"
data-target="#modalEdit" data-id="{{ $item->id }}"
data-kandang="{{ $item->kandang_id }}"
@php
$isPindahan =
$item->jenis_mutasi === 'pindah' ||
str_contains($item->keterangan, 'Pindahan dari');
@endphp
{{-- TOMBOL EDIT --}}
<button
class="btn btn-warning btn-sm {{ $isPindahan ? 'disabled opacity-50' : '' }}"
@if (!$isPindahan) data-toggle="modal"
data-target="#modalEdit" @endif
data-id="{{ $item->id }}" data-kandang="{{ $item->kandang_id }}"
data-jumlah="{{ $item->jumlah }}"
data-jenis="{{ $item->jenis_mutasi }}"
data-keterangan="{{ $item->keterangan }}"
data-tanggal="{{ $item->tanggal }}">
data-tanggal="{{ $item->tanggal }}"
style="{{ $isPindahan ? 'pointer-events: none;' : '' }}"
title="{{ $isPindahan ? 'Data pindahan tidak bisa diedit' : '' }}">
<i class="la la-edit"></i>
</button>
{{-- TOMBOL HAPUS --}}
@auth
@if (auth()->user()->isAdmin())
<button class="btn btn-danger btn-sm" data-toggle="modal"
data-target="#modalHapus" data-id="{{ $item->id }}">
<button
class="btn btn-danger btn-sm {{ $isPindahan ? 'disabled opacity-50' : '' }}"
@if (!$isPindahan) data-toggle="modal"
data-target="#modalHapus" @endif
data-id="{{ $item->id }}"
style="{{ $isPindahan ? 'pointer-events: none;' : '' }}"
title="{{ $isPindahan ? 'Data pindahan tidak bisa dihapus' : '' }}">
<i class="la la-trash"></i>
</button>
@endif
@endauth
</td>
</tr>
@ -232,12 +251,19 @@ class="form-control form-control-sm">
<label class="fw-bold">1. Pilih Jenis Mutasi</label>
<select name="jenis_mutasi" id="jenisMutasi"
class="form-control mt-2 @error('jenis_mutasi') is-invalid @enderror">
<option value="">-- Pilih Jenis Mutasi --</option>
<option value="masuk">Masuk (DOC)</option>
<option value="mati">Mati</option>
<option value="afkir">Afkir</option>
<option value="pindah">Pindah Kandang</option>
<option value="masuk" {{ old('jenis_mutasi') == 'masuk' ? 'selected' : '' }}>Masuk (DOC)
</option>
<option value="mati" {{ old('jenis_mutasi') == 'mati' ? 'selected' : '' }}>Mati</option>
<option value="afkir" {{ old('jenis_mutasi') == 'afkir' ? 'selected' : '' }}>Afkir
</option>
<option value="pindah" {{ old('jenis_mutasi') == 'pindah' ? 'selected' : '' }}>Pindah
Kandang</option>
</select>
@error('jenis_mutasi')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
@ -247,15 +273,19 @@ class="form-control mt-2 @error('jenis_mutasi') is-invalid @enderror">
<div class="mt-2 form-group">
<label>Nama Kandang</label>
<select name="kandang_id" class="form-control">
<select name="kandang_id" class="form-control @error('kandang_id') is-invalid @enderror">
<option value="">-- Pilih Kandang --</option>
@foreach ($kandang as $k)
<option value="{{ $k->id }}">
<option value="{{ $k->id }}"
{{ old('kandang_id') == $k->id ? 'selected' : '' }}>
{{ $k->nama_kandang }}
(Stok: {{ $k->jumlah_ayam_terakhir }})
</option>
@endforeach
</select>
@error('kandang_id')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
</div>
@ -266,25 +296,37 @@ class="form-control mt-2 @error('jenis_mutasi') is-invalid @enderror">
<div class="mt-2 form-group">
<label>Kandang Asal</label>
<select name="kandang_asal_id" class="form-control">
<select name="kandang_asal_id"
class="form-control @error('kandang_asal_id') is-invalid @enderror">
<option value="">-- Pilih Kandang Asal --</option>
@foreach ($kandang as $k)
<option value="{{ $k->id }}">
<option value="{{ $k->id }}"
{{ old('kandang_asal_id') == $k->id ? 'selected' : '' }}>
{{ $k->nama_kandang }}
(Stok: {{ $k->jumlah_ayam_terakhir }})
</option>
@endforeach
</select>
@error('kandang_asal_id')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
<div class="form-group">
<label>Kandang Tujuan</label>
<select name="kandang_tujuan_id" class="form-control">
<select name="kandang_tujuan_id"
class="form-control @error('kandang_tujuan_id') is-invalid @enderror">
<option value="">-- Pilih Kandang Tujuan --</option>
@foreach ($kandang as $k)
<option value="{{ $k->id }}">{{ $k->nama_kandang }}</option>
<option value="{{ $k->id }}"
{{ old('kandang_tujuan_id') == $k->id ? 'selected' : '' }}>
{{ $k->nama_kandang }}
</option>
@endforeach
</select>
@error('kandang_tujuan_id')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
</div>
@ -295,21 +337,31 @@ class="form-control mt-2 @error('jenis_mutasi') is-invalid @enderror">
<div class="mt-2 form-group">
<label>Jumlah Ayam</label>
{{-- <input type="number" name="jumlah" class="form-control"> --}}
<input type="number" name="jumlah" max="9999" min="1" inputmode="numeric"
oninput="this.value=this.value.replace(/[^0-9]/g,'').slice(0,4)"
class="form-control @error('jumlah') is-invalid @enderror"
value="{{ old('jumlah') }}">
@error('jumlah')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
<div class="form-group">
<label>Tanggal</label>
<input type="date" name="tanggal" class="form-control" max="{{ date('Y-m-d') }}">
<input type="date" name="tanggal" value="{{ old('tanggal') }}"
class="form-control @error('tanggal') is-invalid @enderror"
max="{{ date('Y-m-d') }}">
@error('tanggal')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
<div class="form-group">
<label>Keterangan</label>
<textarea name="keterangan" class="form-control" rows="2"></textarea>
<textarea name="keterangan" class="form-control @error('keterangan') is-invalid @enderror" rows="2">{{ old('keterangan') }}</textarea>
@error('keterangan')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
</div>
@ -361,9 +413,7 @@ class="form-control @error('jumlah') is-invalid @enderror"
<div class="form-group">
<label>Jumlah Ayam</label>
{{-- <input type="number" name="jumlah"
value="{{ old('jumlah') }}"
class="form-control @error('jumlah') is-invalid @enderror"> --}}
<input type="number" name="jumlah" max="9999" min="1" inputmode="numeric"
oninput="this.value=this.value.replace(/[^0-9]/g,'').slice(0,4)"
value="{{ old('jumlah') }}" class="form-control @error('jumlah') is-invalid @enderror">
@ -377,9 +427,11 @@ class="form-control @error('jumlah') is-invalid @enderror"> --}}
<label>Jenis Mutasi</label>
<select name="jenis_mutasi" class="form-control @error('jenis_mutasi') is-invalid @enderror">
<option value="masuk" {{ old('jenis_mutasi') == 'masuk' ? 'selected' : '' }}>Masuk</option>
<option value="masuk" {{ old('jenis_mutasi') == 'masuk' ? 'selected' : '' }}>Masuk
</option>
<option value="mati" {{ old('jenis_mutasi') == 'mati' ? 'selected' : '' }}>Mati</option>
<option value="afkir" {{ old('jenis_mutasi') == 'afkir' ? 'selected' : '' }}>Afkir</option>
<option value="afkir" {{ old('jenis_mutasi') == 'afkir' ? 'selected' : '' }}>Afkir
</option>
</select>
@error('jenis_mutasi')