using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums.PF;
using APT.BaseData.Domain.IServices;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.TL;
using APT.MS.Domain.Enums;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;

namespace APT.SC.WebApi.Controllers.Api.SC
{
    [Route("api/TL/TLProjectHight")]
    public class TLProjectHightController : AuthorizeApiController<T_TL_PROJECT_HIGHT>
    {
        IFMFlowPermitService MFlowPermitService { get; set; }
        IFMNotificationTaskService NotificationTaskService { get; set; }
        public TLProjectHightController(IFMFlowPermitService mFlowPermitService, IFMNotificationTaskService notificationTaskService)
        {
            MFlowPermitService = mFlowPermitService;
            NotificationTaskService = notificationTaskService;
        }

        /// <summary>
        /// 附件上传
        /// 设计文件专家评审意见 
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost, Route("FullUpdate")]
        public JsonActionResult<bool> FullUpdate([FromBody] T_TL_PROJECT_HIGHT entity)
        {
            return SafeExecute<bool>(() =>
            {
                var files = entity.Nav_Files;//附件
                entity.Nav_Files = null;

                if (entity.USER_ID == Guid.Empty)
                {
                    entity.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
                    entity.DEPARTMENT_ID = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID;

                }
                if (entity.USER_ID != APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value)
                {
                    throw new Exception("只能操作自己提交的记录！");
                }

                if (entity.STATUS != PFStandardStatus.Draft)
                {
                    if (files == null || !files.Any())
                    {
                        throw new Exception("请上传施工记录！");
                    }
                    if (!entity.RESULT.HasValue)
                    {
                        throw new Exception("请选择施工是否满足规程及安全、健康要求！");
                    }
                    if (entity.RESULT.Value == BaseData.Domain.Enums.FMTureOrFalse.否 && string.IsNullOrEmpty(entity.RESULT_REASON))
                    {
                        throw new Exception("请填写不合格描述！");
                    }
                }
                entity.Nav_Tailing = null;
                this.UnifiedCommit(() =>
                {
                    if (entity != null)
                        UpdateEntityNoCommit(entity);
                    if (files != null && files.Any())//附件
                        BantchSaveEntityNoCommit(files);
                });
                return true;
            });
        }



    }
}