Exemplo n.º 1
0
        public IList <EditionEntity> GetEditionsToNotify(NotificationType notificationType)
        {
            IList <EditionEntity> editions;

            if (WebConfigHelper.IsLocal || WebConfigHelper.IsTest)
            {
                editions = EditionServices.GetEditionsByEvent(248);
            }
            else
            {
                var deviationInDays = WebConfigHelper.EditionNotificationDeviationInDays;
                if (notificationType.GetAttribute <NotificationAttribute>().CheckDaysType == NotificationAttribute.CheckDaysTypes.Passed)
                {
                    deviationInDays *= -1;
                }
                var checkDays = _emailNotificationHelper.GetCheckDays(notificationType).Select(x => x - deviationInDays).ToList();

                var minFinancialYear = WebConfigHelper.MinFinancialYear;
                var statuses         = Utility.Constants.DefaultValidEditionStatusesForCed;
                var eventTypes       = notificationType.GetAttribute <NotificationAttribute>().EventTypes.Select(x => x.GetDescription()).ToArray();
                var eventActivities  = Utility.Constants.ValidEventActivitiesToNotify;

                editions = EditionServices.GetEditionsByNotificationType(checkDays, null, notificationType, minFinancialYear, statuses, eventTypes, eventActivities);
            }

            return(editions);
        }
Exemplo n.º 2
0
        public ActionResult _GetFiles(int entityId, string entityType, string fileType, string langCode)
        {
            var files = FileServices.GetFilesByEntity(entityId, entityType, null, langCode).OrderByDescending(x => x.CreatedOn).ToList();

            var isCancelled = false;

            if (entityType == EntityType.Edition.GetDescription())
            {
                var edition = EditionServices.GetEditionById(entityId, Constants.ValidEventTypesForCed);
                isCancelled = edition.IsCancelled();
            }

            var model = new FilesEditModel
            {
                EntityId        = entityId,
                EntityType      = entityType.ToEnumFromDescription <EntityType>(),
                EditionFileType = fileType.ToEnumFromDescription <EditionFileType>(),
                LanguageCode    = langCode,
                Files           = files,
                CurrentUser     = CurrentCedUser,
                IsCancelled     = isCancelled
            };

            return(PartialView("_EditionFiles", model));
        }
        public void SearchByName_K_Returns_ListOfZeroElements()
        {
            //Arrange
            var mock = new Mock <IRepository <Edition> >();

            mock.Setup(a => a.List()).Returns(new List <Edition>()
            {
                new Edition()
                {
                    Name                = "Edition",
                    Description         = "Edition is Edition",
                    DateNextPublication = DateTime.UtcNow,
                    Language            = "eng",
                    Price               = 3
                },
                new Edition()
                {
                    Name                = "Edition1",
                    Description         = "Edition is Edition1",
                    DateNextPublication = DateTime.UtcNow,
                    Language            = "eng",
                    Price               = 5
                }
            });
            EditionServices service = new EditionServices(mock.Object);

            //Act
            var result = service.SearchByName("k");

            //Assert
            Assert.AreEqual(0, result.Count);
        }
        public void SortByNameTest_ReturnsSortedList()
        {
            //Arrange
            var mock = new Mock <IRepository <Edition> >();

            mock.Setup(a => a.List()).Returns(new List <Edition>()
            {
                new Edition()
                {
                    Name                = "Edition",
                    Description         = "Edition is Edition",
                    DateNextPublication = DateTime.UtcNow,
                    Language            = "eng"
                },
                new Edition()
                {
                    Name                = "Edition1",
                    Description         = "Edition is Edition1",
                    DateNextPublication = DateTime.UtcNow,
                    Language            = "eng"
                }
            });
            EditionServices service = new EditionServices(mock.Object);

            //Act
            var result = service.SortByName(true);

            //Assert
            Assert.AreEqual("Edition", result[0].Name);
        }
        public void GetEditionsByLanguageMethod_ByUA_ReturnsEmptyList()
        {
            //Arrange
            var mock = new Mock <IRepository <Edition> >();

            mock.Setup(a => a.List()).Returns(new List <Edition>()
            {
                new Edition()
                {
                    Name                = "Edition",
                    Description         = "Edition is Edition",
                    DateNextPublication = DateTime.UtcNow,
                    Language            = "ru"
                },
                new Edition()
                {
                    Name                = "Edition1",
                    Description         = "Edition is Edition1",
                    DateNextPublication = DateTime.UtcNow,
                    Language            = "eng"
                }
            });
            EditionServices service = new EditionServices(mock.Object);

            //Act
            var result = service.GetEditionsByLanguage("ua");

            //Assert
            Assert.AreEqual(0, result.Count());
        }
        public ActionResult _Details(int id)
        {
            var edition = EditionServices.GetEditionById(id);
            var model   = Mapper.Map <EditionEntity, AdminEditionDetailsModel>(edition);

            return(PartialView(model));
        }
