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