package com.ese.beans;
import com.ese.model.db.BarcodeRegisterModel;
import com.ese.model.db.MSItemModel;
import com.ese.model.view.BarcodeRegisterView;
import com.ese.service.BarcodeRegisterService;
import com.ese.utils.MessageDialog;
import com.ese.utils.Utils;
import lombok.Getter;
import lombok.Setter;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import java.util.List;
@Getter
@Setter
@ViewScoped
@ManagedBean(name = "barcodeRegisterBean")
public class BarcodeRegisterBean extends Bean{
private static final long serialVersionUID = 4112578634029874840L;
@ManagedProperty("#{barcodeRegisterService}") private BarcodeRegisterService barcodeRegisterService;
@ManagedProperty("#{message['authorize.menu.barcode']}") private String key;
private BarcodeRegisterView barcodeRegisterView;
private List<MSItemModel> msItemModelList;
private List<BarcodeRegisterModel> barcodeRegisterModelList;
private BarcodeRegisterModel barcodeRegisterModel;
private String selectType;
private String productSearch;
private String barcodeSearch;
private String barcodeSelectType;
private boolean flagBtnSelect;
private boolean flagBtnDelete;
private boolean flagBtnSave;
private boolean flagBtnPrint;
private boolean flagBtnEdit;
private boolean flagItem;
private boolean flagQty;
private boolean flagStartBarcode;
private String modeBarcode;
@PostConstruct
public void onCreation(){
log.debug("onCreation().");
if(preLoad() && isAuthorize(key)){
init();
}
}
private void init(){
barcodeRegisterView = new BarcodeRegisterView();
msItemModelList = Utils.getEmptyList();
barcodeRegisterModelList = Utils.getEmptyList();
initBtn();
initField();
onLoadDataTable();
onClickButtonNew();
}
private void initField(){
flagItem = false;
flagQty = false;
flagStartBarcode = false;
}
private void initBtn(){
flagBtnSelect = true;
flagBtnDelete = true;
flagBtnSave = true;
flagBtnEdit = true;
flagBtnPrint = true;
}
private void onLoadDataTable(){
onLoadDataBarcode();
log.debug("-- onLoadDataTable() returned size = {}", barcodeRegisterModelList.size());
barcodeRegisterModel = new BarcodeRegisterModel();
}
private void onLoadDataBarcode(){
barcodeRegisterModelList = barcodeRegisterService.getByIsValid();
}
public void onClickButtonNew(){
log.debug("-- onClickButtonNew()");
barcodeRegisterView = new BarcodeRegisterView();
flagBtnDelete = true;
flagBtnSave = false;
flagBtnEdit = true;
flagBtnPrint = true;
barcodeRegisterModel = new BarcodeRegisterModel();
modeBarcode = "Mode(New) ";
}
public void calculator(){
log.debug("-- calculator()");
final int qty = barcodeRegisterView.getQty();
final int start = Utils.parseInt(replaceFormat(barcodeRegisterView.getStartBarcode()), 0);
final int finish = (qty + start) - 1;
final String result = finish > 999999999 ? "999999999" : String.format("%09d", finish);
barcodeRegisterView.setFinishBarcode(result);
barcodeRegisterView.setFinishBarcodeText("T" + result);
barcodeRegisterView.setStartBarcodeText("T" + String.format("%09d", start));
}
private boolean mandate(){
if(mandateQty()){
setMessage("Qty should be greater than 0.");
return false;
} else if(mandateItem()){
setMessage("Item should not be empty.");
return false;
} else if(mandateStartBarcode()){
setMessage("Start Barcode should be 10 characters.");
return false;
} else if (mandateDuplicateStartBarcode()) {
setMessage("Start Barcode or Finish Barcode is duplicate.");
return false;
} else {
return true;
}
}
private boolean mandateQty(){
flagQty = (Utils.isZero(Utils.parseString(barcodeRegisterView.getQty(), "")) || barcodeRegisterView.getQty() < 1 )? true : false ;
return flagQty;
}
private boolean mandateStartBarcode(){
final int FIX_LENGTH = 9;
final String stringReplace = replaceFormat(barcodeRegisterView.getStartBarcode());
flagStartBarcode = stringReplace.length() != FIX_LENGTH ? true : false ;
barcodeRegisterView.setStartBarcode(stringReplace);
return flagStartBarcode;
}
private boolean mandateDuplicateStartBarcode(){
return barcodeRegisterService.isDuplicate(barcodeRegisterView.getStartBarcode(), barcodeRegisterView.getFinishBarcode(), barcodeRegisterView.getId());
}
private boolean mandateItem(){
flagItem = Utils.isZero(barcodeRegisterView.getMsItemModel().getId()) ? true : false ;
return flagItem;
}
public void onInitSearch(){
log.debug("-- onInitSearch()");
selectType = "3";
productSearch = "";
msItemModelList = Utils.getEmptyList();
}
public void onSubmitSearchBarcode(){
log.debug("-- onSubmitSearch()");
if(!Utils.isZero(barcodeSearch.length())){
barcodeRegisterModelList = barcodeRegisterService.findBarcodeByCondition(barcodeSelectType, barcodeSearch);
} else {
onLoadDataBarcode();
}
}
public void onSubmitSearch(){
log.debug("-- onSubmitSearch()");
msItemModelList = barcodeRegisterService.findByCondition(selectType, productSearch);
}
public void onClickTableDialog(){
log.debug("-- onClickTable()");
flagBtnSelect = false;
}
public void onClickTable(){
log.debug("-- onClickTable() {}", barcodeRegisterModel);
if (barcodeRegisterModel.getStatus().getId() > 1){
flagBtnSave = true;
flagBtnDelete = true;
flagBtnEdit = true;
} else {
flagBtnSave = false;
flagBtnDelete = false;
flagBtnEdit = false;
}
flagBtnPrint = false;
barcodeRegisterView = barcodeRegisterService.convertToView(barcodeRegisterModel);
modeBarcode = "Mode(Edit) ";
}
public void onClickSelectOnDialog(){
log.debug("-- onClickSelectOnDialog()");
flagBtnSelect = true;
}
public void preDelete(){
showDialog(MessageDialog.WARNING.getMessageHeader(), "Are you want to delete this item?", "confirmClosePalletDlg");
}
public void onDelete(){
log.debug("-- onDelete()");
try {
barcodeRegisterService.delete(barcodeRegisterModel);
showDialogDeleted();
init();
} catch (Exception e) {
log.error("{}",e);
showDialogError(e.getMessage());
}
}
public void onSave(){
log.debug("-- onSave()");
try {
if(mandate()){
barcodeRegisterService.saveOrUpdate(barcodeRegisterView);
if (!Utils.isZero(barcodeRegisterView.getId())){
showDialogEdited();
} else {
showDialogSaved();
}
init();
} else {
showDialogWarning(getMessage());
}
} catch (Exception e) {
log.error("{}",e);
showDialogError(e.getMessage());
}
}
public void onEdit(){
log.debug("-- onEdit()");
try {
if(mandate()){
barcodeRegisterService.edit(barcodeRegisterView);
showDialogEdited();
init();
} else {
showDialogWarning(getMessage());
}
} catch (Exception e) {
log.error("{}",e);
showDialogError(e.getMessage());
}
}
public void onPrint(){
barcodeRegisterService.onPrintBarcode(barcodeRegisterModel.getId());
}
private String replaceFormat(String startBarcode){
return startBarcode.replace("T", "").replace("-", "").replace("_", "");
}
public void onChangeDocumentDate(){
log.debug("--- {}", barcodeRegisterView.getDocumentDate());
barcodeRegisterView.setBatchNo(Utils.getBatchNo(barcodeRegisterView.getDocumentDate()));
log.debug("------- {}", Utils.getBatchNo(barcodeRegisterView.getDocumentDate()));
}
}