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 InspectionMachineApproveService
    {
        /// 
        /// 增加施工方案审批信息
        /// 
        /// 施工方案审批实体
        public static void EditApprove(Model.Comprehensive_InspectionMachineApprove approve)
        {
            var db = Funs.DB;
            Model.Comprehensive_InspectionMachineApprove newApprove = new Model.Comprehensive_InspectionMachineApprove();
            if (string.IsNullOrWhiteSpace(approve.InspectionMachineApproveId))
            {  //新增
                newApprove.InspectionMachineApproveId = SQLHelper.GetNewID(typeof(Model.Comprehensive_InspectionMachineApprove));
                newApprove.InspectionMachineId = approve.InspectionMachineId;
                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_InspectionMachineApprove.InsertOnSubmit(newApprove);
                db.SubmitChanges();
            }
            else
            {   //修改
                Model.Comprehensive_InspectionMachineApprove editApprove = db.Comprehensive_InspectionMachineApprove.FirstOrDefault(e => e.InspectionMachineApproveId == approve.InspectionMachineApproveId);
                if (editApprove != null)
                {
                    editApprove.InspectionMachineId = approve.InspectionMachineId;
                    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_InspectionMachineApprove GetCurrentApprove(string InspectionMachineId)
        {
            var q = from x in Funs.DB.Comprehensive_InspectionMachineApprove
                    where x.InspectionMachineId == InspectionMachineId && x.ApproveType != "S" && x.ApproveDate == null 
                    select x;
            return q.FirstOrDefault();
        }
        public static Model.Comprehensive_InspectionMachineApprove GetState(string InspectionMachineId)
        {
            var q = from x in Funs.DB.Comprehensive_InspectionMachineApprove
                    where x.InspectionMachineId == InspectionMachineId && 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_InspectionMachineApprove GetApproveByApproveMan(string InspectionMachineId, string approveMan)
        { 
            return Funs.DB.Comprehensive_InspectionMachineApprove.FirstOrDefault(x => x.InspectionMachineId == InspectionMachineId && x.ApproveMan == approveMan &&  x.ApproveDate==null );
        }
        /// 
        /// 根据id 和当前用户获取审核列表
        /// 
        /// 
        /// 
        /// 
        public static List GetApproveByApproveManList(string InspectionMachineId, string approveMan)
        {
            return Funs.DB.Comprehensive_InspectionMachineApprove.Where(x => x.InspectionMachineId == InspectionMachineId && x.ApproveMan == approveMan).ToList();
        }
        /// 
        /// 根据设备材料ID查询 审核记录
        /// 
        /// 
        /// 
        public static DataTable GetProjectQualityList(string InspectionMachineId)
        {
            string strSql = @"select i.* ,Sys_User.UserName  from Comprehensive_InspectionMachineApprove as i  left join  Sys_User  on( i.ApproveMan = Sys_User.UserId)";
            List listStr = new List();
            if (!string.IsNullOrEmpty(InspectionMachineId))
            {
                strSql += "where i.InspectionMachineId= @InspectionMachineId ";
                listStr.Add(new SqlParameter("@InspectionMachineId", InspectionMachineId));
            }
            strSql += " order by i.ApproveDate ";
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            return tb;
        }
    }
}