public async Task <IActionResult> Edit(OrderAdminEditViewModel inputModel)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(inputModel));
            }

            await this.ordersService.EditOrderAsync(inputModel);

            return(this.RedirectToAction("Orders", "Users", new { id = inputModel.UserId }));
        }
Esempio n. 2
0
        public async Task EditOrderAsyncShouldThrowExceptionIfDeliveryAddressIdIsIncorrect()
        {
            var options = new DbContextOptionsBuilder <MyCalisthenicAppDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;

            var dbContext = new MyCalisthenicAppDbContext(options);

            IHttpContextAccessor httpContextAccessor = new HttpContextAccessor();

            var usersService = new UsersService(httpContextAccessor, dbContext, null);

            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new MyCalisthenicAppProfile());
            });

            var mapper = mockMapper.CreateMapper();

            var ordersService = new OrdersService(dbContext, mapper, usersService);

            var user = new ApplicationUser
            {
                Id        = UserId,
                FirstName = UserFirstName,
                LastName  = UserLastName,
            };

            await dbContext.Users.AddAsync(user);

            await dbContext.SaveChangesAsync();

            var orderModel = new OrderAdminEditViewModel
            {
                UserId = user.Id,
            };

            var exception = await Assert.ThrowsAsync <ArgumentNullException>(async() => await ordersService.EditOrderAsync(orderModel));

            Assert.IsType <ArgumentNullException>(exception);
        }
Esempio n. 3
0
        public async Task EditOrderAsync(OrderAdminEditViewModel inputModel)
        {
            if (!this.dbContext.Users.Any(u => u.Id == inputModel.UserId))
            {
                throw new ArgumentNullException(string.Format(ServicesConstants.InvalidUserId, inputModel.UserId));
            }

            if (!this.dbContext.Addresses.Any(u => u.Id == inputModel.DeliveryAddressId))
            {
                throw new ArgumentNullException(string.Format(ServicesConstants.InvalidAddressId, inputModel.DeliveryAddressId));
            }

            var order = await this.dbContext.Orders
                        .Where(c => c.Id == inputModel.Id)
                        .FirstOrDefaultAsync();

            if (order == null)
            {
                throw new ArgumentNullException(string.Format(ServicesConstants.InvalidOrderId, inputModel.Id));
            }

            Enum.TryParse(inputModel.PaymentStatus, true, out PaymentStatus paymentStatus);

            Enum.TryParse(inputModel.Status, true, out OrderStatus orderStatus);

            Enum.TryParse(inputModel.PaymentType, true, out PaymentType paymentType);

            order.IsDeleted = inputModel.IsDeleted;

            order.DeletedOn = inputModel.DeletedOn;

            order.ModifiedOn = inputModel.ModifiedOn;

            order.CreatedOn = inputModel.CreatedOn;

            order.MembershipPrice = inputModel.MembershipPrice;

            order.PaymentStatus = paymentStatus;

            order.Status = orderStatus;

            order.PaymentType = paymentType;

            order.EstimatedDeliveryDate = inputModel.EstimatedDeliveryDate;

            order.DisptachDate = inputModel.DisptachDate;

            order.TotalPrice = inputModel.TotalPrice;

            order.Discount = inputModel.Discount;

            order.DeliveryPrice = inputModel.DeliveryPrice;

            order.EasyPayNumber = inputModel.EasyPayNumber;

            order.EasyPayNumber = inputModel.EasyPayNumber;

            order.UserId = inputModel.UserId;

            order.DeliveryAddressId = inputModel.DeliveryAddressId;

            this.dbContext.Update(order);

            await this.dbContext.SaveChangesAsync();
        }
Esempio n. 4
0
        public async Task EditOrderAsyncShouldEditOrderSuccessfully()
        {
            var options = new DbContextOptionsBuilder <MyCalisthenicAppDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;

            var dbContext = new MyCalisthenicAppDbContext(options);

            IHttpContextAccessor httpContextAccessor = new HttpContextAccessor();

            var usersService = new UsersService(httpContextAccessor, dbContext, null);

            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new MyCalisthenicAppProfile());
            });

            var mapper = mockMapper.CreateMapper();

            var ordersService = new OrdersService(dbContext, mapper, usersService);

            var user = new ApplicationUser
            {
                Id        = UserId,
                FirstName = UserFirstName,
                LastName  = UserLastName,
            };

            await dbContext.Users.AddAsync(user);

            await dbContext.SaveChangesAsync();

            var city = new City
            {
                Name     = CityName,
                PostCode = CityPostCode,
            };

            await dbContext.Cities.AddAsync(city);

            await dbContext.SaveChangesAsync();

            var address = new Address
            {
                Country = AddressCountry,
                Street  = AddressStreet,
                CityId  = city.Id,
            };

            await dbContext.Addresses.AddAsync(address);

            await dbContext.SaveChangesAsync();

            var order = new Order
            {
                Id     = OrderId,
                UserId = user.Id,
            };

            await dbContext.Orders.AddAsync(order);

            await dbContext.SaveChangesAsync();

            var orderModel = new OrderAdminEditViewModel
            {
                Id                = order.Id,
                UserId            = user.Id,
                DeliveryAddressId = address.Id,
                TotalPrice        = OrderTotalPrice,
            };

            await ordersService.EditOrderAsync(orderModel);

            var actual = await dbContext.Orders.FirstOrDefaultAsync(o => o.Id == order.Id);

            Assert.Equal(order.TotalPrice, actual.TotalPrice);
        }