[ Mini Kiebo ]
Server: Windows NT AKFAR_SERVER 10.0 build 26200 (Windows 10) AMD64
Path:
D:
/
xampp
/
htdocs
/
surat
/
app
/
Http
/
Controllers
/
[
Home
]
File: OutgoingLetterController.php
<?php namespace App\Http\Controllers; use App\Enums\LetterType; use App\Http\Requests\StoreLetterRequest; use App\Http\Requests\UpdateLetterRequest; use App\Models\Attachment; use App\Models\Classification; use App\Models\Config; use App\Models\Letter; use Illuminate\Contracts\View\View; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; class OutgoingLetterController extends Controller { /** * Display a listing of the resource. * * @param Request $request * @return View */ public function index(Request $request): View { return view('pages.transaction.outgoing.index', [ 'data' => Letter::outgoing()->render($request->search), 'search' => $request->search, ]); } /** * Display a listing of the outgoing letter agenda. * * @param Request $request * @return View */ public function agenda(Request $request): View { return view('pages.transaction.outgoing.agenda', [ 'data' => Letter::outgoing()->agenda($request->since, $request->until, $request->filter)->render($request->search), 'search' => $request->search, 'since' => $request->since, 'until' => $request->until, 'filter' => $request->filter, 'query' => $request->getQueryString(), ]); } /** * @param Request $request * @return View */ public function print(Request $request): View { $agenda = __('menu.agenda.menu'); $letter = __('menu.agenda.outgoing_letter'); $title = App::getLocale() == 'id' ? "$agenda $letter" : "$letter $agenda"; return view('pages.transaction.outgoing.print', [ 'data' => Letter::outgoing()->agenda($request->since, $request->until, $request->filter)->get(), 'search' => $request->search, 'since' => $request->since, 'until' => $request->until, 'filter' => $request->filter, 'config' => Config::pluck('value','code')->toArray(), 'title' => $title, ]); } /** * Show the form for creating a new resource. * * @return View */ public function create(): View { return view('pages.transaction.outgoing.create', [ 'classifications' => Classification::all(), ]); } /** * Store a newly created resource in storage. * * @param StoreLetterRequest $request * @return RedirectResponse */ public function store(StoreLetterRequest $request): RedirectResponse { try { $user = auth()->user(); if ($request->type != LetterType::OUTGOING->type()) throw new \Exception(__('menu.transaction.outgoing_letter')); $newLetter = $request->validated(); $newLetter['user_id'] = $user->id; $letter = Letter::create($newLetter); if ($request->hasFile('attachments')) { foreach ($request->attachments as $attachment) { $extension = $attachment->getClientOriginalExtension(); if (!in_array($extension, ['png', 'jpg', 'jpeg', 'pdf'])) continue; $filename = time() . '-'. $attachment->getClientOriginalName(); $filename = str_replace(' ', '-', $filename); $attachment->storeAs('public/attachments', $filename); Attachment::create([ 'filename' => $filename, 'extension' => $extension, 'user_id' => $user->id, 'letter_id' => $letter->id, ]); } } return redirect() ->route('transaction.outgoing.index') ->with('success', __('menu.general.success')); } catch (\Throwable $exception) { return back()->with('error', $exception->getMessage()); } } /** * Display the specified resource. * * @param Letter $outgoing * @return View */ public function show(Letter $outgoing): View { return view('pages.transaction.outgoing.show', [ 'data' => $outgoing->load(['classification', 'user', 'attachments']), ]); } /** * Show the form for editing the specified resource. * * @param Letter $outgoing * @return View */ public function edit(Letter $outgoing): View { return view('pages.transaction.outgoing.edit', [ 'data' => $outgoing, 'classifications' => Classification::all(), ]); } /** * Update the specified resource in storage. * * @param UpdateLetterRequest $request * @param Letter $outgoing * @return RedirectResponse */ public function update(UpdateLetterRequest $request, Letter $outgoing): RedirectResponse { try { $outgoing->update($request->validated()); if ($request->hasFile('attachments')) { foreach ($request->attachments as $attachment) { $extension = $attachment->getClientOriginalExtension(); if (!in_array($extension, ['png', 'jpg', 'jpeg', 'pdf'])) continue; $filename = time() . '-'. $attachment->getClientOriginalName(); $filename = str_replace(' ', '-', $filename); $attachment->storeAs('public/attachments', $filename); Attachment::create([ 'filename' => $filename, 'extension' => $extension, 'user_id' => auth()->user()->id, 'letter_id' => $outgoing->id, ]); } } return back()->with('success', __('menu.general.success')); } catch (\Throwable $exception) { return back()->with('error', $exception->getMessage()); } } /** * Remove the specified resource from storage. * * @param Letter $outgoing * @return RedirectResponse */ public function destroy(Letter $outgoing): RedirectResponse { try { $outgoing->delete(); return redirect() ->route('transaction.outgoing.index') ->with('success', __('menu.general.success')); } catch (\Throwable $exception) { return back()->with('error', $exception->getMessage()); } } }