using System;
using System.Collections.Generic;
using IRaCIS.Application.Interfaces;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace IRaCIS.Api.Controllers
{
    [Route("cro")]
    [ApiController, Authorize, ApiExplorerSettings(GroupName = "Institution")]
    public class CROController : ControllerBase
    {
        private readonly ICroService _croService;

        public CROController(ICroService croCompanyService)
        {
            _croService = croCompanyService;
        }

        /// <summary> 分页获取CRO列表 </summary>
        
        [HttpPost, Route("getCROPageList")]
        public IResponseOutput<PageOutput<CROCompanyDTO>> GetCROCompanyList(CROCompanyQueryDTO croCompanySearchModel)
        {
            return ResponseOutput.Ok(_croService.GetCroList(croCompanySearchModel));
        }

        /// <summary> 获取所有CRO列表,可根据名称搜索[AUTH] </summary>
        
       
        [HttpPost, Route("getAllCROList")]
        public IResponseOutput<IEnumerable<CroSelectDTO>> GetCROCompanySearchList()
        {
            return ResponseOutput.Ok(_croService.GetCroSearchList());
         
        }

        /// <summary> 添加CRO[AUTH] </summary>
        
        [HttpPost, Route("addOrUpdateCro")]
        public IResponseOutput AddCROCompany(CROCompanyDTO addCroCompanyViewModel)
        {
            var userId = User.FindFirst("id").Value;
            return _croService.AddOrUpdateCro(addCroCompanyViewModel, Guid.Parse(userId));
        }
        /// <summary> 删除CRO </summary>
        
        [HttpDelete, Route("deleteCROCompany/{croCompanyId:guid}")]
        public IResponseOutput DeleteCROCompany(Guid croCompanyId)
        {
            return _croService.DeleteCro(croCompanyId);
        }
    }
}