<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use DB;

class RequestDailyMonitoring extends Model
{
    use HasFactory;

    protected $table    = "request_log_daily_monitorings";

    protected $fillable = [
        'request_log_id',
        'subject',
        'body_temperature',
        'respiration_rate',
        'sistole',
        'diastole',
        'analysis',
        'lab_date',
        'provider',
        'examination',
        'created_by',
        'updated_by',
        'deleted_by',
    ];

    protected $appends    = ['medical_plan', 'non_medikamentosa_plan', 'document', 'discharge_date'];

    public function getBodyTemperatureAttribute()
    {
        return round($this->attributes['body_temperature'], 0);
    }

    public function getSistoleAttribute()
    {
        return round($this->attributes['sistole'], 0);
    }

    public function getDiastoleAttribute()
    {
        return round($this->attributes['diastole'], 0);
    }

    public function getRespirationRateAttribute()
    {
        return round($this->attributes['respiration_rate'], 0);
    }

    public function getMedicalPlanAttribute()
    {
        $arr_medical_plan = [];
        $medical_plan     = DB::table('request_log_medical_plan')->where(['request_log_daily_monitoring_id' => $this->attributes['id'], 'type' => 1])->get();

        foreach ($medical_plan as $row) {
            $arr_medical_plan[] = [
                'medical_plan_str' => $row->plan
            ];
        }

        return $arr_medical_plan;
    }

    public function getNonMedikamentosaPlanAttribute()
    {
        $arr_non_medikamentosa_plan = [];
        $non_medikamentosa_plan     = DB::table('request_log_medical_plan')->where(['request_log_daily_monitoring_id' => $this->attributes['id'], 'type' => 2])->get();

        foreach ($non_medikamentosa_plan as $row) {
            $arr_non_medikamentosa_plan[] = [
                'non_medikamentosa_plan_str' => $row->plan
            ];
        }

        return $arr_non_medikamentosa_plan;
    }

    public function getDocumentAttribute()
    {
        $arr_document = [];
        $document     = DB::table('files')->where(['fileable_type' => 'App\Models\LaboratoriumResult', 'fileable_id' => $this->attributes['id']])->get();
        
        foreach ($document as $row) {
            $arr_document[] = [
                'file_name' => $row->original_name,
                'path' => env('APP_URL') . '/storage/lab_result/' . $row->original_name,
                'type' => $row->type,
            ];
        }

        return $arr_document;
    }

    public function getDischargeDateAttribute()
    {
        return $discharge_date = DB::table('request_logs')->where('id', $this->attributes['request_log_id'])->select('discharge_date')->first();
    }

}
