public DTO.Messages.Wrapper RemoveOne(DTO.Messages.AddToCart ToBeRemoved = null) { var Result = AuthorizeResponse(); if (ToBeRemoved == null) { Result.Messages.Add("PostBody", "can't be empty"); } if (string.IsNullOrWhiteSpace(ToBeRemoved.ProductId)) { Result.Messages.Add("ProductId", "can't be empty"); } if (ToBeRemoved.Quantity == 0) { Result.Messages.Add("Quantity", "can't be Zero (0)"); } if (Result.Messages.Count > 0) { Result.Code = 400; Result.Status = "Bad Request"; return(Result); } var Session = SessionRepo.GetOne(Token.jti); var Removed = false; if (ToBeRemoved.Quantity < 0) { Session.Cart.Remove(ToBeRemoved.ProductId); Removed = true; } else { Session.Cart.TryGetValue(ToBeRemoved.ProductId, out int Left); if (Left < 1 || Left - ToBeRemoved.Quantity < 1) { Session.Cart.Remove(ToBeRemoved.ProductId); Removed = true; } else { Session.Cart[ToBeRemoved.ProductId] = (Left - ToBeRemoved.Quantity); Removed = false; } } SessionRepo.Save(Session); Result.Messages.Add("ItemStatus", Removed ? "Ok" : "Reduced"); Result.Data = ToBeRemoved; return(Result); }
public DTO.Messages.Wrapper AddOne(DTO.Messages.AddToCart Adding = null) { var Result = AuthorizeResponse(); if (Adding == null) { Result.Messages.Add("PostBody", "can't be empty"); } else { if (string.IsNullOrWhiteSpace(Adding.ProductId)) { Result.Messages.Add("ProductId", "can't be empty"); } else { var Product = ProductRepo.GetOne(Adding.ProductId); if (Product == null) { Result.Messages.Add("ProductId", "is invalid"); } else if (Product.Scored() < 0) { Result.Messages.Add("Product", "is unavailable due to Promotions"); } } if (Adding.Quantity < 1) { Result.Messages.Add("Quantity", "must be greater than 0"); } } if (Result.Messages.Count > 0) { Result.Code = 400; Result.Status = "Bad Request"; return(Result); } var Session = SessionRepo.GetOne(Token.jti); Session.Cart.Add(Adding.ProductId, Adding.Quantity); SessionRepo.Save(Session); Result.Data = Adding; return(Result); }