public async Task LoanVehicle(LoanOrderViewModel input)
        {
            var user = this.userService.GetCurrentUsers(input.UserId);

            if (user != null)
            {
                VehicleType vehicle;
                Enum.TryParse <VehicleType>(input.VehicleType, out vehicle);

                await this.ChangeVehicleAvailable(input.VehicleId, vehicle);

                await this.userService.UpdateUserFirstAndLastName(input.UserId, input.FirstName, input.LastName);

                var orders = new Order()
                {
                    VehicleType  = vehicle,
                    VehicleId    = input.VehicleId,
                    Address      = input.Address,
                    PriceForHour = input.PriceForHour,
                    DateFrom     = input.DateFrom,
                    Status       = StatusType.Wait,
                    ImageUrl     = this.GetVehicleImage(input.VehicleId, vehicle),
                    User         = this.userService.GetCurrentUsers(input.UserId),
                };

                user.Orders.Add(orders);

                await this.db.SaveChangesAsync();
            }
        }
        public async Task LoanVehicle()
        {
            var options        = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase("Database_For_Tests").Options;
            var dbContext      = new ApplicationDbContext(options);
            var userService    = new UserService(dbContext);
            var orderService   = new OrderService(dbContext, userService);
            var imageService   = new ImageService(dbContext);
            var bicycleService = new BicycleService(dbContext, imageService);

            AutoMapperConfig.RegisterMappings(typeof(LoanOrderViewModel).Assembly, typeof(Order).Assembly);

            var vehicle = new Bicycle()
            {
                Id           = 1,
                Type         = BicycleType.Mountain,
                Made         = "Something",
                Speeds       = 21,
                Size         = BicycleSize.M,
                SizeOfTires  = 21,
                PriceForHour = 21,
                Description  = "Something",
                ImageUrl     = "Test",
            };
            var user = new ApplicationUser()
            {
                Id          = "Test",
                FirstName   = "Petroslav",
                LastName    = "Gochev",
                Email       = "*****@*****.**",
                PhoneNumber = "0889636768",
                Age         = 24,
            };

            dbContext.Add <ApplicationUser>(user);
            dbContext.Add <Bicycle>(vehicle);

            var orders = new LoanOrderViewModel()
            {
                VehicleId   = 1,
                VehicleType = BicycleType.Mountain.ToString(),
                UserId      = "Test",
                Address     = "Stara Planina",
                DateFrom    = DateTime.Now,
                UserName    = "******",
                FirstName   = "Petroslav",
                LastName    = "Gochev",
                Email       = "*****@*****.**",
                ImageUrl    = "Gochev",
            };

            await orderService.LoanVehicle(orders);

            Assert.Empty(user.Orders);
        }
        public async Task <IActionResult> LoanVehicle(VehicleDataViewModel input)
        {
            var user = await this.userManager.GetUserAsync(this.User);

            var loan = new LoanOrderViewModel()
            {
                VehicleId    = input.VehicleId,
                VehicleType  = input.Type.ToString(),
                PriceForHour = input.PriceForHour,
                DateFrom     = DateTime.Now,
                UserId       = user.Id,
                ImageUrl     = input.ImageUrl,
                FirstName    = user.FirstName,
                LastName     = user.LastName,
                Email        = user.Email,
            };

            return(this.View(loan));
        }
        public async Task <IActionResult> LoanVehicle(LoanOrderViewModel input)
        {
            await this.orderService.LoanVehicle(input);

            return(this.RedirectToAction(nameof(this.UserOrders)));
        }