public async Task <Unit> RegisterUserAsync([FromBody] RegisterDto obj)
 {
     return(await uow.Mediator.Send(new Register.Command(obj)));
 }
 public async Task <ActionResult <UserDto> > Register(RegisterDto registerDto)
 {
     return(await _accountRepository.Register(registerDto));
 }
Exemple #3
0
        public async Task <ActionResult <UserDto> > Register(RegisterDto registerDto)
        {
            if (CheckEmailExistsAsync(registerDto.Email).Result.Value)
            {
                return(new BadRequestObjectResult(new ApiValidationErrorResponse {
                    Errors = new[] { "Email address is in use" }
                }));
            }


            //var role =  _roleManager.Roles.Where(r => r.Id == "2").FirstOrDefault();
            //registerDto.Role = role.Name;

            var user = new AppUser
            {
                DisplayName = registerDto.DisplayName,
                Email       = registerDto.Email,
                UserName    = registerDto.Email,
                //Role = registerDto.Role
            };


            var result = await _userManager.CreateAsync(user, registerDto.Password);


            if (!result.Succeeded)
            {
                return(BadRequest(new ApiResponse(400)));
            }

            if (result.Succeeded)
            {
                //await _userManager.AddToRoleAsync(user, registerDto.Role);
                await _mailService.SendEmailAsync(registerDto.Email, "Register Confirmed",
                                                  "<table border='0' cellpadding='0' cellspacing='0' align='center' width='600px' role='module' data-type='columns' style='padding:20px 10px 20px 20px;' bgcolor='black'>" +
                                                  "<tbody>" +
                                                  "<tr role='module-content'>" +
                                                  "<td height='100%' valign='top'>" +
                                                  "<table class='column' width='540' style='width:540px; border-spacing:0; border-collapse:collapse; margin:0px 10px 0px 10px;' cellpadding='0' cellspacing='0' align='center' border='0' bgcolor=''> " +
                                                  "<tbody> " +
                                                  "<tr> " +
                                                  "<td style='padding:0px;margin:0px;border-spacing:0;'>" +
                                                  "<table class='module' role='module' data-type='text' border='0' cellpadding='0' cellspacing='0' width='100%' style='table-layout: fixed;' data-muid='948e3f3f-5214-4721-a90e-625a47b1c957' data-mc-module-version='2019-10-22'> " +
                                                  "<tbody> " +
                                                  "<tr> " +
                                                  "<td style='padding:50px 30px 18px 30px; line-height:36px; text-align:inherit; background-color:#ffffff;' height='100%' valign='top' bgcolor='#ffffff' role='module-content'>" +
                                                  "<div>" +
                                                  "<div style='font-family: inherit; text-align: center'>" +
                                                  "<img class='max-width' border='0' style='display:block; color:#000000; text-decoration:none; font-family:Helvetica, arial, sans-serif; font-size:16px;' width='100%' alt='' data-proportionally-constrained='true' data-responsive='false' src='https://www.wework.com/ideas/wp-content/uploads/sites/4/2019/08/Stocksy_txpbf16198csmR200_Medium_1873199_v1-1440x810-1-1120x630.jpg' height='189'>" +
                                                  "<table class='module' role='module' data-type='spacer' border='0' cellpadding='0' cellspacing='0' width='100%' style='table-layout: fixed;' data-muid='27716fe9-ee64-4a64-94f9-a4f28bc172a0'>" +
                                                  "<tbody>" +
                                                  "<tr>" +
                                                  "<td style='padding:0px 0px 30px 0px; background-color: white;' role='module-content' bgcolor=''></td>" +
                                                  "</tr>" +
                                                  "</tbody>" +
                                                  "</table>" +
                                                  $"<span style='font-size: 43px'>Thanks for signing up, {user.DisplayName}! </span>" +
                                                  "</div>" +
                                                  "<div></div>" +
                                                  "</div>" +
                                                  "</td> " +
                                                  "</tr> " +
                                                  "</tbody>" +
                                                  "</table>" +
                                                  "<table class='module' role='module' data-type='text' border='0' cellpadding='0' cellspacing='0' width='100%' style='table-layout: fixed;' data-muid='a10dcb57-ad22-4f4d-b765-1d427dfddb4e' data-mc-module-version='2019-10-22'> " +
                                                  "<tbody> " +
                                                  "<tr> " +
                                                  "<td style='padding:18px 30px 18px 30px; line-height:22px; text-align:inherit; background-color:#ffffff;' height='100%' valign='top' bgcolor='#ffffff' role='module-content'>" +
                                                  "<div>" +
                                                  "<div style='font-family: inherit; text-align: center'>" +
                                                  "<span style='font-size: 18px;color: #005018;'>Please verify your email address to</span>" +
                                                  "<span style='color: #000000; font-size: 18px; font-family: arial,helvetica,sans-serif'> get access to thousands of beautiful plants at</span>" +
                                                  "<span style='font-size: 18px'>.</span>" +
                                                  " <div class='align-text-center' style='font-size:20px;margin-top:30px;color: #005018;'><strong>Plantify Store</strong></div>" +
                                                  "</div> " +
                                                  "<div style='font-family: inherit; text-align: center'>" +
                                                  "<span style='color: black; font-size: 18px'>" +
                                                  "<strong>Thank you! </strong>" +
                                                  "</span>" +
                                                  "</div>" +
                                                  "<div></div>" +
                                                  "</div>" +
                                                  "</td> " +
                                                  "</tr> " +
                                                  "</tbody> " +
                                                  "</table>" +
                                                  "<table border='0' cellpadding='0' cellspacing='0' class='module' data-role='module-button' data-type='button' role='module' style='table-layout:fixed;' width='100%' data-muid='d050540f-4672-4f31-80d9-b395dc08abe1'> " +
                                                  "<tbody> " +
                                                  "<tr> " +
                                                  "<td align='center' bgcolor='#ffffff' class='outer-td' style='padding:0px 0px 0px 0px;'> " +
                                                  "<table border='0' cellpadding='0' cellspacing='0' class='wrapper-mobile' style='text-align:center;'> " +
                                                  "<tbody> " +
                                                  "<tr> " +
                                                  "<td align='center' bgcolor='#ffbe00' class='inner-td' style='border-radius:6px; font-size:16px; text-align:center; background-color:inherit;'> " +
                                                  "<a href='' style='background-color:black; border:1px solid black; border-color:#1cff00; border-radius:0px; border-width:1px; color:white; display:inline-block; font-size:14px; font-weight:normal; letter-spacing:0px; line-height:normal; padding:12px 40px 12px 40px; text-align:center; text-decoration:none; border-style:solid; font-family:inherit;' target='_blank'>Verify Email Now</a> " +
                                                  "</td> " +
                                                  "</tr> " +
                                                  "</tbody> " +
                                                  "</table> " +
                                                  "</td> " +
                                                  "</tr> " +
                                                  "</tbody> " +
                                                  "</table>" +
                                                  "<table class='module' role='module' data-type='spacer' border='0' cellpadding='0' cellspacing='0' width='100%' style='table-layout: fixed;' data-muid='27716fe9-ee64-4a64-94f9-a4f28bc172a0'>" +
                                                  "<tbody>" +
                                                  "<tr>" +
                                                  "<td style='padding:0px 0px 30px 0px; background-color: white;' role='module-content' bgcolor=''></td>" +
                                                  "</tr>" +
                                                  "</tbody>" +
                                                  "</table>" +
                                                  "</td> " +
                                                  "</tr> " +
                                                  "</tbody> " +
                                                  "</table>" +
                                                  "</td>" +
                                                  "</tr>" +
                                                  "</tbody>" +
                                                  "</table>"


                                                  );
            }

            return(new UserDto
            {
                DisplayName = user.DisplayName,
                Token = _tokenService.CreateToken(user),
                Email = user.Email,
                //Role = registerDto.Role
            });
        }
    public async Task<ActionResult<UserDto>> Register(RegisterDto registerDto)
    {
        if(CheckEmailExistsAsync(registerDto.Email).Result.Value)
        {
            return new BadRequestObjectResult(new ApiValidationErrorResponse{Errors = new []{"Email address is in use"}});
        }

        //calculate the user's calories, proteins, carbohydrates and fats
        var userCalories = 0M;
        var userProteins = 0M;
        var userCarbohydrates = 0M;
        var userFats = 0M;
        var userAge = DateTime.Now.Year - DateTime.Parse(registerDto.DateOfBirth).Year;

        if (registerDto.Gender == "male")
        {
            var RMB = (long)(10 * registerDto.Weight + (decimal)6.25 * registerDto.Height - 5 * userAge + 5);
            userProteins = (long)((decimal) 2.2 * registerDto.Weight);
            userFats = (long)(((decimal) 0.3 * RMB)/9);

            var proteinInCalories = userProteins * 4;
            var fatsInCalories = userFats * 9;

            userCalories = (long)(RMB * registerDto.ActivityCost);

            userCarbohydrates = (long)((userCalories - (proteinInCalories + fatsInCalories))/4);

        }
        else 
        {
            var RMB = (long)(10 * registerDto.Weight + (decimal) 6.25 * registerDto.Height - 5 * userAge - 161);

            userProteins = (long)((decimal) 2.2 * registerDto.Weight);
            userFats = (long)(((decimal) 0.3 * RMB)/9);

            var proteinInCalories = userProteins * 4;
            var fatsInCalories = userFats * 9;

            userCalories = (long)(RMB * registerDto.ActivityCost);

            userCarbohydrates = (long)((userCalories - (proteinInCalories + fatsInCalories))/4); 

        }

        var user = new AppUser
        {
            DisplayName = registerDto.DisplayName,
            Email = registerDto.Email,
            UserName = registerDto.Email,
            Weight = registerDto.Weight,
            Height = registerDto.Height,
            Gender = registerDto.Gender,
            DateOfBirth = DateTime.Parse(registerDto.DateOfBirth),
            ActivityCost = registerDto.ActivityCost,
            DailyCalories = userCalories,
            DailyProteins = userProteins,
            DailyCarbohydrates = userCarbohydrates,
            DailyFats = userFats
        };

        var result = await _userManager.CreateAsync(user, registerDto.Password);

        if (!result.Succeeded) return BadRequest(new ApiResponse(400));


        return new UserDto
        {
            Email = user.Email,
            Token = _tokenService.CreateToken(user),
            DisplayName = user.DisplayName,
            Weight = user.Weight,
            Height = user.Height,
            Gender = user.Gender,
            DateOfBirth = user.DateOfBirth.ToString("MM-dd-yyyy"),
            ActivityCost = user.ActivityCost,
            DailyCalories = user.DailyCalories,
            DailyProteins = user.DailyProteins,
            DailyCarbohydrates = user.DailyCarbohydrates,
            DailyFats = user.DailyFats
        };
    }
