using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BLL.CQMS.Comprehensive
{
    public class DesignDetailsApproveService
    {
        /// 
        /// 增加施工方案审批信息
        /// 
        /// 施工方案审批实体
        public static void EditApprove(Model.Comprehensive_DesignDetailsApprove approve)
        {
            var db = Funs.DB;
            Model.Comprehensive_DesignDetailsApprove newApprove = new Model.Comprehensive_DesignDetailsApprove();
            if (string.IsNullOrWhiteSpace(approve.DesignDetailsApproveId))
            {  //新增
                newApprove.DesignDetailsApproveId = SQLHelper.GetNewID(typeof(Model.Comprehensive_DesignDetailsApprove));
                newApprove.DesignDetailsId = approve.DesignDetailsId;
                newApprove.ApproveMan = approve.ApproveMan;
                newApprove.ApproveDate = approve.ApproveDate;
                newApprove.ApproveIdea = approve.ApproveIdea;
                newApprove.IsAgree = approve.IsAgree;
                newApprove.ApproveType = approve.ApproveType;
                newApprove.Edition = approve.Edition;
                db.Comprehensive_DesignDetailsApprove.InsertOnSubmit(newApprove);
                db.SubmitChanges();
            }
            else
            {   //修改
                Model.Comprehensive_DesignDetailsApprove editApprove = db.Comprehensive_DesignDetailsApprove.FirstOrDefault(e => e.DesignDetailsApproveId == approve.DesignDetailsApproveId);
                if (editApprove != null)
                {
                    editApprove.DesignDetailsId = approve.DesignDetailsId;
                    editApprove.ApproveMan = approve.ApproveMan;
                    editApprove.ApproveDate = approve.ApproveDate;
                    editApprove.ApproveIdea = approve.ApproveIdea;
                    editApprove.IsAgree = approve.IsAgree;
                    editApprove.ApproveType = approve.ApproveType;
                    editApprove.Edition = approve.Edition;
                    db.SubmitChanges();
                }
            }
        }
        public static Model.Comprehensive_DesignDetailsApprove GetCurrentApprove(string DesignDetailsId)
        {
            var q = from x in Funs.DB.Comprehensive_DesignDetailsApprove
                    where x.DesignDetailsId == DesignDetailsId && x.ApproveType != "S" && x.ApproveDate == null 
                    select x;
            return q.FirstOrDefault();
        }
        public static Model.Comprehensive_DesignDetailsApprove GetAuditApprove(string DesignDetailsId,string approveType)
        {
            var q = from x in Funs.DB.Comprehensive_DesignDetailsApprove
                    where x.DesignDetailsId == DesignDetailsId && x.ApproveType != "S" && x.ApproveDate == null && x.ApproveType == approveType
                    select x;
            return q.FirstOrDefault();
        }
        public static Model.Comprehensive_DesignDetailsApprove GetState(string DesignDetailsId)
        {
            var q = from x in Funs.DB.Comprehensive_DesignDetailsApprove
                    where x.DesignDetailsId == DesignDetailsId && x.ApproveType != "S"
                    orderby x.ApproveDate descending
                    select x;
            var res = q.ToList();
            if (res != null && res.Count > 0)
            {
                var q1 = res.Where(x => x.ApproveDate == null);
                var res1 = q1.FirstOrDefault();
                if (res1 != null)
                {
                    return res1;
                }
                else
                {
                    var q2 = res.Where(x => x.ApproveDate != null);
                    var res2 = q2.FirstOrDefault();
                    if (res2 != null)
                    {
                        return res2;
                    }
                    else
                    {
                        return null;
                    }
                }
            }
            else
            {
                return null;
            }
        }
        /// 
        /// 获取当前用户的审核信息
        /// 
        /// 
        /// 
        /// 
        public static Model.Comprehensive_DesignDetailsApprove GetApproveByApproveMan(string DesignDetailsId, string approveMan)
        { 
            return Funs.DB.Comprehensive_DesignDetailsApprove.FirstOrDefault(x => x.DesignDetailsId == DesignDetailsId && x.ApproveMan == approveMan &&  x.ApproveDate==null );
        }
        /// 
        /// 根据id 和当前用户获取审核列表
        /// 
        /// 
        /// 
        /// 
        public static List GetApproveByApproveManList(string DesignDetailsId, string approveMan)
        {
            return Funs.DB.Comprehensive_DesignDetailsApprove.Where(x => x.DesignDetailsId == DesignDetailsId && x.ApproveMan == approveMan).ToList();
        }
        /// 
        /// 根据设备材料ID查询 审核记录
        /// 
        /// 
        /// 
        public static DataTable GetProjectQualityList(string DesignDetailsId)
        {
            string strSql = @"select i.* ,Sys_User.UserName  from Comprehensive_DesignDetailsApprove as i  left join  Sys_User  on( i.ApproveMan = Sys_User.UserId)";
            List listStr = new List();
            if (!string.IsNullOrEmpty(DesignDetailsId))
            {
                strSql += "where i.DesignDetailsId= @DesignDetailsId ";
                listStr.Add(new SqlParameter("@DesignDetailsId", DesignDetailsId));
            }
            strSql += " order by i.ApproveDate ";
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            return tb;
        }
    }
}