Exemplo n.º 1
0
        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));
        }