<?php
namespace App\Http\Controllers;
use App\Models\DetailTransaksiBarangRusak;
use App\Models\Item;
use App\Models\TransaksiBarangRusak;
use App\Models\TransaksiGudang;
use DateInterval;
use DatePeriod;
use DateTime;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Response;
class TransaksiBarangRusakController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(Request $request)
{
// this will default to a time of 00:00:00
$begin = new DateTime('-1 month');
$end = new DateTime();
$periode = [
$begin->format('d/m/Y'),
$end->format('d/m/Y'),
];
if (request()->periode) {
$periode = explode(" - ", request()->periode);
$begin = DateTime::createFromFormat('d/m/Y', $periode[0]);
$end = DateTime::createFromFormat('d/m/Y', $periode[1]);
}
$end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval, $end);
$periodeTanggals = [];
foreach ($daterange as $date) {
$periodeTanggals[] = strftime("%d-%b", strtotime($date->format("Y-m-d")));
}
$datas = TransaksiBarangRusak::whereBetween("created_at", [$begin->format('Y-m-d'), $end->format('Y-m-d')])->get();
$data = [
'datas' => $datas,
'periode' => $periode,
'periodeTanggals' => $periodeTanggals
];
return response()->view('transaksi_barang_rusak.index', $data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
// $barang = DetailTransaksiGudang::with('item')->get();
// $data = [
// 'detail' => $barang
// ];
return response()->view('transaksi_barang_rusak.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request): RedirectResponse
{
try {
DB::beginTransaction();
$request->validate([
'deskripsi' => 'required',
]);
$transaksi_barang_rusak = TransaksiBarangRusak::create([
"tanggal" => $request->tanggal,
"no_pencatatan" => $request->no_pencatatan,
"sale_id" => 0,
"deskripsi" => $request->deskripsi,
"pengguna_id" => auth()->user()->id
]);
$transaksi_barang_rusak->save();
if (isset($request->jumlah)) {
for ($i = 0; $i < count($request->jumlah); $i++) {
$item = Item::find($request->id[$i]);
DetailTransaksiBarangRusak::create([
"transaksi_barang_rusak_id" => $transaksi_barang_rusak->id,
"item_id" => $request->id[$i],
"nama_item" => $item->nama_item,
"harga_item" => 0,
"qty" => $request->jumlah[$i],
]);
$item->update(['stok' => $item->stok - $request->jumlah[$i]]);
}
}
DB::commit();
return redirect(route("transaksi_barang_rusak.index"))->with('success', 'barang rusak berhasil dicatat.');
} catch (\Exception $e) {
return redirect()->back()->with('error', $e->getMessage());
}
}
/**
* Display the specified resource.
*/
public function show(TransaksiBarangRusak $transaksiGudang): Response
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(String $id)
{
$transaksi_barang_rusak = TransaksiBarangRusak::find($id);
$data = [
'datas' => $transaksi_barang_rusak
];
return response()->view('transaksi_barang_rusak.edit', $data);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, String $id): RedirectResponse
{
try {
DB::beginTransaction();
$transaksi_barang_rusak = TransaksiBarangRusak::find($id);
$old_detail = DetailTransaksiBarangRusak::where("transaksi_barang_rusak_id", $transaksi_barang_rusak->id);
$request->validate([
'deskripsi' => 'required',
]);
$transaksi_barang_rusak->update([
"tanggal" => $request->tanggal,
"no_pencatatan" => $request->no_pencatatan,
"sale_id" => 0,
"deskripsi" => $request->deskripsi,
"pengguna_id" => auth()->user()->id
]);
if (isset($request->jumlah)) {
foreach ($old_detail->get() as $detail) {
$item_old = Item::find($detail->item_id);
$item_old->update([
'stok' => $item_old->stok + $detail->qty
]);
}
$old_detail->delete();
for ($i = 0; $i < count($request->jumlah); $i++) {
$item = Item::find($request->id[$i]);
$detailCreate = DetailTransaksiBarangRusak::create([
"transaksi_barang_rusak_id" => $transaksi_barang_rusak->id,
"item_id" => $request->id[$i],
"nama_item" => $item->nama_item,
"harga_item" => 0,
"qty" => $request->jumlah[$i],
]);
$item->update(['stok' => $item->stok - $request->jumlah[$i]]);
}
}
DB::commit();
return redirect(route("transaksi_barang_rusak.index"))->with('success', 'barang rusak berhasil dicatat.');
} catch (\Exception $e) {
return redirect()->back()->with('error', $e->getMessage());
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id): RedirectResponse
{
DB::beginTransaction();
try {
$data = TransaksiBarangRusak::find($id);
$detail = DetailTransaksiBarangRusak::where("transaksi_barang_rusak_id", $data->id);
if (isset($data->retur_id)) {
$detail->delete();
} else {
if (isset($detail)) {
foreach ($detail->get() as $detail) {
$item_old = Item::find($detail->item_id);
$item_old->update([
'stok' => $item_old->stok + $detail->qty
]);
}
$detail->delete();
}
}
$data->delete();
DB::commit();
return redirect()->route('transaksi_barang_rusak.index')->with('success', 'Transaksi berhasil dihapus');
} catch (\Throwable $th) {
DB::rollback();
return redirect()->route('transaksi_barang_rusak.index')->with('error', 'Transaksi gagal dihapus');
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]