public async Task <IActionResult> CreateByDriver(TransferCreateInputModel transferCreateInputModel, string driverId)
        {
            var currentUser = await this.userManager.GetUserAsync(this.User);

            transferCreateInputModel.ClientId = currentUser.Id;
            var driverServiceModel = await this.driversService.GetByIdAsync <DriverServiceDetailsModel>(driverId);

            var isDriverAvailableByDate = await this.transfersService.IsDriverAvailableByDate(transferCreateInputModel.TransferDate, transferCreateInputModel.DriverId);

            if (!this.ModelState.IsValid ||
                !isDriverAvailableByDate)
            {
                if (!isDriverAvailableByDate)
                {
                    this.TempData["Error"] = UnavailableDriverErrorMessage;
                }

                var transfersTypes = await this.transfersTypesService.GetAllAsync <TransfersTypesServiceDropDownModel>();

                transferCreateInputModel.Driver         = driverServiceModel.To <Driver>();
                transferCreateInputModel.TransfersTypes = transfersTypes.Select(t => t.To <TransfersTypesDropDownViewModel>()).ToList();
                transferCreateInputModel.ClientId       = currentUser.Id;

                return(this.View(transferCreateInputModel));
            }

            var serviceTransfer = transferCreateInputModel.To <TransferServiceInputModel>();

            await this.transfersService.CreateAsync(serviceTransfer);

            return(this.Redirect("/Transfers/MyTransfers"));
        }
        public async Task <IActionResult> CreateByDriver(string driverId)
        {
            var driverService = await this.driversService.GetByIdAsync <DriverServiceDetailsModel>(driverId);

            var transfersTypes = await this.transfersTypesService.GetAllAsync <TransfersTypesServiceDropDownModel>();

            var viewModel = new TransferCreateInputModel()
            {
                Driver         = driverService.To <Driver>(),
                TransfersTypes = transfersTypes.Select(t => t.To <TransfersTypesDropDownViewModel>()).ToList(),
            };

            return(this.View(viewModel));
        }
        public async Task <IActionResult> Create(string searchByDriver)
        {
            var drivers = await this.driversService.GetAllAsync <DriverServiceDetailsModel>();

            var transfersTypes = await this.transfersTypesService.GetAllAsync <TransfersTypesServiceDropDownModel>();

            this.ViewData["DriverFilter"] = searchByDriver;

            if (!string.IsNullOrEmpty(searchByDriver))
            {
                drivers = drivers.Where(d => d.Id == searchByDriver);
            }

            var viewModel = new TransferCreateInputModel()
            {
                Drivers        = drivers.Select(d => d.To <DriverDetailsViewModel>()).ToList(),
                TransfersTypes = transfersTypes.Select(t => t.To <TransfersTypesDropDownViewModel>()).ToList(),
            };

            return(this.View(viewModel));
        }