Esempio n. 1
0
        public void Register([FromBody] RegisterEmployeeDto employeeDto)
        {
            if (!_roleManager.RoleExistsAsync(Roles.Employee).Result)
            {
                throw new ApplicationException(ExceptionMessages.RolesHaveNotBeenCreated);
            }

            var userId = GetUserId();

            var user = new ApplicationUser
            {
                UserName = employeeDto.Email,
                Email    = employeeDto.Email
            };

            var result = _userManager.CreateAsync(user, employeeDto.Password).Result;

            if (!result.Succeeded)
            {
                throw new ApplicationException(ExceptionMessages.UsernameAlreadyExists);
            }

            using (var dbContext = new ApplicationDbContext())
            {
                var appUser = _userManager.Users.SingleOrDefault(au => au.Email == employeeDto.Email);

                result = _userManager.AddToRoleAsync(appUser, Roles.Employee).Result;

                if (!result.Succeeded)
                {
                    throw new ApplicationException(ExceptionMessages.InternalServerError);
                }

                var employee = new Clinic_Employee
                {
                    UserId      = appUser.Id,
                    OwnerUserId = userId
                };

                dbContext.Clinic_Employees.Add(employee);
                dbContext.SaveChanges();
            }
        }
        public async Task <ApiResponse <RegisterResultApiModel> > Register([FromBody] RegisterEmployeeDto employeeDto)
        {
            #region Data Validates

            // ^[\\p{L} \\.\\-]{3,}$
            // Regex pattern for first and lastname with no less than 3 characters

            if (string.IsNullOrWhiteSpace(employeeDto.FirstName) ||
                !Regex.IsMatch(employeeDto.FirstName, "^[\\p{L} \\.\\-]{3,}$"))
            {
                return new ApiResponse <RegisterResultApiModel>
                       {
                           //TODO: Localize strings
                           ErrorMessage = "Imie pracownika składa się z przynajmniej trzech liter"
                       }
            }
            ;


            if (string.IsNullOrWhiteSpace(employeeDto.LastName) ||
                !Regex.IsMatch(employeeDto.LastName, "^[\\p{L} \\.\\-]{3,}$"))
            {
                return new ApiResponse <RegisterResultApiModel>
                       {
                           //TODO: Localize strings
                           ErrorMessage = "Nazwisko pracownika składa się z przynajmniej trzech liter"
                       }
            }
            ;


            if (string.IsNullOrWhiteSpace(employeeDto.Pesel) ||
                !EmployeeValidate.PeselValidate(employeeDto.Pesel))
            {
                return new ApiResponse <RegisterResultApiModel>
                       {
                           ErrorMessage = "Pesel pracownika jest nie poprawny."
                       }
            }
            ;


            if (string.IsNullOrWhiteSpace(employeeDto.Type))
            {
                return new ApiResponse <RegisterResultApiModel>
                       {
                           //TODO: Localize strings
                           ErrorMessage = "Pole posada pracownika jest puste"
                       }
            }
            ;


            if (string.IsNullOrWhiteSpace(employeeDto.Specialize))
            {
                return new ApiResponse <RegisterResultApiModel>
                       {
                           //TODO: Localize strings
                           ErrorMessage = "Pole specjalizacja pracownika jest puste"
                       }
            }
            ;


            if (string.IsNullOrWhiteSpace(employeeDto.NumberPwz) ||
                !EmployeeValidate.NumberPwzValidate(employeeDto.NumberPwz))
            {
                return new ApiResponse <RegisterResultApiModel>
                       {
                           ErrorMessage = "Wpisano nie prawidłowo numer pwz pracownika"
                       }
            }
            ;

            #endregion


            var username = employeeDto.FirstName.Substring(0, 1) +
                           employeeDto.LastName.Substring(0, 1) +
                           employeeDto.Pesel[6..];