Add pivot table for flight_fare to override fare #125
This commit is contained in:
@@ -2,21 +2,83 @@
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Models\Subfleet;
|
||||
use App\Models\Fare;
|
||||
use App\Models\Flight;
|
||||
use App\Models\Subfleet;
|
||||
|
||||
class FareService extends BaseService {
|
||||
class FareService extends BaseService
|
||||
{
|
||||
/**
|
||||
* Attach a fare to an flight
|
||||
*
|
||||
* @param Flight $flight
|
||||
* @param Fare $fare
|
||||
* @param array set the price/cost/capacity
|
||||
* @return Flight
|
||||
*/
|
||||
public function setForFlight(Flight $flight, Fare $fare, array $override = []): Flight
|
||||
{
|
||||
$flight->fares()->syncWithoutDetaching([$fare->id]);
|
||||
|
||||
# modify any pivot values?
|
||||
if (\count($override) > 0) {
|
||||
$flight->fares()->updateExistingPivot($fare->id, $override);
|
||||
}
|
||||
|
||||
$flight->save();
|
||||
$flight->refresh();
|
||||
return $flight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attach a fare to an aircraft
|
||||
* return all the fares for a flight. check the pivot
|
||||
* table to see if the price/cost/capacity has been overridden
|
||||
* and return the correct amounts.
|
||||
* @param Flight $flight
|
||||
* @return Fare[]
|
||||
*/
|
||||
public function getForFlight(Flight $flight)
|
||||
{
|
||||
$fares = $flight->fares->map(function ($fare) {
|
||||
if (null !== $fare->pivot->price) {
|
||||
$fare->price = $fare->pivot->price;
|
||||
}
|
||||
|
||||
if (null !== $fare->pivot->cost) {
|
||||
$fare->cost = $fare->pivot->cost;
|
||||
}
|
||||
|
||||
if (null !== $fare->pivot->capacity) {
|
||||
$fare->capacity = $fare->pivot->capacity;
|
||||
}
|
||||
|
||||
return $fare;
|
||||
});
|
||||
|
||||
return $fares;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Flight $flight
|
||||
* @param Fare $fare
|
||||
* @return Flight
|
||||
*/
|
||||
public function delFareFromFlight(Flight $flight, Fare $fare)
|
||||
{
|
||||
$flight->fares()->detach($fare->id);
|
||||
$flight->refresh();
|
||||
return $flight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attach a fare to a subfleet
|
||||
*
|
||||
* @param Aircraft $subfleet
|
||||
* @param Subfleet $subfleet
|
||||
* @param Fare $fare
|
||||
* @param array set the price/cost/capacity
|
||||
*
|
||||
* @return Aircraft
|
||||
* @return Subfleet
|
||||
*/
|
||||
public function setForSubfleet(Subfleet &$subfleet, Fare &$fare, array $override=[])
|
||||
public function setForSubfleet(Subfleet $subfleet, Fare $fare, array $override=[]): Subfleet
|
||||
{
|
||||
$subfleet->fares()->syncWithoutDetaching([$fare->id]);
|
||||
|
||||
@@ -26,7 +88,7 @@ class FareService extends BaseService {
|
||||
}
|
||||
|
||||
$subfleet->save();
|
||||
$subfleet = $subfleet->fresh();
|
||||
$subfleet->refresh();
|
||||
return $subfleet;
|
||||
}
|
||||
|
||||
@@ -34,10 +96,10 @@ class FareService extends BaseService {
|
||||
* return all the fares for an aircraft. check the pivot
|
||||
* table to see if the price/cost/capacity has been overridden
|
||||
* and return the correct amounts.
|
||||
* @param Aircraft $subfleet
|
||||
* @param Subfleet $subfleet
|
||||
* @return Fare[]
|
||||
*/
|
||||
public function getForSubfleet(Subfleet &$subfleet)
|
||||
public function getForSubfleet(Subfleet $subfleet)
|
||||
{
|
||||
$fares = $subfleet->fares->map(function($fare) {
|
||||
if(!is_null($fare->pivot->price)) {
|
||||
@@ -58,10 +120,16 @@ class FareService extends BaseService {
|
||||
return $fares;
|
||||
}
|
||||
|
||||
public function delFromAircraft(Subfleet &$subfleet, Fare &$fare)
|
||||
/**
|
||||
* Delete the fare from a subfleet
|
||||
* @param Subfleet $subfleet
|
||||
* @param Fare $fare
|
||||
* @return Subfleet|null|static
|
||||
*/
|
||||
public function delFareFromSubfleet(Subfleet &$subfleet, Fare &$fare)
|
||||
{
|
||||
$subfleet->fares()->detach($fare->id);
|
||||
$subfleet = $subfleet->fresh();
|
||||
$subfleet->refresh();
|
||||
return $subfleet;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user