Exemplo n.º 7
0
 public Application()
 {
     _editionServices = new EditionServices();
     _userServices    = new UserServices();
     _domainServices  = new DomainServices();
     _bookServices    = new BookServices();
     _borrowServices  = new BorrowServices();
 }
 public EditionController(IRepository <Edition> editionRepository, IRepository <Topic> topicRepository, IUserRepository userRepository)
 {
     _editionRepository = editionRepository;
     _topicRepository   = topicRepository;
     TopicModel.SetTopicsList(_topicRepository.List());
     _editionService = new EditionServices(_editionRepository);
     _userRepository = userRepository;
 }
Exemplo n.º 9
0
        public IList <EditionEntity> GetApprovedEditions()
        {
            var approvedEditions = EditionServices.GetEditionsByStatus(new List <EditionStatusType> {
                EditionStatusType.Approved
            }.ToArray());

            return(approvedEditions);
        }
Exemplo n.º 10
0
        private void UpdateApprovedEdition(Edition stagingEdition, EditionEntity approvedEdition)
        {
            approvedEdition.AxEventId = Convert.ToInt32(stagingEdition.EventBEID);
            approvedEdition.DwEventId = stagingEdition.DWEventID;
            approvedEdition.Status    = EditionStatusType.Published;

            EditionServices.UpdateEdition(approvedEdition.EditionId, approvedEdition, BusinessServices.Helpers.Constants.AutoIntegrationUserId, true);
        }
        private int GetEditionListItemsCount(int?eventId, string directorEmail, string[] regions, string country, string city, int[] statusId, int[] eventActivityId, int[] eventTypeId)
        {
            var statusTypes     = GetEditionStatusTypes(statusId);
            var eventActivities = GetEventActivities(eventActivityId);
            var eventTypes      = GetEventTypes(eventTypeId);
            var editionsCount   = EditionServices.GetEditionsCount2(directorEmail, eventId, false, null, statusTypes, eventTypes, eventActivities, null, country, city);

            return(editionsCount);
        }
        public ActionResult EditionUpdate(int editionId)
        {
            var edition   = EditionServices.GetEditionById(editionId);
            var buttonUrl = _editionHelper.GetEditionUrl(edition);

            SendEmailNotification(edition, NotificationType.EditionUpdated, WebConfigHelper.AdminEmails, CurrentCedUser.CurrentUser, "test", buttonUrl);

            return(View());
        }
        public ActionResult PostShowMetricsInfoCompleteness2(int editionId)
        {
            var edition          = EditionServices.GetEditionById(editionId);
            var notificationAttr = NotificationType.PostShowMetricsInfoCompleteness2.GetAttribute <NotificationAttribute>();
            var buttonUrl        = _editionHelper.GetEditionUrl(edition, notificationAttr.Fragment);

            SendEmailNotification(edition, NotificationType.PostShowMetricsInfoCompleteness2, WebConfigHelper.AdminEmails, CurrentCedUser.CurrentUser, "test", buttonUrl);

            return(View());
        }
        public ActionResult _SearchCities(string searchTerm, string countryCode)
        {
            var cities      = EditionServices.GetCities(searchTerm, countryCode);
            var pagedEvents = CitiesToSelect2Format(cities, 15);

            return(new JsonResult
            {
                Data = pagedEvents,
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
        private IList <AdminEditionListItemModel> GetEditionListItems(int?eventId, string directorEmail, string[] regions, string country, string city, int[] statusId, int[] eventActivityId, int[] eventTypeId)
        {
            var statusTypes     = GetEditionStatusTypes(statusId);
            var eventActivities = GetEventActivities(eventActivityId);
            var eventTypes      = GetEventTypes(eventTypeId);

            var editions         = EditionServices.GetEditions2(directorEmail, eventId, false, null, statusTypes, eventTypes, eventActivities, null, country, city);
            var editionListItems = Mapper.Map <IList <EditionEntityLight>, IList <AdminEditionListItemModel> >(editions);

            return(editionListItems);
        }
Exemplo n.º 16
0
 public TaskServices(IUnitOfWork unitOfWork, IEditionHelper editionHelper, IEmailNotificationHelper emailNotificationHelper)
     : base(unitOfWork)
 {
     _unitOfWork                 = (UnitOfWork)unitOfWork;
     _editionServices            = new EditionServices(unitOfWork);
     _editionTranslationServices = new EditionTranslationServices(unitOfWork);
     _eventServices              = new EventServices(unitOfWork);
     _eventDirectorServices      = new EventDirectorServices(unitOfWork);
     _editionServiceHelper       = new EditionServiceHelper(unitOfWork);
     _editionHelper              = editionHelper;
     _emailNotificationHelper    = emailNotificationHelper;
 }
        public ActionResult _AddEditionKeyVisitor(int editionId, int keyVisitorId, string value)
        {
            var edition = EditionServices.GetEditionById(editionId);

            if (edition == null)
            {
                return(Json(new { success = false, message = "Edition doesn't exist." }, JsonRequestBehavior.AllowGet));
            }

            //var keyVisitor = KeyVisitorServices.GetKeyVisitorById(keyVisitorId);
            //if (keyVisitor == null)
            //    return Json(new { success = false, message = "KeyVisitor doesn't exist." }, JsonRequestBehavior.AllowGet);

            var editionKeyVisitorId = EditionKeyVisitorServices.CreateEditionKeyVisitor(new
                                                                                        EditionKeyVisitorEntity
            {
                EditionId    = editionId,
                EventBEID    = edition.AxEventId,
                KeyVisitorId = keyVisitorId,
                Value        = value.Trim()
            },
                                                                                        CurrentCedUser.CurrentUser.UserId
                                                                                        );

            // TODO: KeyVisitor entity is not loaded into EditionKeyVisitor entity.
            var editionKeyVisitor = EditionKeyVisitorServices.GetEditionKeyVisitorById(editionKeyVisitorId);
            var keyVisitor        = KeyVisitorServices.GetKeyVisitorById(editionKeyVisitor.KeyVisitorId);

            // UPDATE EDITION
            UpdateEditionUpdateInfo(edition);

            // DIFF
            var diff = new List <Variance> {
                new Variance {
                    Prop = "KeyVisitor", ValA = null, ValB = keyVisitor.Name + ": " + editionKeyVisitor.Value
                }
            };

            OnEditionUpdated(edition, diff);

            // UPDATE LOG
            var updatedFields = NotificationControllerHelper.GetUpdatedFieldsAsJson("KeyVisitor", new List <Variance> {
                new Variance {
                    Prop = "KeyVisitor"
                }
            });

            UpdateLogInMemory(edition, updatedFields);

            return(Json(new { success = true, message = "KeyVisitor has been added." /*, editionKeyVisitorCount = editionKeyVisitorCount*/ }, JsonRequestBehavior.AllowGet));
        }
        public void SortByNameTest_ReturnsEmptyList()
        {
            //Arrange
            var mock = new Mock <IRepository <Edition> >();

            mock.Setup(a => a.List()).Returns(new List <Edition>());
            EditionServices service = new EditionServices(mock.Object);

            //Act
            var result = service.SortByName(true);

            //Assert
            Assert.AreEqual(0, result.Count);
        }
        public void GetEditionsByLanguageMethod_ReturnsEmptyList()
        {
            //Arrange
            var mock = new Mock <IRepository <Edition> >();

            mock.Setup(a => a.List()).Returns(new List <Edition>());
            EditionServices service = new EditionServices(mock.Object);

            //Act
            var result = service.GetEditionsByLanguage("eng");

            //Assert
            Assert.AreEqual(0, result.Count());
        }
Exemplo n.º 20
0
        public ActionResult _DeleteEditionDiscountApprover(int id)
        {
            var discountApprover = EditionDiscountApproverServices.GetById(id);

            if (discountApprover == null)
            {
                return(Json(new { success = false, message = "Discount approver doesn't exist!" }, JsonRequestBehavior.AllowGet));
            }

            var edition = EditionServices.GetEditionById(discountApprover.EditionId);

            if (edition == null)
            {
                return(Json(new { success = false, message = "Edition doesn't exist." }, JsonRequestBehavior.AllowGet));
            }

            var deleted = EditionDiscountApproverServices.Delete(id);

            if (!deleted)
            {
                return(Json(new { success = false, message = $"Discount approver could not be deleted: {discountApprover.ApprovingUser}" }, JsonRequestBehavior.AllowGet));
            }

            var scopeName = "Edition Discount Approver";

            // UPDATE EDITION
            UpdateEditionUpdateInfo(edition);

            // DIFF
            var diff = new List <Variance> {
                new Variance {
                    Prop = scopeName, ValA = discountApprover.ApprovingUser, ValB = null
                }
            };

            OnEditionUpdated(edition, diff);

            // UPDATE LOG
            var updatedFields = NotificationControllerHelper.GetUpdatedFieldsAsJson(scopeName, new List <Variance> {
                new Variance {
                    Prop = scopeName
                }
            });

            UpdateLogInMemory(edition, updatedFields);

            return(Json(new { success = true, message = $"Discount approver has been deleted: {discountApprover.ApprovingUser}" }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult _DeleteCohostEdition(int cohostEditionId)
        {
            var cohostEdition = EditionCoHostServices.GetEditionCohostById(cohostEditionId);

            if (cohostEdition == null)
            {
                return(Json(new { success = false, message = "Co-host doesn't exist." }, JsonRequestBehavior.AllowGet));
            }

            var edition = EditionServices.GetEditionById(cohostEdition.FirstEditionId);

            if (edition == null)
            {
                return(Json(new { success = false, message = "Edition doesn't exist." }, JsonRequestBehavior.AllowGet));
            }

            var deleted = EditionCoHostServices.DeleteEditionCohost(cohostEditionId);

            if (!deleted)
            {
                return(Json(new { success = false, message = "Co-host could not be removed." }, JsonRequestBehavior.AllowGet));
            }

            var cohostCount = SetEditionCohostedEventStatus(cohostEdition.FirstEditionId);

            // UPDATE EDITION
            UpdateEditionUpdateInfo(edition);

            // DIFF
            var diff = new List <Variance> {
                new Variance {
                    Prop = "Co-host", ValA = null, ValB = cohostEdition.FirstEdition.EditionName
                }
            };

            OnEditionUpdated(edition, diff);

            // UPDATE LOG
            var updatedFields = NotificationControllerHelper.GetUpdatedFieldsAsJson("Co-host", new List <Variance> {
                new Variance {
                    Prop = "Co-host"
                }
            });

            UpdateLogInMemory(edition, updatedFields);

            return(Json(new { success = true, message = "Co-host has been removed.", cohostCount = cohostCount }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult _DeleteEditionPaymentSchedule(int editionPaymentScheduleId)
        {
            var editionPaymentSchedule = EditionPaymentScheduleServices.GetById(editionPaymentScheduleId);

            if (editionPaymentSchedule == null)
            {
                return(Json(new { success = false, message = "Edition payment schedule doesn't exist!" }, JsonRequestBehavior.AllowGet));
            }

            var edition = EditionServices.GetEditionById(editionPaymentSchedule.EditionId);

            if (edition == null)
            {
                return(Json(new { success = false, message = "Edition doesn't exist." }, JsonRequestBehavior.AllowGet));
            }

            var deleted = EditionPaymentScheduleServices.Delete(editionPaymentScheduleId);

            if (!deleted)
            {
                return(Json(new { success = false, message = $"Edition payment schedule could not be deleted: {editionPaymentSchedule.Name}" }, JsonRequestBehavior.AllowGet));
            }

            var scopeName = "Edition Payment Schedule";

            // UPDATE EDITION
            UpdateEditionUpdateInfo(edition);

            // DIFF
            var diff = new List <Variance> {
                new Variance {
                    Prop = scopeName, ValA = editionPaymentSchedule.Name, ValB = null
                }
            };

            OnEditionUpdated(edition, diff);

            // UPDATE LOG
            var updatedFields = NotificationControllerHelper.GetUpdatedFieldsAsJson(scopeName, new List <Variance> {
                new Variance {
                    Prop = scopeName
                }
            });

            UpdateLogInMemory(edition, updatedFields);

            return(Json(new { success = true, message = $"Edition payment schedule has been deleted: {editionPaymentSchedule.Name}" }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult _DeleteSocialMedia(int editionSocialMediaId)
        {
            var editionSocialMedia = EditionTranslationSocialMediaServices.GetById(editionSocialMediaId);

            if (editionSocialMedia == null)
            {
                return(Json(new { success = false, message = "Social media account doesn't exist!" }, JsonRequestBehavior.AllowGet));
            }

            var edition = EditionServices.GetEditionById(editionSocialMedia.EditionId);

            if (edition == null)
            {
                return(Json(new { success = false, message = "Edition doesn't exist." }, JsonRequestBehavior.AllowGet));
            }

            var deleted = EditionTranslationSocialMediaServices.Delete(editionSocialMediaId);

            if (!deleted)
            {
                return(Json(new { success = false, message = $"<i class='fa fa-{editionSocialMedia.SocialMediaId}'></i> {editionSocialMedia.SocialMediaId.ToEnumFromDescription<SocialMediaType>()} account could not be deleted." }, JsonRequestBehavior.AllowGet));
            }

            var scopeName = "Social Media Account";

            // UPDATE EDITION
            UpdateEditionUpdateInfo(edition);

            // DIFF
            var diff = new List <Variance> {
                new Variance {
                    Prop = scopeName, ValA = editionSocialMedia.SocialMediaId + "/" + editionSocialMedia.AccountName, ValB = null
                }
            };

            OnEditionUpdated(edition, diff);

            // UPDATE LOG
            var updatedFields = NotificationControllerHelper.GetUpdatedFieldsAsJson(scopeName, new List <Variance> {
                new Variance {
                    Prop = scopeName
                }
            });

            UpdateLogInMemory(edition, updatedFields);

            return(Json(new { success = true, message = $"<i class='fa fa-{editionSocialMedia.SocialMediaId}'></i> {editionSocialMedia.SocialMediaId.ToEnumFromDescription<SocialMediaType>()} account has been deleted." }, JsonRequestBehavior.AllowGet));
        }
        private int SetEditionCohostedEventStatus(int editionId)
        {
            var cohosts = EditionCoHostServices.GetEditionCohosts(editionId);

            if (!cohosts.Any() || cohosts.Count == 1)
            {
                var edition        = EditionServices.GetEditionById(editionId);
                var currentEdition = (EditionEntity)edition.Clone();

                edition.CohostedEvent = cohosts.Any();
                EditionServices.UpdateEdition(editionId, edition, CurrentCedUser.CurrentUser.UserId);

                UpdateLogInMemory(currentEdition, edition, null, null);
            }

            return(cohosts.Count);
        }
        public ActionResult _DeleteEditionKeyVisitor(int editionKeyVisitorId)
        {
            var editionKeyVisitor = EditionKeyVisitorServices.GetEditionKeyVisitorById(editionKeyVisitorId);

            if (editionKeyVisitor == null)
            {
                return(Json(new { success = false, message = "KeyVisitor doesn't exist." }, JsonRequestBehavior.AllowGet));
            }

            var edition = EditionServices.GetEditionById(editionKeyVisitor.EditionId);

            if (edition == null)
            {
                return(Json(new { success = false, message = "Edition doesn't exist." }, JsonRequestBehavior.AllowGet));
            }

            var deleted = EditionKeyVisitorServices.DeleteEditionKeyVisitor(editionKeyVisitorId);

            if (!deleted)
            {
                return(Json(new { success = false, message = "KeyVisitor could not be removed." }, JsonRequestBehavior.AllowGet));
            }

            // UPDATE EDITION
            UpdateEditionUpdateInfo(edition);

            // DIFF
            var diff = new List <Variance> {
                new Variance {
                    Prop = "KeyVisitor", ValA = editionKeyVisitor.KeyVisitor.Name + ": " + editionKeyVisitor.Value, ValB = null
                }
            };

            OnEditionUpdated(edition, diff);

            // UPDATE LOG
            var updatedFields = NotificationControllerHelper.GetUpdatedFieldsAsJson("KeyVisitor", new List <Variance> {
                new Variance {
                    Prop = "KeyVisitor"
                }
            });

            UpdateLogInMemory(edition, updatedFields);

            return(Json(new { success = true, message = "KeyVisitor has been removed." /*, editionKeyVisitorCount = editionKeyVisitorCount*/ }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 26
0
        private void ProcessEditionNotifications(KeyValuePair <EditionEntity, NotificationType> editionNotification, int itemIndex, int totalItemsCount)
        {
            var edition          = editionNotification.Key;
            var notificationType = editionNotification.Value;

            // NEEDLESS!
            // STEP 2: Does it REQUIRE a NOTIFICATION?
            var requires = EditionServices.RequiresNotification(edition, notificationType);

            if (requires)
            {
                // STEP 3: Does NOTIFICATION already EXIST?
                //if (!NotificationAlreadyExists(edition, notificationType))
                {
                    if (WebConfigHelper.PrimaryDirectorNotifications)
                    {
                        var recipients = WebConfigHelper.PrimaryDirectorNotificationsUseMockRecipients
                            ? WebConfigHelper.AdminEmails
                            : EventDirectorServices.GetRecipientEmails(edition);

                        // STEP 3: CREATE NOTIFICATION
                        CreateInAppNotification(edition, notificationType, recipients, null);

                        PushRealTimeInAppNotification(edition, notificationType, recipients, CurrentCedUser?.CurrentUser?.Email);

                        // STEP 4: SEND EMAIL
                        var notifAttr = notificationType.GetAttribute <NotificationAttribute>();
                        var buttonUrl = notificationType == NotificationType.EditionExistence
                            ? _editionHelper.GetEditionListUrl(edition.Event, notifAttr.Fragment)
                            : _editionHelper.GetEditionUrl(edition, notifAttr.Fragment);

                        var emailResult = SendEmailNotification(edition, notificationType, recipients, null, null, buttonUrl);

                        // STEP 5: LOG EMAIL
                        if (emailResult.Sent)
                        {
                            LogEmail(edition.EditionId, recipients, emailResult.ErrorMessage, null, notificationType.ToString());
                        }
                        else
                        {
                            LogEmail(edition.EditionId, WebConfigHelper.AdminEmails, emailResult.ErrorMessage, null, notificationType.ToString(), ActionType.NotificationEmailSendFailure);
                        }
                    }
                }
            }
        }
Exemplo n.º 27
0
        private IList <EmailNotificationListItemModel> GetEmailNotificationListItems(EmailNotificationSearchModel model)
        {
            var notifications = new List <EmailNotificationListItemModel>();

            if (model.NotificationTypes == null)
            {
                model.NotificationTypes = EditionCompletenessNotificationTypes().ToArray();
            }

            if (model.DayRange > 0)
            {
                model.EmailSendingDate = null;
            }

            foreach (var notifType in model.NotificationTypes)
            {
                var deviationInDays = Convert.ToInt32((DateTime.Today - model.EmailSendingDate).GetValueOrDefault().TotalDays);
                if (notifType.GetAttribute <NotificationAttribute>().CheckDaysType == NotificationAttribute.CheckDaysTypes.Passed)
                {
                    deviationInDays *= -1;
                }

                if (notifType.GetAttribute <CompletenessNotificationTypeAttribute>() != null)
                {
                    var minFinancialYear = WebConfigHelper.MinFinancialYear;
                    var statuses         = Utility.Constants.DefaultValidEditionStatusesForCed;
                    var eventTypes       = notifType.GetAttribute <NotificationAttribute>().EventTypes.Select(x => x.GetDescription()).ToArray();
                    var eventActivities  = Utility.Constants.ValidEventActivitiesToNotify;
                    var checkDays        = _emailNotificationHelper.GetCheckDays(notifType);

                    foreach (var checkDay in checkDays)
                    {
                        var editionsToNotify = EditionServices.GetEditionsByNotificationType(checkDay - deviationInDays, model.DayRange, notifType, minFinancialYear, statuses, eventTypes, eventActivities, model.EventId);

                        AddEditionsToNotificationList(notifications, editionsToNotify, notifType, checkDay);
                    }
                }
            }

            return(notifications);
        }
Exemplo n.º 28
0
        private void AddEditionsToNotificationList(IList <EmailNotificationListItemModel> notifications, IList <EditionEntity> editions, NotificationType notificationType, int checkDay)
        {
            foreach (var edition in editions)
            {
                EditionEntity prevEdition = null;
                var           sendingDate = DateTime.MinValue;

                switch (notificationType)
                {
                case NotificationType.EditionExistence:     // TODO:???
                    break;

                case NotificationType.GeneralInfoCompleteness:
                    prevEdition = EditionServices.GetPreviousEdition(edition);
                    sendingDate = prevEdition.StartDate.Value.AddDays(-checkDay);
                    break;

                case NotificationType.PostShowMetricsInfoCompleteness:
                case NotificationType.PostShowMetricsInfoCompleteness2:
                    sendingDate = edition.EndDate.Value.AddDays(checkDay);
                    break;
                }

                var log = NotificationEmailSent(prevEdition ?? edition, notificationType, sendingDate);

                notifications.Add(new EmailNotificationListItemModel
                {
                    EmailSendingDate = sendingDate,
                    NotificationType = notificationType,
                    EditionName      = edition.EditionName,
                    StartDate        = edition.StartDate.GetValueOrDefault(),
                    EndDate          = edition.EndDate.GetValueOrDefault(),
                    ReceiverEmail    = log?.AdditionalInfo.Substring("Recipient: ".Length, log.AdditionalInfo.IndexOf("|") - "Recipient: ".Length),
                    SentByEmail      = log != null,
                    CreatedOn        = log?.CreatedOn
                });
            }
        }
        public ActionResult _AddSocialMedia(int editionTranslationId, string socialMediaId, string accountName)
        {
            if (string.IsNullOrWhiteSpace(accountName))
            {
                return(Json(new { success = false, message = "Account name cannot be empty!" }, JsonRequestBehavior.AllowGet));
            }

            var editionTranslation = EditionTranslationServices.GetEditionTranslationById(editionTranslationId);

            if (editionTranslation == null)
            {
                return(Json(new { success = false, message = "Edition translation must be saved for this action." }, JsonRequestBehavior.AllowGet));
            }

            var edition = EditionServices.GetEditionById(editionTranslation.EditionId);

            if (edition == null)
            {
                return(Json(new { success = false, message = "Edition doesn't exist." }, JsonRequestBehavior.AllowGet));
            }

            var existingSocialMedia = SocialMediaServices.GetSocialMediaById(socialMediaId);

            if (existingSocialMedia == null)
            {
                socialMediaId = SocialMediaServices.CreateSocialMedia(socialMediaId);
            }

            if (!string.IsNullOrWhiteSpace(socialMediaId))
            {
                var existingEditionSocialMedia = EditionTranslationSocialMediaServices.Get(editionTranslationId, socialMediaId);

                if (existingEditionSocialMedia != null)
                {
                    return(Json(new { success = false, message = $"<i class='fa fa-{existingEditionSocialMedia.SocialMediaId}'></i> {existingEditionSocialMedia.SocialMediaId.ToEnumFromDescription<SocialMediaType>()} account already exists!" }, JsonRequestBehavior.AllowGet));
                }

                var editionSocialMedia = new EditionTranslationSocialMediaEntity
                {
                    EditionId            = editionTranslation.EditionId,
                    EditionTranslationId = editionTranslation.EditionTranslationId,
                    SocialMediaId        = socialMediaId,
                    AccountName          = accountName
                };
                EditionTranslationSocialMediaServices.Create(editionSocialMedia, CurrentCedUser.CurrentUser.UserId);


                var scopeName = "Social Media Account";

                // UPDATE EDITION
                UpdateEditionUpdateInfo(edition);

                // DIFF
                var diff = new List <Variance> {
                    new Variance {
                        Prop = scopeName, ValA = null, ValB = editionSocialMedia.SocialMediaId + "/" + editionSocialMedia.AccountName
                    }
                };

                OnEditionUpdated(edition, diff);

                // UPDATE LOG
                var updatedFields = NotificationControllerHelper.GetUpdatedFieldsAsJson(scopeName, new List <Variance> {
                    new Variance {
                        Prop = scopeName
                    }
                });
                UpdateLogInMemory(edition, updatedFields);

                return(Json(new { success = true, message = $"<i class='fa fa-{editionSocialMedia.SocialMediaId}'></i> {editionSocialMedia.SocialMediaId.ToEnumFromDescription<SocialMediaType>()} account has been added." }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new { success = false, message = "<i class='fa fa-{editionSocialMedia.SocialMediaId}'></i> {editionSocialMedia.SocialMediaId.ToEnum<SocialMediaType>()} account could not be added!" }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Index(int?id = null)
        {
            var anyEventSelected = id.HasValue;

            if (id.HasValue)
            {
                if (!IsDirectorAuthorizedOnEvent(id.Value))
                {
                    return(View("Unauthorized"));
                }
            }

            var pastEvents = EventServices.GetPastEventsByDirector(
                CurrentCedUser.CurrentUser.Email,
                WebConfigHelper.MinFinancialYear,
                Constants.DefaultValidEditionStatusesForCed,
                Constants.ValidEventTypesForCed,
                3,
                20)
                             .OrderBy(x => x.MasterName).ToList();

            foreach (var @event in pastEvents)
            {
                @event.DisplayDate = DateHelper.GetDisplayDate(@event.StartDate, @event.EndDate);
            }

            if (!pastEvents.Any())
            {
                var allEvents = EventServices.GetEventLightsByDirector(
                    CurrentCedUser.CurrentUser.Email,
                    Constants.ValidEventTypesForCed,
                    WebConfigHelper.MinFinancialYear)
                                .ToList();

                if (allEvents.Any())
                {
                    id = allEvents.First().EventId;
                }
                else
                {
                    return(View("Unauthorized"));
                }
            }

            if (id == null)
            {
                id = pastEvents.First().EventId;
            }

            var selectedEvent = EventServices.GetEventById(id.Value);

            if (selectedEvent == null)
            {
                return(View("NotFound"));
            }

            var lastEdition = EditionServices.GetLastFinishedEdition(selectedEvent.EventId);

            if (lastEdition == null)
            {
                var nextEdition = EditionServices.GetClosestEdition(selectedEvent.EventId, Constants.ValidEventTypesForCed);
                if (nextEdition == null)
                {
                    return(View("Error", new ErrorModel {
                        Message = $"Next edition not found for {selectedEvent.EventId} | {selectedEvent.MasterName}!"
                    }));
                }

                return(View(new IndexModel
                {
                    EventId = selectedEvent.EventId,
                    EventName = selectedEvent.MasterName,
                    EventType = selectedEvent.EventTypeCode.ToEnumFromDescription <EventType>(),
                    EventDisplayDate = selectedEvent.DisplayDate,
                    SelectedEditionId = nextEdition.EditionId,
                    SelectedEditionName = nextEdition.EditionName,
                    NextEditionStartDate = nextEdition.StartDate,
                    EventEditionList = pastEvents
                }));
            }

            selectedEvent.DisplayDate = DateHelper.GetDisplayDate(lastEdition.StartDate, lastEdition.EndDate);

            var lastEditionTranslation = EditionTranslationServices.GetEditionTranslationLight(lastEdition.EditionId, LanguageHelper.GetBaseLanguageCultureName());

            var internationalExhibitorPavilionCounts = StatisticServices.GetInternationalExhibitorPavilionCounts(selectedEvent.EventId, 3);
            var exhibitorCountryCounts = StatisticServices.GetExhibitorCountryCounts(selectedEvent.EventId, 3);
            var visitorCountryCounts   = StatisticServices.GetVisitorCountryCounts(selectedEvent.EventId, 3);

            var localExhibitorRetentionRates         = StatisticServices.GetExhibitorRetentionRatesLocal(selectedEvent.EventId, 3);
            var internationalExhibitorRetentionRates = StatisticServices.GetExhibitorRetentionRatesInternational(selectedEvent.EventId, 3);

            var editionCountriesExhibitor = EditionCountryServices.GetEditionCountriesByEdition(lastEdition.EditionId, EditionCountryRelationType.Exhibitor);
            var editionCountriesVisitor   = EditionCountryServices.GetEditionCountriesByEdition(lastEdition.EditionId, EditionCountryRelationType.Visitor);

            var exhibitorCountryNames =
                Countries.Where(c => editionCountriesExhibitor.Any(ec => ec.CountryCode == c.CountryCode))
                .Select(c => c.CountryName)
                .ToList();

            var visitorCountryNames =
                Countries.Where(c => editionCountriesVisitor.Any(ec => ec.CountryCode == c.CountryCode))
                .Select(c => c.CountryName)
                .ToList();

            var delegateCountryNames = new List <string>();
            var lastEditionEvent     = lastEdition.Event ?? EventServices.GetEventById(lastEdition.EventId);

            if (Constants.ConferenceEventTypes.Contains(lastEditionEvent.EventTypeCode))
            {
                var editionCountriesDelegate = EditionCountryServices.GetEditionCountriesByEdition(lastEdition.EditionId, EditionCountryRelationType.Delegate);
                delegateCountryNames = editionCountriesDelegate.Any()
                    ? Countries.Where(c => editionCountriesExhibitor.Any(ec => ec.CountryCode == c.CountryCode))
                                       .Select(c => c.CountryName)
                                       .ToList()
                    : new List <string>();
            }

            var model = new IndexModel
            {
                EventId             = selectedEvent.EventId,
                EventName           = selectedEvent.MasterName,
                EventType           = selectedEvent.EventTypeCode.ToEnumFromDescription <EventType>(),
                EventDisplayDate    = selectedEvent.DisplayDate,
                SelectedEditionId   = lastEdition.EditionId,
                SelectedEditionName = lastEdition.EditionName,
                EventEditionList    = pastEvents,
                EditionStatModel    = new EditionStatModel
                {
                    ExhibitorCountries                   = exhibitorCountryNames,
                    VisitorCountries                     = visitorCountryNames,
                    DelegateCountries                    = delegateCountryNames,
                    LocalExhibitorRetentionRates         = localExhibitorRetentionRates,
                    InternationalExhibitorRetentionRates = internationalExhibitorRetentionRates,
                    NumberOfInternationalPavilions       = internationalExhibitorPavilionCounts,
                    NumberOfExhibitorCountries           = exhibitorCountryCounts,
                    NumberOfVisitorCountries             = visitorCountryCounts,
                    BookAStandUrl     = lastEditionTranslation.BookStandUrl,
                    VisitorETicketUrl = lastEditionTranslation.OnlineInvitationUrl
                }
            };

            // Additions to LOG object
            if (TempData["Log"] is LogEntity log)
            {
                if (log.EntityId == null || log.EntityId == 0)
                {
                    log.EntityId   = selectedEvent.EventId;
                    log.EntityName = selectedEvent.MasterName;
                    log.EventId    = selectedEvent.EventId;
                    log.EventName  = selectedEvent.MasterName;
                }
                if (anyEventSelected) // If an event selected intentionally.
                {
                    log.AdditionalInfo = "{ 'WebLogoFileName': '" + lastEditionTranslation.WebLogoFileName + "' }";
                }
            }

            return(View(model));
        }