Ejemplo n.º 1
0
        public async Task <IActionResult> Unsubscribe(string email)
        {
            EmailSubscription emailAddress = await emailSubscriptions.FindAsync(x => x.Email.Equals(email));

            if (emailAddress == null)
            {
                modalNotification.AddNotificationSweet("Email", NotificationType.success, "You unbscribed from the list!");
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }

            emailAddress.Status = false;

            try
            {
                await emailSubscriptions.UpdateAsync(emailAddress);

                logger.LogInformation($"Email {emailAddress.Email} unsubscribed");
            }
            catch
            {
                logger.LogInformation($"Failed unsubscribe email from list");
                modalNotification.AddNotificationSweet("Fail", NotificationType.error, "Unsubscribe failed!");
                RedirectToAction(nameof(HomeController.Index), "Home");
            }

            modalNotification.AddNotificationSweet("Email", NotificationType.success, "You unsunbscribed from the list!");
            return(RedirectToAction(nameof(HomeController.Index), "Home"));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> AddEmail(string email)
        {
            MailAddress emailAddress;

            try
            {
                emailAddress = getAddress(email);
                logger.LogInformation($"Email {emailAddress.Address} added to list");

                var emailCheck = await emailSubscriptions.FindAsync(x => x.Email.Equals(emailAddress.Address));

                if (emailCheck == null)
                {
                    emailCheck = new EmailSubscription()
                    {
                        Email  = emailAddress.Address,
                        Status = true
                    };
                    await emailSubscriptions.AddAsync(emailCheck);
                }
                else if (!emailCheck.Status)
                {
                    emailCheck.Status = true;
                    await emailSubscriptions.UpdateAsync(emailCheck);
                }
                modalNotification.AddNotificationSweet("Email", NotificationType.success, "You subscribed to the list!");
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }
            catch
            {
                logger.LogInformation($"Failed adding email to list");
                modalNotification.AddNotificationSweet("Fail", NotificationType.error, "Please check your email!");
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }
        }
        public ActionResult Create(string userId, string submitType)
        {
            try
            {
                Guid trackingId = Guid.NewGuid();
                Guid userGuid;
                Guid.TryParse(userId, out userGuid);
                User user = this.GetUsersDal().GetUserByUserId(userGuid);
                EmailSubscription emailSubscription = this.GetUsersDal().GetEmailSubscriptionsByUserId(userGuid, true, SubscriptionType.WeeklyDeals.ToString()).FirstOrDefault();
                var unsubscribeUrl = this.GetUsersDal().GetUnsubscribeUrlInfo(user.Id).UnsubscribeUrl;
                var emailJob       = new DealsEmailCargo {
                    Id = trackingId, UserId = user.Id, EmailAddress = user.Email, LocationId = emailSubscription.LocationId, UnsubscribeUrl = unsubscribeUrl, Hints = new EmailJobHints(), Categories = user.Info.Preferences.Categories
                };
                if (user.Info != null && user.Info.Preferences != null)
                {
                    emailJob.Categories = user.Info.Preferences.Categories;
                }

                bool isTest = submitType == TestType;
                emailJob.Hints.IsTest = isTest;

                this.GetEmailJobsQueue().Enqueue(emailJob);

                return(this.RedirectToAction("Index", "EmailSubmit", new { trackingId, userGuid, isTest }));
            }
            catch (Exception e)
            {
                Log.Warn("Submit Email Job Return Error. Details: {0}", e);
                return(this.View("Error"));
            }
        }
Ejemplo n.º 4
0
        public EmailSubscription Create(EmailSubscription model)
        {
            try
            {
                Context.EmailSubscription.Add(model);
                Context.SaveChanges();

                return(model);
            }
            catch (Exception ex)
            {
                log.Fatal(ex);
                throw new Exception("DB error", ex.InnerException);
            }
        }
Ejemplo n.º 5
0
        protected void btnSendEmail_Click(object sender, EventArgs e)
        {
            EmailSubscription newEmail = new EmailSubscription(txtEmail.Text);

            try
            {
                bool insertEmail = EmailSubscriptionDB.InsertEmailSubscriptionInfo(newEmail);
                Response.Write("<script>alert('Thank you for subscribing to our latest travel deals!');</script>");
            }

            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 6
0
        public bool Update(EmailSubscription model)
        {
            try
            {
                this.Context.EmailSubscription.Update(model);
                this.Context.SaveChanges();

                return(true);
            }
            catch (Exception ex)
            {
                Log.Fatal(ex);
                throw new Exception("DB error", ex.InnerException);
            }
        }
Ejemplo n.º 7
0
        private static void DispatchNotificationMail(
            UsersDal usersDal,
            JobsQueue <EmailCargo> emailJobsQueue,
            string campaignName,
            string emailSubject,
            List <Guid> userIds)
        {
            int totalDispatched = 0;

            foreach (Guid userId in userIds)
            {
                User user = usersDal.GetUserByUserId(userId);
                EmailSubscription subscription = new EmailSubscription
                {
                    IsActive = true,
                    //Dummy location
                    LocationId       = "us:postal:00000",
                    SubscriptionType = SubscriptionType.Promotional,
                    UserId           = user.Id,
                };

                if (user.IsSuppressed == true)
                {
                    Record(
                        string.Format("User With Id={0} is suppressed", user.Id));
                }
                else
                {
                    totalDispatched++;
                    DispatchEmailJob(
                        subscription,
                        usersDal,
                        emailJobsQueue,
                        campaignName,
                        CampaignRenderingServiceURL,
                        false,
                        null,
                        false,
                        false,
                        emailSubject);
                    Record(string.Format("Total dispatched {0}", totalDispatched));
                }
            }
        }
        /// <summary>
        /// The convert.
        /// </summary>
        /// <param name="emailSubscriptionsResult">
        /// The email subscriptions result.
        /// </param>
        /// <returns>
        /// The <see cref="EmailSubscription"/>.
        /// </returns>
        internal static EmailSubscription Convert(GetEmailSubscriptions_Result emailSubscriptionsResult)
        {
            EmailSubscription emailSubscription = null;

            if (emailSubscriptionsResult != null)
            {
                emailSubscription = new EmailSubscription
                {
                    UserId      = emailSubscriptionsResult.UserId,
                    IsActive    = emailSubscriptionsResult.IsActive,
                    LocationId  = emailSubscriptionsResult.LocationId,
                    UpdatedDate = emailSubscriptionsResult.CreatedDate,
                    Email       = emailSubscriptionsResult.Email
                };

                SubscriptionType subscriptionType;
                Enum.TryParse(emailSubscriptionsResult.SubscriptionType, out subscriptionType);
                emailSubscription.SubscriptionType = subscriptionType;
            }

            return(emailSubscription);
        }
Ejemplo n.º 9
0
        private static void DispatchEmailJob(EmailSubscription emailSubscription, UsersDal usersDal, JobsQueue <EmailCargo> emailJobsQueue, string campaign, string emailRenderingUrl,
                                             bool isCloDeal, string[] categories, bool includeDeals = true, bool useTestAccount = false, string subject = null, IEnumerable <Guid> dealIds = null)
        {
            try
            {
                User   user           = usersDal.GetUserByUserId(emailSubscription.UserId);
                string unsubscribeUrl = usersDal.GetUnsubscribeUrlInfo(user.Id).UnsubscribeUrl;
                if (string.IsNullOrEmpty(user.Email))
                {
                    Record(string.Format("can't dispatch email job for user without emil address. User Id={0}", user.Id));

                    return;
                }
                if (string.IsNullOrEmpty(unsubscribeUrl))
                {
                    Record(string.Format("can't dispatch email job for user without unsubscribe url. User Id={0}", user.Id));

                    return;
                }

                DealsEmailCargo dealsEmailCargo = new DealsEmailCargo
                {
                    Id           = Guid.NewGuid(),
                    EmailAddress = user.Email,
                    Campaign     = campaign,
                    Hints        = new EmailJobHints {
                        IsTest = useTestAccount, IncludeDeals = includeDeals
                    },
                    LocationId     = emailSubscription.LocationId,
                    UnsubscribeUrl = unsubscribeUrl,
                    UserId         = user.Id,
                    DealIds        = dealIds,
                    IsCloDeal      = isCloDeal,
                    EmailRenderingServiceAddress = emailRenderingUrl
                };

                if (categories != null && categories.Any())
                {
                    List <Guid> lstGuid = new List <Guid>();
                    foreach (string category in categories)
                    {
                        lstGuid.Add(GetCategoryGuid(category));
                    }
                    dealsEmailCargo.Categories = lstGuid;
                }
                else
                {
                    dealsEmailCargo.Categories = (user.Info != null && user.Info.Preferences != null) ? user.Info.Preferences.Categories : null;
                }

                if (dealsEmailCargo.Hints.IncludeDeals && !string.IsNullOrEmpty(user.MsId) && !user.MsId.StartsWith("fb"))
                {
                    dealsEmailCargo.Anid = AnidIdentityProvider.Instance.DeriveIdentity(user.MsId.ToUpper());
                }
                if (!string.IsNullOrEmpty(subject))
                {
                    dealsEmailCargo.Subject = subject;
                }
                emailJobsQueue.Enqueue(dealsEmailCargo);
                Record(string.Format("Email Job Enqueued. Id={0}; LocationId={1};UnsubscribeUrl={2};UserId={3};CategoriesCount={4}",
                                     dealsEmailCargo.Id,
                                     dealsEmailCargo.LocationId,
                                     dealsEmailCargo.UnsubscribeUrl,
                                     dealsEmailCargo.UserId,
                                     dealsEmailCargo.Categories == null ? 0 : dealsEmailCargo.Categories.Count()));
            }
            catch (Exception e)
            {
                Log.Error("Error while dispathing email job. User Id={0}; Location Id={1}; Error={2}", emailSubscription.UserId, emailSubscription.LocationId, e);
            }
        }
Ejemplo n.º 10
0
 public static EmailSubscription ToEntity(this SubscriptionModel model, EmailSubscription destination)
 {
     return(Mapper.Map(model, destination));
 }
Ejemplo n.º 11
0
 public static SubscriptionModel ToModel(this EmailSubscription entity)
 {
     return(Mapper.Map <EmailSubscription, SubscriptionModel>(entity));
 }
        public async Task AddPostSuscribers(EmailSubscription emailSuscriber)
        {
            await _selahDbContext.AddAsync(emailSuscriber);

            await _selahDbContext.SaveChangesAsync();
        }