<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Models\Activity;

class UserToActivity extends Model
{
    protected $table = 'assign_hr_to_activity';

    const CREATED_AT = 'created_at';
    const UPDATED_AT = 'updated_at';

    protected $fillable = [
        'user_id',
        'proyek_id',
        'version_gantt_id',
        'role_proyek_id',
        'activity_id',
        'start_date',
        'end_date',
        'created_at',
        'created_by',
        'updated_at',
        'updated_by'
    ];

	public static function boot() {
		parent::boot();

		static::created(function($data) {
			$activity = Activity::find($data->activity_id);
			$getWorkingHours = UserToProyek::where('user_id', $data->user_id)->where('proyek_id', $activity->proyek_id)->first();

			$salary = ($getWorkingHours->standart_rate * $activity->duration) * ($getWorkingHours->max_used / 100);

			if($getWorkingHours->uom_standart_rate == "Hour")
				$salary = ($getWorkingHours->standart_rate * 8) * $activity->duration * ($getWorkingHours->max_used / 100);

			$activity->rencana_biaya += $salary;
			$activity->save();
		});

		static::deleted(function($data) {
			$activity = Activity::find($data->activity_id);

			$getWorkingHours = UserToProyek::where('user_id', $data->user_id)->where('proyek_id', $activity->proyek_id)->first();
			$salary = ($getWorkingHours->standart_rate * $activity->duration) * ($getWorkingHours->max_used / 100);
			if($getWorkingHours->uom_standart_rate == "Hour"){
				$salary = ($getWorkingHours->standart_rate * 8) * $activity->duration * ($getWorkingHours->max_used / 100);
			}

			$activity->rencana_biaya -= $salary;
			if ($activity->rencana_biaya < 0) {
				$activity->rencana_biaya = 0;
			}
			$activity->save();
		});

	}

}