Example #1
0
        public async Task Handle(SubmitOrderCommand message, IMessageHandlerContext context)
        {
            using (var db = new SalesContext())
            {
                Log.Info("Handle SubmitOrderCommand");

                var items = new List <Item>();

                var products = db.Products.ToList();

                message.Products.ForEach(p => items.Add(new Item
                {
                    Product = products.Single(s => s.Id == p)
                }));

                var order = new Data.Models.Order
                {
                    CustomerId  = message.CustomerId,
                    DateTimeUtc = DateTime.UtcNow,
                    Items       = items,
                    State       = "New"
                };

                db.Orders.Add(order);
                await db.SaveChangesAsync();

                await context.Publish <OrderSubmittedEvent>(e =>
                {
                    e.OrderId    = order.Id;
                    e.CustomerId = message.CustomerId;
                    e.Products   = message.Products;
                });
            }
        }
Example #2
0
 public void Update(Data.Models.Order order)
 {
     dbContext.Entry(order.OrderStatus).State = System.Data.Entity.EntityState.Unchanged;
     dbContext.Entry(order.Employee).State    = System.Data.Entity.EntityState.Unchanged;
     dbContext.Entry(order).State             = System.Data.Entity.EntityState.Modified;
     dbContext.SaveChanges();
 }
Example #3
0
        public void OrderUpdateTest(Data.Models.Order order, Order orderUpdate)
        {
            var options = new DbContextOptionsBuilder <FakeContext>()
                          .UseInMemoryDatabase(databaseName: nameof(OrderUpdateTest))
                          .Options;

            orderUpdate.Id = order.Id;
            using (var context = new FakeContext(options))
            {
                context.Orders.Add(order);
                context.SaveChanges();

                OrderManager manager = new OrderManager(context, _mapper);
                manager.Update(orderUpdate);

                Assert.Equal(context.Orders.Single(orderData => orderData.Id == order.Id).BeginDate,
                             orderUpdate.BeginDate);
                Assert.Equal(context.Orders.Single(orderData => orderData.Id == order.Id).EndDate,
                             orderUpdate.EndDate);
                Assert.Equal(context.Orders.Single(orderData => orderData.Id == order.Id).CarId,
                             orderUpdate.CarId);
                Assert.Equal(context.Orders.Single(orderData => orderData.Id == order.Id).UserId,
                             orderUpdate.UserId);
                Assert.Equal(context.Orders.Single(orderData => orderData.Id == order.Id).Comment,
                             orderUpdate.Comment);
            }
        }
Example #4
0
 public void Create(Data.Models.Order order)
 {
     dbContext.Entry(order.Car).State         = System.Data.Entity.EntityState.Unchanged;
     dbContext.Entry(order.Customer).State    = System.Data.Entity.EntityState.Unchanged;
     dbContext.Entry(order.OrderStatus).State = System.Data.Entity.EntityState.Unchanged;
     dbContext.Entry(order.OrderType).State   = System.Data.Entity.EntityState.Unchanged;
     dbContext.Entry(order.Employee).State    = System.Data.Entity.EntityState.Unchanged;
     dbContext.Order.Add(order);
     dbContext.SaveChanges();
 }
Example #5
0
 internal static Order ToViewModel(Data.Models.Order order)
 {
     return(new Order()
     {
         Id = order.Id,
         CustomerId = order.CustomerId,
         OrderFulfiled = order.OrderFulfiled,
         OrderPlaced = DateTime.Now.ToUniversalTime(),
         ProductOrders = order.ProductOrders.Select(x => ProductOrder.ToViewModel(x)).ToList(),
     });
 }
        public async Task <IActionResult> CheckoutAsync(Data.Models.Order order, double Lat, double Lng)
        {
            if (shoppingCart.IsEmpty)
            {
                ModelState.AddModelError("CartItems", "Shopping Cart Empty..");
            }
            var deliveryAreas = restaurant.GetDeliveryAreasByResturantId(shoppingCart.ResturantId);
            var list          = new List <string>();

            foreach (var area in Enum.GetValues <DeliveryAreas>())
            {
                if (deliveryAreas.HasFlag(area))
                {
                    list.Add(area.ToString());
                }
            }
            order.Address.Area = Regex.Replace(order.Address.Area, @"\s+", "");
            if (!list.Contains(order.Address.Area))
            {
                ModelState.AddModelError("Area", "Area out of coverage");
            }
            var user = await userManager.Users.Include(U => U.Addresses).SingleOrDefaultAsync(U => U.UserName == User.Identity.Name);

            if (ModelState.IsValid)
            {
                if (order.Address.ID == 0) //Save new address
                {
                    user.Addresses.Add(order.Address);
                }
                // save for upcoming requests
                TempData["Order"]         = JsonSerializer.Serialize(order); //order;
                TempData["LocalRedirect"] = true;
                return(RedirectToAction("Pay"));
            }
            var orderToPlace = new Data.Models.Order()
            {
                FirstName = user.FirstName,
                LastName  = user.LastName,
                Email     = user.Email
            };
            var checkoutVM = new CheckoutViewModel()
            {
                Order     = orderToPlace,
                Addresses = user.Addresses,
                Lat       = Lat,
                Lng       = Lng,
                showMap   = 1
            };

            return(View());
        }
