<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use \App\Models\traits\SetConnection;
use Illuminate\Support\Facades\Auth;

class RelationCitySchool extends Model
{
    use SetConnection;

    public $timestamps = false;

    protected $guarded = [];

    public function scopeByUserCompany(Builder $builder)
    {
        $user = auth()->user();

        if($user && $user->company_id == 1) {
            return $builder->where(function ($query) use ($user) {

                return $query->where('company_id', $user->company_id)
                    ->orWhereNull('company_id');
            });
        } else if($user) {
            return $builder->where('company_id', $user->company_id);
        }

        return $builder;
    }

    public static function getCityList()
    {
        $cityCodeList = RelationCitySchool::select('name')
            ->get();

        return $cityCodeList;
    }

    public static function getCityListByCityId($cid)
    {
        $cityCodeList = RelationCitySchool::where('city_id', 'like', '%'.$cid.'%')
            ->get();

        $count = RelationCitySchool::where('city_id', '=', $cid)
            ->count();

        if($count == 0) {
            $cityCodeList = RelationCitySchool::get();
        }

        return $cityCodeList;
    }

    public static function getDataElementarySchool($cityId)
    {
        $cityCodeList = RelationCitySchool::where('city_id', '=', $cityId)
            ->select(['e_school1', 'e_school2', 'e_school3', 'e_school4', 'e_school5', 'e_school6', 'e_school7', 'e_school8'])
            ->get();

        return $cityCodeList;
    }

    public static function getDataJuniorSchool($cityId)
    {
        $user = Auth::user();

        $cityCodeList = RelationCitySchool::select('j_school1', 'j_school2', 'j_school3', 'j_school4', 'j_school5', 'j_school6', 'j_school7');
        $cityCodeList->where('city_id', '=', $cityId);
        $cityCodeList->where(function ($query) {
            $query->orWhereNotNull("j_school1")
                ->orWhereNotNull("j_school2")
                ->orWhereNotNull("j_school3")
                ->orWhereNotNull("j_school4")
                ->orWhereNotNull("j_school5")
                ->orWhereNotNull("j_school6")
                ->orWhereNotNull("j_school7");
        });

        if ($user->company_id == 1) {
            $cityCodeList->where(function ($query) {
                $query->orWhereNull("company_id");
                $query->orWhere("company_id", "=", 1);
            });
        } else {
            $cityCodeList->where("company_id", "=", $user->company_id);
        }

        return $cityCodeList->get();
    }
}
