yambroskin

Untitled

Jul 20th, 2017
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.42 KB | None | 0 0
  1. using System;
  2. using Autofac;
  3. using log4net;
  4. using Quartz;
  5. using Yambr.Core;
  6. using Yambr.Core.ExtentionPoints;
  7. using Yambr.Loader.Enums;
  8. using Yambr.Loader.Loaders;
  9. using Yambr.Loader.Loaders.Imap;
  10. using Yambr.Loader.Loaders.Pop3;
  11. using Yambr.Loader.Models;
  12. using Yambr.Loader.Scheduler;
  13. using Yambr.Loader.Services;
  14. using Yambr.Loader.Services.Default;
  15.  
  16. namespace Yambr.Loader.Handlers
  17. {
  18.     /// <summary>
  19.     /// Инициализация загрузчика
  20.     /// </summary>
  21.     public class LoaderInitHandler : IInitHandler
  22.     {
  23.         public int Order => 100;
  24.         public void InitComplete()
  25.         {
  26.             var logger = Application.Container.Resolve<ILog>();
  27.             logger.Info($"{nameof(InitComplete)} в {nameof(LoaderInitHandler)}");
  28.  
  29.             var scheduler = Application.Container.Resolve<IScheduler>();
  30.             var job = new CheckMessageWorkJob();
  31.             job.ScheduleJob(scheduler);
  32.  
  33.         }
  34.  
  35.         public void Shutdown()
  36.         {
  37.         }
  38.  
  39.         public void Init(ContainerBuilder builder)
  40.         {
  41.             //Регистрация сервисов модуля
  42.             builder.RegisterType<MessageWorkService>()
  43.                 .As<IMessageWorkService>();
  44.  
  45.             //регистрируем сборщики почты
  46.             builder.RegisterType<Pop3Loader>()
  47.                 .As<IPop3Loader>();
  48.             builder.RegisterType<ImapLoader>()
  49.                 .As<IImapLoader>();
  50.  
  51.             // сервис работы с сообщениями
  52.             builder.RegisterType<EmailMesageService>()
  53.                 .As<IEmailMesageService>();
  54.  
  55.             //сервис работы с контрагентами
  56.             builder.RegisterType<ContractorService>()
  57.                 .As<IContractorService>();
  58.  
  59.             //сервис работы с контактами
  60.             builder.RegisterType<ContactService>()
  61.                 .As<IContactService>();
  62.  
  63.             //сервис работы с ящиками
  64.             builder.RegisterType<MailBoxService>()
  65.                 .As<IMailBoxService>();
  66.  
  67.             //сервис работы с публичными доменами
  68.             builder.RegisterType<PublicDomainService>()
  69.                 .As<IPublicDomainService>();
  70.  
  71.        
  72.  
  73.             // регистрируем базовый загрузчик и его определение
  74.             builder.Register(c =>
  75.             {
  76.                 //в этот момент уже должен быть зарегистрирован ящик с которым будут раотать загрузчики
  77.                 var mailBox = c.Resolve<IMailBox>();
  78.                 if (mailBox == null) throw new ArgumentNullException(nameof(mailBox));
  79.                 IEmailLoader emailLoader = null;
  80.                 // в зависимости от типа подключения вернем нуджный сервис
  81.                 switch (mailBox.Server.ConnectionType)
  82.                 {
  83.                     case ConnectionType.POP3:
  84.                         emailLoader = c.Resolve<IPop3Loader>();
  85.                         break;
  86.                     case ConnectionType.IMAP:
  87.                         emailLoader = c.Resolve<IImapLoader>();
  88.                         break;
  89.                 }
  90.                 return emailLoader;
  91.             }).As<IEmailLoader>();
  92.  
  93.  
  94.  
  95.  
  96.            
  97.         }
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment