phpvms/app/Repositories/PirepRepository.php

73 lines
1.4 KiB
PHP
Raw Normal View History

2017-06-29 08:56:10 +08:00
<?php
namespace App\Repositories;
use App\Contracts\Repository;
use App\Models\Enums\PirepState;
2017-06-29 08:56:10 +08:00
use App\Models\Pirep;
2017-12-02 00:44:35 +08:00
use App\Models\User;
2017-06-29 08:56:10 +08:00
/**
* Class PirepRepository
*/
class PirepRepository extends Repository
2017-06-29 08:56:10 +08:00
{
protected $fieldSearchable = [
'user_id',
'status',
'state',
2017-06-29 08:56:10 +08:00
];
/**
* @return string
*/
2017-06-29 08:56:10 +08:00
public function model()
{
return Pirep::class;
}
2017-12-02 00:44:35 +08:00
/**
* Get all the pending reports in order. Returns the Pirep
* model but you still need to call ->all() or ->paginate()
2018-08-27 00:40:04 +08:00
*
2017-12-02 00:44:35 +08:00
* @param User|null $user
2018-08-27 00:40:04 +08:00
*
2017-12-02 00:44:35 +08:00
* @return Pirep
*/
public function getPending(User $user = null)
2017-12-02 00:44:35 +08:00
{
$where = [];
if ($user !== null) {
2017-12-02 00:44:35 +08:00
$where['user_id'] = $user->id;
}
$pireps = $this->orderBy('created_at', 'desc')->findWhere($where)->all();
2017-12-02 00:44:35 +08:00
return $pireps;
}
2017-12-04 00:55:01 +08:00
/**
* Number of PIREPs that are pending
2018-08-27 00:40:04 +08:00
*
2017-12-04 00:55:01 +08:00
* @param User|null $user
2018-08-27 00:40:04 +08:00
*
2017-12-04 00:55:01 +08:00
* @return mixed
*/
public function getPendingCount(User $user = null)
{
$where = [
'state' => PirepState::PENDING,
];
2017-12-04 00:55:01 +08:00
if ($user !== null) {
$where['user_id'] = $user->id;
}
$pireps = $this->orderBy('created_at', 'desc')
->findWhere($where, ['id'])
->count();
2017-12-04 00:55:01 +08:00
return $pireps;
}
2017-06-29 08:56:10 +08:00
}