package com.ecobank.esc.operationsportal.controllers.users;
import com.ecobank.esc.operationsportal.commons.UserSession;
import com.ecobank.esc.operationsportal.entities.UserAccount;
import com.ecobank.esc.operationsportal.models.BranchInfo;
import com.ecobank.esc.operationsportal.models.UserAccountInfo;
import com.ecobank.esc.operationsportal.services.BaseDAO;
import com.ecobank.esc.operationsportal.services.BasicServices;
import com.ecobank.esc.operationsportal.services.UserAccountDAO;
import com.ecobank.esc.operationsportal.utils.AppConstants;
import com.ecobank.esc.operationsportal.utils.Msg;
import com.ecobank.esc.operationsportal.utils.PageCommonInputs;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.faces.model.SelectItem;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.log4j.Logger;
/**
*
* @author dainoo
*/
@Named(value = "userAccountController")
@SessionScoped
public class UserAccountController
implements Serializable {
private static final Logger LOG = Logger.getLogger(UserAccountController.class.getName());
@Inject
private UserSession userSession;
@Inject
private BasicServices baseServices;
private PageCommonInputs pageCommonInputs = new PageCommonInputs();
private UserAccount userAccount = new UserAccount();
private List<UserAccountInfo> listOfUserAccounts = new ArrayList<>();
private List<SelectItem> listOfBranches;
private String affiliateCode, branchName
;
private List<BranchInfo> branchList;
public UserAccountController() {
}
public void branchListener() {
try {
if (null == affiliateCode) {
affiliateCode = userAccount.getAffiliateCode();
}
LOG.info("affiliateCode " + affiliateCode);
listOfBranches = new ArrayList<>();
branchList = BaseDAO.getBranchList(affiliateCode);
affiliateCode = null;
branchList.forEach((eachOne) -> {
listOfBranches.add(new SelectItem(eachOne.getBranchCode(), eachOne.toString()));
});
LOG.info("listOfBranches size " + listOfBranches.size());
LOG.
info("branchListener exception " + Arrays.
toString(e.
getStackTrace()).
replaceAll(", ",
"\n"));
}
}
@PostConstruct
public void init() {
try {
affiliateCode = null;
pageCommonInputs.setShowEditButtons(true);
cancelButton();
LOG.
info("create user account exception " + Arrays.
toString(e.
getStackTrace()).
replaceAll(", ",
"\n"));
}
}
public void newButton() {
try {
affiliateCode = userSession.getAffiliate();
if (!userSession.isGroupUser()) {
branchListener();
}
pageCommonInputs.setShowEditButtons(true);
pageCommonInputs.showDataInputsDisplay();
userAccount = new UserAccount();
LOG.
info("create user account exception " + Arrays.
toString(e.
getStackTrace()).
replaceAll(", ",
"\n"));
}
}
public void cancelButton() {
try {
pageCommonInputs.showDataRecordsDisplay();
userAccount = new UserAccount();
viewAllButton();
LOG.
info("create user account exception " + Arrays.
toString(e.
getStackTrace()).
replaceAll(", ",
"\n"));
}
}
public void saveButton() {
try {
userAccount.
setCreatedDate(new Date());
userAccount.
setModifiedDate(new Date());
userAccount.setVerified(AppConstants.NO);
userAccount.setCreatedBy(userSession.getUsername());
userAccount.setModifiedBy(userSession.getUsername());
UserAccount response = baseServices.saveEntity(userAccount);
if (null == response) {
msg = "User account creation failed;please try it again";
LOG.info(msg);
Msg.errorMsg(msg);
} else {
msg = userAccount.getFullname() + "'s user account created successfully ;please notify authoriser to approve";
Msg.infoMsg(msg);
LOG.info(msg);
pageCommonInputs.showDataInputsDisplay();
userAccount = new UserAccount();
}
LOG.
info("create user account exception " + Arrays.
toString(e.
getStackTrace()).
replaceAll(", ",
"\n"));
}
}
public void updateButton() {
try {
LOG.info("about to update username " + userAccount.getUsername());
userAccount.setModifiedBy(userSession.getUsername());
userAccount.
setModifiedDate(new Date());
if (baseServices.update(userAccount)) {
msg = userAccount.getUsername() + " user account update successfully";
LOG.info(msg);
Msg.infoMsg(msg);
cancelButton();
} else {
msg = "Error updating user account " + userAccount.getUsername() + ":try it again or contact the support team";
LOG.info(msg);
Msg.errorMsg(msg);
}
LOG.
info("update user account exception " + Arrays.
toString(e.
getStackTrace()).
replaceAll(", ",
"\n"));
}
}
public void selectButton(UserAccountInfo user) {
try {
LOG.info("user.getUserName() " + user.getUserName());
pageCommonInputs.showDataInputsDisplay();
pageCommonInputs.setShowEditButtons(false);
userAccount.setAffiliateCode(user.getAffiliateCode());
userAccount.setUsername(user.getUserName());
userAccount.setBranchCode(user.getBranchCode());
userAccount.setEmailAddress(user.getEmail());
userAccount.setFullname(user.getFullname());
userAccount.setLang(user.getLanguage());
userAccount.setMobileNo(user.getMobileNo());
userAccount.setModifiedBy(user.getModifiedBy());
userAccount.setStatus(user.getStatus());
userAccount.setUserRole(user.getUserRole());
affiliateCode = user.getAffiliateCode();
branchListener();
LOG.
info("create user account exception " + Arrays.
toString(e.
getStackTrace()).
replaceAll(", ",
"\n"));
}
}
public void searchButton() {
try {
listOfUserAccounts = new ArrayList<>();
listOfUserAccounts = UserAccountDAO.getUserAccountList(pageCommonInputs);
if (listOfUserAccounts.isEmpty()) {
Msg.errorMsg("No record found");
}
LOG.
info("searchButton user account exception " + Arrays.
toString(e.
getStackTrace()).
replaceAll(", ",
"\n"));
}
}
public void viewAllButton() {
try {
listOfUserAccounts = new ArrayList<>();
listOfUserAccounts = UserAccountDAO.getUserAccountList(pageCommonInputs);
LOG.
info("viewAllButton user account exception " + Arrays.
toString(e.
getStackTrace()).
replaceAll(", ",
"\n"));
}
}
//<editor-fold defaultstate="collapsed" desc="GETTERS AND SETTERS">
public UserAccount getUserAccount() {
return userAccount;
}
public void setUserAccount(UserAccount userAccount) {
this.userAccount = userAccount;
}
public String getAffiliateCode
() {
return affiliateCode;
}
public void setAffiliateCode
(String affiliateCode
) {
this.affiliateCode = affiliateCode;
}
public String getBranchName
() {
return branchName;
}
public void setBranchName
(String branchName
) {
this.branchName = branchName;
}
public List<BranchInfo> getBranchList() {
return branchList;
}
public void setBranchList(List<BranchInfo> branchList) {
this.branchList = branchList;
}
public PageCommonInputs getPageCommonInputs() {
return pageCommonInputs;
}
public void setPageCommonInputs(PageCommonInputs pageCommonInputs) {
this.pageCommonInputs = pageCommonInputs;
}
public List<SelectItem> getListOfBranches() {
return listOfBranches;
}
public void setListOfBranches(List<SelectItem> listOfBranches) {
this.listOfBranches = listOfBranches;
}
public List<UserAccountInfo> getListOfUserAccounts() {
return listOfUserAccounts;
}
public void setListOfUserAccounts(List<UserAccountInfo> listOfUserAccounts) {
this.listOfUserAccounts = listOfUserAccounts;
}
//</editor-fold>
}