attributes['org_updated_at'] = $value->getTimestamp(); }*/ public function account() { return $this->belongsTo('App\Models\Account'); } public function user() { return $this->belongsTo('App\Models\User'); } public function source() { return $this->belongsTo('App\Models\TimesheetEventSource'); } public function timesheet() { return $this->belongsTo('App\Models\Timesheet'); } public function project() { return $this->belongsTo('App\Models\Project'); } public function project_code() { return $this->belongsTo('App\Models\ProjectCode'); } /** * @return TimesheetEvent */ public static function createNew($parent = false) { $className = get_called_class(); $entity = new $className(); if ($parent) { $entity->user_id = $parent instanceof User ? $parent->id : $parent->user_id; $entity->account_id = $parent->account_id; } elseif (Auth::check()) { $entity->user_id = Auth::user()->id; $entity->account_id = Auth::user()->account_id; } else { Utils::fatalError(); } return $entity; } public function toChangesArray(TimesheetEvent $other) { $attributes_old = parent::toArray(); $attributes_new = $other->toArray(); $skip_keys = ['id' => 1, 'created_at' => 1, 'updated_at' => 1, 'deleted_at' => 1, 'org_data' => 1, 'update_data' => 1]; $zeroisempty_keys = ['discount' => 1]; $result = []; // Find all the values that where changed or deleted foreach ($attributes_old as $key => $value) { // Skip null values, keys we don't care about and 0 value keys that means they are not used if (empty($value) || isset($skip_keys[$key]) || (isset($zeroisempty_keys[$key]) && $value)) { continue; } // Compare values if it exists in the new array if (isset($attributes_new[$key]) || array_key_exists($key, $attributes_new)) { if ($value instanceof \DateTime && $attributes_new[$key] instanceof \DateTime) { if ($value != $attributes_new[$key]) { $result[$key] = $attributes_new[$key]->format("Y-m-d H:i:s"); } } elseif ($value instanceof \DateTime && is_string($attributes_new[$key])) { if ($value->format("Y-m-d H:i:s") != $attributes_new[$key]) { $result[$key] = $attributes_new[$key]; } } elseif (is_string($value) && $attributes_new[$key] instanceof \DateTime) { if ($attributes_new[$key]->format("Y-m-d H:i:s") != $value) { $result[$key] = $attributes_new[$key]->format("Y-m-d H:i:s"); } } elseif ($value != $attributes_new[$key]) { $result[$key] = $attributes_new[$key]; } } else { $result[$key] = null; } } // Find all the values that where deleted foreach ($attributes_new as $key => $value) { if (isset($skip_keys[$key])) { continue; } if (!isset($attributes_old[$key])) { $result[$key] = $value; } } return $result; } }