Compare commits
1 Commits
dev
...
807-Fuel-C
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e2bcd72e39 |
@@ -6,7 +6,8 @@ use Illuminate\Validation\Validator;
|
|||||||
use Prettus\Repository\Eloquent\BaseRepository;
|
use Prettus\Repository\Eloquent\BaseRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @mixin \Prettus\Repository\Eloquent\BaseRepository
|
* @mixin Model
|
||||||
|
* @mixin BaseRepository
|
||||||
*/
|
*/
|
||||||
abstract class Repository extends BaseRepository
|
abstract class Repository extends BaseRepository
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,9 +7,6 @@ use App\Models\Enums\PirepState;
|
|||||||
use App\Models\Pirep;
|
use App\Models\Pirep;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
|
||||||
/**
|
|
||||||
* Class PirepRepository
|
|
||||||
*/
|
|
||||||
class PirepRepository extends Repository
|
class PirepRepository extends Repository
|
||||||
{
|
{
|
||||||
protected $fieldSearchable = [
|
protected $fieldSearchable = [
|
||||||
|
|||||||
@@ -4,11 +4,13 @@ namespace App\Services;
|
|||||||
|
|
||||||
use App\Contracts\Service;
|
use App\Contracts\Service;
|
||||||
use App\Models\Aircraft;
|
use App\Models\Aircraft;
|
||||||
|
use App\Models\Enums\PirepState;
|
||||||
use App\Models\Pirep;
|
use App\Models\Pirep;
|
||||||
use App\Repositories\PirepRepository;
|
use App\Repositories\PirepRepository;
|
||||||
|
|
||||||
class AircraftService extends Service
|
class AircraftService extends Service
|
||||||
{
|
{
|
||||||
|
/** @var PirepRepository */
|
||||||
private $pirepRepo;
|
private $pirepRepo;
|
||||||
|
|
||||||
public function __construct(PirepRepository $pirepRepo)
|
public function __construct(PirepRepository $pirepRepo)
|
||||||
@@ -16,6 +18,26 @@ class AircraftService extends Service
|
|||||||
$this->pirepRepo = $pirepRepo;
|
$this->pirepRepo = $pirepRepo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of the PIREPs that have been flown by this aircraft
|
||||||
|
*
|
||||||
|
* @param Aircraft $aircraft
|
||||||
|
* @param int $count
|
||||||
|
*
|
||||||
|
* @return Pirep[] Collection of PIREPs
|
||||||
|
*/
|
||||||
|
public function getFlightHistory(Aircraft $aircraft, $count = 5)
|
||||||
|
{
|
||||||
|
return $this->pirepRepo
|
||||||
|
->orderBy('created_at', 'desc')
|
||||||
|
->limit($count)
|
||||||
|
->where([
|
||||||
|
'aircraft_id' => $aircraft->id,
|
||||||
|
'state' => PirepState::ACCEPTED,
|
||||||
|
])
|
||||||
|
->get();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recalculate all aircraft stats and hours
|
* Recalculate all aircraft stats and hours
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ use App\Services\FlightService;
|
|||||||
use App\Services\PirepService;
|
use App\Services\PirepService;
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\Facades\Notification;
|
use Illuminate\Support\Facades\Notification;
|
||||||
|
|
||||||
class PIREPTest extends TestCase
|
class PIREPTest extends TestCase
|
||||||
@@ -317,6 +318,48 @@ class PIREPTest extends TestCase
|
|||||||
$this->assertNotEquals($last_pirep->id, $latest_pirep->id);
|
$this->assertNotEquals($last_pirep->id, $latest_pirep->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create multiple accepted PIREPs in an order, and then retrieve the aircraft history
|
||||||
|
* and also check that they're returned, in order
|
||||||
|
*/
|
||||||
|
public function testAircraftGetPirepHistory()
|
||||||
|
{
|
||||||
|
/** @var User $user */
|
||||||
|
$user = factory(User::class)->create([
|
||||||
|
'flights' => 0,
|
||||||
|
'flight_time' => 0,
|
||||||
|
'rank_id' => 1,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$pirep_id_order = [];
|
||||||
|
for ($i = 1; $i <= 2; $i++) {
|
||||||
|
/** @var Pirep $pirep */
|
||||||
|
$pirep = factory(Pirep::class)->create([
|
||||||
|
'airline_id' => $user->airline_id,
|
||||||
|
'aircraft_id' => 1,
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'created_at' => Carbon::now()->subHours($i), // subtract $i hours
|
||||||
|
]);
|
||||||
|
|
||||||
|
$pirep_id_order[] = $pirep->id;
|
||||||
|
|
||||||
|
$this->pirepSvc->create($pirep);
|
||||||
|
$this->pirepSvc->accept($pirep);
|
||||||
|
}
|
||||||
|
|
||||||
|
$aircraft = Aircraft::find(1);
|
||||||
|
|
||||||
|
/** @var AircraftService $aircraftSvc */
|
||||||
|
$aircraftSvc = app(AircraftService::class);
|
||||||
|
|
||||||
|
/** @var Collection $pirep_history */
|
||||||
|
$pirep_history = $aircraftSvc->getFlightHistory($aircraft, 5);
|
||||||
|
for ($i = 0; $i < $pirep_history->count(); $i++) {
|
||||||
|
$pirep = $pirep_history->get($i);
|
||||||
|
$this->assertEquals($pirep_id_order[$i], $pirep->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* check the stats/ranks, etc have incremented properly
|
* check the stats/ranks, etc have incremented properly
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user