<?php

namespace Yajny\Member\Traits;
use Illuminate\Support\Facades\DB;

trait MemberScopes
{

    public function scopeByMonth($q, $month, $year)
    {
        return $q->whereMonth($this->dateColumn, '=', $month)->whereYear($this->dateColumn, '=', $year);
    }

    public function scopeByStatus($q, $status)
    {

        if ($status == 'all') return $q;
        else
            return $q->where('status', $status);
    }


    public static function getMonthsByData($cls,$user_id){

        $obj = new $cls;

        $filterDates = [];

        $dates =  DB::table($obj->directTable)->selectRaw("DISTINCT CONCAT(DATE_FORMAT(".$obj->dateColumn.",'%Y%m'),'|',DATE_FORMAT(".$obj->dateColumn.",'%M - %Y')) as filterDate")->where('user_id',$user_id)->pluck('filterDate')->toArray();

        foreach(($dates) as $date)
        {
            $date = explode('|',$date);

            if(count($date)==2)
             $filterDates[$date[0]] = $date[1];

        }

        return $filterDates;
    }

    public function scopeClaimableClicks($q){


        return $q->whereNotExists(function ($q) {
            $q->select(\DB::raw(1))->from('user_sales')->whereRaw('user_sales.click_id = clicks.id');
        })
        ->whereNotExists(function ($q) {
            $q->select(\DB::raw(1))->from('user_claims')->whereRaw('user_claims.click_id = clicks.id');
        })
            ->where('cashback_enabled', 1)->whereBetween('click_time', [date('Y-m-d', strtotime(' now - '. config('settingConfig.missing_cb_max_days') .' days')), date('Y-m-d', strtotime(' now - '. config('settingConfig.missing_cb_min_days') .' days'))]);

    }


}
