Ejemplo n.º 1
0
        public async Task <ActionResult> Register([FromBody] CustomerRequest request)
        {
            try
            {
                var user = new User
                {
                    Password       = request.Password,
                    Source         = UserSource.Site,
                    PrimaryService = request.PrimaryService,
                    Firstname      = request.FirstName,
                    Lastname       = request.LastName,
                    Email          = request.Email,
                    PhoneNumber    = request.Phone,
                    UserProfile    = new UserProfile
                    {
                        Id             = Guid.NewGuid(),
                        PrimaryService = request.PrimaryService
                    }
                };

                var existingUser = await _userManager.FindByName(user.Email);

                if (existingUser != null)
                {
                    return(BadRequest(new { message = "The user already exists!" }));
                }

                var userRole = 0;
                if (string.IsNullOrWhiteSpace(request.Role))
                {
                    userRole = string.IsNullOrWhiteSpace(request.Role) ? (int)RoleType.Customer : (int)RoleType.Admin;
                }
                else
                {
                    userRole = int.Parse(request.Role);
                }

                await _authManager.RegisterAsync(user, request.VerifyUrl, userRole);


                if (userRole == 2)
                {
                    var registeredUser = await _userManager.FindByName(user.Email);

                    request.UserId = registeredUser.Id;

                    await _authManager.RegisterProfessional(request);
                }

                if (request.Services != null)
                {
                    foreach (var u in request.Services)
                    {
                        await _userManager.AddUserServices(request.UserId, u);
                    }
                }

                return(Ok());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex);
                return(BadRequest(ex));
            }
        }