Пример #1
0
        public void UpdateIdeaStatusTest()
        {
            RESTAPIIdeaController apiController = new RESTAPIIdeaController()
            {
                DeviceWithDbContext = new RESTAPIDeviceWithDbContext()
                {
                    DbContext = new IdeaDatabase.DataContext.IdeaDatabaseDataContext()
                }
            };
            RestAPIAddIdeaStateResponse response = new RestAPIAddIdeaStateResponse();
            int IdeaId = 0;

            submitIdeaMock.Setup(x => x.InsertIdeaStatus(It.IsAny <RestAPIAddIdeaStateResponse>(), It.IsAny <int>(), It.IsAny <int>()));
            submitIdeaMock.Setup(x => x.GetAllStakeholdersEmailAdd(It.IsAny <int>())).Returns(new List <IdeaEmailToDetails>()
            {
                new IdeaEmailToDetails()
                {
                    EmailAddress = "*****@*****.**", IdeaState = 1
                }
            });
            queryUtilMock.Setup(x => x.GetAllStakeholdersEmailAdd(It.IsAny <IIdeaDatabaseDataContext>(), It.IsAny <int>())).Returns(new List <IdeaEmailToDetails>()
            {
                new IdeaEmailToDetails()
                {
                    EmailAddress = "*****@*****.**", IdeaState = 1
                }
            });

            response = apiController.UpdateIdeaStatus(IdeaId);

            Assert.IsTrue(response.ErrorList.Count == 0);
        }
Пример #2
0
        public void SubmitIdeaAssignments(RestAPIAddIdeaStateResponse response, int UserId, int IdeaId, int ideaState)
        {
            DatabaseWrapper.databaseOperation(response,
                                              (context, query) =>
            {
                Role roles = null;
                RoleMapping roleMapping   = null;
                IdeaAssignment assignment = null;

                if (ideaState == (int)IdeaStatusTypes.ReviewPending)
                {
                    roles = query.GetAllRoleMappings(context, RoleTypes.REVIEWER.ToString());
                }
                else if (ideaState == (int)IdeaStatusTypes.SponsorPending)
                {
                    roles = query.GetAllRoleMappings(context, RoleTypes.SPONSOR.ToString());
                }
                else if (ideaState == (int)IdeaStatusTypes.Sponsored)
                {
                    roles = query.GetAllRoleMappings(context, RoleTypes.SALES.ToString());
                }

                if (roles == null || roles.RoleMappings.Count == 0)
                {
                    response.ErrorList.Add(Faults.ReviewerNotExists);
                    return;
                }

                roleMapping = query.GetUserRoleMappingByRoleId(context, roles.RoleId);
                assignment  = query.GetAssignmentByIdeaId(context, IdeaId);

                if (assignment != null)
                {
                    assignment.ReviewByUserId = roleMapping.UserId;
                }
                else
                {
                    IdeaAssignment ideaassignment = new IdeaAssignment()
                    {
                        IdeaId = IdeaId, ReviewByUserId = roleMapping.UserId, IsActive = true, CreatedDate = DateTime.UtcNow
                    };
                    query.AddIdeaAssignment(context, ideaassignment);
                }

                context.SubmitChanges();
            }
                                              , readOnly: false
                                              );
        }
Пример #3
0
        public void InsertStatus(RestAPIAddIdeaStateResponse response, int IdeaID, int ideaState, int UserId)
        {
            DatabaseWrapper.databaseOperation(response,
                                              (context, query) =>
            {
                IdeaStatusLog ideaStatusLog = null;
                Idea idea = query.GetIdeaById(context, IdeaID);
                idea.IdeaStatusLogs.ToList().ForEach(x => x.IsActive = false);

                ideaStatusLog = new IdeaStatusLog()
                {
                    IdeaId = IdeaID, IdeaState = ideaState, ModifiedByUserId = UserId, CreatedDate = DateTime.UtcNow, IsActive = true
                };
                query.AddIdeaStatusHistory(context, ideaStatusLog);

                ideaAssignmentUtils.SubmitIdeaAssignments(response, UserId, IdeaID, ideaState);
                context.SubmitChanges();
            }
                                              , readOnly: false
                                              );
        }
