public OrdersModule(IOrderRepository orderRepository) : base("/orders") { Get("/", _ => { var orders = orderRepository.GetAll(); return(orders); }); Post("/", _ => Response.AsCreatedResource(911)); Post("/{id:int}", parameters => { var model = this.Bind <List <OrderItem> > (); int id = parameters.id; var result = orderRepository.AddItemsToOrder(id, model); return(result ? HttpStatusCode.Created : HttpStatusCode.NotFound); //loc header }); Get("/{id:int}", parameters => { int id = parameters.id; var order = orderRepository.GetById(id); if (order == null) { return(HttpStatusCode.NotFound); } return(order); }); Get("/{id:int}/items", parameters => { int id = parameters.id; var items = orderRepository.GetItemsForOrder(id); return(items); }); Delete("/{id:int}", parameters => { int id = parameters.id; var result = orderRepository.Delete(id); return(result ? HttpStatusCode.NoContent : HttpStatusCode.NotFound); }); }
public OrdersModule (IOrderRepository orderRepository) : base ("/orders") { Get ("/" , _ => { var orders = orderRepository.GetAll (); return orders; }); Post ("/", _ => Response.AsCreatedResource (911)); Post ("/{id:int}", parameters => { var model = this.Bind<List<OrderItem>> (); int id = parameters.id; var result = orderRepository.AddItemsToOrder (id, model); return result ? HttpStatusCode.Created : HttpStatusCode.NotFound; //loc header }); Get ("/{id:int}", parameters => { int id = parameters.id; var order = orderRepository.GetById (id); if (order == null) { return HttpStatusCode.NotFound; } return order; }); Get ("/{id:int}/items", parameters => { int id = parameters.id; var items = orderRepository.GetItemsForOrder (id); return items; }); Delete ("/{id:int}", parameters => { int id = parameters.id; var result = orderRepository.Delete (id); return result ? HttpStatusCode.NoContent : HttpStatusCode.NotFound; }); }
public async Task <int> CreateOrderAsync(List <OrderItemModel> cart) { string userEmail = _contextAccessor.HttpContext.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Email)?.Value; var user = await _userRepository.GetUserByEmailAsync(userEmail); decimal totalAmount = 0; for (int i = 0; i < cart.Count; i++) { totalAmount += cart[i].Amount * cart[i].PrintingEdition.Price; } var payment = new Payment() { TransactionId = string.Empty }; Order order = new Order { UserId = user.Id, Date = DateTime.Now, TotalAmount = totalAmount, Status = Enums.Status.Unpaid }; order = await _orderRepository.CreateOrderAsync(order, payment); var orderItems = _mapper.Map <List <OrderItemModel>, List <OrderItem> >(cart); for (int i = 0; i < orderItems.Count; i++) { orderItems[i].OrderId = order.Id; } await _orderRepository.AddItemsToOrder(orderItems); return(order.Id); }
public OrdersModule(IOrderRepository orderRepository) : base("/orders") { Get("/", _ => { var orders = orderRepository.GetAll(); return(orders); }); Post("/", _ => { var model = this.Bind <List <OrderItem> >(); var createdOrder = orderRepository.CreateNewOrder(model); return(Response.AsCreatedResource(createdOrder.OrderNumber)); }); Post("/{id:Guid}", parameters => { var model = this.Bind <List <OrderItem> >(); Guid id = parameters.id; var result = orderRepository.AddItemsToOrder(id, model); return(result ? HttpStatusCode.Created : HttpStatusCode.NotFound); }); Get("/{id:Guid}", parameters => { Guid id = parameters.id; var order = orderRepository.GetById(id); if (order == null) { return(HttpStatusCode.NotFound); } return(order); }); Get("/{id:Guid}/items", parameters => { Guid id = parameters.id; var items = orderRepository.GetItemsForOrder(id); return(items); }); Delete("/{id:Guid}", parameters => { Guid id = parameters.id; var result = orderRepository.Delete(id); return(result ? HttpStatusCode.NoContent : HttpStatusCode.NotFound); }); Post("/{id:Guid}/ship", parameters => { Guid id = parameters.id; var model = this.Bind <ShipTo>(); var order = orderRepository.GetById(id); if (order == null || order.Status == "Shipped" || order.Status == "Returned") { return(HttpStatusCode.NotFound); } orderRepository.ChangeStatus(id, "Shipped", $"Shipped to {model.Name}, {model.Address} on {DateTime.Now}\n"); return(HttpStatusCode.OK); }); Post("/{id:Guid}/return", parameters => { Guid id = parameters.id; var model = this.Bind <Return>(); var order = orderRepository.GetById(id); if (order == null || order.Status != "Shipped") { return(HttpStatusCode.NotFound); } orderRepository.ChangeStatus(id, "Returned", $"Returned on {DateTime.Now}, reason: {model.Reason}"); return(HttpStatusCode.OK); }); }