public async Task <IActionResult> Register([FromBody] RegisterAccountModel model) { // check the phone is already registered or not var isPhoneNumberExist = _userService.IsUserPhoneNumberExist(model.PhoneNumber); if (isPhoneNumberExist) { return(Conflict("Phone number already exist")); } var result = await _authServices.Register(new RegisterModel { Username = model.Email, Email = model.Email, Password = model.Password, CellPhone = model.PhoneNumber, ConfirmPassword = model.Password }, true, true); if (result.Result.Succeeded) { AssignModelState(); var response = _userDetailService.Create(new UserDetailMediCoreModel { Id = 0, FirstName = model.FirstName, LastName = model.LastName, UserId = result.UserId }); if (!String.IsNullOrWhiteSpace(result.GeneratedToken)) { var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = result.UserId, code = result.GeneratedToken }, protocol: HttpContext.Request.Scheme); var sendgrid = _sender.Create(SenderFactory.EMAIL); string template = TemplateGenerator.GenerateTemplate(new TemplateOption { TemplateType = TemplateType.Activation, TemplateFolderPath = String.Format("{0}/{1}/{2}", _hostingEnvironment.ContentRootPath, "Resources", "Template") }); template = template.Replace("{CONFIRMATION_LINK}", callbackUrl); template = template.Replace("{FIRST_NAME}", model.FirstName); //send email confirmation to user await sendgrid.SendAsync(model.Email, "Aktivasi", template); } if (!String.IsNullOrWhiteSpace(result.GenerateSMSToken)) { var smsSender = _sender.Create(SenderFactory.SMS); string template = TemplateGenerator.GenerateSMSTemplate(new TemplateOption { TemplateType = TemplateType.Activation, TemplateFolderPath = String.Format("{0}/{1}/{2}", _hostingEnvironment.ContentRootPath, "Resources", "Template") }); template = template.Replace("{TOKEN}", result.GenerateSMSToken); await smsSender.SendAsync(model.PhoneNumber, "Aktivasi", template); } if (response.Success) { return(Ok(response.Item)); } return(BadRequest(response.Message)); } return(BadRequest(result.Result.Errors.FirstOrDefault())); }