Commit ded496ee by Nilu

intercom update when company details or user details changed.

fixed issue caused with code review changes (verification of company user accounts)
parent 440f9a0c
...@@ -11,6 +11,7 @@ import oneit.servlets.process.ORMProcessState; ...@@ -11,6 +11,7 @@ import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.SaveFP; import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException; import oneit.utils.BusinessException;
import oneit.utils.CollectionUtils; import oneit.utils.CollectionUtils;
import performa.intercom.utils.IntercomUtils;
import performa.orm.Company; import performa.orm.Company;
...@@ -20,7 +21,7 @@ public class SaveCompanyFP extends SaveFP ...@@ -20,7 +21,7 @@ public class SaveCompanyFP extends SaveFP
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{ {
HttpServletRequest request = submission.getRequest(); HttpServletRequest request = submission.getRequest();
Company company = process.getAttribute("Company") != null ? (Company) process.getAttribute("Company") : (Company) request.getAttribute("Company"); Company company = process.getAttribute("Company") != null ? (Company) process.getAttribute("Company") : (Company) request.getAttribute("Company");
LogMgr.log(Company.LOG, LogLevel.PROCESSING1,"In SaveCompanyFP saving company : ", company ); LogMgr.log(Company.LOG, LogLevel.PROCESSING1,"In SaveCompanyFP saving company : ", company );
...@@ -31,6 +32,9 @@ public class SaveCompanyFP extends SaveFP ...@@ -31,6 +32,9 @@ public class SaveCompanyFP extends SaveFP
LogMgr.log(Company.LOG, LogLevel.PROCESSING1,"In SaveCompanyFP setting comany logo to null of company : ", company ); LogMgr.log(Company.LOG, LogLevel.PROCESSING1,"In SaveCompanyFP setting comany logo to null of company : ", company );
} }
// Update company in intercom
IntercomUtils.updateCompany(company);
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
} }
} }
\ No newline at end of file
...@@ -20,6 +20,8 @@ import oneit.utils.CollectionUtils; ...@@ -20,6 +20,8 @@ import oneit.utils.CollectionUtils;
import oneit.utils.InitialisationException; import oneit.utils.InitialisationException;
import oneit.utils.MultiException; import oneit.utils.MultiException;
import oneit.utils.StringUtils; import oneit.utils.StringUtils;
import performa.intercom.resources.User;
import performa.intercom.utils.IntercomUtils;
import performa.orm.CompanyUser; import performa.orm.CompanyUser;
import performa.utils.Utils; import performa.utils.Utils;
...@@ -68,6 +70,8 @@ public class SaveUserDetailsFP extends SaveFP ...@@ -68,6 +70,8 @@ public class SaveUserDetailsFP extends SaveFP
Utils.sendEmailChangedMail(companyUser, request, emailer, SaveUserDetailsFP.class.getName()); Utils.sendEmailChangedMail(companyUser, request, emailer, SaveUserDetailsFP.class.getName());
} }
} }
secUser.setEmail(secUser.getUserName());
} }
else if (companyUser.isLoggedViaSocial() && !CollectionUtils.equals(oldSecUser.getEmail(), secUser.getEmail())) else if (companyUser.isLoggedViaSocial() && !CollectionUtils.equals(oldSecUser.getEmail(), secUser.getEmail()))
{ {
...@@ -78,6 +82,15 @@ public class SaveUserDetailsFP extends SaveFP ...@@ -78,6 +82,15 @@ public class SaveUserDetailsFP extends SaveFP
Utils.sendEmailChangedMail(companyUser, request, emailer, SaveUserDetailsFP.class.getName()); Utils.sendEmailChangedMail(companyUser, request, emailer, SaveUserDetailsFP.class.getName());
} }
User intercomUser = IntercomUtils.updateIntercomUser(secUser);
if(intercomUser == null)
{
performa.intercom.resources.Company intercomCompany = IntercomUtils.findOrCreateCompany(companyUser.getCompany());
IntercomUtils.createIntercomUser(secUser, "Hiring Team", intercomCompany);
}
} }
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
......
...@@ -36,22 +36,26 @@ public class SendCompanyUserInvitesFP extends SaveFP ...@@ -36,22 +36,26 @@ public class SendCompanyUserInvitesFP extends SaveFP
{ {
HttpServletRequest request = submission.getRequest(); HttpServletRequest request = submission.getRequest();
Company company = (Company) process.getAttribute("Company"); Company company = (Company) process.getAttribute("Company");
CompanyUser companyUser = (CompanyUser) request.getAttribute("CompanyUser");
for(CompanyUser cUser : company.getUsersSet()) if(companyUser != null && companyUser == company.getAddedByUser())
{ {
if(!CollectionUtils.equals(cUser, company.getAddedByUser())) for(CompanyUser cUser : company.getUsersSet())
{ {
SecUser secUser = cUser.getUser(); if(!CollectionUtils.equals(cUser, company.getAddedByUser()))
{
BusinessObjectParser.assertFieldCondition(secUser.getEmail()!=null, secUser, SecUser.FIELD_Email, "mandatory", exceptions, true, request); SecUser secUser = cUser.getUser();
BusinessObjectParser.assertFieldCondition(!Utils.isCompanyUserEmailFound(process.getTransaction(), secUser.getEmail()), secUser, SecUser.FIELD_Email, "emailExists", exceptions, true, request); BusinessObjectParser.assertFieldCondition(secUser.getEmail()!= null, secUser, SecUser.FIELD_Email, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(!Utils.isCompanyUserEmailFound(process.getTransaction(), secUser.getEmail()), secUser, SecUser.FIELD_Email, "emailExists", exceptions, true, request);
}
} }
}
if(!company.isTrue(company.getIsVerified())) if(!company.isTrue(company.getIsVerified()))
{ {
BusinessObjectParser.assertFieldCondition(company.getCompanyName()!=null, company, Company.FIELD_CompanyName, "mandatory", exceptions, true, request); BusinessObjectParser.assertFieldCondition(company.getCompanyName()!=null, company, Company.FIELD_CompanyName, "mandatory", exceptions, true, request);
}
} }
super.validate(process, submission, exceptions, params); super.validate(process, submission, exceptions, params);
...@@ -64,10 +68,10 @@ public class SendCompanyUserInvitesFP extends SaveFP ...@@ -64,10 +68,10 @@ public class SendCompanyUserInvitesFP extends SaveFP
HttpServletRequest request = submission.getRequest(); HttpServletRequest request = submission.getRequest();
ObjectTransaction objTran = process.getTransaction(); ObjectTransaction objTran = process.getTransaction();
Company company = (Company) process.getAttribute("Company"); Company company = (Company) process.getAttribute("Company");
CompanyUser companyUser = company.getAddedByUser(); CompanyUser companyUser = (CompanyUser) request.getAttribute("CompanyUser");
SecUser secUser = companyUser.getUser(); SecUser secUser = companyUser.getUser();
Boolean socialLogin = CollectionUtils.equals(process.getAttribute("socialLogin"), Boolean.TRUE); Boolean socialLogin = CollectionUtils.equals(process.getAttribute("socialLogin"), Boolean.TRUE);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User", companyUser, secUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User", companyUser, secUser);
companyUser.setIsAccountVerified(Boolean.TRUE); companyUser.setIsAccountVerified(Boolean.TRUE);
...@@ -86,31 +90,33 @@ public class SendCompanyUserInvitesFP extends SaveFP ...@@ -86,31 +90,33 @@ public class SendCompanyUserInvitesFP extends SaveFP
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User finished", companyUser, secUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User finished", companyUser, secUser);
if(companyUser == company.getAddedByUser())
//process user invitations
for(CompanyUser cUser : company.getUsersSet())
{ {
if(!CollectionUtils.equals(cUser, companyUser)) //process user invitations
for(CompanyUser cUser : company.getUsersSet())
{ {
SecUser sUser = cUser.getUser(); if(!CollectionUtils.equals(cUser, companyUser))
{
SecUser sUser = cUser.getUser();
LogMgr.log(LOG, LogLevel.PROCESSING1, "Started to send invitaion email.", cUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "Started to send invitaion email.", cUser);
sUser.setUserName(sUser.getEmail().toLowerCase()); sUser.setUserName(sUser.getEmail().toLowerCase());
sUser.setAttribute("md5:" + SecUser.FIELD_Password, CompanyUser.DEFAULT_PASSWORD); sUser.setAttribute("md5:" + SecUser.FIELD_Password, CompanyUser.DEFAULT_PASSWORD);
sUser.addRole(Utils.getRole(Utils.ROLE_CLIENT, objTran)); sUser.addRole(Utils.getRole(Utils.ROLE_CLIENT, objTran));
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", sUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", sUser);
sendInvitationMail(cUser, request); sendInvitationMail(cUser, request);
LogMgr.log(LOG, LogLevel.PROCESSING1, "End of sending invitation email.", cUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "End of sending invitation email.", cUser);
}
} }
} }
// Create company and the first user of it in intercom // Create company and the first user of it in intercom
performa.intercom.resources.Company intercomCompany = IntercomUtils.createIntercomCompany(company); performa.intercom.resources.Company intercomCompany = IntercomUtils.findOrCreateCompany(company);
IntercomUtils.createIntercomUser(secUser, "Hiring Team", intercomCompany); IntercomUtils.createIntercomUser(secUser, "Hiring Team", intercomCompany);
......
...@@ -24,13 +24,13 @@ public class IntercomUtils ...@@ -24,13 +24,13 @@ public class IntercomUtils
public static User createIntercomUser(SecUser secUser, String role, Company company) public static User createIntercomUser(SecUser secUser, String role, Company company)
{ {
try try
{ {
User user = new User(); User user = new User();
user.setUserId(secUser.getIdentification()); user.setUserId(secUser.getIdentification());
user.setEmail(secUser.getUserName()); user.setEmail(secUser.getEmail());
user.setName(secUser.getName()); user.setName(secUser.getName());
user.addCustomAttribute(CustomAttribute.newStringAttribute("role", role)); user.addCustomAttribute(CustomAttribute.newStringAttribute("role", role));
if(company != null) if(company != null)
{ {
...@@ -48,6 +48,48 @@ public class IntercomUtils ...@@ -48,6 +48,48 @@ public class IntercomUtils
} }
public static User findUserByID(SecUser secUser)
{
try
{
Map<String, String> map = new HashMap<>();
map.put("user_id", secUser.getIdentification());
return User.find(map);
}
catch (Exception e)
{
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while fetching a user by id from intercom");
return null;
}
}
public static User updateIntercomUser(SecUser secUser)
{
try
{
User user = findUserByID(secUser);
if(user != null)
{
user.setEmail(secUser.getEmail());
user.setName(secUser.getName());
User.update(user);
}
return user;
}
catch (Exception e)
{
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while updating a user in intercom");
return null;
}
}
public static Company createIntercomCompany(performa.orm.Company company) public static Company createIntercomCompany(performa.orm.Company company)
{ {
try try
...@@ -76,20 +118,50 @@ public class IntercomUtils ...@@ -76,20 +118,50 @@ public class IntercomUtils
map.put("company_id", company.getID().toString()); map.put("company_id", company.getID().toString());
Company intercomCompany = Company.find(map); return Company.find(map);
}
catch (Exception e)
{
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while fetching a company by id from intercom");
return null;
}
}
public static void updateCompany(performa.orm.Company company)
{
try
{
Company intercomCompany = findCompanyByID(company);
if(intercomCompany == null) if(intercomCompany == null)
{ {
intercomCompany = createIntercomCompany(company); createIntercomCompany(company);
} }
else
return intercomCompany; {
} intercomCompany.setName(company.getCompanyName());
Company.update(intercomCompany);
}
}
catch (Exception e) catch (Exception e)
{ {
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while fetching a company by id from intercom"); LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while updating company in intercom");
return null;
} }
} }
public static Company findOrCreateCompany(performa.orm.Company company)
{
Company intercomCompany = findCompanyByID(company);
if(intercomCompany == null)
{
intercomCompany = createIntercomCompany(company);
}
return intercomCompany;
}
} }
...@@ -78,6 +78,7 @@ ...@@ -78,6 +78,7 @@
<div class="main-sc-section text-center company-profile-btn"> <div class="main-sc-section text-center company-profile-btn">
<oneit:button value="Send invites & proceed" name="sendCompanyUserInvites" cssClass="btn btn-primary box-btn" <oneit:button value="Send invites & proceed" name="sendCompanyUserInvites" cssClass="btn btn-primary box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("CompanyUser", companyUser)
.mapEntry("procParams", CollectionUtils.mapEntry("socialLogin", socialLogin).mapEntry("Company", company).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("socialLogin", socialLogin).mapEntry("Company", company).toMap())
.toMap() %>"/> .toMap() %>"/>
</div> </div>
......
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
String nextPage = WebUtils.getSamePageInRenderMode(request, "CompanyProfile"); String nextPage = WebUtils.getSamePageInRenderMode(request, "CompanyProfile");
String homePage = WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.ADMIN_HOME).getLink(request);
CompanyUser companyUser = (CompanyUser) process.getAttribute("CompanyUser"); CompanyUser companyUser = (CompanyUser) process.getAttribute("CompanyUser");
SecUser secUser = null; SecUser secUser = null;
Boolean socialLogin = Boolean.FALSE; Boolean socialLogin = Boolean.FALSE;
...@@ -49,6 +50,8 @@ ...@@ -49,6 +50,8 @@
} }
} }
process.setAttribute("Company", companyUser.getCompany());
Debug.assertion(companyUser != null, "Invalid CompanyUser in admin portal"); Debug.assertion(companyUser != null, "Invalid CompanyUser in admin portal");
%> %>
<script type="text/javascript"> <script type="text/javascript">
...@@ -108,12 +111,27 @@ ...@@ -108,12 +111,27 @@
</div> </div>
<% <%
} }
if(companyUser.getCompany().getAddedByUser() == companyUser)
{
%>
<oneit:button value="Verify and login" name="gotoPage" cssClass="box-btn verify-btn"
requestAttribs="<%= CollectionUtils.mapEntry("socialLogin", socialLogin)
.mapEntry("procParams", CollectionUtils.mapEntry("Company", companyUser.getCompany()).toMap())
.mapEntry("nextPage", nextPage).toMap() %>"/>
<%
}
else
{
%>
<oneit:button value="Verify and login" name="sendCompanyUserInvites" cssClass="box-btn verify-btn"
requestAttribs="<%= CollectionUtils.mapEntry("socialLogin", socialLogin)
.mapEntry("CompanyUser", companyUser)
.mapEntry("nextPage", homePage)
.toMap() %>"/>
<%
}
%> %>
<oneit:button value="Verify and login" name="gotoPage" cssClass="box-btn verify-btn"
requestAttribs="<%= CollectionUtils.mapEntry("socialLogin", socialLogin)
.mapEntry("procParams", CollectionUtils.mapEntry("Company", companyUser.getCompany()).toMap())
.mapEntry("nextPage", nextPage).toMap() %>"/>
</div> </div>
</oneit:form> </oneit:form>
</oneit:dynIncluded> </oneit:dynIncluded>
......
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