April 2026 waren Wirtschaft Feedback
This commit is contained in:
parent
02f2a4c23e
commit
9ce711d6b2
167 changed files with 25278 additions and 8518 deletions
92
app/Repositories/StockEntryRepository.php
Normal file
92
app/Repositories/StockEntryRepository.php
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
|
||||
namespace App\Repositories;
|
||||
|
||||
use App\Models\StockEntry;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
|
||||
class StockEntryRepository
|
||||
{
|
||||
/**
|
||||
* @param array<string, mixed> $data
|
||||
*/
|
||||
public function create(array $data): StockEntry
|
||||
{
|
||||
$data['unit'] = ($data['entry_type'] ?? '') === 'ingredient' ? 'gram' : 'piece';
|
||||
|
||||
return StockEntry::query()->create($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $data
|
||||
*/
|
||||
public function update(StockEntry $stockEntry, array $data): StockEntry
|
||||
{
|
||||
if (array_key_exists('entry_type', $data)) {
|
||||
$data['unit'] = ($data['entry_type'] ?? '') === 'ingredient' ? 'gram' : 'piece';
|
||||
}
|
||||
|
||||
$stockEntry->update($data);
|
||||
|
||||
return $stockEntry->fresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $data
|
||||
*/
|
||||
public function receive(StockEntry $stockEntry, array $data): StockEntry
|
||||
{
|
||||
$data['status'] = 'received';
|
||||
$data['received_by'] = auth()->id();
|
||||
|
||||
$stockEntry->update($data);
|
||||
|
||||
return $stockEntry->fresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, StockEntry>
|
||||
*/
|
||||
public function getByStatus(string $status): Collection
|
||||
{
|
||||
return StockEntry::query()
|
||||
->where('status', $status)
|
||||
->orderByDesc('ordered_at')
|
||||
->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, StockEntry>
|
||||
*/
|
||||
public function getForIngredient(int $ingredientId): Collection
|
||||
{
|
||||
return StockEntry::query()
|
||||
->where('ingredient_id', $ingredientId)
|
||||
->where('status', 'received')
|
||||
->orderByDesc('received_at')
|
||||
->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Liste: Pending zuerst (neuestes Bestelldatum), dann Received (neuester Eingang).
|
||||
*
|
||||
* @return Collection<int, StockEntry>
|
||||
*/
|
||||
public function listForIndex(): Collection
|
||||
{
|
||||
$with = [
|
||||
'ingredient',
|
||||
'packagingItem',
|
||||
'supplier',
|
||||
'location',
|
||||
'quality',
|
||||
'orderedByUser',
|
||||
'receivedByUser',
|
||||
];
|
||||
|
||||
$pending = StockEntry::query()->with($with)->where('status', 'pending')->orderByDesc('ordered_at')->get();
|
||||
$received = StockEntry::query()->with($with)->where('status', 'received')->orderByDesc('received_at')->get();
|
||||
|
||||
return $pending->concat($received)->values();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue