Commit fdd5269a by Nilu

S13005163 # Client - Incoming Issues (raised by Client) #Standard user should…

S13005163 # Client - Incoming Issues (raised by Client) #Standard user should not be able to invite users
parent 40ac7167
......@@ -2,6 +2,7 @@ package performa.form;
import java.util.Date;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import oneit.business.content.Article;
import oneit.components.ParticipantInitialisationContext;
......@@ -17,7 +18,6 @@ import oneit.servlets.forms.*;
import oneit.servlets.process.*;
import oneit.utils.*;
import performa.orm.*;
import performa.orm.types.RoleType;
import performa.utils.Utils;
import performa.utils.WebUtils;
......@@ -98,6 +98,10 @@ public class SendUserInvitationFP extends SaveFP
comUser.setCompany(company);
}
Set<HiringTeam> existingTeams = comUser.pipelineCompanyUser().toHiringTeams().toHiringTeam().uniqueVals();
if(!existingTeams.contains(hiringTeam))
{
// setting the default hiring team selected above the screen
CompanyUserHiringTeamLink link = CompanyUserHiringTeamLink.createCompanyUserHiringTeamLink(objTran);
......@@ -105,15 +109,23 @@ public class SendUserInvitationFP extends SaveFP
link.setHiringTeam(hiringTeam);
link.setRole(inviteTeammate.getRoleType());
existingTeams.add(hiringTeam);
}
// setting additional hiring teams added when inviting
for (HiringTeamLinkNPO teamLinkNPO : inviteTeammate.getHiringTeamsSet())
{
// avoid adding link to same team twice
if(!existingTeams.contains(teamLinkNPO.getHiringTeam()))
{
CompanyUserHiringTeamLink teamLink = CompanyUserHiringTeamLink.createCompanyUserHiringTeamLink(objTran);
teamLink.setCompanyUser(comUser);
teamLink.setHiringTeam(teamLinkNPO.getHiringTeam());
teamLink.setRole(inviteTeammate.getRoleType());
existingTeams.add(teamLinkNPO.getHiringTeam());
}
}
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", secUser);
......
......@@ -28,21 +28,6 @@ public class CompanyUserHiringTeamLink extends BaseCompanyUserHiringTeamLink
return getRole() != null && getRole() == RoleType.OWNER;
}
public List<RoleType> getAvailableRoles(CompanyUserHiringTeamLink userLink)
{
RoleType roleType = userLink.getRole();
if(roleType == RoleType.OWNER)
{
return Arrays.asList(new RoleType[]{RoleType.STANDARD, RoleType.ADMIN, RoleType.OWNER});
}
else if(roleType == RoleType.ADMIN)
{
return Arrays.asList(new RoleType[]{RoleType.STANDARD, RoleType.ADMIN});
}
return Arrays.asList(new RoleType[]{RoleType.STANDARD});
}
public boolean showRemoveIcon(CompanyUserHiringTeamLink userLink)
{
......@@ -61,6 +46,7 @@ public class CompanyUserHiringTeamLink extends BaseCompanyUserHiringTeamLink
return Boolean.FALSE;
}
public boolean showEnableIcon(CompanyUserHiringTeamLink userLink)
{
RoleType roleType = userLink.getRole();
......
......@@ -572,11 +572,12 @@ public class Utils
return companyUser.pipelineCompanyUser().toHiringTeams().toHiringTeam().uniqueVals().toArray(new HiringTeam[0]);
}
public static HiringTeam[] getOtherHiringTeams(HiringTeam hiringTeam)
public static HiringTeam[] getOtherHiringTeams(HiringTeam hiringTeam, CompanyUser comUser, CompanyUserHiringTeamLink userLink)
{
Filter<HiringTeam> filter = HiringTeam.SearchByAll().andObjectID(new NotEqualsFilter<>(hiringTeam.getID().longID()));
return hiringTeam.pipelineHiringTeam().toCompany().toHiringTeams(filter).uniqueVals().toArray(new HiringTeam[0]);
return comUser.pipelineCompanyUser().toHiringTeams(CompanyUserHiringTeamLink.SearchByAll().andRole(new EqualsFilter<>(userLink.getRole())))
.toHiringTeam(filter).uniqueVals().toArray(new HiringTeam[0]);
}
public static HiringTeam[] getHiringTeamsWithOwnBilling(HiringTeam hiringTeam)
......@@ -674,4 +675,21 @@ public class Utils
currency == CurrencyType.EUR ? "CurrencyEuroOnly" :
"CurrencyDollarsOnly";
}
public static List<RoleType> getAvailableRoles(CompanyUserHiringTeamLink userLink)
{
RoleType roleType = userLink.getRole();
if(roleType == RoleType.OWNER)
{
return Arrays.asList(new RoleType[]{RoleType.STANDARD, RoleType.ADMIN, RoleType.OWNER});
}
else if(roleType == RoleType.ADMIN)
{
return Arrays.asList(new RoleType[]{RoleType.STANDARD, RoleType.ADMIN});
}
return Arrays.asList(new RoleType[]{RoleType.STANDARD});
}
}
\ No newline at end of file
......@@ -57,6 +57,8 @@
CompanyUserHiringTeamLink comUserLink = comUser.pipelineCompanyUser().toHiringTeams(CompanyUserHiringTeamLink.SearchByAll().andHiringTeam(new EqualsFilter<>(hiringTeam))).val();
inviteTeammate.setRoleType(RoleType.STANDARD);
boolean readOnly = comUserLink.getRole() == RoleType.STANDARD;
%>
<script type="text/javascript">
......@@ -211,7 +213,7 @@
</a>
<div class="dropdown-menu select2type-results no-icon" aria-labelledby="dropdownMenuLink<%= link.getID() %>">
<%
for (RoleType roleType : link.getAvailableRoles(comUserLink))
for (RoleType roleType : Utils.getAvailableRoles(comUserLink))
{
%>
<oneit:button name="saveCompanyUser" value="<%= roleType.getDescription() %>" skin="link" cssClass="dropdown-item"
......@@ -343,20 +345,26 @@
</div>
<div class="form-group">
<label><oneit:label GUIName="Email Address" /></label>
<oneit:ormInput obj="<%= inviteTeammate %>" type="text" attributeName="UserEmail" cssClass="form-control" style="text-transform: lowercase"/>
<oneit:ormInput obj="<%= inviteTeammate %>" type="text" attributeName="UserEmail" cssClass="form-control" style="text-transform: lowercase" readonly="<%= readOnly%>"/>
</div>
<div class="form-group">
<label><oneit:label GUIName="First Name" /></label>
<oneit:ormInput obj="<%= inviteTeammate %>" type="text" attributeName="FirstName" cssClass="form-control"/>
<oneit:ormInput obj="<%= inviteTeammate %>" type="text" attributeName="FirstName" cssClass="form-control" readonly="<%= readOnly%>"/>
</div>
<div class="form-group">
<label><oneit:label GUIName="Last Name" /></label>
<oneit:ormInput obj="<%= inviteTeammate %>" type="text" attributeName="LastName" cssClass="form-control"/>
<oneit:ormInput obj="<%= inviteTeammate %>" type="text" attributeName="LastName" cssClass="form-control" readonly="<%= readOnly%>"/>
</div>
<div class="form-group">
<label><oneit:label GUIName="Role" /></label>
<oneit:ormEnum obj="<%= inviteTeammate %>" attributeName="RoleType" cssClass="form-control" enums="<%= Arrays.asList(new RoleType[]{RoleType.STANDARD, RoleType.ADMIN, RoleType.OWNER}) %>"/>
<oneit:ormEnum obj="<%= inviteTeammate %>" attributeName="RoleType" cssClass="form-control" enums="<%= Utils.getAvailableRoles(comUserLink) %>" readonly="<%= readOnly%>"/>
</div>
<%
HiringTeam[] teams = Utils.getOtherHiringTeams(hiringTeam, comUser, comUserLink);
if(!readOnly && teams.length > 0)
{
%>
<div class="form-group">
<label><oneit:label GUIName="Add to multiple Hiring Teams" /></label>
</div>
......@@ -366,7 +374,7 @@
%>
<div class="form-group">
<div class="wider-select">
<tagfile:ormsingleasso_select obj="<%= inviteTeammateLink %>" assocName="HiringTeam" options="<%= Utils.getOtherHiringTeams(hiringTeam) %>"/>
<tagfile:ormsingleasso_select obj="<%= inviteTeammateLink %>" assocName="HiringTeam" options="<%= teams %>"/>
</div>
</div>
<%
......@@ -375,10 +383,13 @@
<oneit:button value=" " name="additionalTeam" skin="link" requestAttribs="<%= CollectionUtils.EMPTY_MAP %>">
<label><oneit:label GUIName="Add another hiring team" /></label>
</oneit:button>
<%
}
%>
<div class="correctEmail" >
<oneit:recalc mode="Boolean" script="company.isEmailCorrect()" company="<%= company %>" />
</div>
<oneit:recalcClass htmlTag="div" classScript="inviteTeammate.isEmailCorrect() ? 'invite-btn enabled': 'invite-btn disabled'" inviteTeammate="<%= inviteTeammate %>">
<oneit:recalcClass htmlTag="div" classScript="inviteTeammate.isEmailCorrect() && !readOnly ? 'invite-btn enabled': 'invite-btn disabled'" inviteTeammate="<%= inviteTeammate %>" readOnly="<%= readOnly%>">
<oneit:button value="Invite" name="sendUserInvites" cssClass="btn btn-invite"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
.mapEntry ("restartProcess", Boolean.TRUE)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment