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;
import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException;
import oneit.utils.CollectionUtils;
import performa.intercom.utils.IntercomUtils;
import performa.orm.Company;
......@@ -20,7 +21,7 @@ public class SaveCompanyFP extends SaveFP
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
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 );
......@@ -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 );
}
// Update company in intercom
IntercomUtils.updateCompany(company);
return super.processForm(process, submission, params);
}
}
\ No newline at end of file
......@@ -20,6 +20,8 @@ import oneit.utils.CollectionUtils;
import oneit.utils.InitialisationException;
import oneit.utils.MultiException;
import oneit.utils.StringUtils;
import performa.intercom.resources.User;
import performa.intercom.utils.IntercomUtils;
import performa.orm.CompanyUser;
import performa.utils.Utils;
......@@ -68,6 +70,8 @@ public class SaveUserDetailsFP extends SaveFP
Utils.sendEmailChangedMail(companyUser, request, emailer, SaveUserDetailsFP.class.getName());
}
}
secUser.setEmail(secUser.getUserName());
}
else if (companyUser.isLoggedViaSocial() && !CollectionUtils.equals(oldSecUser.getEmail(), secUser.getEmail()))
{
......@@ -78,6 +82,15 @@ public class SaveUserDetailsFP extends SaveFP
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);
......
......@@ -36,22 +36,26 @@ public class SendCompanyUserInvitesFP extends SaveFP
{
HttpServletRequest request = submission.getRequest();
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();
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(!CollectionUtils.equals(cUser, company.getAddedByUser()))
{
SecUser secUser = cUser.getUser();
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()))
{
BusinessObjectParser.assertFieldCondition(company.getCompanyName()!=null, company, Company.FIELD_CompanyName, "mandatory", exceptions, true, request);
if(!company.isTrue(company.getIsVerified()))
{
BusinessObjectParser.assertFieldCondition(company.getCompanyName()!=null, company, Company.FIELD_CompanyName, "mandatory", exceptions, true, request);
}
}
super.validate(process, submission, exceptions, params);
......@@ -64,10 +68,10 @@ public class SendCompanyUserInvitesFP extends SaveFP
HttpServletRequest request = submission.getRequest();
ObjectTransaction objTran = process.getTransaction();
Company company = (Company) process.getAttribute("Company");
CompanyUser companyUser = company.getAddedByUser();
CompanyUser companyUser = (CompanyUser) request.getAttribute("CompanyUser");
SecUser secUser = companyUser.getUser();
Boolean socialLogin = CollectionUtils.equals(process.getAttribute("socialLogin"), Boolean.TRUE);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User", companyUser, secUser);
companyUser.setIsAccountVerified(Boolean.TRUE);
......@@ -86,31 +90,33 @@ public class SendCompanyUserInvitesFP extends SaveFP
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User finished", companyUser, secUser);
//process user invitations
for(CompanyUser cUser : company.getUsersSet())
if(companyUser == company.getAddedByUser())
{
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.setAttribute("md5:" + SecUser.FIELD_Password, CompanyUser.DEFAULT_PASSWORD);
sUser.addRole(Utils.getRole(Utils.ROLE_CLIENT, objTran));
sUser.setUserName(sUser.getEmail().toLowerCase());
sUser.setAttribute("md5:" + SecUser.FIELD_Password, CompanyUser.DEFAULT_PASSWORD);
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
performa.intercom.resources.Company intercomCompany = IntercomUtils.createIntercomCompany(company);
performa.intercom.resources.Company intercomCompany = IntercomUtils.findOrCreateCompany(company);
IntercomUtils.createIntercomUser(secUser, "Hiring Team", intercomCompany);
......
......@@ -24,13 +24,13 @@ public class IntercomUtils
public static User createIntercomUser(SecUser secUser, String role, Company company)
{
try
{
{
User user = new User();
user.setUserId(secUser.getIdentification());
user.setEmail(secUser.getUserName());
user.setEmail(secUser.getEmail());
user.setName(secUser.getName());
user.addCustomAttribute(CustomAttribute.newStringAttribute("role", role));
user.addCustomAttribute(CustomAttribute.newStringAttribute("role", role));
if(company != null)
{
......@@ -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)
{
try
......@@ -76,20 +118,50 @@ public class IntercomUtils
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)
{
intercomCompany = createIntercomCompany(company);
createIntercomCompany(company);
}
return intercomCompany;
}
else
{
intercomCompany.setName(company.getCompanyName());
Company.update(intercomCompany);
}
}
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 @@
<div class="main-sc-section text-center company-profile-btn">
<oneit:button value="Send invites & proceed" name="sendCompanyUserInvites" cssClass="btn btn-primary box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("CompanyUser", companyUser)
.mapEntry("procParams", CollectionUtils.mapEntry("socialLogin", socialLogin).mapEntry("Company", company).toMap())
.toMap() %>"/>
</div>
......
......@@ -7,7 +7,8 @@
<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");
SecUser secUser = null;
Boolean socialLogin = Boolean.FALSE;
......@@ -49,6 +50,8 @@
}
}
process.setAttribute("Company", companyUser.getCompany());
Debug.assertion(companyUser != null, "Invalid CompanyUser in admin portal");
%>
<script type="text/javascript">
......@@ -108,12 +111,27 @@
</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>
</oneit:form>
</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