<?php

namespace App\Services\Client;

use App\Models\CoachUser;
use App\Models\ShopCoachService;
use App\Models\Project;
use Illuminate\Support\Facades\DB;

class ProjectService
{

    /**
     * 获取项目详情
     */
    public function getProjectDetail($projectId, $areaCode)
    {
        // 根据区域代码获取代理商
        $agent = AgentInfo::where('business_area', 'like', "%{$areaCode}%")
            ->where('state', 'enable')
            ->first();
            
        if (!$agent) {
            throw new \Exception('该区域暂无代理商');
        }

        // 获取项目详情
        $project = Project::where('id', $projectId)
            ->where('state', 'enable')
            ->where(function($query) use ($areaCode) {
                // 根据区域地址过滤项目
                $query->where('area_code', $areaCode);
            })
            ->with([
                'category:id,name',
                'agent' => function($query) use ($agent) {
                    $query->where('id', $agent->id);
                }
            ])
            ->firstOrFail();

        return $project;
    }
    
    /**
     * 获取技师开通的项目列表
     */
    public function getCoachProjectList($coachId, $areaCode)
    {
        // 查询技师信息
        $coach = CoachUser::where('id', $coachId)
            ->where('state', 'enable')
            ->where('auth_state', 'passed')
            ->firstOrFail();

        // 获取技师开通的项目ID列表
        $projectIds = ShopCoachService::where('coach_id', $coachId)
            ->where('state', 'enable')
            ->pluck('shop_service_id');

        // 查询项目列表
        $projects = Project::whereIn('id', $projectIds)
            ->where('state', 'enable')
            ->where(function($query) use ($areaCode) {
                // TODO: 根据区域地址过滤项目
                $query->where('area_code', $areaCode);
            })
            ->with([
                'category:id,name',
                // 其他关联
            ])
            ->orderBy('sort', 'desc')
            ->paginate(10);

        return $projects;
    }
} 