using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BLL
{
    public class FileCabinetService
    {
        public static Model.SGGLDB db = Funs.DB;
        /// 
        /// 增加信息
        /// 
        /// 实体
        public static void AddFileCabinet(Model.Project_FileCabinet addFileCabinet)
        {
            Model.Project_FileCabinet newFileCabinet = new Model.Project_FileCabinet
            {
                FileCabinetId = addFileCabinet.FileCabinetId,
                ProjectId = addFileCabinet.ProjectId,
                FileType = addFileCabinet.FileType,
                FileCode = addFileCabinet.FileCode,
                FileContent = addFileCabinet.FileContent,
                FileDate = addFileCabinet.FileDate,
                CreateManId = addFileCabinet.CreateManId,
                FileUrl = addFileCabinet.FileUrl
            };
            db.Project_FileCabinet.InsertOnSubmit(newFileCabinet);
            db.SubmitChanges();
        }
        /// 
        /// 记录数
        /// 
        private static int count
        {
            get;
            set;
        }
        /// 
        /// 删除信息
        /// 
        /// 信息Id
        public static void DeleteFileCabinet(string fileCabinetId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Project_FileCabinet FileCabinet = db.Project_FileCabinet.FirstOrDefault(e => e.FileCabinetId == fileCabinetId);
            if (FileCabinet != null)
            {
                db.Project_FileCabinet.DeleteOnSubmit(FileCabinet);
                db.SubmitChanges();
            }
        }
        /// 
        /// 获取单条记录(根据id)
        /// 
        /// 
        /// 
        public static Model.Project_FileCabinet getInfo(string fileCabinetId)
        {
            return db.Project_FileCabinet.FirstOrDefault(e => e.FileCabinetId == fileCabinetId);
        }
        /// 
        /// 获取重要文件
        /// 
        /// 
        /// 
        public static IList getList(string projectId)
        {
            var fileCabinets = (from x in Funs.DB.Project_FileCabinet
                                where x.ProjectId == projectId
                                select new Model.FileCabinetItem
                                {
                                    FileCabinetId = x.FileCabinetId,
                                    ProjectId = x.ProjectId,
                                    FileCode = x.FileCode,
                                    FileContent = x.FileContent,
                                    FileDate = x.FileDate,
                                    FileUrl = x.FileUrl,
                                    CreateManId = x.CreateManId,
                                    CreateManName = Funs.DB.Sys_User.First(y => y.UserId == x.CreateManId).UserName,
                                }).ToList();
            return fileCabinets;
        }
        /// 
        /// 获取分页列表
        /// 
        /// 
        /// 
        /// 
        public static IEnumerable getListData(string type, string projectId, string unitWorkId, string cNProfessionalCode, int startRowIndex, int maximumRows)
        {
            IQueryable q = getFileCabinetList(type, projectId, unitWorkId, cNProfessionalCode).AsQueryable();
            count = q.Count();
            if (count == 0)
            {
                return null;
            }
            return from x in q.Skip(startRowIndex).Take(maximumRows)
                   orderby x.FileDate descending
                   select x;
        }
        /// 
        /// 修改信息
        /// 
        /// 实体
        public static void UpdateFileCabinet(Model.Project_FileCabinet updateFileCabinet)
        {
            Model.Project_FileCabinet getFileCabinet = db.Project_FileCabinet.FirstOrDefault(e => e.FileCabinetId == updateFileCabinet.FileCabinetId);
            if (getFileCabinet != null)
            {
                getFileCabinet.FileCode = updateFileCabinet.FileCode;
                getFileCabinet.FileContent = updateFileCabinet.FileContent;
                getFileCabinet.FileDate = updateFileCabinet.FileDate;
                getFileCabinet.CreateManId = updateFileCabinet.CreateManId;
                getFileCabinet.FileUrl = updateFileCabinet.FileUrl;
                db.SubmitChanges();
            }
        }
        /// 
        /// 获取列表数
        /// 
        /// 
        public static int getListCount(string type, string projectId, string unitWorkId, string cNProfessionalCode)
        {
            return count;
        }
        public static List getFileCabinetList(string type, string projectId, string mainItemId, string cNProfessionalCode)
        {
            List fileCabinets = new List();
            /// 质量验收记录
            if (type == "1") //Check_SpotCheck
            {
                fileCabinets = (from x in Funs.DB.Check_SpotCheck
                                where x.ProjectId == projectId
                                select new Model.FileCabinetItem
                                {
                                    FileCabinetId = x.SpotCheckCode,
                                    ProjectId = x.ProjectId,
                                    FileCode = x.DocCode,
                                    FileContent = x.DocCode,
                                    FileDate = x.SpotCheckDate,
                                    CreateManId = x.CreateMan,
                                    CreateManName = Funs.DB.Sys_User.First(y => y.UserId == x.CreateMan).UserName,
                                    FileUrl = x.AttachUrl,
                                }).ToList();
            }
            else if (type == "2")
            {
                fileCabinets = (from x in Funs.DB.Check_CheckControl
                                where x.ProjectId == projectId && x.State == BLL.Const.CheckControl_Complete
                                select new Model.FileCabinetItem
                                {
                                    FileCabinetId = x.CheckControlCode,
                                    ProjectId = x.ProjectId,
                                    FileCode = x.DocCode,
                                    FileContent = x.QuestionDef,
                                    FileDate = x.CheckDate,
                                    FileUrl = x.AttachUrl,
                                    CreateManId = x.CheckMan,
                                    CreateManName = Funs.DB.Sys_User.First(e => e.UserId == x.CheckMan).UserName,
                                }).ToList();
            }
            else if (type == "3")
            {
                fileCabinets = (from x in Funs.DB.Check_JointCheck
                                where x.ProjectId == projectId && x.State == BLL.Const.JointCheck_Complete
                                select new Model.FileCabinetItem
                                {
                                    FileCabinetId = x.JointCheckId,
                                    ProjectId = x.ProjectId,
                                    FileCode = x.JointCheckCode,
                                    FileContent = x.CheckName,
                                    FileDate = x.CheckDate,
                                    FileUrl = string.Empty,
                                    CreateManId = x.CheckMan,
                                    CreateManName = Funs.DB.Sys_User.First(y => y.UserId == x.CheckMan).UserName,
                                }).ToList();
            }
            else if (type == "4")
            {
                fileCabinets = (from x in Funs.DB.Check_TechnicalContactList
                                where x.ProjectId == projectId && x.State == Const.TechnicalContactList_Complete
                                select new Model.FileCabinetItem
                                {
                                    FileCabinetId = x.TechnicalContactListId,
                                    ProjectId = x.ProjectId,
                                    FileCode = x.Code,
                                    FileContent = (x.ContactListType == "1" ? "图纸类:" : "非图纸类:") + x.Cause,
                                    FileDate = x.CompileDate,
                                    FileUrl = x.AttachUrl,
                                    CreateManId = x.CompileMan,
                                    CreateManName = Funs.DB.Sys_User.First(y => y.UserId == x.CompileMan).UserName,
                                }).ToList();
            }
            else if (type == "5")
            {
                var designs = from x in Funs.DB.Check_Design
                              where x.ProjectId == projectId && x.State == Const.Design_Complete
                              select x;
                if (mainItemId != Const._Null)
                {
                    designs = from x in designs where x.MainItemId == mainItemId select x;
                }
                if (cNProfessionalCode != Const._Null)
                {
                    designs = from x in designs where x.CNProfessionalCode == cNProfessionalCode select x;
                }
                fileCabinets = (from x in designs
                                select new Model.FileCabinetItem
                                {
                                    FileCabinetId = x.DesignId,
                                    ProjectId = x.ProjectId,
                                    FileCode = x.DesignCode,
                                    FileContent = x.DesignContents,
                                    FileDate = x.DesignDate,
                                    FileUrl = x.AttachUrl,
                                    CreateManId = x.CompileMan,
                                    CreateManName = Funs.DB.Sys_User.First(y => y.UserId == x.CompileMan).UserName,
                                }).ToList();
            }
            else if (type == "6")
            {
                fileCabinets = (from x in Funs.DB.Check_CheckMonth
                                where x.ProjectId == projectId
                                select new Model.FileCabinetItem
                                {
                                    FileCabinetId = x.CheckMonthId,
                                    ProjectId = x.ProjectId,
                                    FileCode = string.Format("{0:yyyy-MM}", x.Months),
                                    FileContent = "发出整改项" + x.ThisRectifyNum.ToString() + ",关闭整改项" + x.ThisOKRectifyNum.ToString() + ";实体验收完成数" + x.ThisSpotCheckNum.ToString() + ";一次检验合格率" + x.OnesOKRate + "。",
                                    FileDate = x.CompileDate,
                                    FileUrl = string.Empty,
                                    CreateManId = x.CompileMan,
                                    CreateManName = Funs.DB.Sys_User.First(y => y.UserId == x.CompileMan).UserName,
                                }).ToList();
            }
            else if (type == "7")
            {
                fileCabinets = (from x in Funs.DB.Solution_CQMSConstructSolution
                                where x.ProjectId == projectId && x.State == Const.CQMSConstructSolution_Complete
                                select new Model.FileCabinetItem
                                {
                                    FileCabinetId = x.ConstructSolutionId,
                                    ProjectId = x.ProjectId,
                                    FileCode = x.Code,
                                    FileContent = x.SolutionName,
                                    FileDate = x.CompileDate,
                                    FileUrl = x.AttachUrl,
                                    CreateManId = x.CompileMan,
                                    CreateManName = Funs.DB.Sys_User.First(y => y.UserId == x.CompileMan).UserName,
                                }).ToList();
            }
            else if (type == "8")
            {
                fileCabinets = (from x in Funs.DB.Unqualified_WorkContact
                                where x.ProjectId == projectId && x.State == Const.WorkContact_Complete
                                select new Model.FileCabinetItem
                                {
                                    FileCabinetId = x.WorkContactId,
                                    ProjectId = x.ProjectId,
                                    FileCode = x.Code,
                                    FileContent = x.Cause,
                                    FileDate = x.CompileDate,
                                    FileUrl = x.AttachUrl,
                                    CreateManId = x.CompileMan,
                                    CreateManName = Funs.DB.Sys_User.First(y => y.UserId == x.CompileMan).UserName,
                                }).ToList();
            }
            else if (type == "-1")
            {
                fileCabinets = (from x in Funs.DB.Project_FileCabinet
                                where x.ProjectId == projectId
                                select new Model.FileCabinetItem
                                {
                                    FileCabinetId = x.FileCabinetId,
                                    ProjectId = x.ProjectId,
                                    FileCode = x.FileCode,
                                    FileContent = x.FileContent,
                                    FileDate = x.FileDate,
                                    FileUrl = x.FileUrl,
                                    CreateManId = x.CreateManId,
                                    CreateManName = Funs.DB.Sys_User.First(y => y.UserId == x.CreateManId).UserName,
                                }).ToList();
            }
            return fileCabinets;
        }
    }
}