diff --git a/app/Models/AssignMaterial.php b/app/Models/AssignMaterial.php index 4a5706d..381ac6a 100644 --- a/app/Models/AssignMaterial.php +++ b/app/Models/AssignMaterial.php @@ -3,6 +3,8 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use App\Models\RequestMaterial; +use App\Models\Activity; class AssignMaterial extends Model { @@ -14,4 +16,22 @@ class AssignMaterial extends Model protected $fillable = [ 'proyek_id', 'activity_id', 'material_id', 'qty_planning', 'budget', 'plan_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); + $material = RequestMaterial::where("id", $data->material_id)->first(); + $activity->rencana_biaya += $activity->rencana_biaya + ($material->price * $data->qty_planning); + $activity->save(); + }); + + static::deleted(function($data) { + $activity = Activity::where('id', $data->activity_id)->first(); + $activity->rencana_biaya -= $data->budget * $data->qty_planning; + $activity->save(); + }); + + } } diff --git a/app/Models/UserToActivity.php b/app/Models/UserToActivity.php index c2cc069..3dac828 100644 --- a/app/Models/UserToActivity.php +++ b/app/Models/UserToActivity.php @@ -3,6 +3,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use App\Models\Activity; class UserToActivity extends Model { @@ -17,9 +18,41 @@ class UserToActivity extends Model 'version_gantt_id', 'role_proyek_id', 'activity_id', - 'created_at', - 'created_by', - 'updated_at', + '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; + $activity->save(); + }); + + } + }