public async Task <IHttpActionResult> GetDefaultCoupons(ClientOrderModel order) { if (!this.ModelState.IsValid) { Logger.Current.LogWarning("Orders.GetDefaultCoupons: invalid model state"); return(this.BadRequest(this.ModelState)); } List <CouponeModel> defaultCoupons = new List <CouponeModel>(); IIdentity currentIdentity = this.User.Identity; bool isAuthenticated = currentIdentity.IsAuthenticated; bool isLoyalCustomer = false; if (isAuthenticated) { string currentUserId = currentIdentity.GetUserId(); using (ApplicationUserManager userManager = Startup.UserManagerFactory()) { isLoyalCustomer = await userManager.IsInRoleAsync(currentUserId, "LoyalCustomer"); } } //Volume discounts can be added here CouponesProvider couponesProvider = new CouponesProvider(); IEnumerable <CouponeModel> coupones = await couponesProvider.GetCoupons(isAuthenticated, isLoyalCustomer); return(this.Ok(coupones)); }
public async Task <bool> ValidateCoupones(string userId, FullOrderModel order) { CouponesProvider couponesProvider = new CouponesProvider(); foreach (CouponeModel coupone in order.Coupones) { if (!await couponesProvider.CouponeExists(coupone.Name, coupone.Value.Value, coupone.ValueType.Value, coupone.FreeShipping.Value)) { return(false); } if (!await this.CanUseCoupon(coupone, userId, order)) { } } return(true); }