public virtual NotifierSettingsModel GetSettings(ActivityEventIdentity activityEventIdentity)
        {
            var emailNotifierSetting = Get <EmailNotifierTemplate>(activityEventIdentity.AddNotifierIdentity(NotifierTypeEnum.EmailNotifier));
            var uiNotifierSetting    = Get <UiNotifierTemplate>(activityEventIdentity.AddNotifierIdentity(NotifierTypeEnum.UiNotifier));
            var popupNotifierSetting = Get <PopupNotifierTemplate>(activityEventIdentity.AddNotifierIdentity(NotifierTypeEnum.PopupNotifier));
            var notifierSettings     = new NotifierSettingsModel
            {
                EmailNotifierSetting = emailNotifierSetting,
                UiNotifierSetting    = uiNotifierSetting,
                PopupNotifierSetting = popupNotifierSetting
            };

            return(notifierSettings);
        }
예제 #2
0
        public virtual void Save <T>(NotifierSettingModel <T> settingModel) where T : INotifierTemplate
        {
            var identity = new ActivityEventIdentity(settingModel.ActivityType, settingModel.NotificationType)
                           .AddNotifierIdentity(settingModel.NotifierType);

            var(setting, isCreated) = FindOrCreateSetting <T>(identity);

            var updatedSetting = GetUpdatedSetting(setting, settingModel);

            if (isCreated)
            {
                _repository.Add(updatedSetting);
            }
            else
            {
                _repository.Update(updatedSetting);
            }
        }
        public void CreateAndSendMail()
        {
            var currentDate = DateTime.UtcNow;

            var allUsers     = _intranetMemberService.GetAll();
            var monthlyMails = allUsers
                               .Select(user => user.Id.Pipe(GetUserActivitiesFilteredByUserTags).Pipe(userActivities => TryGetMonthlyMail(userActivities, user)))
                               .ToList();

            var identity = new ActivityEventIdentity(
                CommunicationTypeEnum.CommunicationSettings,
                NotificationTypeEnum.MonthlyMail)
                           .AddNotifierIdentity(NotifierTypeEnum.EmailNotifier);

            var settings = _notificationSettingsService.Get <EmailNotifierTemplate>(identity);

            if (!settings.IsEnabled)
            {
                return;
            }

            foreach (var monthlyMail in monthlyMails)
            {
                monthlyMail.Do(some: mail =>
                {
                    var mailModel = GetMonthlyMailModel(mail.user, mail.monthlyMail, settings.Template);
                    try
                    {
                        _mailService.SendMailByTypeAndDay(
                            mailModel,
                            mail.user.Email,
                            currentDate,
                            NotificationTypeEnum.MonthlyMail);
                    }
                    catch (Exception ex)
                    {
                        _logger.Log(ex);
                    }
                });
            }
        }
 public ActivityEventNotifierIdentity(ActivityEventIdentity @event, Enum notifierType)
 {
     Event        = @event;
     NotifierType = notifierType;
 }
예제 #5
0
 public static ActivityEventNotifierIdentity AddNotifierIdentity(this ActivityEventIdentity activityEventIdentity, Enum notifierType)
 {
     return(new ActivityEventNotifierIdentity(activityEventIdentity, notifierType));
 }