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); }
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 ); }
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 ); }
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); }