using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace BLL
{

    /// <summary>
    /// 资料发放登记
    /// </summary>
    public static class DataDistributionService
    {
        public static Model.SGGLDB db = Funs.DB;

        /// <summary>
        /// 记录数
        /// </summary>
        private static int count
        {
            get;
            set;
        }
        /// <summary>
        /// 获取分页列表
        /// </summary>
        /// <param name="projectId"></param>
        /// <param name="unitId"></param>
        /// <param name="inspectionName"></param>
        /// <param name="date1"></param>
        /// <param name="date2"></param>
        /// <param name="startRowIndex"></param>
        /// <param name="maximumRows"></param>
        /// <returns></returns>
        public static IEnumerable GetListData(string projectId, string startDate, string endDate, string fileCode, string fileName, string cNProfessionalId, int startRowIndex, int maximumRows)
        {
            IQueryable<Model.Comprehensive_DataDistribution> q = from x in db.Comprehensive_DataDistribution
                                                                 where x.ProjectId == projectId
                                                                 orderby x.SendDate descending
                                                                 select x;
            if (!string.IsNullOrEmpty(startDate) && !string.IsNullOrEmpty(endDate) && Convert.ToDateTime(startDate) <= Convert.ToDateTime(endDate))
            {
                q = q.Where(e => e.SendDate >= Convert.ToDateTime(startDate) && e.SendDate <= Convert.ToDateTime(endDate));
            }
            if (!string.IsNullOrEmpty(fileCode))
            {
                q = q.Where(e => e.FileCode.Contains(fileCode));
            }
            if (!string.IsNullOrEmpty(fileName))
            {
                q = q.Where(e => e.FileName.Contains(fileName));
            }
            if (cNProfessionalId != "0")
            {
                q = q.Where(e => e.CNProfessionalId == cNProfessionalId);
            }
            count = q.Count();
            if (count == 0)
            {
                return new object[] { };
            }
            return from x in q.Skip(startRowIndex).Take(maximumRows)
                   select new
                   {
                       x.DataDistributionId,
                       x.ProjectId,
                       x.SendDate,
                       x.FileCode,
                       x.FileName,
                       x.CNProfessionalId,
                       CNProfessional = (from y in db.Base_CNProfessional where y.CNProfessionalId == x.CNProfessionalId select y.ProfessionalName).FirstOrDefault(),
                       x.SendMan,
                       ReceivingUnit = BLL.UnitService.getUnitNamesUnitIds(x.ReceivingUnit),
                       x.ReceivingMan,
                       FileType = (x.FileType == "1" ? "纸质" : "电子"),
                       x.CopiesCount,
                       IsReply = (x.IsReply == true ? "是" : "否"),
                       x.ReplyCode,
                       x.ReplyDate,
                       x.Remark,
                       x.AttachUrl
                   };
        }

        /// <summar
        /// 获取分页列表数
        /// </summary>
        /// <param name="projectId"></param>
        /// <returns></returns>
        public static int GetListCount(string projectId, string startDate, string endDate, string fileCode, string fileName, string cNProfessionalId)
        {
            return count;
        }

        /// <summary>
        /// 根据主键获取资料发放登记
        /// </summary>
        /// <param name="specialDataDistributionId"></param>
        /// <returns></returns>
        public static Model.Comprehensive_DataDistribution GetDataDistributionById(string DataDistributionId)
        {
            return Funs.DB.Comprehensive_DataDistribution.FirstOrDefault(e => e.DataDistributionId == DataDistributionId);
        }

        /// <summary>
        /// 添加资料发放登记
        /// </summary>
        /// <param name="DataDistribution"></param>
        public static void AddDataDistribution(Model.Comprehensive_DataDistribution DataDistribution)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Comprehensive_DataDistribution newDataDistribution = new Model.Comprehensive_DataDistribution();
            newDataDistribution.DataDistributionId = DataDistribution.DataDistributionId;
            newDataDistribution.ProjectId = DataDistribution.ProjectId;
            newDataDistribution.SendDate = DataDistribution.SendDate;
            newDataDistribution.FileCode = DataDistribution.FileCode;
            newDataDistribution.FileName = DataDistribution.FileName;
            newDataDistribution.CNProfessionalId = DataDistribution.CNProfessionalId;
            newDataDistribution.SendMan = DataDistribution.SendMan;
            newDataDistribution.ReceivingUnit = DataDistribution.ReceivingUnit;
            newDataDistribution.ReceivingMan = DataDistribution.ReceivingMan;
            newDataDistribution.FileType = DataDistribution.FileType;
            newDataDistribution.CopiesCount = DataDistribution.CopiesCount;
            newDataDistribution.IsReply = DataDistribution.IsReply;
            newDataDistribution.ReplyCode = DataDistribution.ReplyCode;
            newDataDistribution.ReplyDate = DataDistribution.ReplyDate;
            newDataDistribution.Remark = DataDistribution.Remark;
            newDataDistribution.AttachUrl = DataDistribution.AttachUrl;
            newDataDistribution.CompileMan = DataDistribution.CompileMan;
            newDataDistribution.CompileDate = DataDistribution.CompileDate;
            newDataDistribution.Status = DataDistribution.Status;
            db.Comprehensive_DataDistribution.InsertOnSubmit(newDataDistribution);
            db.SubmitChanges();
        }

        /// <summary>
        /// 修改资料发放登记
        /// </summary>
        /// <param name="DataDistribution"></param>
        public static void UpdateDataDistribution(Model.Comprehensive_DataDistribution DataDistribution)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Comprehensive_DataDistribution newDataDistribution = db.Comprehensive_DataDistribution.FirstOrDefault(e => e.DataDistributionId == DataDistribution.DataDistributionId);
            if (newDataDistribution != null)
            {
                newDataDistribution.ProjectId = DataDistribution.ProjectId;
                newDataDistribution.SendDate = DataDistribution.SendDate;
                newDataDistribution.FileCode = DataDistribution.FileCode;
                newDataDistribution.FileName = DataDistribution.FileName;
                newDataDistribution.CNProfessionalId = DataDistribution.CNProfessionalId;
                newDataDistribution.SendMan = DataDistribution.SendMan;
                newDataDistribution.ReceivingUnit = DataDistribution.ReceivingUnit;
                newDataDistribution.ReceivingMan = DataDistribution.ReceivingMan;
                newDataDistribution.FileType = DataDistribution.FileType;
                newDataDistribution.CopiesCount = DataDistribution.CopiesCount;
                newDataDistribution.IsReply = DataDistribution.IsReply;
                newDataDistribution.ReplyCode = DataDistribution.ReplyCode;
                newDataDistribution.ReplyDate = DataDistribution.ReplyDate;
                newDataDistribution.Remark = DataDistribution.Remark;
                newDataDistribution.AttachUrl = DataDistribution.AttachUrl;
                newDataDistribution.Status = DataDistribution.Status;
                db.SubmitChanges();
            }
        }

        /// <summary>
        /// 根据主键删除资料发放登记
        /// </summary>
        /// <param name="specialDataDistributionId"></param>
        public static void DeleteDataDistribution(string specialDataDistributionId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Comprehensive_DataDistribution DataDistribution = db.Comprehensive_DataDistribution.FirstOrDefault(e => e.DataDistributionId == specialDataDistributionId);
            if (DataDistribution != null)
            {
                if (!string.IsNullOrEmpty(DataDistribution.AttachUrl))
                {
                    UploadAttachmentService.DeleteFile(Funs.RootPath, DataDistribution.AttachUrl);
                }
                db.Comprehensive_DataDistribution.DeleteOnSubmit(DataDistribution);
                db.SubmitChanges();
            }
        }
    }
}