public ICommandResult Handle(CreateOrderItemCommand command) { command.Validate(); if (Invalid) { return(new GenericCommandResult(false, "Ocorreu um erro", command.Notifications)); } var client = _clientRepository.GetClientById(command.Client).First(); if (client == null) { return(new GenericCommandResult(false, "Cliente inválido", client)); } var orderItem = new OrderItem(command.Product, command.Price, command.Quantity); client.Order.AddItems(orderItem); AddNotifications(orderItem, client); if (Invalid) { return(new GenericCommandResult(false, "Ocorreu um erro", Notifications)); } _clientRepository.Update(client); _orderRepository.Update(client.Order); foreach (var item in client.Order.Items) { _orderItemRepository.Create(item); } return(new GenericCommandResult(true, "Pedido criado com sucesso", client)); }
public OrderItem CreateOrderItem(string userId, OrderItemModel item) { if (_orderRepo.FindById(item.OrderId)?.State == (int)OrderStatus.New) { var newOrderItem = _orderItemRepo.Create(new OrderItem() { Name = item.Name, Price = item.Price, ProductId = item.ProductId, Remark = item.Remark, CreatedAt = DateTime.UtcNow, CreatedBy = userId, OrderId = item.OrderId, OrderItemOptions = item.Options.Select(x => new OrderItemOption() { Name = x.Name, Value = x.Value }).ToList() }); return(newOrderItem); } else { throw new Exception($"Failed to create orderItem for order: {item.OrderId}"); } }
public IActionResult Order(int id) { var sessionData = HttpContext.Session.GetString(Session.Key); if (string.IsNullOrEmpty(sessionData)) { _logger.LogError("Attempt to make an order before accessing products list"); return(StatusCode(500)); } var numberOfDays = int.Parse(Request.Form["numberOfDays"]); var session = JsonConvert.DeserializeObject <Session>(sessionData); var order = _orderRepository.GetBy(o => o.UserId == session.ID).FirstOrDefault(); if (order == null) { _logger.LogInformation($"Creating order placeholder for user ${session.ID}"); order = new Order(DateTime.UtcNow, session.ID); _orderRepository.Create(order); _orderRepository.Save(); } _orderItemRepository.Create(new OrderItem(DateTime.UtcNow, numberOfDays, order.Id, id)); _orderItemRepository.Save(); _logger.LogInformation($"Added order item {id} for user's {session.ID} cart"); return(RedirectToAction("Index")); }
public async Task <ActionResult> ProceedPayment(Checkout_Payment vm) { if (ModelState.IsValid) { //var userManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); //var user = await userManager.FindByNameAsync(User.Identity.Name); var cart = GetCart(); var clientInfo = cart.ClientDetails; var step2CheckInputs = cart.ClientDetails.HasEmptyProperties(); if (!step2CheckInputs) { RedirectToAction("Checkout", new { step = 2 }); } cart.UpdatePayment(vm); //update user payment details //user.Payment = vm.Payment; //await userManager.UpdateAsync(user); //make order var order = new Order(); order.Address = cart.ClientDetails.Address; order.Name = string.Format("{0} {1}", clientInfo.FirstName, clientInfo.LastName); order.Phone = clientInfo.Phone; order.OrderStatus = "Не просмотрено"; order.Payment = clientInfo.Payment; order.CreatedAt = DateTime.Now; order.EmailAddress = cart.ClientDetails.Email; order.Delivery = clientInfo.Delivery; order.OrderSum = cart.TotalValue(); order.Sequance = 1; _order.Create(order); foreach (var item in cart.Lines) { _orderItem.Create(item.Product, item.Quantity, order.ID, item.Cloth, item.Color); } /* * YaMoney ya = new YaMoney(); * string url = ya.GetTokenRequestURL(); * Response.Redirect(url); */ cart.Clear(); return(RedirectToAction("Finished", new { orderId = EncryptHelper.Encrypt(order.ID.ToString()) })); } return(RedirectToAction("Index", new { step = 4 })); }
public async Task <ActionResult <OrderConfirmationTransferObject> > Checkout(CheckoutTransferObject checkoutTransferObject) { var stockSecured = await _inventoryService.Post(checkoutTransferObject); if (stockSecured) { var order = new Order { CardType = checkoutTransferObject.PaymentInfo.CardType, CardLastFourDigits = checkoutTransferObject.PaymentInfo.CardNumber.Skip(12).ToString(), City = checkoutTransferObject.Customer.Address.City, FirstLine = checkoutTransferObject.Customer.Address.FirstLine, SecondLine = checkoutTransferObject.Customer.Address.SecondLine, FirstName = checkoutTransferObject.Customer.FirstName, LastName = checkoutTransferObject.Customer.LastName, EmailAddress = checkoutTransferObject.Customer.EmailAddress, State = checkoutTransferObject.Customer.Address.State, PostalCode = checkoutTransferObject.Customer.Address.PostalCode, DeliveryCost = checkoutTransferObject.DeliveryCost, DeliveryTax = checkoutTransferObject.DeliveryTax, Total = checkoutTransferObject.Total }; _orderRepository.Create(order); await _orderRepository.SaveChanges(); _orderItemRepository.Create(checkoutTransferObject.Cart, order.Id); await _orderItemRepository.SaveChanges(); var orderConfirmation = new OrderConfirmationTransferObject { DeliveryCost = order.DeliveryCost, DeliveryTax = order.DeliveryTax, Id = order.Id, OrderDate = DateTime.Now, OrderItems = checkoutTransferObject.Cart.CartItems, Total = order.Total }; return(Ok(orderConfirmation)); } return(BadRequest()); }
private OrderItem DoCreateOrderItem( Guid id, Guid orderId, string description, int quantity, string partNo, string instructions, int deliveryDays, Guid jobItemId, decimal price, ListItemType jobItemStatusType, decimal?carriage) { if (!CurrentUser.HasRole(UserRole.Member)) { throw new DomainValidationException(OrderItemMessages.InsufficientSecurity, "CurrentUser"); } if (id == Guid.Empty) { throw new ArgumentException("A valid ID must be supplied for the order item"); } var order = GetOrder(orderId); var orderItem = new OrderItem(); orderItem.Id = id; orderItem.Order = order; orderItem.ItemNo = order.OrderItems.Count + 1; orderItem.Description = description; orderItem.Quantity = GetQuantity(quantity); orderItem.PartNo = partNo; orderItem.Instructions = instructions; orderItem.DeliveryDays = GetDeliveryDays(deliveryDays); orderItem.Price = GetPrice(price); orderItem.Carriage = GetCarriage(carriage); ValidateAnnotatedObjectThrowOnFailure(orderItem); if (jobItemId != Guid.Empty) { var jobItem = GetJobItem(jobItemId); jobItem.Status = _listItemRepository.GetByType(jobItemStatusType); _jobItemRepository.Update(jobItem); _jobItemRepository.EmitItemHistory( CurrentUser, jobItem.Id, 0, 0, "Item on order OR2000", jobItemStatusType, ListItemType.WorkTypeAdministration); orderItem.JobItem = jobItem; } _orderItemRepository.Create(orderItem); return(orderItem); }
public OrderItem Create(OrderItem orderItem) { return(orderItemRepository.Create(orderItem)); }
public void Create(OrderItem OrderItem) { OrderItemRepository.Create(OrderItem); }
public async Task <Result> Add(OrderItem orderItem) { await _orderItemRepository.Create(orderItem); return(Result.Ok()); }