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; ...@@ -2,6 +2,7 @@ package performa.form;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import oneit.business.content.Article; import oneit.business.content.Article;
import oneit.components.ParticipantInitialisationContext; import oneit.components.ParticipantInitialisationContext;
...@@ -17,7 +18,6 @@ import oneit.servlets.forms.*; ...@@ -17,7 +18,6 @@ import oneit.servlets.forms.*;
import oneit.servlets.process.*; import oneit.servlets.process.*;
import oneit.utils.*; import oneit.utils.*;
import performa.orm.*; import performa.orm.*;
import performa.orm.types.RoleType;
import performa.utils.Utils; import performa.utils.Utils;
import performa.utils.WebUtils; import performa.utils.WebUtils;
...@@ -98,6 +98,10 @@ public class SendUserInvitationFP extends SaveFP ...@@ -98,6 +98,10 @@ public class SendUserInvitationFP extends SaveFP
comUser.setCompany(company); comUser.setCompany(company);
} }
Set<HiringTeam> existingTeams = comUser.pipelineCompanyUser().toHiringTeams().toHiringTeam().uniqueVals();
if(!existingTeams.contains(hiringTeam))
{
// setting the default hiring team selected above the screen // setting the default hiring team selected above the screen
CompanyUserHiringTeamLink link = CompanyUserHiringTeamLink.createCompanyUserHiringTeamLink(objTran); CompanyUserHiringTeamLink link = CompanyUserHiringTeamLink.createCompanyUserHiringTeamLink(objTran);
...@@ -105,15 +109,23 @@ public class SendUserInvitationFP extends SaveFP ...@@ -105,15 +109,23 @@ public class SendUserInvitationFP extends SaveFP
link.setHiringTeam(hiringTeam); link.setHiringTeam(hiringTeam);
link.setRole(inviteTeammate.getRoleType()); link.setRole(inviteTeammate.getRoleType());
existingTeams.add(hiringTeam);
}
// setting additional hiring teams added when inviting // setting additional hiring teams added when inviting
for (HiringTeamLinkNPO teamLinkNPO : inviteTeammate.getHiringTeamsSet()) for (HiringTeamLinkNPO teamLinkNPO : inviteTeammate.getHiringTeamsSet())
{ {
// avoid adding link to same team twice
if(!existingTeams.contains(teamLinkNPO.getHiringTeam()))
{
CompanyUserHiringTeamLink teamLink = CompanyUserHiringTeamLink.createCompanyUserHiringTeamLink(objTran); CompanyUserHiringTeamLink teamLink = CompanyUserHiringTeamLink.createCompanyUserHiringTeamLink(objTran);
teamLink.setCompanyUser(comUser); teamLink.setCompanyUser(comUser);
teamLink.setHiringTeam(teamLinkNPO.getHiringTeam()); teamLink.setHiringTeam(teamLinkNPO.getHiringTeam());
teamLink.setRole(inviteTeammate.getRoleType()); teamLink.setRole(inviteTeammate.getRoleType());
existingTeams.add(teamLinkNPO.getHiringTeam());
}
} }
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", secUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", secUser);
......
...@@ -28,21 +28,6 @@ public class CompanyUserHiringTeamLink extends BaseCompanyUserHiringTeamLink ...@@ -28,21 +28,6 @@ public class CompanyUserHiringTeamLink extends BaseCompanyUserHiringTeamLink
return getRole() != null && getRole() == RoleType.OWNER; 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) public boolean showRemoveIcon(CompanyUserHiringTeamLink userLink)
{ {
...@@ -61,6 +46,7 @@ public class CompanyUserHiringTeamLink extends BaseCompanyUserHiringTeamLink ...@@ -61,6 +46,7 @@ public class CompanyUserHiringTeamLink extends BaseCompanyUserHiringTeamLink
return Boolean.FALSE; return Boolean.FALSE;
} }
public boolean showEnableIcon(CompanyUserHiringTeamLink userLink) public boolean showEnableIcon(CompanyUserHiringTeamLink userLink)
{ {
RoleType roleType = userLink.getRole(); RoleType roleType = userLink.getRole();
......
...@@ -572,11 +572,12 @@ public class Utils ...@@ -572,11 +572,12 @@ public class Utils
return companyUser.pipelineCompanyUser().toHiringTeams().toHiringTeam().uniqueVals().toArray(new HiringTeam[0]); 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())); 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) public static HiringTeam[] getHiringTeamsWithOwnBilling(HiringTeam hiringTeam)
...@@ -674,4 +675,21 @@ public class Utils ...@@ -674,4 +675,21 @@ public class Utils
currency == CurrencyType.EUR ? "CurrencyEuroOnly" : currency == CurrencyType.EUR ? "CurrencyEuroOnly" :
"CurrencyDollarsOnly"; "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 @@ ...@@ -57,6 +57,8 @@
CompanyUserHiringTeamLink comUserLink = comUser.pipelineCompanyUser().toHiringTeams(CompanyUserHiringTeamLink.SearchByAll().andHiringTeam(new EqualsFilter<>(hiringTeam))).val(); CompanyUserHiringTeamLink comUserLink = comUser.pipelineCompanyUser().toHiringTeams(CompanyUserHiringTeamLink.SearchByAll().andHiringTeam(new EqualsFilter<>(hiringTeam))).val();
inviteTeammate.setRoleType(RoleType.STANDARD); inviteTeammate.setRoleType(RoleType.STANDARD);
boolean readOnly = comUserLink.getRole() == RoleType.STANDARD;
%> %>
<script type="text/javascript"> <script type="text/javascript">
...@@ -211,7 +213,7 @@ ...@@ -211,7 +213,7 @@
</a> </a>
<div class="dropdown-menu select2type-results no-icon" aria-labelledby="dropdownMenuLink<%= link.getID() %>"> <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" <oneit:button name="saveCompanyUser" value="<%= roleType.getDescription() %>" skin="link" cssClass="dropdown-item"
...@@ -343,20 +345,26 @@ ...@@ -343,20 +345,26 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label><oneit:label GUIName="Email Address" /></label> <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>
<div class="form-group"> <div class="form-group">
<label><oneit:label GUIName="First Name" /></label> <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>
<div class="form-group"> <div class="form-group">
<label><oneit:label GUIName="Last Name" /></label> <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>
<div class="form-group"> <div class="form-group">
<label><oneit:label GUIName="Role" /></label> <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> </div>
<%
HiringTeam[] teams = Utils.getOtherHiringTeams(hiringTeam, comUser, comUserLink);
if(!readOnly && teams.length > 0)
{
%>
<div class="form-group"> <div class="form-group">
<label><oneit:label GUIName="Add to multiple Hiring Teams" /></label> <label><oneit:label GUIName="Add to multiple Hiring Teams" /></label>
</div> </div>
...@@ -366,7 +374,7 @@ ...@@ -366,7 +374,7 @@
%> %>
<div class="form-group"> <div class="form-group">
<div class="wider-select"> <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>
</div> </div>
<% <%
...@@ -375,10 +383,13 @@ ...@@ -375,10 +383,13 @@
<oneit:button value=" " name="additionalTeam" skin="link" requestAttribs="<%= CollectionUtils.EMPTY_MAP %>"> <oneit:button value=" " name="additionalTeam" skin="link" requestAttribs="<%= CollectionUtils.EMPTY_MAP %>">
<label><oneit:label GUIName="Add another hiring team" /></label> <label><oneit:label GUIName="Add another hiring team" /></label>
</oneit:button> </oneit:button>
<%
}
%>
<div class="correctEmail" > <div class="correctEmail" >
<oneit:recalc mode="Boolean" script="company.isEmailCorrect()" company="<%= company %>" /> <oneit:recalc mode="Boolean" script="company.isEmailCorrect()" company="<%= company %>" />
</div> </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" <oneit:button value="Invite" name="sendUserInvites" cssClass="btn btn-invite"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
.mapEntry ("restartProcess", Boolean.TRUE) .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