<?php

namespace app\admin\logic;


use app\common\model\ActivityZone;
use app\common\logic\BaseLogic;
use support\exception\BusinessException;
use think\facade\Db;


/**
 * ActivityZone逻辑
 * Class ActivityZoneLogic
 * @package app\admin\logic
 */
class ActivityZoneLogic extends BaseLogic
{


    /**
     * @notes 添加
     * @param array $params
     * @return bool
     * @author admin
     * @date 2024/12/20 10:52
     */
    public static function add(array $params): bool
    {
        Db::startTrans();
        try {
            $insert = [];
            $time = time();
            foreach ($params['product_ids'] as $product_id) {
                $insert[] = [
                    'form_id' => $params['form_id'],
                    'product_id' => $product_id,
                    'create_time' => $time,
                    'update_time' => $time,
                ];
            }
            ActivityZone::insertAll($insert);

            Db::commit();
            return true;
        } catch (\Throwable $e) {
            Db::rollback();
            throw new BusinessException($e->getMessage());
        }
    }


    /**
     * @notes 编辑
     * @param array $params
     * @return bool
     * @author admin
     * @date 2024/12/20 10:52
     */
    public static function edit(array $params): bool
    {
        Db::startTrans();
        try {
            ActivityZone::where('id', $params['id'])->update([
                'form_id' => $params['form_id'],
                'product_id' => $params['product_id'],
            ]);

            Db::commit();
            return true;
        } catch (\Throwable $e) {
            Db::rollback();
            throw new BusinessException($e->getMessage());
        }
    }


    /**
     * @notes 删除
     * @param array $params
     * @return bool
     * @author admin
     * @date 2024/12/20 10:52
     */
    public static function delete(array $params): bool
    {
        return ActivityZone::destroy($params['id']);
    }


    /**
     * @notes 获取详情
     * @param $params
     * @return array
     * @author admin
     * @date 2024/12/20 10:52
     */
    public static function detail($params): array
    {
        return ActivityZone::findOrEmpty($params['id'])->toArray();
    }

}