| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| import org.apache.ofbiz.entity.condition.* |
| import org.apache.ofbiz.base.util.* |
| |
| cond = EntityCondition.makeCondition([ |
| EntityCondition.makeCondition ("projectTypeId", EntityOperator.EQUALS, "SCRUM_PROJECT"), |
| EntityCondition.makeCondition ("projectStatusId", EntityOperator.NOT_EQUAL, "SPJ_CLOSED") |
| ], EntityJoinOperator.AND) |
| securityGroupCond = EntityCondition.makeCondition([ |
| EntityCondition.makeCondition ("partyId", EntityOperator.EQUALS, userLogin.partyId), |
| EntityCondition.makeCondition ("partyStatusId", EntityOperator.NOT_EQUAL, "PARTY_DISABLED"), |
| EntityCondition.makeCondition ("thruDate", EntityOperator.EQUALS, null) |
| ], EntityJoinOperator.AND) |
| fields = new HashSet(["partyId", "groupId"]) |
| |
| allSprints = from("ProjectSprint").where(cond).orderBy("projectName", "-sprintActualStartDate").queryList() |
| partyAndSecurityGroupList = select("partyId", "groupId").from("ScrumMemberUserLoginAndSecurityGroup").where(securityGroupCond).orderBy("partyId").queryList() |
| oldProjectId = null |
| newProjectId = null |
| countSprint = 0 |
| sprints = [] |
| allSprints.each { sprint -> |
| newProjectId = sprint.projectId |
| productAndRole = from("ProductAndRole").where("roleTypeId", "PRODUCT_OWNER_COMP", "productId", sprint.productId).queryList() |
| companyId = "" |
| companyName = "" |
| if (productAndRole.size() > 0) { |
| companyName = productAndRole.get(0).groupName |
| companyId = productAndRole.get(0).partyId |
| } |
| sprint = sprint.getAllFields() |
| sprint.put("companyId", companyId) |
| sprint.put("companyName", companyName) |
| product = from("Product").where("productId", sprint.productId).queryOne() |
| productName = "" |
| if (product != null) productName = product.internalName |
| sprint.put("productName", productName) |
| //sprint.add("companyName", companyName, "String") |
| if (oldProjectId != newProjectId) { |
| oldProjectId = newProjectId |
| countSprint = 0 |
| ismember = false |
| if (partyAndSecurityGroupList) { |
| groupId = partyAndSecurityGroupList[0].groupId |
| if ("SCRUM_PRODUCT_OWNER".equals(groupId)) { |
| productAndRoleList = from("ProductRole").where("productId", sprint.productId, "partyId", partyAndSecurityGroupList.getAt(0).partyId, "thruDate", null).queryList() |
| if (productAndRoleList) { |
| ismember = true |
| } |
| }else if("SCRUM_STAKEHOLDER".equals(groupId)) { |
| // check in company relationship. |
| scrumRolesCond = EntityCondition.makeCondition([ |
| EntityCondition.makeCondition ("partyId", EntityOperator.EQUALS, userLogin.partyId), |
| EntityCondition.makeCondition ("roleTypeId", EntityOperator.EQUALS, "STAKEHOLDER"), |
| EntityCondition.makeCondition ("partyStatusId", EntityOperator.NOT_EQUAL, "PARTY_DISABLED"), |
| EntityCondition.makeCondition ("thruDate", EntityOperator.EQUALS, null) |
| ], EntityJoinOperator.AND) |
| scrumRolesPersonAndCompanyList = from("ScrumRolesPersonAndCompany").where(scrumRolesCond).queryList() |
| productRoleList = from("ProductRole").where("partyId", scrumRolesPersonAndCompanyList[0].partyIdFrom, "roleTypeId", "PRODUCT_OWNER_COMP", "thruDate", null).queryList() |
| if (productRoleList) { |
| productRoleList.each { productRoleMap -> |
| stakeholderProduct = productRoleMap.productId |
| if (stakeholderProduct.equals(sprint.productId)) { |
| ismember = true |
| } |
| } |
| } |
| //check in product. |
| if (ismember == false) { |
| productAndRoleList = from("ProductAndRole") |
| .where("productId", sprint.productId, "partyId", userLogin.partyId, "roleTypeId", "STAKEHOLDER", |
| "supportDiscontinuationDate", null, "thruDate", null) |
| .queryList() |
| if (productAndRoleList) { |
| ismember = true |
| } |
| } |
| } else if("SCRUM_MASTER".equals(groupId)) { |
| //check in product |
| productRoleList = [] |
| productRoleList = from("ProductAndRole") |
| .where("productId" : sprint.productId, "partyId" : userLogin.partyId, |
| "roleTypeId" : "SCRUM_MASTER", "supportDiscontinuationDate" : null, "thruDate" : null) |
| .queryList() |
| |
| if (productRoleList) { |
| ismember = true |
| } |
| //check in project. |
| if (ismember == false) { |
| projectPartyAssignment = from("WorkEffortPartyAssignment").where("workEffortId", sprint.projectId, "partyId", userLogin.partyId).queryList() |
| if (projectPartyAssignment) { |
| ismember = true |
| } |
| } |
| //check in sprint. |
| if (ismember == false) { |
| allSprintList = [] |
| allSprintList = from("WorkEffort").where("workEffortParentId", sprint.projectId).queryList() |
| allSprintList.each { SprintListMap -> |
| sprintId = SprintListMap.workEffortId |
| workEffortPartyAssignment = from("WorkEffortPartyAssignment").where("workEffortId", sprintId, "partyId", userLogin.partyId).queryList() |
| if (workEffortPartyAssignment) { |
| ismember = true |
| } |
| } |
| } |
| } else { |
| allSprintList = [] |
| allSprintList = from("WorkEffort").where("workEffortParentId", sprint.projectId).queryList() |
| allSprintList.each { SprintListMap -> |
| sprintId = SprintListMap.workEffortId |
| workEffortPartyAssignment = from("WorkEffortPartyAssignment").where("workEffortId", sprintId, "partyId", userLogin.partyId).queryList() |
| if (workEffortPartyAssignment) { |
| ismember = true |
| } |
| } |
| } |
| } |
| if (security.hasEntityPermission("SCRUM", "_ADMIN", session) |
| || ((security.hasEntityPermission("SCRUM", "_ROLE_ADMIN", session) || security.hasEntityPermission("SCRUM", "_ROLE_VIEW", session) |
| || security.hasEntityPermission("SCRUM_PROJECT", "_ROLE_ADMIN", session) || security.hasEntityPermission("SCRUM_PROJECT", "_ROLE_VIEW", session) |
| || security.hasEntityPermission("SCRUM_PROJECT", "_VIEW", session)) && ismember)) { |
| sprints.add(sprint) |
| countSprint++ |
| } |
| } else { |
| if (countSprint < 4) { |
| ismember = false |
| if (partyAndSecurityGroupList) { |
| groupId = partyAndSecurityGroupList[0].groupId |
| if ("SCRUM_PRODUCT_OWNER".equals(groupId)) { |
| productAndRoleList = from("ProductRole").where("productId", sprint.productId, "partyId", partyAndSecurityGroupList.getAt(0).partyId, "thruDate", null).queryList() |
| if (productAndRoleList) { |
| ismember = true |
| } |
| }else if("SCRUM_STAKEHOLDER".equals(groupId)) { |
| // check in company relationship. |
| scrumRolesCond = EntityCondition.makeCondition([ |
| EntityCondition.makeCondition ("partyId", EntityOperator.EQUALS, userLogin.partyId), |
| EntityCondition.makeCondition ("roleTypeId", EntityOperator.EQUALS, "STAKEHOLDER"), |
| EntityCondition.makeCondition ("partyStatusId", EntityOperator.NOT_EQUAL, "PARTY_DISABLED"), |
| EntityCondition.makeCondition ("thruDate", EntityOperator.EQUALS, null) |
| ], EntityJoinOperator.AND) |
| scrumRolesPersonAndCompanyList = from("ScrumRolesPersonAndCompany").where(scrumRolesCond).queryList() |
| productRoleList = from("ProductRole").where("partyId", scrumRolesPersonAndCompanyList[0].partyIdFrom, "roleTypeId", "PRODUCT_OWNER_COMP", "thruDate", null).queryList() |
| if (productRoleList) { |
| productRoleList.each { productRoleMap -> |
| stakeholderProduct = productRoleMap.productId |
| if (stakeholderProduct.equals(sprint.productId)) { |
| ismember = true |
| } |
| } |
| } |
| //check in product. |
| if (ismember == false) { |
| productAndRoleList = from("ProductAndRole").where("productId" : sprint.productId, "partyId" : userLogin.partyId, "roleTypeId" : "STAKEHOLDER", "supportDiscontinuationDate" : null, "thruDate" : null).queryList() |
| if (productAndRoleList) { |
| ismember = true |
| } |
| } |
| } else if("SCRUM_MASTER".equals(groupId)) { |
| //check in product |
| productRoleList = [] |
| productRoleList = from("ProductAndRole").where("productId" : sprint.productId, "partyId" : userLogin.partyId, "roleTypeId" : "SCRUM_MASTER", "supportDiscontinuationDate" : null, "thruDate" : null).queryList() |
| if (productRoleList) { |
| ismember = true |
| } |
| //check in project. |
| if (ismember == false) { |
| projectPartyAssignment = from("WorkEffortPartyAssignment").where("workEffortId", sprint.projectId, "partyId", userLogin.partyId).queryList() |
| if (projectPartyAssignment) { |
| ismember = true |
| } |
| } |
| //check in sprint. |
| if (ismember == false) { |
| allSprintList = [] |
| allSprintList = from("WorkEffort").where("workEffortParentId", sprint.projectId).queryList() |
| allSprintList.each { SprintListMap -> |
| sprintId = SprintListMap.workEffortId |
| workEffortPartyAssignment = from("WorkEffortPartyAssignment").where("workEffortId", sprintId, "partyId", userLogin.partyId).queryList() |
| if (workEffortPartyAssignment) { |
| ismember = true |
| } |
| } |
| } |
| } else { |
| allSprintList = [] |
| allSprintList = from("WorkEffort").where("workEffortParentId", sprint.projectId).queryList() |
| allSprintList.each { SprintListMap -> |
| sprintId = SprintListMap.workEffortId |
| workEffortPartyAssignment = from("WorkEffortPartyAssignment").where("workEffortId", sprintId, "partyId", userLogin.partyId).queryList() |
| if (workEffortPartyAssignment) { |
| ismember = true |
| } |
| } |
| } |
| } |
| if (security.hasEntityPermission("SCRUM", "_ADMIN", session) |
| || ((security.hasEntityPermission("SCRUM", "_ROLE_ADMIN", session) || security.hasEntityPermission("SCRUM", "_ROLE_VIEW", session) |
| || security.hasEntityPermission("SCRUM_PROJECT", "_ROLE_ADMIN", session) || security.hasEntityPermission("SCRUM_PROJECT", "_ROLE_VIEW", session) |
| || security.hasEntityPermission("SCRUM_PROJECT", "_VIEW", session)) && ismember)) { |
| sprints.add(sprint) |
| countSprint++ |
| } |
| } |
| } |
| } |
| if (sprints) { |
| sprints = UtilMisc.sortMaps(sprints, ["companyName", "projectName", "productName"]) |
| context.sprints = sprints |
| } |