Beispiel #1
0
        public async Task <IActionResult> Add(EmployeeAddInputModel employeeCreate)
        {
            var result = await this.garageService.SetVehicleToEmployeeAsync(employeeCreate, this.ModelState);

            if (!this.ModelState.IsValid)
            {
                return(this.View(result));
            }

            return(this.Redirect($"/{GlobalConstants.AreaAdministrationName}/{GlobalConstants.ContollerEmployeesName}"));
        }
Beispiel #2
0
        public async Task <EmployeeAddViewModel> SetVehicleToEmployeeAsync(EmployeeAddInputModel employeeFromView, ModelStateDictionary modelState)
        {
            var vehicles = await this.vehiclesService.GetVehicleNames();

            if (!modelState.IsValid)
            {
                var errorModel = employeeFromView.To <Employee>().To <EmployeeAddViewModel>();

                errorModel.VehicleList = vehicles;

                return(errorModel);
            }

            var employee = await this.employeesService.GetByIdAsync <Employee>(employeeFromView.Id);

            if (employee == null)
            {
                Exception innerException = new Exception(nameof(employeeFromView.Id));
                throw new NullReferenceException(string.Format(GarageConstants.NullReferenceId, employeeFromView.Id), innerException);
            }

            var vehicleEmployee = await this.garageRepository.All().FirstOrDefaultAsync(x => x.EmployeeId == employeeFromView.Id);

            if (vehicleEmployee != null)
            {
                modelState.AddModelError(nameof(vehicleEmployee.Vehicle.RegistrationNumber), string.Format(GarageConstants.ArgumentExceptionVehicleEmployeeExist, vehicleEmployee.Vehicle.RegistrationNumber));

                var errorModel = employeeFromView.To <Employee>().To <EmployeeAddViewModel>();

                errorModel.VehicleList = vehicles;

                return(errorModel);
            }

            var vehicle = await this.vehiclesService.GetAllAsync <Vehicle>().FirstOrDefaultAsync(x => x.RegistrationNumber == employeeFromView.RegistrationNumber);

            if (vehicle == null)
            {
                Exception innerException = new Exception(nameof(employeeFromView.RegistrationNumber));
                throw new ArgumentNullException(string.Format(GarageConstants.ArgumentExceptionVehicleNotExist, employeeFromView.RegistrationNumber), innerException);
            }

            employee.VehicleEmployees.Add(new VehicleEmployee {
                EmployeeId = employee.Id, VehicleId = vehicle.Id
            });

            this.employeeRepository.Update(employee);

            await this.employeeRepository.SaveChangesAsync();

            return(employee.To <EmployeeAddViewModel>());
        }