Exemplo n.º 1
0
 public HttpResponseMessage CopySolution(SolutionRequestDto solutionRequestDto)
 {
     return(CreateHttpResponse(() =>
     {
         return Request.CreateResponse(_projectSolutionProcessor.CopySolution(solutionRequestDto, UserID, UserName));
     }));
 }
        public GrantEditAccessResponseDto GrantEditAccess(SolutionRequestDto solutionRequestDto, string userID, string userName)
        {
            var project  = _projectRepository.GetSingle(p => p.ID == solutionRequestDto.ProjectID);
            var solution = _solutionRepository.GetSingle(x => x.ID == solutionRequestDto.SolutionID &&
                                                         x.ProjectID == solutionRequestDto.ProjectID &&
                                                         userName.Equals(x.OwnedBy, StringComparison.InvariantCultureIgnoreCase));

            if (solution.OwnedBy.Equals(solution.CreatedBy, StringComparison.InvariantCultureIgnoreCase))
            {
                solution.OwnedBy          = solution.Project.CreatedBy;
                solution.ModifiedBy       = userName;
                solution.ModifiedDateTime = DateTime.UtcNow;
                solution.EditAccessNotes  = solutionRequestDto.Notes;
            }
            else
            {
                if (solution.OwnedBy.Equals(solution.Project.CreatedBy, StringComparison.InvariantCultureIgnoreCase))
                {
                    solution.OwnedBy          = solution.CreatedBy;
                    solution.ModifiedBy       = userName;
                    solution.ModifiedDateTime = DateTime.UtcNow;
                    solution.EditAccessNotes  = solutionRequestDto.Notes;
                }
            }

            var result = _solutionRepository.Update(solution);

            _solutionRepository.Commit();

            //return new Dictionary<string, string>
            //    {
            //        { "ProjectId",Convert.ToString(result.ProjectID)},
            //        { "SolutionId",Convert.ToString(result.ID)},
            //        { "Email",result.OwnedBy}
            //    };

            return(new GrantEditAccessResponseDto
            {
                ProjectID = result.ProjectID,
                SolutionID = result.ID,
                ProjectName = project.ProjectName,
                SolutionName = solution.SolutionName,
                SolutionComments = solution.EditAccessNotes,
                RecipientEmail = result.OwnedBy
            });
        }
        public Dictionary <string, int> CopySolution(SolutionRequestDto solutionRequestDto, string userID, string userName)
        {
            var solution       = new Solution();
            var sharedSolution = _solutionRepository.GetSingle(x => x.ID == solutionRequestDto.SolutionID && x.ProjectID == solutionRequestDto.ProjectID);

            if (sharedSolution != null)
            {
                var dateTime = DateTime.UtcNow;
                MapSolution(userName, solution, sharedSolution, dateTime);

                var result = _solutionRepository.Add(solution);
                _solutionRepository.Commit();

                return(new Dictionary <string, int>
                {
                    { "ProjectId", result.ProjectID },
                    { "SolutionId", result.ID }
                });
            }

            throw new PowerDesignProException("", "");
        }
Exemplo n.º 4
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);
            }));
        }