<?php

namespace homepro\action;

use model\homepro\projectItem;
use model\homepro\projectRecommend;
use model\pro\cate;

class projectRecommendAction extends baseAction
{
	/**
	 * @method 跳转推荐清单
	 * @author hongzhang
	 * @copyright 2025-08-12
	 */
	public function recommendList()
	{
		$req = \mvc::$req;
		\view::set('req', $req);

		//获取列表
		$projectRecommend = new projectRecommend();
		$data = $projectRecommend->getList($req);
		\view::set('dataArr', $data['rows']);
		\view::set('pageTpl', $this->showPages($data['records'], $data['pageSize'], $data['page']));

		$partTree  = $projectRecommend->getProjectCateTree();
		\view::set('partTree',$partTree);

		$statusArr = ['Y'=>'已确认','N'=>'未确认'];
        \view::set('statusArr',$statusArr);

		 //获取保时捷的国际车型数据
        $seriesList = $projectRecommend->getSeriesList(799);
		$seriesGroup = [];
		if($seriesList){
			foreach($seriesList as $series){
				$arr = explode(' ',$series['ms_name']);
				if($arr[0]){
					$seriesGroup[$arr[0]][] = $series;
				}
			}
		}
        \view::set('seriesGroup',$seriesGroup);

		// 检查是否为POST请求
		$isPost = $_SERVER['REQUEST_METHOD'] === 'POST';
		if ($isPost) {
			// AJAX请求，只返回列表HTML
			ob_start();
			\view::put('index/projectRecommendList');
			$html = ob_get_clean();
			$this->successJson(['html' => $html]);
		} else {
			// 正常请求，返回完整页面
			\view::set('active', 'recommendList');
			\view::set('title', \mvc::$cfg['siteTitle']);
			\view::put('index/projectRecommendIndex');
		}
	}

	/**
	 * @method 获取车系列表
	 * @author hongzhang
	 * @copyright 2025-08-13
	 */
	public function getSeriesList()
	{
		$req = \mvc::$req;
		$mkid = $req['mkid'];
		$projectRecommend = new projectRecommend();
		$seriesList = $projectRecommend->getSeriesList($mkid);
		$this->successJson($seriesList);
	}

	/**
	 * @method 选择品类
	 * @author hongzhang
	 * @copyright 2025-08-13
	 */
	public function select()
	{
		$req = \mvc::$req;
		$style = !empty($req['style']) && $req['style'] == 'anychk' ? 'anychk' : '';

		$projectRecommend = new projectRecommend();
		$cateIds = $projectRecommend->getProjectRecommendCate();

		if ($cateIds) {
			$cate = new cate();
			$allPart = $cate->lrtree->getChilds(0);
			$allPart = array_column($allPart, null, 'id');
			//指定产品线
			$rulecate = null;

			// 处理指定的小类ID（多个）
			if (!empty($cateIds)) {

				$rulecate = $cateIds;

				// 获取这些分类的所有父级分类
				foreach ($cateIds as $cateId) {
					if (isset($allPart[$cateId])) {
						// 获取当前分类的所有父级
						$parents = $cate->lrtree->getParents($cateId, false); // 不包含自己
						foreach ($parents as $parent) {
							if (!in_array($parent['id'], $rulecate)) {
								$rulecate[] = $parent['id'];
							}
						}
					}
				}
			} else if (!empty($req['pcateid'])) {
				$rulecate = [];
				foreach (explode(',', $req['pcateid']) as $id) {
					$rows = $cate->lrtree->getChilds($id);
					$rulecate = array_merge($rulecate, array_column($rows, 'id'));
				}
				if ($rulecate) {
					foreach ($rulecate as $cid) {
						$pcatid = $allPart[$cid]['parent_id'];
						$rulecate[] = $pcatid;
						if (!empty($allPart[$pcatid]))
							$rulecate[] = $allPart[$pcatid]['parent_id'];
					}
				}
			}

			if (isset($req['cfg'])) {
				$cfg = json_decode(base64_decode($req['cfg']), true);
				if ($req['cfg']) {
					$hascate = $cate->getCatesByCfg($cfg);

					if ($rulecate !== null)
						$rulecate = array_intersect($rulecate, $hascate);
					else
						$rulecate = $hascate;
				}
			}

			if ($rulecate !== null) {
				foreach ($allPart as $k => $v) {
					if (!in_array($v['id'], $rulecate))
						unset($allPart[$k]);
				}
				\view::set('ispwcode', 1);
			}

			//拼装零件树
			$partTree = [];
			foreach ($allPart as $k => $v) {
				if (empty($partTree[$v['parent_id']]))
					$partTree[$v['parent_id']] = [$v['id']];
				else
					$partTree[$v['parent_id']][] = $v['id'];
			}
		}

		\view::set('req', $req);
		\view::set('allPart', $allPart);
		\view::set('style', $style);
		\view::set('partTree', $partTree);
		\view::put('index/select');
	}

	/**
	 * @method 用户确认
	 * @author hongzhang
	 * @copyright 2025-08-21
	 */
	public function userchk()
	{
		$req = \mvc::$req;
		$projectRecommend = new projectRecommend();
		$result = $projectRecommend->setRecommendItemChk($req['ids'],$req);
		$data = ['status' => true, 'data' => $result, 'code' => 0];
		$this->exitToJson($data);
	}

	public function cancelchk()
	{
		$req = \mvc::$req;
		$projectRecommend = new projectRecommend();
		$result = $projectRecommend->cancelchk($req['ids']);
		$data = ['status' => true, 'data' => $result, 'code' => 0];
		$this->exitToJson($data);
	}
}
