<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class ApplicationDeviation extends Model
{
    use SoftDeletes;

    protected $table = 'application_deviation';

    protected $fillable = [
        'consumer_application_id',
        'deviation_type_id',
        'application_details',
        'maker_id',
        'maker_deviation_notes',
        'checker_id',
        'checker_comment',
        'status'
    ];

    protected $dates = ['deleted_at'];

    public function maker(){
        return $this->belongsTo(User::class, 'maker_id');
    }

    public function checker(){
        return $this->belongsTo(User::class, 'checker_id');
    }

    public function deviationType(){
        return $this->belongsTo(DeviationType::class, 'deviation_type_id');
    }

    public function logs(){
        return $this->hasMany(ApplicationDeviationLog::class, 'application_deviation_id');
    }

    public static function hasPendingDisbDeviation($applicationId)
    {
        return self::where('consumer_application_id', $applicationId)
            ->where('status', 'pending')
            ->whereHas('deviationType', function($q){
                $q->where('category', 'disbursement');
            })->exists();
    }
    public static function getPendingDisbDeviationCountsForApps($appIds)
    {
        if (empty($appIds)) {
            return [];
        }

        return self::whereIn('consumer_application_id', $appIds)
            ->where('status', 'pending')
            ->whereHas('deviationType', function($q) {
                $q->where('category', 'disbursement');
            })
            ->selectRaw('consumer_application_id, count(*) as total')
            ->groupBy('consumer_application_id')
            ->pluck('total', 'consumer_application_id')
            ->toArray();
    }


}