blob: 11ed080d786e51a3c84f4dccc87edd6b57aac40f [file] [log] [blame]
/*
* 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
}