update ayam
This commit is contained in:
parent
ff786d572a
commit
3872207bf0
|
|
@ -67,6 +67,7 @@ public function store(Request $request)
|
||||||
'jenis_mutasi' => 'required|in:masuk,mati,afkir,pindah',
|
'jenis_mutasi' => 'required|in:masuk,mati,afkir,pindah',
|
||||||
'jumlah' => 'required|integer|min:1|max:9999',
|
'jumlah' => 'required|integer|min:1|max:9999',
|
||||||
'tanggal' => 'required|date|before_or_equal:today',
|
'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.required' => 'Jenis mutasi wajib dipilih.',
|
||||||
'jenis_mutasi.in' => 'Jenis mutasi tidak valid.',
|
'jenis_mutasi.in' => 'Jenis mutasi tidak valid.',
|
||||||
|
|
@ -78,6 +79,10 @@ public function store(Request $request)
|
||||||
'tanggal.required' => 'Tanggal wajib diisi.',
|
'tanggal.required' => 'Tanggal wajib diisi.',
|
||||||
'tanggal.date' => 'Format tanggal tidak valid.',
|
'tanggal.date' => 'Format tanggal tidak valid.',
|
||||||
'tanggal.before_or_equal' => 'Tanggal tidak boleh melebihi hari ini.',
|
'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) {
|
DB::transaction(function () use ($request) {
|
||||||
|
|
@ -135,7 +140,8 @@ public function store(Request $request)
|
||||||
'jumlah' => $request->jumlah,
|
'jumlah' => $request->jumlah,
|
||||||
'tanggal' => $request->tanggal,
|
'tanggal' => $request->tanggal,
|
||||||
'keterangan' => 'Pindahan dari ' . $kandangAsal->nama_kandang,
|
'keterangan' => 'Pindahan dari ' . $kandangAsal->nama_kandang,
|
||||||
]);}
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
// MUTASI BIASA
|
// MUTASI BIASA
|
||||||
else {
|
else {
|
||||||
|
|
@ -192,7 +198,13 @@ public function store(Request $request)
|
||||||
public function update(Request $request, $id)
|
public function update(Request $request, $id)
|
||||||
{
|
{
|
||||||
$mutasi = MutasiAyam::findOrFail($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 */
|
/** @var \App\Models\User $user */
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
|
|
||||||
|
|
@ -203,8 +215,10 @@ public function update(Request $request, $id)
|
||||||
$validator = Validator::make($request->all(), [
|
$validator = Validator::make($request->all(), [
|
||||||
'kandang_id' => 'required|exists:kandang,id',
|
'kandang_id' => 'required|exists:kandang,id',
|
||||||
'jenis_mutasi' => 'required|in:masuk,mati,afkir',
|
'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',
|
'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.required' => 'Nama kandang wajib dipilih.',
|
||||||
'kandang_id.exists' => 'Kandang tidak ditemukan.',
|
'kandang_id.exists' => 'Kandang tidak ditemukan.',
|
||||||
|
|
@ -216,6 +230,9 @@ public function update(Request $request, $id)
|
||||||
'tanggal.required' => 'Tanggal wajib diisi.',
|
'tanggal.required' => 'Tanggal wajib diisi.',
|
||||||
'tanggal.date' => 'Format tanggal tidak valid.',
|
'tanggal.date' => 'Format tanggal tidak valid.',
|
||||||
'tanggal.before_or_equal' => 'Tanggal tidak boleh melebihi hari ini.',
|
'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()) {
|
if ($validator->fails()) {
|
||||||
|
|
@ -280,8 +297,16 @@ public function destroy($id)
|
||||||
abort(403, 'Karyawan tidak boleh menghapus data.');
|
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')
|
return redirect()->route('ayam')
|
||||||
->with('success', 'Data berhasil dihapus.');
|
->with('success', 'Data berhasil dihapus.');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
<!-- ===== CARD ===== -->
|
<!-- ===== CARD ===== -->
|
||||||
<div class="shadow-sm card table-card">
|
<div class="shadow-sm card table-card">
|
||||||
|
|
||||||
|
|
@ -79,12 +79,12 @@ class="form-control form-control-sm" placeholder="Cari kandang/keterangan">
|
||||||
<label class="small text-muted">Tahun</label>
|
<label class="small text-muted">Tahun</label>
|
||||||
<select name="tahun" id="filterTahun" class="form-control form-control-sm">
|
<select name="tahun" id="filterTahun" class="form-control form-control-sm">
|
||||||
<option value="">Semua</option>
|
<option value="">Semua</option>
|
||||||
@foreach ([2024, 2025, 2026] as $th)
|
@for ($th = now()->year - 2; $th <= now()->year; $th++)
|
||||||
<option value="{{ $th }}"
|
<option value="{{ $th }}"
|
||||||
{{ request('tahun') == $th ? 'selected' : '' }}>
|
{{ request('tahun') == $th ? 'selected' : '' }}>
|
||||||
{{ $th }}
|
{{ $th }}
|
||||||
</option>
|
</option>
|
||||||
@endforeach
|
@endfor
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -142,7 +142,7 @@ class="form-control form-control-sm">
|
||||||
|
|
||||||
<td>
|
<td>
|
||||||
{{ ucfirst($item->jenis_mutasi ?? '-') }}
|
{{ ucfirst($item->jenis_mutasi ?? '-') }}
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td>{{ $item->keterangan ?? '-' }}</td>
|
<td>{{ $item->keterangan ?? '-' }}</td>
|
||||||
|
|
||||||
|
|
@ -151,24 +151,43 @@ class="form-control form-control-sm">
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<button class="btn btn-warning btn-sm" data-toggle="modal"
|
|
||||||
data-target="#modalEdit" data-id="{{ $item->id }}"
|
@php
|
||||||
data-kandang="{{ $item->kandang_id }}"
|
$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-jumlah="{{ $item->jumlah }}"
|
||||||
data-jenis="{{ $item->jenis_mutasi }}"
|
data-jenis="{{ $item->jenis_mutasi }}"
|
||||||
data-keterangan="{{ $item->keterangan }}"
|
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>
|
<i class="la la-edit"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
{{-- ✅ TOMBOL HAPUS --}}
|
||||||
@auth
|
@auth
|
||||||
@if (auth()->user()->isAdmin())
|
@if (auth()->user()->isAdmin())
|
||||||
<button class="btn btn-danger btn-sm" data-toggle="modal"
|
<button
|
||||||
data-target="#modalHapus" data-id="{{ $item->id }}">
|
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>
|
<i class="la la-trash"></i>
|
||||||
</button>
|
</button>
|
||||||
@endif
|
@endif
|
||||||
@endauth
|
@endauth
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
@ -232,12 +251,19 @@ class="form-control form-control-sm">
|
||||||
<label class="fw-bold">1. Pilih Jenis Mutasi</label>
|
<label class="fw-bold">1. Pilih Jenis Mutasi</label>
|
||||||
<select name="jenis_mutasi" id="jenisMutasi"
|
<select name="jenis_mutasi" id="jenisMutasi"
|
||||||
class="form-control mt-2 @error('jenis_mutasi') is-invalid @enderror">
|
class="form-control mt-2 @error('jenis_mutasi') is-invalid @enderror">
|
||||||
|
|
||||||
<option value="">-- Pilih Jenis Mutasi --</option>
|
<option value="">-- Pilih Jenis Mutasi --</option>
|
||||||
<option value="masuk">Masuk (DOC)</option>
|
<option value="masuk" {{ old('jenis_mutasi') == 'masuk' ? 'selected' : '' }}>Masuk (DOC)
|
||||||
<option value="mati">Mati</option>
|
</option>
|
||||||
<option value="afkir">Afkir</option>
|
<option value="mati" {{ old('jenis_mutasi') == 'mati' ? 'selected' : '' }}>Mati</option>
|
||||||
<option value="pindah">Pindah Kandang</option>
|
<option value="afkir" {{ old('jenis_mutasi') == 'afkir' ? 'selected' : '' }}>Afkir
|
||||||
|
</option>
|
||||||
|
<option value="pindah" {{ old('jenis_mutasi') == 'pindah' ? 'selected' : '' }}>Pindah
|
||||||
|
Kandang</option>
|
||||||
</select>
|
</select>
|
||||||
|
@error('jenis_mutasi')
|
||||||
|
<small class="text-danger">{{ $message }}</small>
|
||||||
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -247,15 +273,19 @@ class="form-control mt-2 @error('jenis_mutasi') is-invalid @enderror">
|
||||||
|
|
||||||
<div class="mt-2 form-group">
|
<div class="mt-2 form-group">
|
||||||
<label>Nama Kandang</label>
|
<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>
|
<option value="">-- Pilih Kandang --</option>
|
||||||
@foreach ($kandang as $k)
|
@foreach ($kandang as $k)
|
||||||
<option value="{{ $k->id }}">
|
<option value="{{ $k->id }}"
|
||||||
|
{{ old('kandang_id') == $k->id ? 'selected' : '' }}>
|
||||||
{{ $k->nama_kandang }}
|
{{ $k->nama_kandang }}
|
||||||
(Stok: {{ $k->jumlah_ayam_terakhir }})
|
(Stok: {{ $k->jumlah_ayam_terakhir }})
|
||||||
</option>
|
</option>
|
||||||
@endforeach
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
|
@error('kandang_id')
|
||||||
|
<small class="text-danger">{{ $message }}</small>
|
||||||
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -266,25 +296,37 @@ class="form-control mt-2 @error('jenis_mutasi') is-invalid @enderror">
|
||||||
|
|
||||||
<div class="mt-2 form-group">
|
<div class="mt-2 form-group">
|
||||||
<label>Kandang Asal</label>
|
<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>
|
<option value="">-- Pilih Kandang Asal --</option>
|
||||||
@foreach ($kandang as $k)
|
@foreach ($kandang as $k)
|
||||||
<option value="{{ $k->id }}">
|
<option value="{{ $k->id }}"
|
||||||
|
{{ old('kandang_asal_id') == $k->id ? 'selected' : '' }}>
|
||||||
{{ $k->nama_kandang }}
|
{{ $k->nama_kandang }}
|
||||||
(Stok: {{ $k->jumlah_ayam_terakhir }})
|
(Stok: {{ $k->jumlah_ayam_terakhir }})
|
||||||
</option>
|
</option>
|
||||||
@endforeach
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
|
@error('kandang_asal_id')
|
||||||
|
<small class="text-danger">{{ $message }}</small>
|
||||||
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Kandang Tujuan</label>
|
<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>
|
<option value="">-- Pilih Kandang Tujuan --</option>
|
||||||
@foreach ($kandang as $k)
|
@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
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
|
@error('kandang_tujuan_id')
|
||||||
|
<small class="text-danger">{{ $message }}</small>
|
||||||
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -295,21 +337,31 @@ class="form-control mt-2 @error('jenis_mutasi') is-invalid @enderror">
|
||||||
|
|
||||||
<div class="mt-2 form-group">
|
<div class="mt-2 form-group">
|
||||||
<label>Jumlah Ayam</label>
|
<label>Jumlah Ayam</label>
|
||||||
{{-- <input type="number" name="jumlah" class="form-control"> --}}
|
|
||||||
<input type="number" name="jumlah" max="9999" min="1" inputmode="numeric"
|
<input type="number" name="jumlah" max="9999" min="1" inputmode="numeric"
|
||||||
oninput="this.value=this.value.replace(/[^0-9]/g,'').slice(0,4)"
|
oninput="this.value=this.value.replace(/[^0-9]/g,'').slice(0,4)"
|
||||||
class="form-control @error('jumlah') is-invalid @enderror"
|
class="form-control @error('jumlah') is-invalid @enderror"
|
||||||
value="{{ old('jumlah') }}">
|
value="{{ old('jumlah') }}">
|
||||||
|
@error('jumlah')
|
||||||
|
<small class="text-danger">{{ $message }}</small>
|
||||||
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Tanggal</label>
|
<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>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Keterangan</label>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -361,9 +413,7 @@ class="form-control @error('jumlah') is-invalid @enderror"
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Jumlah Ayam</label>
|
<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"
|
<input type="number" name="jumlah" max="9999" min="1" inputmode="numeric"
|
||||||
oninput="this.value=this.value.replace(/[^0-9]/g,'').slice(0,4)"
|
oninput="this.value=this.value.replace(/[^0-9]/g,'').slice(0,4)"
|
||||||
value="{{ old('jumlah') }}" class="form-control @error('jumlah') is-invalid @enderror">
|
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>
|
<label>Jenis Mutasi</label>
|
||||||
<select name="jenis_mutasi" class="form-control @error('jenis_mutasi') is-invalid @enderror">
|
<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="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>
|
</select>
|
||||||
|
|
||||||
@error('jenis_mutasi')
|
@error('jenis_mutasi')
|
||||||
|
|
@ -452,7 +504,7 @@ class="form-control @error('jumlah') is-invalid @enderror"> --}}
|
||||||
|
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
<script>
|
<script>
|
||||||
const baseUrl = "{{ route('ayam') }}";
|
const baseUrl = "{{ route('ayam') }}";
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
/* =============================
|
/* =============================
|
||||||
HANDLE MODAL EDIT NORMAL
|
HANDLE MODAL EDIT NORMAL
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue