<?php


namespace App\Http\Services;

//后台用户相关信息服务
use App\Model\IntracodeModel;
use App\Model\UserDepartmentModel;
use App\Model\UserInfoModel;
use Illuminate\Support\Facades\DB;

class AdminUserService
{

    public function getAdminUserInfoByCodeId($codeId)
    {
        $intraCodeModel = new IntracodeModel();
        $userInfoModel = new UserInfoModel();
        $adminId = $intraCodeModel->where('code_id', $codeId)->value('admin_id');
        return $userInfoModel->where('userId', $adminId)->first();
    }

    public function getAdminUserNameByCodeId($codeId)
    {
        $intraCodeModel = new IntracodeModel();
        $userInfoModel = new UserInfoModel();
        $adminId = $intraCodeModel->where('code_id', $codeId)->value('admin_id');
        return $userInfoModel->where('userId', $adminId)->value('name');
    }

    public function getAdminUserListByCodeIds($codeIds = [])
    {
        $intraCodeModel = new IntracodeModel();
        $userInfoModel = new UserInfoModel();
        $adminIds = $intraCodeModel->whereIn('code_id', $codeIds)->pluck('admin_id');
        return $userInfoModel->whereIn('userId', $adminIds)->get()->toArray();
    }

    public function getCodeIdByUserName($userName)
    {
        $userId = UserInfoModel::where('name', $userName)->value('userId');
        $codeId = IntracodeModel::where('admin_id', $userId)->value('code_id');
        return $codeId;
    }

    public function getAdminIdByUserName($userName)
    {
       return UserInfoModel::where('name', $userName)->value('userId');
    }

    public function getAdminIdByEmail($email)
    {
        return UserInfoModel::where('email', $email)->value('userId');
    }

    public function getCodeIdsByUserIds($userIds)
    {
        $intraCodeModel = new IntracodeModel();
        return $intraCodeModel->whereIn('admin_id', $userIds)->pluck('code_id');
    }

    public function getAdminUserInfo($userId)
    {
        $userInfoModel = new UserInfoModel();
        $user = $userInfoModel->where('userId', $userId)->first();
        return $user ?: [];
    }

    //获取离职人员列表
    public function getResignedUsers()
    {
        $userInfoModel = new UserInfoModel();
        $user = $userInfoModel->leftJoin('lie_intracode', 'user_info.userId', '=', 'lie_intracode.admin_id')
            ->where('user_info.status', 4)->where('lie_intracode.code_id', '!=', '')->get();
        return $user ? $user->toArray() : [];
    }

    //判断是否是离职人员
    public function checkIsResignedByCodeId($codeId)
    {
        $userInfoModel = new UserInfoModel();
        $count = $userInfoModel->leftJoin('lie_intracode', 'user_info.userId', '=', 'lie_intracode.admin_id')
            ->where('lie_intracode.code_id', $codeId)
            ->where('user_info.status', 4)->where('lie_intracode.code_id', '!=', '')->count();
        return (bool)$count;
    }


    //获取渠道开发员(运营部)的所有用户信息
    public function getPurchaseUsers()
    {
        $departmentService = new DepartmentService();
        //市场部
        $usersMarket = $departmentService->getUserByDepartmentId(4);
        //运营部
        $usersOperation = $departmentService->getUserByDepartmentId(9);
        $users = array_merge($usersMarket, $usersOperation);
        $userIds = array_column($users, 'userId');
        $intraCodeModel = new IntracodeModel();
        return $intraCodeModel->getEncodeByUserIds($userIds);
    }
}