<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Order;
use Illuminate\Database\Eloquent\SoftDeletes;

class Payment extends Model
{
    use HasFactory,SoftDeletes;

    protected $fillable = ['id',
          'order_id' ,
          'payment_gateway_id' ,
          'candidate_id' ,
          'amount',
          'currency_symbol',
          'payment_status',
          'created_at',
          'updated_at',
          'transaction_id',
          'payment_mode' ,
          'invoice_number'];
    public function scopeSearchQuery($query)
    {
      
        if (request('Keyword')) {
            foreach ($this->fillable as $column) {
                switch ($column) {
                    case 'id':
                          $query->orWhere($column, 'LIKE', '%' . request('Keyword') . '%');
                        break;
                    case 'payment_gateway_id':
                        $query->orWhereHas('payment_gateway', function ($query) {
                            $query->where('name', 'like', '%' . request('Keyword') . '%');
                        });
                        break;
                    case 'order_id':
                        $query->orWhere($column, 'LIKE', '%' . request('Keyword') . '%');
                        break;
                    case 'amount':
                        $query->orWhere($column, 'LIKE', '%' . request('Keyword') . '%');
                        break;
                    case 'transaction_id':
                        $query->orWhere($column, 'LIKE', '%' . request('Keyword') . '%');
                        break;
                    case 'payment_mode':
                        $query->orWhere($column, 'LIKE', '%' . request('Keyword') . '%');
                        break;
                    case 'invoice_number':
                        $query->orWhere($column, 'LIKE', '%' . request('Keyword') . '%');
                        break;
                    default:
                        $query->orWhere($column, 'LIKE', '%' . request('Keyword') . '%');
                        break;
                }
            }
        }
        return $query;
    }

    public function order()
    {
        return $this->belongsTo(Order::class, 'order_id');
    }

    public function candidate()
    {
        return $this->belongsTo(Candidate::class, 'candidate_id');
    }

    public function payment_gateway()
    {
        return $this->belongsTo(payment_gateway::class, 'payment_gateway_id');
    }

    
}