using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Ropin.Inspection.Api.Common;
using Ropin.Inspection.Model.ViewModel.SYS;
using Ropin.Inspection.Service.SYS.Interface;
using System.Collections.Generic;
using System.Threading.Tasks;
using System;
using Ropin.Inspection.Model.SearchModel.SYS;

namespace Ropin.Inspection.Api.Controllers.SYS
{

    public class LicenseLargeScreenTemplateController : BaseController
    {
        private readonly ILicenseLargeScreenTemplateService _service;
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="service"></param>
        public LicenseLargeScreenTemplateController(ILicenseLargeScreenTemplateService service)
        {
            _service = service;
        }
        /// <summary>
        /// 创建许可证大屏模版关联【一对多添加,先删在加】
        /// </summary>
        /// <returns></returns>
        [HttpPost("CreateAsync")]
        public async Task<ApiResult> CreateAsync(AddLicenseLargeScreenTemplateModel viewModel)
        {
            if (viewModel == null || string.IsNullOrEmpty(viewModel.C_LicenseCode) || null == viewModel.LargeScreenTemplateList || viewModel.LargeScreenTemplateList.Count == 0)
            {
                return new ApiResult(ReturnCode.GeneralError);
            }
            try
            {
                await _service.CreateAsync(viewModel);
                return new ApiResult(ReturnCode.Success, "添加成功!");
            }
            catch (Exception ex)
            {
                return new ApiResult(ReturnCode.GeneralError, ex.Message);
            }
        }
        /// <summary>
        /// 创建许可证大屏模版关联【一对一添加】
        /// </summary>
        /// <returns></returns>
        [HttpPost("CreateOneAsync")]
        public async Task<ApiResult> CreateOneAsync(LicenseLargeScreenTemplateModel viewModel)
        {
            if (viewModel == null || string.IsNullOrEmpty(viewModel.C_LargeScreenTemplateCode) || string.IsNullOrEmpty(viewModel.C_LicenseCode))
            {
                return new ApiResult(ReturnCode.GeneralError);
            }
            try
            {
                await _service.CreateOneAsync(viewModel);
                return new ApiResult(ReturnCode.Success, "添加成功!");
            }
            catch (Exception ex)
            {
                return new ApiResult(ReturnCode.GeneralError, ex.Message);
            }
        }

        /// <summary>
        /// 删除许可证大屏模版关联,根据许可证编号和大屏模板ID
        /// </summary>
        /// <returns></returns>
        [HttpPost("DeleteLicenseLargeScreenTemplateAsync")]
        public async Task<ApiResult> DeleteLicenseLargeScreenTemplateAsync(LicenseLargeScreenTemplateSearch viewModel)
        {
            if (viewModel == null || string.IsNullOrEmpty(viewModel.C_LargeScreenTemplateCode) || string.IsNullOrEmpty(viewModel.C_LicenseCode))
            {
                return new ApiResult(ReturnCode.GeneralError);
            }
            try
            {
                await _service.DeleteLicenseLargeScreenTemplateAsync(viewModel.C_LicenseCode, viewModel.C_LargeScreenTemplateCode);
                return new ApiResult(ReturnCode.Success, "删除成功!");
            }
            catch (Exception ex)
            {
                return new ApiResult(ReturnCode.GeneralError, ex.Message);
            }
        }
        /// <summary>
        /// 通过许可证编号获取许可证大屏模版关联列表
        /// </summary>
        /// <param name="licenseCode"></param>
        /// <returns></returns>
        [HttpGet("GetLicenseLargeScreenTemplateListAsync/{licenseCode}")]
        public async Task<ApiResult> GetLicenseLargeScreenTemplateListAsync(string licenseCode)
        {
            if (string.IsNullOrEmpty(licenseCode))
            {
                return new ApiResult(ReturnCode.GeneralError);
            }
            try
            {
                var list = await _service.GetLicenseLargeScreenTemplateListAsync(licenseCode);
                return new ApiResult<IEnumerable<LicenseLargeScreenTemplateModel>>(list);
            }
            catch (Exception ex)
            {
                return new ApiResult(ReturnCode.GeneralError, ex.Message);
            }
        }
    }
}