public async Task <EmployeeProfileDto> CreateEmployeeAsync(EmployeeProfileCreateDto employeeProfileDto) { if (!await _userRepository.AnyUserAsync(x => x.Id == employeeProfileDto.UserId)) { throw new NotFoundLogicException($"User with id {employeeProfileDto.UserId} not found!", nameof(employeeProfileDto.UserId)); } if (await _employeeRepository.AnyEmployeeAsync(x => x.UserId == employeeProfileDto.UserId)) { throw new LogicException($"Employee profile for user with id {employeeProfileDto.UserId} has been already created!"); } var employeeProfile = Mapper.Map <EmployeeProfileCreateDto, EmployeeProfile>(employeeProfileDto); employeeProfile.ServiceType = await _serviceTypeRepository.GetByNameOrCreateNewAsync(employeeProfileDto.ServiceType); _employeeRepository.Create(employeeProfile); await SaveProvider.SaveAsync(); return(Mapper.Map <EmployeeProfileDto>(employeeProfile)); }