Commit 24b8945b by Nilu

HT012 - Manage users

parent 1b2c8eec
...@@ -56,6 +56,7 @@ public abstract class BaseCompanyUser extends SecUserExtension ...@@ -56,6 +56,7 @@ public abstract class BaseCompanyUser extends SecUserExtension
// Static constants corresponding to searches // Static constants corresponding to searches
public static final String SEARCH_All = "All"; public static final String SEARCH_All = "All";
public static final String SEARCH_AllCompanyUsers = "AllCompanyUsers";
public static final String SEARCH_IdPin = "IdPin"; public static final String SEARCH_IdPin = "IdPin";
...@@ -2137,6 +2138,118 @@ public abstract class BaseCompanyUser extends SecUserExtension ...@@ -2137,6 +2138,118 @@ public abstract class BaseCompanyUser extends SecUserExtension
.search (transaction); .search (transaction);
} }
public static SearchAllCompanyUsers SearchByAllCompanyUsers () { return new SearchAllCompanyUsers (); }
public static class SearchAllCompanyUsers extends SearchObject<CompanyUser>
{
public SearchAllCompanyUsers byReferenceExtension (SecUserExtension ReferenceExtension)
{
by ("ReferenceExtension", ReferenceExtension);
return this;
}
public SearchAllCompanyUsers andObjectID (QueryFilter<Long> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.object_id", FIELD_ObjectID);
return this;
}
public SearchAllCompanyUsers andObjectCreated (QueryFilter<Date> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.object_created_date", FIELD_ObjectCreated);
return this;
}
public SearchAllCompanyUsers andObjectLastModified (QueryFilter<Date> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.object_last_updated_date", FIELD_ObjectLastModified);
return this;
}
public SearchAllCompanyUsers andForgotPasswordMailSendDate (QueryFilter<Date> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.forgot_password_mail_send_date", "ForgotPasswordMailSendDate");
return this;
}
public SearchAllCompanyUsers andForgotPasswordKey (QueryFilter<String> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.forgot_password_key", "ForgotPasswordKey");
return this;
}
public SearchAllCompanyUsers andRole (QueryFilter<RoleType> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.role_type", "Role");
return this;
}
public SearchAllCompanyUsers andPhone (QueryFilter<String> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.phone", "Phone");
return this;
}
public SearchAllCompanyUsers andVerificationMailSendDate (QueryFilter<Date> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.verification_mail_send_date", "VerificationMailSendDate");
return this;
}
public SearchAllCompanyUsers andVerificationKey (QueryFilter<String> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.verification_key", "VerificationKey");
return this;
}
public SearchAllCompanyUsers andIsAccountVerified (QueryFilter<Boolean> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.is_account_verified", "IsAccountVerified");
return this;
}
public SearchAllCompanyUsers andUser (QueryFilter<SecUser> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.user_id", "User");
return this;
}
public SearchAllCompanyUsers andCompany (QueryFilter<Company> filter)
{
filter.addFilter (context, "oneit_sec_user_extension.company_id", "Company");
return this;
}
public CompanyUser[]
search (ObjectTransaction transaction) throws StorageException
{
BaseBusinessClass[] results = super.search (transaction, REFERENCE_CompanyUser, SEARCH_AllCompanyUsers, criteria);
Set<CompanyUser> typedResults = new LinkedHashSet <CompanyUser> ();
for (BaseBusinessClass bbcResult : results)
{
CompanyUser aResult = (CompanyUser)bbcResult;
typedResults.add (aResult);
}
return ObjstoreUtils.removeDeleted(transaction, typedResults).toArray (new CompanyUser[0]);
}
}
public static CompanyUser[]
searchAllCompanyUsers (ObjectTransaction transaction, SecUserExtension ReferenceExtension) throws StorageException
{
return SearchByAllCompanyUsers ()
.byReferenceExtension (ReferenceExtension)
.search (transaction);
}
public static SearchIdPin SearchByIdPin () { return new SearchIdPin (); } public static SearchIdPin SearchByIdPin () { return new SearchIdPin (); }
public static class SearchIdPin extends SearchObject<CompanyUser> public static class SearchIdPin extends SearchObject<CompanyUser>
......
...@@ -28,6 +28,10 @@ ...@@ -28,6 +28,10 @@
<SEARCH type="All" paramFilter="oneit_sec_user_extension.object_id is not null" > <SEARCH type="All" paramFilter="oneit_sec_user_extension.object_id is not null" >
</SEARCH> </SEARCH>
<SEARCH type="AllCompanyUsers" paramFilter="oneit_sec_user_extension.object_id is not null">
<PARAM name="ReferenceExtension" type="SecUserExtension" transform="context.getTag (ReferenceExtension)" paramFilter="oneit_sec_user_extension.object_type = ${ReferenceExtension}"/>
</SEARCH>
<SEARCH type="IdPin" paramFilter="oneit_sec_user_extension.object_id is not null" singleton="TRUE"> <SEARCH type="IdPin" paramFilter="oneit_sec_user_extension.object_id is not null" singleton="TRUE">
<PARAM name="ID" type="Long" paramFilter="object_id = ${ID} " /> <PARAM name="ID" type="Long" paramFilter="object_id = ${ID} " />
<PARAM name="Pin" type="String" paramFilter="verification_key = ${Pin}" /> <PARAM name="Pin" type="String" paramFilter="verification_key = ${Pin}" />
......
...@@ -311,6 +311,10 @@ public class CompanyUserPersistenceMgr extends SecUserExtensionPersistenceMgr ...@@ -311,6 +311,10 @@ public class CompanyUserPersistenceMgr extends SecUserExtensionPersistenceMgr
{ {
throw new RuntimeException ("NOT implemented: executeSearchQueryAll"); throw new RuntimeException ("NOT implemented: executeSearchQueryAll");
} }
public ResultSet executeSearchQueryAllCompanyUsers (SQLManager sqlMgr, SecUserExtension ReferenceExtension) throws SQLException
{
throw new RuntimeException ("NOT implemented: executeSearchQueryAllCompanyUsers");
}
public ResultSet executeSearchQueryIdPin (SQLManager sqlMgr, Long ID, String Pin) throws SQLException public ResultSet executeSearchQueryIdPin (SQLManager sqlMgr, Long ID, String Pin) throws SQLException
{ {
throw new RuntimeException ("NOT implemented: executeSearchQueryIdPin"); throw new RuntimeException ("NOT implemented: executeSearchQueryIdPin");
...@@ -495,6 +499,56 @@ public class CompanyUserPersistenceMgr extends SecUserExtensionPersistenceMgr ...@@ -495,6 +499,56 @@ public class CompanyUserPersistenceMgr extends SecUserExtensionPersistenceMgr
return results; return results;
} }
else if (searchType.equals (CompanyUser.SEARCH_AllCompanyUsers))
{
// Local scope for transformed variables
{
if (criteria.containsKey("ReferenceExtension"))
{
SecUserExtension ReferenceExtension = (SecUserExtension)(criteria.get("ReferenceExtension"));
criteria.put ("ReferenceExtension", context.getTag (ReferenceExtension));
}
}
String orderBy = " ";
String tables = " ";
Set<String> joinTableSet = new HashSet<String>();
String filter;
Object[] searchParams; // paramFilter: oneit_sec_user_extension.object_id is not null
String preFilter = "(oneit_sec_user_extension.object_id is not null)"
+ " ";
if (criteria.containsKey("ReferenceExtension"))
{
preFilter += " AND (oneit_sec_user_extension.object_type = ${ReferenceExtension}) ";
preFilter += "";
}
preFilter += context.getLoadingAttributes ().getCustomSQL() ;
SearchParamTransform tx = new SearchParamTransform (criteria);
filter = StringUtils.replaceParams (preFilter, tx);
searchParams = tx.getParamsArray();
Integer maxRows = context.getLoadingAttributes ().getMaxRows ();
boolean truncateExtra = !context.getLoadingAttributes ().isFailIfMaxExceeded();
String query = "SELECT " + SELECT_COLUMNS +
"FROM {PREFIX}oneit_sec_user_extension " + tables + tableSetToSQL(joinTableSet) +
"WHERE " + SELECT_JOINS + " " + filter + orderBy;
BaseBusinessClass[] results = loadQuery (allPSets, sqlMgr, context, query, searchParams, maxRows, truncateExtra);
return results;
}
else if (searchType.equals (CompanyUser.SEARCH_IdPin)) else if (searchType.equals (CompanyUser.SEARCH_IdPin))
{ {
// Local scope for transformed variables // Local scope for transformed variables
......
package performa.orm.types;
import java.util.*;
import oneit.utils.*;
/**
* This class was generated using constGen.bat.
* DO NOT MODIFY THIS CODE.
* Edit the associated .xml file, and regenerate this file
* constGen (directory) (file minus extension)
* e.g. constGen C:\...\sql FieldType
*/
public class UserSortOption extends AbstractEnumerated
{
public static final EnumeratedFactory FACTORY_UserSortOption = new UserSortOptionFactory();
public static final UserSortOption ALPHA_A_Z = new UserSortOption ("ALPHA_A_Z", "ALPHA_A_Z", "A-Z", false);
public static final UserSortOption ALPHA_Z_A = new UserSortOption ("ALPHA_Z_A", "ALPHA_Z_A", "Z-A", false);
private static final UserSortOption[] allUserSortOptions =
new UserSortOption[] { ALPHA_A_Z,ALPHA_Z_A};
private static UserSortOption[] getAllUserSortOptions ()
{
return allUserSortOptions;
}
private UserSortOption (String name, String value, String description, boolean disabled)
{
super (name, value, description, disabled);
}
public static final Comparator COMPARE_BY_POSITION = new CompareEnumByPosition (allUserSortOptions);
static
{
defineAdditionalData ();
}
public boolean isEqual (UserSortOption other)
{
return this.name.equals (other.name);
}
public Enumeration getAllInstances ()
{
return UserSortOption.getAll ();
}
private Object readResolve() throws java.io.ObjectStreamException
{
return UserSortOption.forName (this.name);
}
public EnumeratedFactory getFactory ()
{
return FACTORY_UserSortOption;
}
public static UserSortOption forName (String name)
{
if (name == null) { return null; }
UserSortOption[] all = getAllUserSortOptions();
int enumIndex = AbstractEnumerated.getIndexForName (all, name);
return all[enumIndex];
}
public static UserSortOption forValue (String value)
{
if (value == null) { return null; }
UserSortOption[] all = getAllUserSortOptions();
int enumIndex = AbstractEnumerated.getIndexForValue (getAllUserSortOptions (), value);
return all[enumIndex];
}
public static java.util.Enumeration getAll ()
{
return AbstractEnumerated.getAll (getAllUserSortOptions());
}
public static UserSortOption[] getUserSortOptionArray ()
{
return (UserSortOption[])getAllUserSortOptions().clone ();
}
public static void defineAdditionalData ()
{
}
static class UserSortOptionFactory implements EnumeratedFactory
{
public AbstractEnumerated getForName (String name)
{
return UserSortOption.forName (name);
}
public AbstractEnumerated getForValue (String name)
{
return UserSortOption.forValue (name);
}
public Enumeration getAll ()
{
return UserSortOption.getAll ();
}
}
public Map getAdditionalAttributes ()
{
Map attribs = new HashMap ();
return attribs;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CONSTANT package="performa.orm.types" name="UserSortOption">
<VALUE name="ALPHA_A_Z" value="ALPHA_A_Z" description="A-Z"/>
<VALUE name="ALPHA_Z_A" value="ALPHA_Z_A" description="Z-A"/>
</CONSTANT>
</ROOT>
\ No newline at end of file
...@@ -35,6 +35,7 @@ import oneit.utils.transform.param.PrefixCompoundTransform; ...@@ -35,6 +35,7 @@ import oneit.utils.transform.param.PrefixCompoundTransform;
import performa.orm.types.AppSortOption; import performa.orm.types.AppSortOption;
import performa.orm.types.ClientSortOption; import performa.orm.types.ClientSortOption;
import performa.orm.types.JobStatus; import performa.orm.types.JobStatus;
import performa.orm.types.UserSortOption;
/** /**
* *
...@@ -183,6 +184,28 @@ public class Utils ...@@ -183,6 +184,28 @@ public class Utils
} }
public static List<CompanyUser> getUsersSorted(CompanyUser[] users, UserSortOption userSortOption)
{
ObjectTransform transform = Client.pipesClient().toObjectCreated();
Comparator comparator = CollectionUtils.DEFAULT_COMPARATOR;
if(userSortOption == UserSortOption.ALPHA_A_Z)
{
transform = CompanyUser.pipesCompanyUser().toUser().toFirstName();
comparator = CollectionUtils.CASE_INSENSITIVE_COMPARATOR;
}
else if(userSortOption == UserSortOption.ALPHA_Z_A)
{
transform = CompanyUser.pipesCompanyUser().toUser().toFirstName();
comparator = CollectionUtils.reverse(CollectionUtils.CASE_INSENSITIVE_COMPARATOR);
}
return ObjstoreUtils.sort( Arrays.asList(users),
new ObjectTransform[]{transform},
new Comparator[]{comparator});
}
public static class ClientToOpenJobCountTransform implements ObjectTransform<Client, Integer> public static class ClientToOpenJobCountTransform implements ObjectTransform<Client, Integer>
{ {
public static ClientToOpenJobCountTransform INSTANCE = new ClientToOpenJobCountTransform(); public static ClientToOpenJobCountTransform INSTANCE = new ClientToOpenJobCountTransform();
......
...@@ -3859,6 +3859,129 @@ span.right-img { ...@@ -3859,6 +3859,129 @@ span.right-img {
/*View Applicants HT005 - Shortlist End*/ /*View Applicants HT005 - Shortlist End*/
/*Manage User Page Start*/
.eq-justify-content{
display: flex;
justify-content: space-between;
}
.manage-user-left {float: left;width: 71.695%;}
.manage-user-right {
background-color: #4e5258;
float: left;
margin-left: 2.2%;
margin-top: 83px;
padding: 30px;
width: 26%;
}
.user-list-row:last-child{
margin-bottom: 0;
}
.select2-container--disabled .select2-selection--single .select2-selection__arrow b{
display: none;
}
.main-manage-userlist{float: left;width: 100%;}
.user-list-row{
background: #fff none repeat scroll 0 0;
display: inline-block;
width: 100%;
box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.02);
margin-bottom: 15px;
}
.m-user-left{
float: left;
width: 78%;
padding: 18px 26px;
}
.m-user-right{
float: right;
width: 22%;
padding: 15px 17px;
}
.m-user-icon,.m-user-info{
float: left;
}
.m-user-icon{
margin-right: 16px;
}
.m-user-name {
font-size: 20px;
}
.m-user-email{
color: #7d7f82;
font-size: 12px;
text-transform: uppercase;
}
.m-save-user{
padding: 15px 26px;
float: left;
width: 80%;
}
.m-save-user input {
display: inline-block;
margin-right: 5px;
width: 30%;
}
.save-button{
float: right;
padding: 17px 17px;
}
.btn.btn-save {
background-color: #67b413;
border-radius: 100px;
color: #ffffff;
font-size: 12px;
font-weight: 500;
height: 45px;
letter-spacing: 1px;
width: 100px;
}
.resend-link a{
font-size: 12px;
text-align: left;
color: #4990e2;
text-decoration: underline;
}
.resend-link {
background-color: #fafafa;
box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.02);
display: inline-block;
padding: 15px 80px;
width: 100%;
}
.manage-user-right label{
color: #ffffff;
font-weight: 400;
}
.manage-user-right .form-group {
margin-bottom: 11px;
}
.sidebar-title {
color: #ffffff;
font-size: 20px;
font-weight: 500;
margin-bottom: 30px;
}
.invite-btn {
float: right;
margin-top: 12px;
}
.btn.btn-invite{
background-color: #03a0e7;
border-radius: 100px;
color: #ffffff;
font-size: 12px;
font-weight: 500;
height: 45px;
letter-spacing: 1px;
width: 100px;
}
.invite-combo{
text-align: center;
}
/*Manage User Page End*/
/*popup message*/ /*popup message*/
.main-popup .modal-body{padding: 50px 45px 44px;text-align: center;} .main-popup .modal-body{padding: 50px 45px 44px;text-align: center;}
.popup-message-txt {margin: 24px 0 36px;line-height: 23px;} .popup-message-txt {margin: 24px 0 36px;line-height: 23px;}
......
...@@ -2,5 +2,148 @@ ...@@ -2,5 +2,148 @@
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%> <%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%> <%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<oneit:dynIncluded> <oneit:dynIncluded>
<%
// String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.EDIT_CLIENT);
String usersPage = WebUtils.getSamePageInRenderMode(request, "Page");
UserSortOption userSortOpt = (UserSortOption) process.getAttribute("UserSortOption");
CompanyUser[] companyUsers = (CompanyUser[]) process.getAttribute("CompanyUsers");
if( request.getParameter("UserSortOption") != null)
{
userSortOpt = UserSortOption.forName((String) request.getParameter("UserSortOption"));
}
if(userSortOpt == null)
{
userSortOpt = UserSortOption.ALPHA_A_Z;
}
if(companyUsers == null)
{
companyUsers = CompanyUser.SearchByAllCompanyUsers()
.byReferenceExtension(CompanyUser.REFERENCE_CompanyUser)
.search(transaction);
process.setAttribute("CompanyUsers", companyUsers);
}
List<CompanyUser> sortedUsers = Utils.getUsersSorted(companyUsers, userSortOpt);
process.setAttribute("UserSortOption", userSortOpt);
%>
<oneit:form name="listUsers" method="post" enctype="multipart/form-data">
<div class="dashboard-content-area second-part">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="eq-justify-content">
<div class="manage-user-left">
<div class="jobs-list-shorting">
<div class="d-job-title all-jobs-title">Manage Users</div>
<div class="shorting-dropdown">
<span class="order-label">order by</span>
<select class="form-control" onChange="location=this.value">
<%
for (UserSortOption sortOption : UserSortOption.getUserSortOptionArray())
{
String optionLink = usersPage + "&UserSortOption=" + sortOption.getName() ;
%>
<option <%= (userSortOpt != null && userSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select>
</div>
</div>
<div class="main-manage-userlist">
<%
for(CompanyUser companyUser : companyUsers)
{
SecUser user = companyUser.getUser();
%>
<div class="user-list-row">
<div class="m-user-left">
<div class="m-user-icon"><img src="images/user-list-icon.png"></div>
<div class="m-user-info">
<div class="m-user-name">
<oneit:toString value="<%= user.getName() %>" mode="EscapeHTML" />
</div>
<div class="m-user-email">
<oneit:toString value="<%= user.getEmail() %>" mode="EscapeHTML" />
</div>
</div>
</div>
<div class="m-user-right">
<select class="form-control">
<option>Admin</option>
<option>Standard</option>
</select>
</div>
</div>
<%
}
%>
<div class="user-list-row">
<div class="m-save-user">
<input type="text" placeholder="First Name" class="form-control" />
<input type="text" placeholder="Surname" class="form-control" />
<input type="text" placeholder="Email" class="form-control" />
</div>
<div class="save-button">
<input type="button" class="btn btn-save" value="save">
</div>
</div>
<div class="user-list-row">
<div class="m-user-left">
<div class="m-user-icon"><img src="images/user-list-icon.png"></div>
<div class="m-user-info">
<div class="m-user-name">Janis Stein</div>
<div class="m-user-email">janisstein@gmail.com</div>
</div>
</div>
<div class="m-user-right invite-combo">
<select class="form-control" disabled="">
<option>Invitation sent</option>
</select>
</div>
<div class="resend-link"><a href="#">Re-send invitation to Janis</a></div>
</div>
</div>
</div>
<div class="manage-user-right">
<div class="sidebar-title">
Invite a user
</div>
<div class="form-group">
<label>Email address</label>
<input type="text" name="" class="form-control" />
</div>
<div class="form-group">
<label>First name</label>
<input type="text" name="" class="form-control" />
</div>
<div class="form-group">
<label>Last name</label>
<input type="text" name="" class="form-control" />
</div>
<div class="form-group">
<label>Role</label>
<select class="form-control">
<option>Admin</option>
<option>Standard</option>
</select>
</div>
<div class="invite-btn">
<input type="button" name="" class="btn btn-invite" value="Invite" />
</div>
</div>
</div>
</div>
</oneit:form>
</oneit:dynIncluded> </oneit:dynIncluded>
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
String homePage = WebUtils.getSamePageInRenderMode(request, "Page"); String homePage = WebUtils.getSamePageInRenderMode(request, "Page");
String jobsPage = jobsArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "Page").toMap()); String jobsPage = jobsArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "Page").toMap());
%> %>
<oneit:form name="editJob" method="post" enctype="multipart/form-data"> <oneit:form name="editJob" method="post" enctype="multipart/form-data">
<div class="dashboard-content-area"> <div class="dashboard-content-area">
<div class="dashboard-first-part"> <div class="dashboard-first-part">
......
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