cboissenin
1/3/2017 - 4:36 PM

Models

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();
  }



}