public async Task<IHttpActionResult> Validate(ClientOrderModel order) { if (order == null) { Logger.Current.LogWarning("Orders.Validate: null"); return this.BadRequest("Empty order"); } if (!this.ModelState.IsValid) { Logger.Current.LogWarning("Orders.Validate: invalid model state"); return this.BadRequest(this.ModelState); } if (order.Items.Count() == 0) { Logger.Current.LogWarning("Orders.Validate: no items"); return this.BadRequest("Empty order"); } OrderItemsGrouper itemsGrouper = new OrderItemsGrouper(); IList<OrderedItemModel> normalizedItems = itemsGrouper.NormalizeOrderedItems(order.Items.ToList()); if (normalizedItems == null) { Logger.Current.LogWarning("Orders.Validate: grouping error"); return this.BadRequest("Different prices of the same item"); } OrderValidator orderValidator = new OrderValidator(); bool isOrderValid = await orderValidator.ValidateOrderItems(normalizedItems); if (!isOrderValid) { Logger.Current.LogWarning("Orders.Validate: invalid quantities"); return this.BadRequest("Invalid quantities"); } return this.Ok(); }
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); }