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()); } }
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); }
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; } }
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)); } }
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")); }
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)); } }