Пример #4
0
        public void UpdateIdeaStatusTest()
        {
            RestAPIAddIdeaStateResponse response = new RestAPIAddIdeaStateResponse();
            int UserId = 1;
            int IdeaId = 1;

            queryUtilMock.Setup(x => x.GetIdeaStatusByIdeaId(It.IsAny <IIdeaDatabaseDataContext>(), It.IsAny <int>())).Returns(new IdeaStatusLog()
            {
                IdeaId = 1, IdeaState = 1, IsActive = true
            });
            queryUtilMock.Setup(x => x.GetUserRoleMappings(It.IsAny <IIdeaDatabaseDataContext>(), It.IsAny <int>())).Returns(new List <RoleMapping>()
            {
                new RoleMapping()
                {
                    UserId = 1, RoleId = 3
                }
            });
            queryUtilMock.Setup(x => x.GetAllRoleMappings(It.IsAny <IIdeaDatabaseDataContext>(), It.IsAny <string>())).Returns(new Role()
            {
                RoleId = 1, RoleName = "SPONSOR", RoleMappings = new List <RoleMapping>()
                {
                    new RoleMapping()
                    {
                        UserId = 1, RoleId = 3
                    }
                }
            });
            queryUtilMock.Setup(x => x.GetUserRoleMappingByRoleId(It.IsAny <IIdeaDatabaseDataContext>(), It.IsAny <int>())).Returns(new RoleMapping()
            {
                UserId = 1, RoleId = 3
            });

            submitIdeaMock.Setup(x => x.InsertIdeaStatus(It.IsAny <RestAPIAddIdeaStateResponse>(), It.IsAny <int>(), It.IsAny <int>())).Returns(response);
            response = submitIdeaUtil.InsertIdeaStatus(response, IdeaId, UserId);

            Assert.IsTrue(response.ErrorList.Count > 0);
        }
        public RestAPIAddIdeaStateResponse UpdateIdeaStatus([FromUri] int IdeaID)
        {
            RestAPIAddIdeaStateResponse response = new RestAPIAddIdeaStateResponse();

            submitIdeaUtil.InsertIdeaStatus(response, IdeaID, UserID);
            logUtil.InsertIdeaLog(response, IdeaID, LogMessages.UpdateIdeaStatus, (int)IdeaLogTypes.Info, Enum.GetName(typeof(IdeaMethodTypes), IdeaMethodTypes.UpdateIdeaStatus), EnumDescriptor.GetEnumDescription(IdeaMethodTypes.UpdateIdeaStatus), UserID);

            if (response.ErrorList.Count == 0)
            {
                ISubmitIdeaUtil ideautils = DependencyInjector.Get <ISubmitIdeaUtil, SubmitIdeaUtil>();

                RESTAPIIdeaBasicDetailsInterchange ideaDetails = new RESTAPIIdeaBasicDetailsInterchange();

                ideaDetails = ideautils.GetIdeaBasicDetails(IdeaID);
                List <IdeaEmailToDetails> emailTo = submitIdeaUtil.GetAllStakeholdersEmailAdd(IdeaID);
                EmailUtil emailObj = new EmailUtil();

                // TODO: The below email logic is written here since there is no ISubmitIdeaUtil in InnovationPortalService, the database util is directly called, this needs to be changed in code refactoring.

                // Determine the current state of Idea: if the highest status is 2, it is currently reviewed if 3 it is sponsored
                if (emailTo[0].IdeaState == (int)IdeaStatusTypes.SponsorPending)
                {
                    // This is an Idea Status update request for changing state from Submitted to Reviewed
                    foreach (var usr in emailTo)
                    {
                        if (usr.IdeaState == (int)IdeaStatusTypes.ReviewPending)
                        {
                            // Send Email to Submitter
                            EmailTemplate emailTemp = emailObj.GetEmailTemplate(EmailTemplateType.IdeaReviewedSubmitter.ToString());
                            emailObj.SendEmail(usr.EmailAddress, emailTemp.Body, emailTemp.Subject);
                        }
                        if (usr.IdeaState == (int)IdeaStatusTypes.SponsorPending)
                        {
                            // Send Email to Reviwer
                            EmailTemplate emailTemp = emailObj.GetEmailTemplate(EmailTemplateType.IdeaReviewedReviewer.ToString());
                            emailObj.SendEmail(usr.EmailAddress, emailTemp.Body, emailTemp.Subject);
                        }

                        if (usr.IdeaState == (int)IdeaStatusTypes.Default)
                        {
                            //The user in Assignment table should be Sponsor
                            EmailTemplate emailTemp = emailObj.GetEmailTemplate(EmailTemplateType.IdeaAssignedSponsor.ToString());
                            emailObj.SendEmail(usr.EmailAddress, emailTemp.Body, emailTemp.Subject);
                        }
                    }
                }
                else if (emailTo[0].IdeaState == (int)IdeaStatusTypes.Sponsored)
                {
                    // This is an Idea Status update request for changing state from Reviewed to Sponsored
                    foreach (var usr in emailTo)
                    {
                        if (usr.IdeaState == (int)IdeaStatusTypes.ReviewPending)
                        {
                            // Send Email to Submitter
                            EmailTemplate emailTemp = emailObj.GetEmailTemplate(EmailTemplateType.IdeaSponsoredSubmitter.ToString());
                            emailObj.SendEmail(usr.EmailAddress, emailTemp.Body, emailTemp.Subject);
                        }
                        if (usr.IdeaState == (int)IdeaStatusTypes.SponsorPending)
                        {
                            // Send Email to Reviewer
                            EmailTemplate emailTemp = emailObj.GetEmailTemplate(EmailTemplateType.IdeaSponsoredReviewer.ToString());
                            emailObj.SendEmail(usr.EmailAddress, emailTemp.Body, emailTemp.Subject);
                        }
                        if (usr.IdeaState == (int)IdeaStatusTypes.Sponsored)
                        {
                            // Send Email to Sponsor
                            EmailTemplate emailTemp = emailObj.GetEmailTemplate(EmailTemplateType.IdeaSponsoredSponsor.ToString());
                            emailObj.SendEmail(usr.EmailAddress, emailTemp.Body, emailTemp.Subject);
                        }
                        //if (usr.IdeaState == 0)
                        //{
                        //       //This user should be a Sales Guy. No action needs to be taken currently. This case is kept for future requirement.
                        //}
                    }
                }
            }
            return(response);
        }
        public RestAPIAddIdeaStateResponse InsertIdeaStatus(RestAPIAddIdeaStateResponse response, int IdeaID, int UserId)
        {
            IdeaStatusLog      ideaStatusLog = null;
            List <RoleMapping> roleMappings  = new List <RoleMapping>();
            int  ideaState = 0;
            bool result    = false;

            RestAPIAddIdeaStateResponse restapiaddidearesponse = new RestAPIAddIdeaStateResponse();

            DatabaseWrapper.databaseOperation(response,
                                              (context, query) =>
            {
                ideaStatusLog = query.GetIdeaStatusByIdeaId(context, IdeaID);
                roleMappings  = query.GetUserRoleMappings(context, UserId);

                if (roleMappings.Count > 0)
                {
                    foreach (var role in roleMappings)
                    {
                        if (ideaStatusLog.IdeaState == (int)IdeaStatusTypes.ReviewPending)
                        {
                            if (role.RoleId == 3)
                            {
                                result = true;
                            }
                        }
                        if (ideaStatusLog.IdeaState == (int)IdeaStatusTypes.SponsorPending)
                        {
                            if (role.RoleId == 4)
                            {
                                result = true;
                            }
                        }
                    }
                }
                if (result == false)
                {
                    response.ErrorList.Add(Faults.InsufficientPermissions);
                    return;
                }

                if (ideaStatusLog.IdeaState == (int)IdeaStatusTypes.ReviewPending)
                {
                    ideaState = (int)IdeaStatusTypes.SponsorPending;
                    restapiaddidearesponse.IdeaState = EnumDescriptor.GetEnumDescription(IdeaStatusTypes.SponsorPending);
                }
                else if (ideaStatusLog.IdeaState == (int)IdeaStatusTypes.SponsorPending)
                {
                    ideaState = (int)IdeaStatusTypes.Sponsored;
                    restapiaddidearesponse.IdeaState = EnumDescriptor.GetEnumDescription(IdeaStatusTypes.Sponsored);
                }
                else
                {
                    response.ErrorList.Add(Faults.InvalidIdeaStatus);
                    response.Status = Failure;
                    return;
                }

                statusUtils.InsertStatus(response, IdeaID, ideaState, UserId);
                context.SubmitChanges();

                response.Status = Success;
            }
                                              , readOnly: false
                                              );

            if (response == null && response.ErrorList.Count != 0)
            {
                response.ErrorList.Add(Faults.ServerIsBusy);
            }
            return(response);
        }