Implement the other functionality for awards #154
This commit is contained in:
@@ -16,9 +16,17 @@ class CreateAwardsTable extends Migration
|
||||
Schema::create('awards', function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('title', 50);
|
||||
$table->text('description', 50)->nullable();
|
||||
$table->string('image', 255)->nullable();
|
||||
$table->text('description')->nullable();
|
||||
$table->text('image_url')->nullable();
|
||||
|
||||
# ref fields are expenses tied to some model object
|
||||
# EG, the airports has an internal expense for gate costs
|
||||
$table->string('ref_class')->nullable();
|
||||
$table->string('ref_class_id', 36)->nullable();
|
||||
|
||||
$table->timestamps();
|
||||
|
||||
$table->index(['ref_class', 'ref_class_id']);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Interfaces;
|
||||
|
||||
use App\Models\Award;
|
||||
use App\Models\User;
|
||||
use App\Models\UserAward;
|
||||
|
||||
@@ -22,42 +23,50 @@ class AwardInterface
|
||||
protected $award;
|
||||
|
||||
/**
|
||||
* AwardInterface constructor.
|
||||
* @param $award
|
||||
* @var User
|
||||
*/
|
||||
public function __construct($award)
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* AwardInterface constructor.
|
||||
* @param Award $award
|
||||
* @param User $user
|
||||
*/
|
||||
public function __construct(Award $award, User $user)
|
||||
{
|
||||
$this->award = $award;
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the award to this user, if they don't already have it
|
||||
* @param User $user
|
||||
* @return bool
|
||||
* @return bool|UserAward
|
||||
*/
|
||||
public function addAward(User $user)
|
||||
public function addAward()
|
||||
{
|
||||
$w = [
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $this->user->id,
|
||||
'award_id' => $this->award->id
|
||||
];
|
||||
|
||||
$found = UserAward::where($w)->count('id');
|
||||
if($found > 0) {
|
||||
if ($found > 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Associate this award to the user now
|
||||
$award = new UserAward($w);
|
||||
$award->save();
|
||||
|
||||
return $award;
|
||||
}
|
||||
|
||||
/**
|
||||
* Each award class just needs to award
|
||||
* @param User $user
|
||||
* @return mixed
|
||||
* Each award class just needs to return true or false
|
||||
* if it should actually be awarded to a user
|
||||
* @return boolean
|
||||
*/
|
||||
public function check(User $user)
|
||||
public function check()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
namespace App\Models;
|
||||
|
||||
/**
|
||||
* Class Award
|
||||
*
|
||||
* The Award model
|
||||
* @property mixed id
|
||||
* @property mixed ref_class
|
||||
* @property mixed|null ref_class_id
|
||||
* @package Award\Models
|
||||
*/
|
||||
class Award extends BaseModel
|
||||
@@ -14,25 +16,32 @@ class Award extends BaseModel
|
||||
public $fillable = [
|
||||
'title',
|
||||
'description',
|
||||
'image',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
|
||||
'image_url',
|
||||
'ref_class',
|
||||
'ref_class_id',
|
||||
];
|
||||
|
||||
public static $rules = [
|
||||
'title' => 'required',
|
||||
'title' => 'required',
|
||||
'description' => 'nullable',
|
||||
'image_url' => 'nullable',
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
* any foreign keys
|
||||
* Get the referring object
|
||||
*/
|
||||
/*
|
||||
public function subfleets() {
|
||||
return $this->belongsToMany(Subfleet::class, 'subfleet_fare')
|
||||
->withPivot('price', 'cost', 'capacity');
|
||||
public function getReference()
|
||||
{
|
||||
if (!$this->ref_class) {
|
||||
return null;
|
||||
}
|
||||
*/
|
||||
|
||||
try {
|
||||
return new $this->ref_class;
|
||||
# return $klass;
|
||||
# return $klass->find($this->ref_class_id);
|
||||
} catch (\Exception $e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,6 +147,11 @@ class User extends Authenticatable
|
||||
return $this->belongsTo(Airline::class, 'airline_id');
|
||||
}
|
||||
|
||||
public function awards()
|
||||
{
|
||||
return $this->hasMany(UserAward::class, 'user_id');
|
||||
}
|
||||
|
||||
public function home_airport()
|
||||
{
|
||||
return $this->belongsTo(Airport::class, 'home_airport_id');
|
||||
|
||||
@@ -14,4 +14,20 @@ class UserAward extends BaseModel
|
||||
'user_id',
|
||||
'award_id'
|
||||
];
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function award()
|
||||
{
|
||||
return $this->belongsTo(Award::class, 'award_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'user_id');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user