Example #1
0
        public async Task <IHttpActionResult> Register(RegisterBindingModel model)
        {
            //confirm email link https://docs.microsoft.com/en-us/aspnet/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            string uniqueCode = model.FirstName + model.LastName;

            uniqueCode = uniqueCode.ToLower();

            using (tapBioDbEntities db = new tapBioDbEntities())
            {
                List <string> LstuniqueCode = null;
                LstuniqueCode = (from a in db.AspNetUsers where a.FirstName.Equals(model.FirstName, StringComparison.OrdinalIgnoreCase) && a.LastName.Equals(model.LastName, StringComparison.OrdinalIgnoreCase) select a.UserUniqueCode).ToList();
                if (LstuniqueCode.Count > 0)
                {
                    uniqueCode = uniqueCode + LstuniqueCode.Count;
                }
            }

            var user = new ApplicationUser()
            {
                UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, UserUniqueCode = uniqueCode
            };

            IdentityResult result = await UserManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                string callbackUrl = string.Empty;
                callbackUrl = this.Url.Link("Default", new { Controller = "Account", Action = "confirmEmailId", userId = user.Id, code = code });
                //await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
                //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                //await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
                //
                _sendMails.SendEmail(user.Email, "Please activate your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a> your account credentials are as below <br/> Email Id: " + user.Email + "<br/> Password: " + model.Password, true, null);
            }

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }