⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emailtemplateaccessor.cs.svn-base

📁 MIED是用于个人帐务管理的小型软件
💻 SVN-BASE
字号:
using System.Collections;
using System.Data.Common;
using DatabaseUtil;
using Mied.BusinessObject;
using Mied.BusinessObject.Emails;
using Mied.BusinessObject.Preferences;
using Mied.DAL.TableSchema;
using Mied.DAL.Internal;

namespace Mied.DAL.Accesses
{
    public class EmailTemplateAccessor : AccessorSelect
    {
        public EmailTemplateAccessor(MiedDatabase database)
            : base(database, EmailTemplateSchema.TableName)
        {
        }

        public EmailTemplateList SelectTemplateList(EmailTemplateType type)
        {
            return (EmailTemplateList)this.SelectList(EmailTemplateSchema.FieldType, (int)type);
        }

        public void Initialize()
        {
            this.CreateEmailPreparatoryTemplates(EmailTemplateType.SubjectInvoice);
            this.CreateEmailPreparatoryTemplates(EmailTemplateType.SubjectEstimate);
            this.CreateEmailPreparatoryTemplates(EmailTemplateType.SubjectPurchaseOrder);
            this.CreateEmailPreparatoryTemplates(EmailTemplateType.SubjectStatement);
            this.CreateEmailPreparatoryTemplates(EmailTemplateType.BodyInvoice);
            this.CreateEmailPreparatoryTemplates(EmailTemplateType.BodyEstimate);
            this.CreateEmailPreparatoryTemplates(EmailTemplateType.BodyPurchaseOrder);
            this.CreateEmailPreparatoryTemplates(EmailTemplateType.BodyStatement);
        }

        internal new void DeleteAll()
        {
            base.DeleteAll();
        }

        protected override CommandFieldValueList BuildPairList(Entity entity)
        {
            EmailTemplate template = (EmailTemplate)entity;
            CommandFieldValueList pairList = new CommandFieldValueList(template.ID);
            pairList.Add(EmailTemplateSchema.FieldName, template.Name);
            pairList.Add(EmailTemplateSchema.FieldContent, template.Content);
            pairList.Add(EmailTemplateSchema.FieldType, template.Type);
            pairList.Add(EmailTemplateSchema.FieldPreparatory, template.Preparatory);
            return pairList;
        }

        protected override Entity ReadEntity(RecordReader reader)
        {
            bool preparatory = reader.GetBoolean(EmailTemplateSchema.FieldPreparatory);

            EmailTemplate template;
            if (preparatory)
                template = new EmailPreparatoryTemplate();
            else
                template = new EmailTemplate();

            template.ID = reader.GetInt32(EmailTemplateSchema.FieldID);
            template.Name = reader.GetString(EmailTemplateSchema.FieldName);
            template.Content = reader.GetString(EmailTemplateSchema.FieldContent);
            template.Type = (EmailTemplateType)reader.GetInt32(EmailTemplateSchema.FieldType);

            int defaultID = GetDefaultTemplate(template.Type);
            if (template.ID == defaultID)
                template.Default = true;

            return template;
        }

        protected override IList CreateEntityList()
        {
            return new EmailTemplateList();
        }

        private void CreateEmailPreparatoryTemplates(EmailTemplateType type)
        {
            EmailPreparatoryTemplates list = new EmailPreparatoryTemplates(type);
            foreach (EmailTemplate template in list)
                this.Save(template);
        }

        protected override void SaveBefore(Entity entity, DbTransaction transaction)
        {
            EmailTemplate template = (EmailTemplate)entity;
            int defaultID = GetDefaultTemplate(template.Type);
            if (template.ID == defaultID)
                if (template.Default == false)
                {
                    DebugReport.EmailDefaultTemplateError();
                    template.Default = true;
                }
        }

        protected override void SaveAfter(Entity entity, Entity entityOld, DbTransaction transaction)
        {
            EmailTemplate template = (EmailTemplate)entity;
            if (template.Default)
                SetDefaultTemplate(template.Type, template.ID.Value);
        }

        private int GetDefaultTemplate(EmailTemplateType type)
        {
            CompanyPreference preference = this.Database.CompanyPreference;
            int defaultID = preference.GetEmailDefaultTemplate(type);
            return defaultID;
        }

        private void SetDefaultTemplate(EmailTemplateType type, int id)
        {
            CompanyPreference preference = this.Database.CompanyPreference;
            preference.SetEmailDefaultTemplate(type, id);
            this.Database.CompanyPreference = preference;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -