<?php

namespace app\admin\controller;

use app\admin\attr\Permission;
use app\common\util\Result;
use think\annotation\route\Get;
use think\annotation\route\Group;
use think\annotation\route\Post;

#[Permission('project')]
#[Group('project')]
class Project extends BaseAuthorized
{
    /*
     * 基础接口 
     */
    #[Permission('read')]
    public function page()
    {
        $res = $this->ProjectService()->page();
        return Result::rest($res);
    }

    public function create()
    {
        $res = $this->ProjectService()->create();
        return Result::rest($res);
    }

    public function update()
    {
        $res = $this->ProjectService()->update();
        return Result::rest($res);
    }

    public function delete()
    {
        $res = $this->ProjectService()->delete();
        return Result::rest($res);
    }

    /*
    * 状态相关接口
    */
    #[Get('status/list')]
    #[Permission(ignore: true)]
    public function listStatus()
    {
        $res = $this->ProjectStatusService()->list();
        return Result::rest($res);
    }

    #[Post('status/create')]
    #[Permission('status.create')]
    public function createStatus()
    {
        $res = $this->ProjectStatusService()->create();
        return Result::rest($res);
    }

    #[Post('status/update')]
    #[Permission('status.update')]
    public function updateStatus()
    {
        $res = $this->ProjectStatusService()->update();
        return Result::rest($res);
    }

    /*
    * 进度相关接口
    */

    #[Post('schedule/create')]
    #[Permission('schedule.create')]
    public function createSchedule()
    {
        $res = $this->ProjectScheduleService()->create();
        return Result::rest($res);
    }

    #[Post('schedule/update')]
    #[Permission('schedule.update')]
    public function updateSchedule()
    {
        $res = $this->ProjectScheduleService()->update();
        return Result::rest($res);
    }

    #[Post('schedule/delete')]
    #[Permission('schedule.delete')]
    public function deleteSchedule()
    {
        $res = $this->ProjectScheduleService()->delete();
        return Result::rest($res);
    }


    /*
     * 合同相关接口
     */
    #[Post('contract/page')]
    #[Permission('contract.read')]
    public function pageContranct()
    {
        $res = $this->ContractService()->page();
        return Result::rest($res);        
    }

    #[Post('contract/create')]
    #[Permission('contract.read')]
    public function createContract()
    {
        $res = $this->ContractService()->create();
        return Result::rest($res);
    }

    #[Post('contract/update')]
    #[Permission('contract.update')]
    public function updateContract()
    {
        $res = $this->ContractService()->update();
        return Result::rest($res);
    }

    #[Post('contract/delete')]
    #[Permission('contract.delete')]
    public function deleteContract()
    {
        $res = $this->ContractService()->delete();
        return Result::rest($res);
    }

}