using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BLL
{
    public class DocManageApproveService
    {
        public static Model.SGGLDB db = Funs.DB;
        /// 
        /// 获取工程联络单模板列表
        /// 
        /// 
        /// 
        /// 
        public static DataTable GetListData(string docId)
        {
            var db = Funs.DB;
            var q = (from x in db.Doc_DocManageApprove
                     where x.DocId == docId && x.ApproveDate != null && x.Type == null
                     orderby x.ApproveDate
                     select new
                     {
                         x.DocManageApproveId,
                         x.DocId,
                         ApproveMan = (from y in db.Sys_User where y.UserId == x.ApproveMan select y.UserName).First(),
                         ApproveDate = (string.Format("{0:d}", x.ApproveDate)),
                         RoleName = (from m in db.Sys_Role join n in db.Sys_User on m.RoleId equals n.RoleId where n.UserId == x.ApproveMan select m.RoleName).First(),
                         x.IsAgree,
                         x.ApproveIdea,
                         x.Type
                     });
            return Funs.LINQToDataTable(q);
        }
        /// 
        /// 根据文档审批编号获取一个文档审批信息
        /// 
        /// 文档编号
        /// 一个文档审批实体
        public static Model.Doc_DocManageApprove GetDocManageApproveByApproveId(string approveId)
        {
            return db.Doc_DocManageApprove.FirstOrDefault(x => x.DocManageApproveId == approveId);
        }
        /// 
        /// 根据文档编号获取一个文档审批信息
        /// 
        /// 文档编号
        /// 一个文档审批实体
        public static Model.Doc_DocManageApprove GetDocManageApproveByDocId(string DocId)
        {
            return db.Doc_DocManageApprove.FirstOrDefault(x => x.DocId == DocId && x.ApproveDate == null && x.Type == null);
        }
        /// 
        /// 根据文档编号获取一个文档通知信息
        /// 
        /// 
        /// 
        public static Model.Doc_DocManageApprove GetNoticeDocManageApproveByDocId(string DocId, string userId)
        {
            return db.Doc_DocManageApprove.FirstOrDefault(x => x.DocId == DocId && x.ApproveDate == null && x.Type == "s" && x.ApproveMan == userId);
        }
        /// 
        /// 增加文档审批信息
        /// 
        /// 文档审批实体
        public static string AddDocManageApprove(Model.Doc_DocManageApprove approve)
        {
            using (var db = new Model.SGGLDB(Funs.ConnString))
            {
                string newKeyID = SQLHelper.GetNewID(typeof(Model.Doc_DocManageApprove));
                Model.Doc_DocManageApprove newApprove = new Model.Doc_DocManageApprove();
                newApprove.DocManageApproveId = newKeyID;
                newApprove.DocId = approve.DocId;
                newApprove.ApproveMan = approve.ApproveMan;
                newApprove.ApproveDate = approve.ApproveDate;
                newApprove.ApproveIdea = approve.ApproveIdea;
                newApprove.IsAgree = approve.IsAgree;
                newApprove.Type = approve.Type;
                db.Doc_DocManageApprove.InsertOnSubmit(newApprove);
                db.SubmitChanges();
                return newKeyID;
            }
        }
        /// 
        /// 修改文档审批信息
        /// 
        /// 文档审批实体
        public static void UpdateDocManageApprove(Model.Doc_DocManageApprove approve)
        {
            using (var db = new Model.SGGLDB(Funs.ConnString))
            {
                Model.Doc_DocManageApprove newApprove = db.Doc_DocManageApprove.First(e => e.DocManageApproveId == approve.DocManageApproveId && e.ApproveDate == null);
                newApprove.DocId = approve.DocId;
                newApprove.ApproveMan = approve.ApproveMan;
                newApprove.ApproveDate = approve.ApproveDate;
                newApprove.ApproveIdea = approve.ApproveIdea;
                newApprove.IsAgree = approve.IsAgree;
                newApprove.Type = approve.Type;
                db.SubmitChanges();
            }
        }
        /// 
        /// 根据文档编号删除对应的所有文档审批信息
        /// 
        /// 文档编号
        public static void DeleteDocManageApprovesByDocId(string DocId)
        {
            using (var db = new Model.SGGLDB(Funs.ConnString))
            {
                var q = (from x in db.Doc_DocManageApprove where x.DocId == DocId select x).ToList();
                db.Doc_DocManageApprove.DeleteAllOnSubmit(q);
                db.SubmitChanges();
            }
        }
    }
}