Пример #1
0
        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);
            }));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
            }));
        }
Пример #4
0
        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));
            }
        }