public async Task <HttpResponseMessage> SaveSharedProjectAsync(SharedProjectsDto sharedProjectsDto) { var clientURL = RequestContext.Url.Request.Headers.GetValues("Origin").FirstOrDefault(); var urlBrand = "generac"; if (clientURL.ToLower().Contains("pramac")) { urlBrand = "pramac"; } if (String.IsNullOrEmpty(sharedProjectsDto.Language) || sharedProjectsDto.Language != "en" || sharedProjectsDto.Language != "en") { sharedProjectsDto.Language = "en"; } var result = _userDashboard.SaveSharedProject(sharedProjectsDto, UserID, UserName); //var clientURL = RequestContext.Url.Request.Headers.GetValues("Origin").FirstOrDefault(); var callbackURL = $"{clientURL}/project/{sharedProjectsDto.ProjectID}"; var emaildata = new SendGridEmailData { template_id = SectionHandler.GetSectionValue($"{sharedProjectsDto.Language.ToLower()}/emailTemplates/projectShared", "TemplateID", ""), personalizations = new List <Personalization>() { new Personalization { to = new List <To>() { new To { email = sharedProjectsDto.RecipientEmail, name = sharedProjectsDto.RecipientEmail } }, substitutions = new Dictionary <string, string>() { { "%SharerLoginID%", UserName }, { "%ProjectName%", result.SharedProjectName }, { "%ProjectComments%", sharedProjectsDto.Notes }, { "%ProjectLink%", callbackURL }, { "%CompanyName%", EmailHelper.CompanyName(sharedProjectsDto.Language, urlBrand) }, { "%CompanyAddress%", EmailHelper.CompanyAddress(sharedProjectsDto.Language, urlBrand) } } } } }; var emailResponse = EmailHelper.SendGridAsyncWithTemplate(emaildata); return(CreateHttpResponse(() => { return Request.CreateResponse(result); })); }
private async Task <string> SendEmailConfirmationTokenAsync(ApplicationUser user, string language) { var code = UserManager.GenerateEmailConfirmationToken(user.Id); var clientURL = RequestContext.Url.Request.Headers.GetValues("Origin").FirstOrDefault(); var callbackURL = $"{clientURL}/confirmEmail?userId={user.Id}&code={code}"; var urlBrand = "generac"; if (clientURL.ToLower().Contains("pramac")) { urlBrand = "pramac"; } if (String.IsNullOrEmpty(language) || language != "en" || language != "en") { language = "en"; } var emaildata = new SendGridEmailData { template_id = SectionHandler.GetSectionValue($"{language.ToLower()}/emailTemplates/confirmEmail", "TemplateID", ""), personalizations = new List <Personalization>() { new Personalization { to = new List <To>() { new To { email = user.Email, name = user.FirstName + " " + user.LastName } }, substitutions = new Dictionary <string, string>() { { "%FirstName%", user.FirstName }, { "%LastName%", user.LastName }, { "%EmailConfirmationLink%", callbackURL }, { "%CompanyName%", EmailHelper.CompanyName(language, urlBrand) }, { "%CompanyAddress%", EmailHelper.CompanyAddress(language, urlBrand) } } } } }; var responseCode = await EmailHelper.SendGridAsyncWithTemplate(emaildata); return(callbackURL); }
public async Task <HttpResponseMessage> GrantEditAccess(SolutionRequestDto solutionRequestDto) { var clientURL = RequestContext.Url.Request.Headers.GetValues("Origin").FirstOrDefault(); var urlBrand = "generac"; if (clientURL.ToLower().Contains("pramac")) { urlBrand = "pramac"; } if (String.IsNullOrEmpty(solutionRequestDto.Language) || solutionRequestDto.Language != "en" || solutionRequestDto.Language != "en") { solutionRequestDto.Language = "en"; } var result = _projectSolutionProcessor.GrantEditAccess(solutionRequestDto, UserID, UserName); //var clientURL = RequestContext.Url.Request.Headers.GetValues("Origin").FirstOrDefault(); var callbackURL = $"{clientURL}/project/{solutionRequestDto.ProjectID}/solution/{solutionRequestDto.SolutionID}"; var projectOwnerUserDetails = GetUserDetailsByUserName(result.RecipientEmail); var shareeUserDetails = GetUserDetailsByUserName(UserName); var emaildata = new SendGridEmailData { template_id = SectionHandler.GetSectionValue($"{solutionRequestDto.Language.ToLower()}/emailTemplates/grantEditAccess", "TemplateID", ""), personalizations = new List <Personalization>() { new Personalization { to = new List <To>() { new To { email = result.RecipientEmail, name = projectOwnerUserDetails.FirstName + " " + projectOwnerUserDetails.LastName } }, substitutions = new Dictionary <string, string>() { { "%FirstName%", projectOwnerUserDetails.FirstName }, { "%LastName%", projectOwnerUserDetails.LastName }, { "%ShareeFirstName%", shareeUserDetails.LastName }, { "%ShareeLastName%", shareeUserDetails.LastName }, { "%ShareeEmail%", shareeUserDetails.Email }, { "%SolutionName%", result.SolutionName }, { "%ProjectName%", result.ProjectName }, { "%SolutionComments%", result.SolutionComments }, { "%SolutionLink%", callbackURL }, { "%CompanyName%", EmailHelper.CompanyName(solutionRequestDto.Language, urlBrand) }, { "%CompanyAddress%", EmailHelper.CompanyAddress(solutionRequestDto.Language, urlBrand) } } } } }; var emailResponse = await EmailHelper.SendGridAsyncWithTemplate(emaildata); return(CreateHttpResponse(() => { return Request.CreateResponse(result); })); }
public async Task <HttpResponseMessage> ForgotPassword(ForgotPasswordDto model) { try { if (model == null || !ModelState.IsValid) { var errorResponse = new { ErrorCode = -1, ErrorDescription = "Model State is invalid." }; return(Request.CreateResponse(HttpStatusCode.OK, errorResponse)); } var user = await UserManager.FindByEmailAsync(model.EmailAddress); if (user == null) { var errorResponse = new { ErrorCode = -1, ErrorDescription = "forgotPassword.ForgotPasswordEmailNotFoundError" }; return(Request.CreateResponse(HttpStatusCode.OK, errorResponse)); } else if (!(await UserManager.IsEmailConfirmedAsync(user.Id))) { var errorResponse = new { ErrorCode = -1, ErrorDescription = "forgotPassword.ForgotPasswordTechnicalError" }; return(Request.CreateResponse(HttpStatusCode.OK, errorResponse)); } var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); //var clientURL = Request.GetOwinContext().Request.Uri.GetLeftPart(UriPartial.Authority); var clientURL = RequestContext.Url.Request.Headers.GetValues("Origin").FirstOrDefault(); var callbackURL = $"{clientURL}/resetPassword?userId={user.Id}&code={code}"; var urlBrand = "generac"; if (clientURL.ToLower().Contains("pramac")) { urlBrand = "pramac"; } if (String.IsNullOrEmpty(model.Language) || model.Language != "en" || model.Language != "en") { model.Language = "en"; } var emaildata = new SendGridEmailData { template_id = SectionHandler.GetSectionValue($"{model.Language.ToLower()}/emailTemplates/resetPassword", "TemplateID", ""), personalizations = new List <Personalization>() { new Personalization { to = new List <To>() { new To { email = user.Email, name = user.FirstName + " " + user.LastName } }, substitutions = new Dictionary <string, string>() { { "%FirstName%", user.FirstName }, { "%LastName%", user.LastName }, { "%LoginID%", user.Email }, { "%PasswordResetLink%", callbackURL }, { "%CompanyName%", EmailHelper.CompanyName(model.Language, urlBrand) }, { "%CompanyAddress%", EmailHelper.CompanyAddress(model.Language, urlBrand) } } } } }; await EmailHelper.SendGridAsyncWithTemplate(emaildata); var successResponse = new { ErrorCode = 0, Message = "Password Reset Email sent successfully." }; _traceMessageProcessor.WriteTrace(TraceMessaging.EventSource, TraceLevel.Info, "Forgot Password", "Forgot Password", "Forgot Password", "Forgot Password Success for " + model.EmailAddress); return(Request.CreateResponse(HttpStatusCode.OK, successResponse)); } catch (Exception ex) { var errorResponse = new { ErrorCode = -1, ErrorDescription = "Exception occured in User registration" }; _traceMessageProcessor.WriteTrace(TraceMessaging.EventSource, TraceLevel.Error, "Forgot Password", "Forgot Password", "Forgot Password Failed for " + model.EmailAddress, ex.Message); return(Request.CreateResponse(HttpStatusCode.OK, errorResponse)); } }