Models
<?php
namespace App;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
use Carbon\Carbon;
class Sadd extends Eloquent
{
protected $collection = 'sadd';
protected $fillable = [
'type',
'sector',
'date',
'source',
'comment',
'data',
];
/**
* Relationship for the sectors
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function sectors() {
return $this->hasMany('App\Sadd')->orderBy('sector', 'asc');
}
/**
* Relationship to the parent
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
*/
public function parenteable()
{
return $this->morphTo();
}
/**
* GET ATTRIBUTES
*/
public function getDateAttribute($value) {
if ($value) {
$value = $this->asDateTime($value)->format('Y-m-d');
}
return $value;
}
/**
* SET ATTRIBUTES
*/
public function setDateAttribute($value) {
if ($value) {
$value = $this->fromDateTime(Carbon::parse($value));
}
$this->attributes['date'] = $value;
}
/**
* Add scope to get most recent Sadd record first
* @param $query
* @return mixed
*/
public function scopeNewest($query)
{
return $query->orderBy('created_at', 'desc');
}
/**
* Add exclude
* @param $query
* @return mixed
*/
public function scopeExcludeSector($query)
{
return $query->where('type', '!=', 'sector');
}
}
<?php
namespace App;
use Carbon\Carbon;
use App\Crisis;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Event extends Eloquent
{
protected $collection = 'event';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'number',
'comment',
'category',
'sub_category',
'data',
'user',
'date',
];
public function crisis()
{
return $this->belongsTo('App\Crisis');
}
public function sadd()
{
return $this->morphMany('App\Sadd', 'parenteable');
}
public function funding()
{
return $this->embedsOne('App\Funding');
}
public function event_funding() {
return $this->hasOne('App\Event', 'funding_event');
}
/**
* Add scope to get most recent event record first
* @param $query
* @return mixed
*/
public function scopeNewest($query)
{
return $query->orderBy('date', 'desc');
}
public function scopeSitrep($query) {
return $query->where('sub_category', 'SitRep');
}
public function getDateAttribute($value) {
if ($value) {
$value = $this->asDateTime($value)->format('Y-m-d');
}
return $value;
}
public function setDateAttribute($value) {
if ($value) {
$value = $this->fromDateTime(Carbon::parse($value));
}
$this->attributes['date'] = $value;
}
}
<?php
namespace App;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
use Carbon\Carbon;
class Crisis extends Eloquent {
protected $collection = 'crisis';
protected $fillable = [
'affected_areas',
'affected_population',
'care_id',
'category',
'cause',
'contingency_plan',
'country',
'date',
'date_source',
'description',
'epp',
'epp_date',
'internal_alert',
'lead_comment',
'lead_member',
'name',
'region',
'sub_region',
'current_status',
'temp_lead_member',
'user'
];
/**
* GET ATTRIBUTES
*/
public function getDateAttribute($value) {
if ($value) {
$value = $this->asDateTime($value)->format('Y-m-d');
}
return $value;
}
public function getEppAttribute($value) {
if ($value['date_update']) {
$value['date_update'] = $this->asDateTime($value['date_update'])->format('Y-m-d');
}
return $value;
}
public function getContingencyPlanAttribute($value) {
if ($value['date_update']) {
$value['date_update'] = $this->asDateTime($value['date_update'])->format('Y-m-d');
}
return $value;
}
public function getInternalAlertAttribute($value) {
if ($value['date']) {
$value['date'] = $this->asDateTime($value['date'])->format('Y-m-d');
}
return $value;
}
/**
* SET ATTRIBUTES
*/
public function setDateAttribute($value) {
if ($value) {
$value = $this->fromDateTime(Carbon::parse($value));
}
$this->attributes['date'] = $value;
}
public function setEppAttribute($value) {
if ($value['date_update']) {
$value['date_update'] = $this->fromDateTime(Carbon::parse($value['date_update']));
}
$this->attributes['epp'] = $value;
}
public function setContingencyPlanAttribute($value) {
if ($value['date_update']) {
$value['date_update'] = $this->fromDateTime(Carbon::parse($value['date_update']));
}
$this->attributes['contingency_plan'] = $value;
}
public function setInternalAlertAttribute($value) {
if ($value['date']) {
$value['date'] = $this->fromDateTime(Carbon::parse($value['date']));
}
$this->attributes['internal_alert'] = $value;
}
public function events()
{
return $this->hasMany('App\Event')->orderBy('date', 'desc');
}
public function status()
{
return $this->embedsMany('App\CrisisStatus');
}
public function phases()
{
return $this->embedsMany('App\CrisisPhase');
}
public function response()
{
return $this->embedsOne('App\CrisisResponse');
}
public function sadd()
{
return $this->morphMany('App\Sadd', 'parenteable');
}
public function latestSadd() {
return $this->morphOne('App\Sadd', 'parenteable')->latest();
}
}