コード例 #1
0
        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));
        }
コード例 #2
0
        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}");
            }
        }
コード例 #3
0
        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"));
        }
コード例 #4
0
        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 }));
        }
コード例 #5
0
        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());
        }
コード例 #6
0
ファイル: OrderItemService.cs プロジェクト: mazj/JobSystem
        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);
        }
コード例 #7
0
 public OrderItem Create(OrderItem orderItem)
 {
     return(orderItemRepository.Create(orderItem));
 }
コード例 #8
0
 public void Create(OrderItem OrderItem)
 {
     OrderItemRepository.Create(OrderItem);
 }
コード例 #9
0
ファイル: OrderItemLogic.cs プロジェクト: Bedpaw/ShopOnline
        public async Task <Result> Add(OrderItem orderItem)
        {
            await _orderItemRepository.Create(orderItem);

            return(Result.Ok());
        }