<?php

namespace App\Repositories;

use App\Models\Category;
use Prettus\Repository\Eloquent\BaseRepository;
use Prettus\Repository\Criteria\RequestCriteria;
use Illuminate\Support\Facades\Cache;

/**
 * Class MemberRepositoryEloquent.
 *
 * @package namespace App\Repositories;
 */
class CategoryRepository extends BaseRepository
{
    /**
     * Specify Model class name
     *
     * @return string
     */
    public function model()
    {
        return Category::class;
    }



    /**
     * Boot up the repository, pushing criteria
     */
    public function boot()
    {
        $this->pushCriteria(app(RequestCriteria::class));
    }

    /**
     * @param $id
     * @return mixed
     */
    public function getCategory($id)
    {
        return $this->model->find($id);
    }

    public function getCategoryInfo($Groups_arr)
    {
        return $this->model->whereIn('alias', $Groups_arr)->select(['id','alias', 'demand'])->get()->toArray();
    }

    public function getManyCategory($id)
    {
        return $this->model->whereIn('id', $id)->orderBy(\DB::raw('FIND_IN_SET(id, "' . implode(",", $id) . '"' . ")"))->get();
    }
    public function getCategoriess()
    {
        //获取所有其它分类信息
        $category =  Cache::get('other_categories');
        if ($category === null) {
            $categoryData = $this->model->select(array('id','alias','demand','category_name'))->orderBy('order', 'desc')->orderBy('id', 'ASC')->get()->toArray();
            foreach ($categoryData as $key => $val) {
                //$category[$val['alias']][$val['id']] = $val['demand'];
                $category[$val['alias']][$val['id']] = $val;
            }
            if (array_key_exists('AIX_wage', $category)) {
                foreach ($category['AIX_wage'] as $key => $val) {
                    if (preg_match_all('(\d+)', $val['demand'], $reg)) {
                        $reg = $reg[0];
                        $min = $reg[0]%1000==0?(($reg[0]/1000).'K'):(round($reg[0]/1000, 1).'K');
                        if (count($reg)>1) {
                            $max = $reg[1]?($reg[1]%1000==0?(($reg[1]/1000).'K'):(round($reg[1]/1000, 1).'K')):'';
                        } else {
                            $max = '';
                        }
                        $max_k = $max ? '~'.$max :'以上';
                        $category['AIX_wage_k'][$key] = $min.$max_k.'/月';
                        if (config('aix.system.site_other.site_other.site_salary') == 1) {
                            $minwage = $min;
                            $maxwage = $max;
                        } elseif (config('aix.system.site_other.site_other.site_salary') == 2) {
                            if ($reg[0]>=10000) {
                                if ($reg[0]%10000==0) {
                                    $minwage = ($reg[0] / 10000) . '万';
                                } else {
                                    $minwage = round($reg[0]/10000, 1);
                                    $minwage = strpos($minwage, '.') ? str_replace('.', '万', $minwage) : $minwage . '万';
                                }
                            } else {
                                if ($reg[0]%1000==0) {
                                    $minwage = ($reg[0]/1000).'千';
                                } else {
                                    $minwage = round($reg[0]/1000, 1);
                                    $minwage = strpos($minwage, '.') ? str_replace('.', '千', $minwage) : $minwage . '千';
                                }
                            }
                            if (count($reg)>1 && $reg[1] >= 10000) {
                                if ($reg[1]%10000==0) {
                                    $maxwage = ($reg[1]/10000).'万';
                                } else {
                                    $maxwage = round($reg[1]/10000, 1);
                                    $maxwage = strpos($maxwage, '.') ? str_replace('.', '万', $maxwage) : $maxwage . '万';
                                }
                            } elseif (count($reg)>1 && $reg[1]) {
                                if ($reg[1]%1000==0) {
                                    $maxwage = ($reg[1]/1000).'千';
                                } else {
                                    $maxwage = round($reg[1]/1000, 1);
                                    $maxwage = strpos($maxwage, '.') ? str_replace('.', '千', $maxwage) : $maxwage . '千';
                                }
                            } else {
                                $maxwage = '';
                            }
                        }
                        $maxwage = $maxwage ? '~'.$maxwage :'以上';
                        $category['AIX_wage'][$key]['demand'] = $minwage.$maxwage.'/月';
                    }
                }
            }
            Cache::put('other_categories', $category, '86400');
        }
        return $category;
    }
    public function getCategories()
    {
        //获取所有其它分类信息
        $category =  Cache::get('other_categories');
        if ($category === null) {
            $categoryData = $this->model->select(array('id','alias','demand','category_name'))->orderBy('order', 'desc')->orderBy('id', 'ASC')->get()->toArray();
            foreach ($categoryData as $key => $val) {
                $category[$val['alias']][$val['id']] = $val;
            }
            if (array_key_exists('AIX_wage', $category)) {
                foreach ($category['AIX_wage'] as $key => $val) {
                    $category['AIX_wage'][$key]['origin_demand'] = $val['demand'];
                    if (preg_match_all('(\d+)', $val['demand'], $reg)) {
                        $reg = $reg[0];
                        $min = $reg[0]%1000==0?(($reg[0]/1000).'K'):(round($reg[0]/1000, 1).'K');
                        if (count($reg)>1) {
                            $max = $reg[1]?($reg[1]%1000==0?(($reg[1]/1000).'K'):(round($reg[1]/1000, 1).'K')):'';
                        } else {
                            $max = '';
                        }
                        $max_k = $max ? '~'.$max :'以上';
                        $category['AIX_wage_k'][$key] = $min.$max_k.'/月';
                        $category['AIX_wage'][$key]['k_demand'] = $min.$max_k.'/月';

                        //处理薪资单位是千的情况
                        if ($reg[0]>=10000) {
                            if ($reg[0]%10000==0) {
                                $minwage = ($reg[0] / 10000) . '万';
                            } else {
                                $minwage = round($reg[0]/10000, 1);
                                $minwage = strpos($minwage, '.') ? str_replace('.', '万', $minwage) : $minwage . '万';
                            }
                        } else {
                            if ($reg[0]%1000==0) {
                                $minwage = ($reg[0]/1000).'千';
                            } else {
                                $minwage = round($reg[0]/1000, 1);
                                $minwage = strpos($minwage, '.') ? str_replace('.', '千', $minwage) : $minwage . '千';
                            }
                        }
                        if (count($reg)>1 && $reg[1] >= 10000) {
                            if ($reg[1]%10000==0) {
                                $maxwage = ($reg[1]/10000).'万';
                            } else {
                                $maxwage = round($reg[1]/10000, 1);
                                $maxwage = strpos($maxwage, '.') ? str_replace('.', '万', $maxwage) : $maxwage . '万';
                            }
                        } elseif (count($reg)>1 && $reg[1]) {
                            if ($reg[1]%1000==0) {
                                $maxwage = ($reg[1]/1000).'千';
                            } else {
                                $maxwage = round($reg[1]/1000, 1);
                                $maxwage = strpos($maxwage, '.') ? str_replace('.', '千', $maxwage) : $maxwage . '千';
                            }
                        } else {
                            $maxwage = '';
                        }
                    }
                    $maxwage = $maxwage ? '~'.$maxwage :'以上';
                    $category['AIX_wage_c'][$key] = $minwage.$maxwage.'/月';
                    $category['AIX_wage'][$key]['c_demand'] = $minwage.$maxwage.'/月';

                    if (config('aix.system.site_other.site_other.site_salary') == 1) {
                        $minwage = $min;
                        $maxwage = $max;
                    } elseif (config('aix.system.site_other.site_other.site_salary') == 2) {
                        if ($reg[0]>=10000) {
                            if ($reg[0]%10000==0) {
                                $minwage = ($reg[0] / 10000) . '万';
                            } else {
                                $minwage = round($reg[0]/10000, 1);
                                $minwage = strpos($minwage, '.') ? str_replace('.', '万', $minwage) : $minwage . '万';
                            }
                        } else {
                            if ($reg[0]%1000==0) {
                                $minwage = ($reg[0]/1000).'千';
                            } else {
                                $minwage = round($reg[0]/1000, 1);
                                $minwage = strpos($minwage, '.') ? str_replace('.', '千', $minwage) : $minwage . '千';
                            }
                        }
                        if (count($reg)>1 && $reg[1] >= 10000) {
                            if ($reg[1]%10000==0) {
                                $maxwage = ($reg[1]/10000).'万';
                            } else {
                                $maxwage = round($reg[1]/10000, 1);
                                $maxwage = strpos($maxwage, '.') ? str_replace('.', '万', $maxwage) : $maxwage . '万';
                            }
                        } elseif (count($reg)>1 && $reg[1]) {
                            if ($reg[1]%1000==0) {
                                $maxwage = ($reg[1]/1000).'千';
                            } else {
                                $maxwage = round($reg[1]/1000, 1);
                                $maxwage = strpos($maxwage, '.') ? str_replace('.', '千', $maxwage) : $maxwage . '千';
                            }
                        } else {
                            $maxwage = '';
                        }
                    }
                    $maxwage = $maxwage ? '~'.$maxwage :'以上';
                    $category['AIX_wage'][$key]['demand'] = $minwage.$maxwage.'/月';
                }
            }
            Cache::put('other_categories', $category, '86400');
        }
        return $category;
    }
    public function getOriginCategory($where)
    {
        return $this->model->where($where)->first();
    }

    public function getCategoryByAlias($data)
    {
        return $this->model->where($data)->get();
    }

}