Exemple #5
0
        public async Task <ActionResult <UserDto> > Register(RegisterDto registerDto)
        {
            using (var transaction = await appIdentityContext.Database.BeginTransactionAsync())
            {
                try
                {
                    if (CheckUserNameExists(registerDto.Username).Result.Value)
                    {
                        return(StatusCode(StatusCodes.Status409Conflict, new Response {
                            Status = "Conflict", Message = "User already exists"
                        }));
                    }

                    var user = new AppUser()
                    {
                        UserName = registerDto.Username,
                        Email    = registerDto.Email
                    };

                    var result = await userManager.CreateAsync(user, registerDto.Password);

                    if (!result.Succeeded)
                    {
                        return(StatusCode(StatusCodes.Status400BadRequest, new Response {
                            Status = "Error", Message = "Failed to create user"
                        }));
                    }

                    var userRole = "NormalUser";

                    if (!await roleManager.RoleExistsAsync(userRole))
                    {
                        await roleManager.CreateAsync(new IdentityRole(userRole));
                    }

                    var roleAddResult = await userManager.AddToRoleAsync(user, userRole);

                    if (!roleAddResult.Succeeded)
                    {
                        return(StatusCode(StatusCodes.Status400BadRequest, new Response {
                            Status = "Error", Message = "Failed to add user role"
                        }));
                    }

                    user = await userManager.FindByNameAsync(registerDto.Username); //Updates user to include the userId in the token

                    if (user == null)
                    {
                        return(StatusCode(StatusCodes.Status500InternalServerError, new Response {
                            Status = "Error", Message = "Failed to find created user"
                        }));
                    }

                    var tokenString = await GetToken(user);

                    await transaction.CommitAsync();

                    return(Ok(new UserDto()
                    {
                        Email = user.Email, UserName = user.UserName, Token = tokenString
                    }));
                }
                catch
                {
                    return(StatusCode(StatusCodes.Status500InternalServerError, new Response {
                        Status = "Error", Message = "Failed to complete transaction"
                    }));
                }
            }
        }
Exemple #6
0
        public async Task <ActionResult </*AppUser 4.43:*/ UserDto> > Register(/*4.37:*/ RegisterDto registerDto /*string username, string password*/)
        {
            if (await UserExists(registerDto.Username))
            {
                return(BadRequest("Username is taken"));
            }

            using var hmac = new HMACSHA512();

            var user = new AppUser
            {
                UserName     = registerDto.Username.ToLower(),
                PasswordHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(registerDto.Password)),
                PasswordSalt = hmac.Key
            };

            _context.Users.Add(user);
            await _context.SaveChangesAsync();

            //  return user;
            //4.43{
            return(new UserDto {
                Username = user.UserName,
                Token = _tokenService.CreateToken(user)
            });
            //}4.43
        }