⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
id
/
hospital.dev-unit.com
/
app
/
Repositories
/
View File Name :
IssuedItemRepository.php
<?php namespace App\Repositories; use App\Models\Department; use App\Models\IssuedItem; use App\Models\ItemCategory; use DB; use Exception; use Filament\Notifications\Notification; use Throwable; /** * Class IssuedItemRepository * * @version August 27, 2020, 2:15 pm UTC */ class IssuedItemRepository extends BaseRepository { /** * @var array */ protected $fieldSearchable = [ 'department_id', 'user_id', 'issued_by', 'issued_date', 'return_date', 'item_category_id', 'item_id', 'quantity', 'description', ]; /** * Return searchable fields */ public function getFieldsSearchable(): array { return $this->fieldSearchable; } /** * Configure the Model **/ public function model() { return IssuedItem::class; } /** * @return mixed */ public function getAssociatedData() { $data['userTypes'] = Department::all()->pluck('name', 'id')->toArray(); $data['itemCategories'] = ItemCategory::all()->pluck('name', 'id')->toArray(); natcasesort($data['userTypes']); natcasesort($data['itemCategories']); return $data; } /** * @throws Throwable */ public function store($input) { try { DB::beginTransaction(); $issuedItem = IssuedItem::create($input); $newItemAvailableQty = $issuedItem->item->available_quantity - $issuedItem->quantity; $issuedItem->item()->update(['available_quantity' => $newItemAvailableQty]); DB::commit(); return $issuedItem; } catch (Exception $e) { DB::rollBack(); Notification::make() ->title($e->getMessage()) ->danger() ->send(); } return $issuedItem; } /** * @throws Exception */ public function destroyIssuedItemStock(IssuedItem $issuedItem) { if ($issuedItem->status == 0) { $newItemAvailableQty = $issuedItem->item->available_quantity + $issuedItem->quantity; $issuedItem->item()->update(['available_quantity' => $newItemAvailableQty]); } $this->delete($issuedItem->id); } public function returnIssuedItem($itemId): bool { $issuedItem = IssuedItem::whereId($itemId)->first(); $newItemAvailableQty = $issuedItem->item->available_quantity + $issuedItem->quantity; $issuedItem->item()->update(['available_quantity' => $newItemAvailableQty]); $issuedItem->update(['return_date' => date('Y-m-d'), 'quantity' => 0, 'status' => IssuedItem::ITEM_RETURNED]); return true; } }