예제 #1
0
        private List <DealsModel> GetRelevantPerks(string url, List <DealsModel> userBenefits, bool forcePopup)
        {
            List <DealsModel> dealModels = new List <DealsModel>();
            string            userId     = userBenefits[0]?.UserId;

            var domainAddress = GetDomainOnly(url);
            var similarSites  = GetSimilarSites(domainAddress);

            foreach (DealsModel userBenefit in userBenefits)
            {
                foreach (string perk in userBenefit.Perks)
                {
                    if (similarSites.Contains(perk))
                    {
                        var message = $"{userBenefit.TypeOfDeal} found for similar website in your perk list. {perk} ";

                        var newUserBenefit = new DealsModel()
                        {
                            UserId     = userBenefit.UserId,
                            TypeOfDeal = userBenefit.TypeOfDeal,
                            Message    = message,
                            OnClickUrl = userBenefit.OnClickUrl
                        };

                        if (!isOnCoolDown(userId, newUserBenefit) || forcePopup)
                        {
                            dealModels.Add(newUserBenefit);
                        }
                    }
                }
            }

            return(dealModels);
        }
 public Deal Get(int id)
 {
     using (DealsModel entities = new DealsModel())
     {
         return(entities.Deals.FirstOrDefault(e => e.DealId == id));
     }
 }
 public IEnumerable <Deal> Get()
 {
     using (DealsModel entities = new DealsModel())
     {
         return(entities.Deals.ToList());
     }
 }
예제 #4
0
        private bool isOnCoolDown(string userId, DealsModel userBenefit)
        {
            Tuple <string, string> userAndMessage =
                new Tuple <string, string>(userId, userBenefit.Message);

            if (!popupTimers.ContainsKey(userAndMessage) || (popupTimers[userAndMessage].AddSeconds(10) < DateTime.Now))
            {
                return(false);
            }

            return(true);
        }
예제 #5
0
        private void setCoolDown(string userId, DealsModel userBenefit)
        {
            Tuple <string, string> userAndMessage =
                new Tuple <string, string>(userId, userBenefit.Message);

            if (!popupTimers.ContainsKey(userAndMessage))
            {
                popupTimers.Add(userAndMessage, DateTime.Now);
            }
            else if (popupTimers[userAndMessage].AddSeconds(10) < DateTime.Now) // If this time has passed, then add the popup in list again
            {
                popupTimers[userAndMessage] = DateTime.Now;
            }
        }
예제 #6
0
 public IActionResult Update(DealsModel model)
 {
     try
     {
         var data         = db.Deal.Where(c => c.Id == model.Id).FirstOrDefault();
         var dealProducts = db.DealProduct.Where(x => x.DealId == model.Id).ToList();
         db.DealProduct.RemoveRange(dealProducts);
         db.SaveChanges();
         if (data != null)
         {
             data.ActiveToTime      = model.ActiveToTime;
             data.ActiveFromTime    = model.ActiveFromTime;
             data.CategoryId        = model.CategoryId;
             data.ActiveFrom        = model.ActiveFrom;
             data.ActiveTo          = model.ActiveTo;
             data.Discount          = model.Discount;
             data.QuantityPerUser   = model.QuantityPerUser;
             data.DealQty           = model.DealQty;
             data.SoldQty           = model.SoldQty;
             data.Status            = model.Status;
             data.IsFeatured        = model.IsFeatured;
             data.Name              = model.Name;
             data.ProductCategoryId = model.ProductCategoryId;
             data.IsActive          = true;
             data.IsShow            = model.IsShow;
             db.SaveChanges();
             List <DealProduct> dealproduct = new List <DealProduct>();
             foreach (var item in model.DealProduct)
             {
                 item.DealId = data.Id;
             }
             db.DealProduct.UpdateRange(model.DealProduct);
             db.SaveChanges();
             return(Ok(true));
         }
         else
         {
             return(Ok(false));
         }
     }
     catch (Exception ex)
     {
         return(Ok(ex));
     }
 }
예제 #7
0
        public ActionResult CreateDeal(string userid, string typeOfDeal, string onClickUrl, string message, string perks)
        {
            var newDeal = new DealsModel
            {
                Id         = new ObjectId(),
                UserId     = userid,
                TypeOfDeal = typeOfDeal,
                OnClickUrl = onClickUrl,
                Message    = message
            };

            var dealPerks = perks.Split(',').ToList();

            newDeal.Perks = dealPerks;

            var collection = context.db.GetCollection <DealsModel>("Benefits");

            collection.InsertOne(newDeal);

            return(Redirect("/Home/GetCompanyDiscounts"));
        }
예제 #8
0
        public IActionResult Add(DealsModel model)
        {
            try
            {
                if (model != null)
                {
                    var data = new Deal();
                    data.CategoryId        = model.CategoryId;
                    data.ActiveFrom        = model.ActiveFrom;
                    data.ActiveTo          = model.ActiveTo;
                    data.Discount          = model.Discount;
                    data.QuantityPerUser   = model.QuantityPerUser;
                    data.DealQty           = model.DealQty;
                    data.ActiveToTime      = model.ActiveToTime;
                    data.ActiveFromTime    = model.ActiveFromTime;
                    data.SoldQty           = model.SoldQty;
                    data.Status            = model.Status;
                    data.IsFeatured        = model.IsFeatured;
                    data.Name              = model.Name;
                    data.IsActive          = true;
                    data.IsShow            = model.IsShow;
                    data.ProductCategoryId = model.ProductCategoryId;
                    db.Deal.Add(data);
                    var result = db.SaveChanges();
                    List <DealProduct> dealproduct = new List <DealProduct>();
                    foreach (var item in model.DealProduct)
                    {
                        item.DealId = data.Id;
                    }

                    db.DealProduct.AddRange(model.DealProduct);
                    db.SaveChanges();

                    var product     = db.ProductVariantDetails.Where(b => b.Id == data.CategoryId).Include(n => n.Product)?.FirstOrDefault()?.Product;
                    var productName = product?.Name;

                    //------creating notification
                    var noti = new Notification();
                    noti.CreatedDate        = System.DateTime.Now;
                    noti.DeletedDate        = null;
                    noti.ReadDate           = null;
                    noti.IsRead             = false;
                    noti.IsDeleted          = false;
                    noti.IsActive           = true;
                    noti.NotificationTypeId = Convert.ToInt32(Helper.NotificationType.DealOffer);
                    noti.Title              = model.Name;
                    noti.SpanishTitle       = model.Name;
                    noti.Description        = ("Deal started from(" + data.ActiveFrom.ToShortDateString() + " to " + data.ActiveTo.ToShortDateString() + ")").ToString();
                    noti.SpanishDescription = ("El trato comenzó a partir de(" + data.ActiveFrom.ToShortDateString() + " a " + data.ActiveTo.ToShortDateString() + ")").ToString();
                    var TargetURL = db.NotificationTypes.Where(b => b.Id == Convert.ToInt32(Helper.NotificationType.DealOffer) && b.IsActive == true)
                                    .FirstOrDefault()?.BaseURL + "?Id=" + data.Id;
                    noti.TargetURL = TargetURL;
                    noti.UserId    = 0;
                    //----saving notification of purcahse order
                    var users  = db.Users.Where(c => c.IsActive == true && c.RoleId == (int)RoleType.Customer).Select(c => c.Id).ToList();
                    var status = NotificationHelper.saveNotification(noti, db, users);


                    return(Ok(true));
                }
                else
                {
                    return(Ok("receive null model!"));
                }
            }
            catch (Exception ex)
            {
                return(Ok(ex));
            }
        }