public static void Register(FileTypeSymbol fileTypeSymbol, FileTypeAlgorithm algorithm) { if (fileTypeSymbol == null) throw AutoInitAttribute.ArgumentNullException(typeof(FileTypeSymbol), nameof(fileTypeSymbol)); if (algorithm == null) throw new ArgumentNullException(nameof(algorithm)); FileTypes.Add(fileTypeSymbol, algorithm); }
public static void Start(SchemaBuilder sb, DynamicQueryManager dqm, Func<Pop3ConfigurationEntity, IPop3Client> getPop3Client, FileTypeAlgorithm attachment) { if (sb.NotDefined(MethodInfo.GetCurrentMethod())) { GetPop3Client = getPop3Client; FilePathLogic.Register(EmailFileType.Attachment, attachment); MixinDeclarations.AssertDeclared(typeof(EmailMessageEntity), typeof(EmailReceptionMixin)); MimeType.CacheExtension.TryAdd("message/rfc822", ".eml"); sb.Include<Pop3ConfigurationEntity>(); sb.Include<Pop3ReceptionEntity>(); sb.Include<Pop3ReceptionExceptionEntity>(); dqm.RegisterQuery(typeof(EmailMessageEntity), () => from e in Database.Query<EmailMessageEntity>() select new { Entity = e, e.Id, e.From, e.Subject, e.Template, e.State, e.Sent, SentDate = (DateTime?)e.Mixin<EmailReceptionMixin>().ReceptionInfo.SentDate, e.Package, e.Exception, }); dqm.RegisterQuery(typeof(Pop3ConfigurationEntity), () => from s in Database.Query<Pop3ConfigurationEntity>() select new { Entity = s, s.Id, s.Host, s.Port, s.Username, s.EnableSSL }); dqm.RegisterQuery(typeof(Pop3ReceptionEntity), () => DynamicQuery.DynamicQuery.Auto( from s in Database.Query<Pop3ReceptionEntity>() select new { Entity = s, s.Id, s.Pop3Configuration, s.StartDate, s.EndDate, s.NewEmails, EmailMessages = s.EmailMessages().Count(), Exceptions = s.Exceptions().Count(), s.Exception, }) .ColumnDisplayName(a => a.EmailMessages, () => typeof(EmailMessageEntity).NicePluralName()) .ColumnDisplayName(a => a.Exceptions, () => typeof(ExceptionEntity).NicePluralName())); dqm.RegisterQuery(typeof(Pop3ConfigurationEntity), () => from s in Database.Query<Pop3ConfigurationEntity>() select new { Entity = s, s.Id, s.Host, s.Port, s.Username, s.EnableSSL }); dqm.RegisterExpression((Pop3ConfigurationEntity c) => c.Receptions(), () => typeof(Pop3ReceptionEntity).NicePluralName()); dqm.RegisterExpression((Pop3ReceptionEntity r) => r.EmailMessages(), () => typeof(EmailMessageEntity).NicePluralName()); dqm.RegisterExpression((Pop3ReceptionEntity r) => r.Exceptions(), () => typeof(ExceptionEntity).NicePluralName()); dqm.RegisterExpression((ExceptionEntity r) => r.Pop3Reception(), () => typeof(Pop3ReceptionEntity).NiceName()); new Graph<Pop3ConfigurationEntity>.Execute(Pop3ConfigurationOperation.Save) { AllowsNew = true, Lite = false, Execute = (e, _) => { } }.Register(); new Graph<Pop3ReceptionEntity>.ConstructFrom<Pop3ConfigurationEntity>(Pop3ConfigurationOperation.ReceiveEmails) { AllowsNew = true, Lite = false, Construct = (e, _) => { using (Transaction tr = Transaction.None()) { var result = e.ReceiveEmails(); return tr.Commit(result); } } }.Register(); SchedulerLogic.ExecuteTask.Register((Pop3ConfigurationEntity smtp) => smtp.ReceiveEmails().ToLite()); SimpleTaskLogic.Register(Pop3ConfigurationAction.ReceiveAllActivePop3Configurations, () => { if (!EmailLogic.Configuration.ReciveEmails) throw new InvalidOperationException("EmailLogic.Configuration.ReciveEmails is set to false"); foreach (var item in Database.Query<Pop3ConfigurationEntity>().Where(a => a.Active).ToList()) { item.ReceiveEmails(); } return null; }); } }
public static void Register(FileTypeSymbol fileTypeSymbol, FileTypeAlgorithm algorithm) { FileTypes.Add(fileTypeSymbol, algorithm); }