Example #7
0
 public EditOrder(Data.Models.Order order)
 {
     _order            = order;
     Id                = order.Id;
     Car               = string.Format("{0} {1}", order.Car.Mark, order.Car.Model);
     Customer          = string.Format("{0} {1}", order.Customer.Name, order.Customer.Surname);
     Employee          = string.Format("{0} {1}", order.Employee.Name, order.Employee.Surname);
     OrderStatus       = order.OrderStatus.Name;
     OrderType         = order.OrderType.Name;
     RepairDescription = order.RepairDescription;
     EmployeeId        = order.Employee.Id;
     OrderStatusId     = order.OrderStatus.Id;
     OrderStatuses     = OtherService.GetOrderStatuses();
 }
            protected override async Task HandleCore(Command message)
            {
                var currentUserCart = await this.db.Carts
                                      .Include(c => c.OrderedItems)
                                      .ThenInclude(oi => oi.Product)
                                      .FirstOrDefaultAsync(c => c.User.UserName == message.SenderUserName);

                if (currentUserCart.OrderedItems.Any())
                {
                    var order = new Data.Models.Order();
                    order.DateMade     = DateTime.Now;
                    order.OrderedItems = currentUserCart.OrderedItems;
                    Mapper.Map(message, order);
                    this.db.Orders.Add(order);
                }
            }
Example #9
0
        public void OrderDeleteTest(Data.Models.Order order)
        {
            var options = new DbContextOptionsBuilder <FakeContext>()
                          .UseInMemoryDatabase(databaseName: nameof(OrderDeleteTest))
                          .Options;

            using (var context = new FakeContext(options))
            {
                context.Orders.Add(order);
                context.SaveChanges();

                OrderManager manager = new OrderManager(context, _mapper);
                manager.Delete(order.Id);

                Assert.Null(context.Orders.SingleOrDefault(orderData => orderData.Id == order.Id));
            }
        }
Example #10
0
        /// <summary>
        /// Map to database model from Service model
        /// </summary>
        /// <param name="from"></param>
        /// <param name="includeDeps"></param>
        /// <returns></returns>
        public static Data.Models.Order MapBack(Order from, bool includeDeps = true)
        {
            if (from == null)
            {
                return(null);
            }

            var dto = new Data.Models.Order()
            {
                Id          = from.Id,
                CustomerId  = from.CustomerId,
                CreatedDate = from.CreatedDate,
                Price       = from.Price,
                Customer    = includeDeps ? CustomerMap.MapBack(from.Customer, false) : null
            };

            return(dto);
        }
 public Create GetCreateViewModel(Data.Models.Order order)
 {
     return(new Create(order)
     {
         Customers = _customerService.Customers.Select(n => new SelectListItem
         {
             Value = n.Id.ToString(),
             Text = string.Format("{0} {1}", n.Name, n.Surname)
         }),
         OrderStatuses = OtherService.GetOrderStatuses(),
         OrderTypes = OtherService.GetOrderTypes(),
         Empolyees = _employeeService.Employees.Select(n => new SelectListItem
         {
             Value = n.Id.ToString(),
             Text = string.Format("{0} {1}", n.Name, n.Surname)
         }),
         Cars = new List <SelectListItem>()
     });
 }
Example #12
0
        public async Task ListsOnlyUnshippedOrders(SliceFixture fixture)
        {
            // Arrange
            // Add some orders
            var firstOrder = new Data.Models.Order
            {
                Name    = "Some name",
                Line1   = "An address",
                City    = "City",
                Country = "Country",
                Zip     = "Zip",
                State   = "State",
                Shipped = true
            };

            var secondOrder = new Data.Models.Order
            {
                Name         = "Some name2",
                Line1        = "An address2",
                City         = "City2",
                Country      = "Country2",
                Zip          = "Zip2",
                State        = "State2",
                Shipped      = false,
                OrderedItems = new List <Data.Models.CartItem>
                {
                    new Data.Models.CartItem()
                }
            };

            await fixture.InsertAsync(firstOrder, secondOrder);

            // Act
            var query          = new Orders.Query();
            var ordersReceived = await fixture.SendAsync(query);

            // Assert
            ordersReceived.Count().ShouldBe(1);
            ordersReceived.First().Name.ShouldBe(secondOrder.Name);
            ordersReceived.First().Zip.ShouldBe(secondOrder.Zip);
            ordersReceived.First().OrderedItems.Count.ShouldBe(secondOrder.OrderedItems.Count);
        }
Example #13
0
        public ServiceResponse <bool> GenerateOpenOrder(Data.Models.Order order)
        {
            var now = DateTime.UtcNow;

            _logger.LogInformation("Generating new order");

            foreach (var item in order.OrderItems)
            {
                item.Product = _productService
                               .GetProduct(item.Product.Id);
                var inventoryId = _inventoryService
                                  .GetByProductId(item.Product.Id).Id;
                _inventoryService
                .UpdateAvailableQuantity(inventoryId, -item.Quantity);
            }

            try
            {
                _db.Orders.Add(order);
                _db.SaveChanges();

                return(new ServiceResponse <bool>
                {
                    IsSuccess = true,
                    Data = true,
                    Message = "Open order created",
                    Time = now
                });
            }

            catch (Exception e)
            {
                return(new ServiceResponse <bool>
                {
                    IsSuccess = false,
                    Data = false,
                    Message = e.StackTrace,
                    Time = now
                });
            }
        }
        public async Task <IActionResult> Checkout()
        {
            var user = await userManager.Users.Include(U => U.Addresses).SingleOrDefaultAsync(U => U.UserName == User.Identity.Name);

            var orderToPlace = new Data.Models.Order()
            {
                FirstName = user.FirstName,
                LastName  = user.LastName,
                Email     = user.Email
            };
            var checkoutVM = new CheckoutViewModel()
            {
                Order     = orderToPlace,
                Addresses = user.Addresses,
                Lat       = 30,
                Lng       = 31,
                showMap   = 0
            };

            return(View(checkoutVM));
        }
Example #15
0
 public Create(Data.Models.Order order)
 {
     _order = order;
 }
        public OrderDALToOrderBLProfile()
        {
            var p = new Data.Models.Order();

            this.CreateMap <Data.Models.Order, Order>();
        }