using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BLL
{
    /// 
    /// 管理规定发布
    /// 
    public static class ActionPlan_ManagerRuleService
    {
        /// 
        /// 根据主键获取管理规定
        /// 
        /// 
        /// 
        public static Model.ActionPlan_ManagerRule GetManagerRuleById(string managerRuleId)
        {
            return Funs.DB.ActionPlan_ManagerRule.FirstOrDefault(e => e.ManagerRuleId == managerRuleId);
        }
        /// 
        /// 根据名称获取已发布管理规定的集合
        /// 
        /// 
        /// 
        public static List GetIsIssueManagerRulesByName(string managerRuleName)
        {
            return (from x in Funs.DB.ActionPlan_ManagerRule where x.ManageRuleName == managerRuleName && x.IsIssue == true orderby x.IssueDate select x).ToList();
        }
        /// 
        /// 根据日期获取管理规定集合
        /// 
        /// 开始时间
        /// 结束时间
        /// 项目号
        /// 管理规定集合
        public static List GetManagerRuleListsByDate(DateTime startTime, DateTime endTime, string projectId)
        {
            return (from x in Funs.DB.ActionPlan_ManagerRule where x.CompileDate >= startTime && x.CompileDate <= endTime && x.ProjectId == projectId orderby x.CompileDate select x).ToList();
        }
        /// 
        /// 根据整理人获取管理规定
        /// 
        /// 
        /// 
        public static List GetManageRuleByCompileMan(string compileMan)
        {
            return (from x in Funs.DB.ActionPlan_ManagerRule where x.CompileMan == compileMan select x).ToList();
        }
        /// 
        /// 添加管理规定
        /// 
        /// 
        public static void AddManageRule(Model.ActionPlan_ManagerRule manageRule)
        {            
            Model.ActionPlan_ManagerRule newManageRule = new Model.ActionPlan_ManagerRule
            {
                ManagerRuleId = manageRule.ManagerRuleId,
                ManageRuleCode = manageRule.ManageRuleCode,
                OldManageRuleId = manageRule.OldManageRuleId,
                ProjectId = manageRule.ProjectId,
                ManageRuleName = manageRule.ManageRuleName,
                ManageRuleTypeId = manageRule.ManageRuleTypeId,
                VersionNo = manageRule.VersionNo,
                AttachUrl = manageRule.AttachUrl,
                Remark = manageRule.Remark,
                CompileMan = manageRule.CompileMan,
                CompileDate = manageRule.CompileDate,
                Flag = manageRule.Flag,
                State = manageRule.State,
                SeeFile = manageRule.SeeFile
            };
            Funs.DB.ActionPlan_ManagerRule.InsertOnSubmit(newManageRule);
            Funs.DB.SubmitChanges();
            ////增加一条编码记录
            BLL.CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(BLL.Const.ActionPlan_ManagerRuleMenuId, manageRule.ProjectId, null, manageRule.ManagerRuleId, manageRule.CompileDate);
        }
        /// 
        /// 修改管理规定
        /// 
        /// 
        public static void UpdateManageRule(Model.ActionPlan_ManagerRule manageRule)
        {
            Model.ActionPlan_ManagerRule newManageRule = Funs.DB.ActionPlan_ManagerRule.FirstOrDefault(e => e.ManagerRuleId == manageRule.ManagerRuleId);
            if (newManageRule != null)
            {
                newManageRule.ManageRuleName = manageRule.ManageRuleName;
                newManageRule.ManageRuleTypeId = manageRule.ManageRuleTypeId;
                newManageRule.VersionNo = manageRule.VersionNo;
                newManageRule.AttachUrl = manageRule.AttachUrl;
                newManageRule.Remark = manageRule.Remark;
                newManageRule.CompileMan = manageRule.CompileMan;
                newManageRule.CompileDate = manageRule.CompileDate;
                newManageRule.IsIssue = manageRule.IsIssue;
                newManageRule.IssueDate = manageRule.IssueDate;
                newManageRule.Flag = manageRule.Flag;
                newManageRule.State = manageRule.State;
                newManageRule.SeeFile = manageRule.SeeFile;
                Funs.DB.SubmitChanges();
            }
        }
        /// 
        /// 根据主键删除管理规定
        /// 
        /// 
        public static void DeleteManageRuleById(string managerRuleId)
        {
            Model.ActionPlan_ManagerRule manageRule = Funs.DB.ActionPlan_ManagerRule.FirstOrDefault(e => e.ManagerRuleId == managerRuleId);
            if (manageRule != null)
            {
                if (!string.IsNullOrEmpty(manageRule.AttachUrl))
                {
                    BLL.UploadFileService.DeleteFile(Funs.RootPath, manageRule.AttachUrl);
                }
                ///删除编码表记录
                CodeRecordsService.DeleteCodeRecordsByDataId(managerRuleId);
                ////删除附件表
                CommonService.DeleteAttachFileById(manageRule.ManagerRuleId);                
                ////删除审核流程表
                CommonService.DeleteFlowOperateByID(manageRule.ManagerRuleId);
                Funs.DB.ActionPlan_ManagerRule.DeleteOnSubmit(manageRule);
                Funs.DB.SubmitChanges();
            }           
        }
    }
}