public CreateOrderOutput AddItemByOrderId([FromBody] CreateOrderInput input) { decimal sum = 0; CreateOrderOutput output = new CreateOrderOutput(); if (input == null) { output.Status = "INPUT_IS_NULL"; } else { Order order = _db.Orders.Where(e => e.Id.Equals(input.OrderId) && e.Deleted == false && e.Status == 1).FirstOrDefault(); if (order == null) { output.Status = "ORDER_NOT_EXIST"; } else { if (input.Items != null) { foreach (CreateOrderItem item in input.Items) { OrderItem orderItem = order.OrderItems.Where(e => e.MenuItem.Id.Equals(item.ItemId) && e.Deleted == false).FirstOrDefault(); MenuItem menuItem = _db.MenuItems.Where(e => e.Id.Equals(item.ItemId) && e.Deleted == false).FirstOrDefault(); sum += (decimal)item.Quantity * menuItem.Price; if (orderItem == null) { OrderItem newItem = new OrderItem() { Order = order, MenuItem = menuItem, UnitPrice = menuItem.Price, Quantity = item.Quantity }; if (order.OrderItems == null) { order.OrderItems = new List <OrderItem>(); } order.OrderItems.Add(newItem); } else { orderItem.Quantity += item.Quantity; } output.Status = "OK"; _db.SaveChanges(); } } output.Status = "OK"; order.Amount += sum; _db.SaveChanges(); } } return(output); }
public async Task Execute(CreateOrderInput input) { if (input == null) { _outputHandler.Error("Input is null."); return; } var parcel = new Parcel() { Name = input.ParcelName, Description = input.ParcelDescription }; var Parcel = await _parcelRepository.AddParcel(parcel); var order = new Order() { SenderId = input.SenderId, RecipientName = input.RecipientName, RecipientSurname = input.RecipientSurname, RecipientPhonenumber = input.RecipientPhoneNumber, ParcelId = Parcel.Id, Status = input.Status }; await _orderRepository.RegisterOrder(order); var createOrderOutput = new CreateOrderOutput( input.SenderId, input.RecipientName, input.RecipientSurname, input.RecipientPhoneNumber, Parcel, input.Status ); _outputHandler.Standard(createOrderOutput); }
public void Standard(CreateOrderOutput output) { ViewModel = new JsonResult(output); }
public CreateOrderOutput Create([FromBody] CreateOrderInput input) { CreateOrderOutput output = new CreateOrderOutput(); Order newOrder = new Order(); bool orderCreated = false; Vendor selectedVendor = _db.Vendors.Where(e => e.Id.Equals(input.VendorId)).FirstOrDefault(); decimal sum = 0; if (selectedVendor == null) { output.Status = "INCORRECT_VENDOR_ID"; } else { output.VendorId = selectedVendor.Id; newOrder.Status = 1; newOrder.Vendor = selectedVendor; // Advised not to be used if (input.Type == 1) { output.OrderId = newOrder.Id; output.Status = "OK"; _db.Orders.Add(newOrder); _db.SaveChanges(); orderCreated = true; } else if (input.Type == 2) { SessionService session = new SessionService(_db, input.SessionId, input.SessionKey); if (session.IsValid) { User selectedUser = session.User; output.OrderId = newOrder.Id; output.Status = "OK"; output.UserId = selectedUser.Id; newOrder.User = session.User; _db.Orders.Add(newOrder); _db.SaveChanges(); orderCreated = true; } else { output.Status = "SESSION_NOT_FOUND_OR_EXPIRED"; } } } if (orderCreated) { Order selectedOrder = _db.Orders.Where(e => e.Id.Equals(newOrder.Id)).FirstOrDefault(); selectedOrder.OrderItems = new List <OrderItem>(); if (input.Items != null) { foreach (CreateOrderItem item in input.Items) { MenuItem orderItem = _db.MenuItems.Where(e => e.Id.Equals(item.ItemId)).FirstOrDefault(); if (orderItem != null) { if (selectedOrder.OrderItems.Where(e => e.MenuItem == orderItem).Count() <= 0) { sum += orderItem.Price * (decimal)item.Quantity; selectedOrder.OrderItems.Add(new OrderItem() { Order = newOrder, MenuItem = orderItem, UnitPrice = orderItem.Price, Quantity = item.Quantity }); } else { selectedOrder.OrderItems.Where(e => e.MenuItem == orderItem).FirstOrDefault().Quantity += item.Quantity; } _db.SaveChanges(); } } newOrder.Amount = sum; _db.SaveChanges(); } } return(output); }