package com.ese.beans;
import com.ese.model.db.PickingOrderModel;
import com.ese.model.db.StatusModel;
import com.ese.model.view.DataSyncConfirmOrderView;
import com.ese.model.view.PickingOrderView;
import com.ese.service.PickingOrderService;
import com.ese.service.security.UserDetail;
import com.ese.utils.FacesUtil;
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 javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
@Getter
@Setter
@ViewScoped
@ManagedBean(name = "pickingOrderBean")
public class PickingOrderBean extends Bean {
private static final long serialVersionUID = 4112578334029874840L;
@ManagedProperty("#{pickingOrderService}") private PickingOrderService pickingOrderService;
@ManagedProperty("#{message['authorize.menu.barcode']}") private String key;
private boolean flagSync;
private boolean flagBtnShow;
private boolean flagBtnPrint;
private boolean flagBtnSync;
private boolean flagBtnCancel;
private boolean flagBtnPickingOrderWithItemBarcode;
private boolean flagBtnPost;
private String selectType;
private PickingOrderView pickingOrderView;
private PickingOrderModel pickingOrderModel;
private List<PickingOrderModel> pickingOrderModelList;
private List<StatusModel> statusValue;
private List<DataSyncConfirmOrderView> syncConfirmOrderViewList;
private List<DataSyncConfirmOrderView> seleteDataSync;
private UserDetail userDetail;
@PostConstruct
public void onCreation(){
log.debug("onCreation().");
if(preLoad()/* && isAuthorize(key)*/){
userDetail = getUser();
init();
}
}
private void init(){
initBtn();
pickingOrderView = new PickingOrderView();
pickingOrderView.setStatus(1);
pickingOrderModelList = new ArrayList<>();
onLoadTable();
onLoadStatue();
}
private void initBtn(){
flagSync = false;
flagBtnShow = true;
flagBtnPrint = true;
flagBtnCancel = true;
flagBtnPost = true;
flagBtnPickingOrderWithItemBarcode = true;
}
private void onLoadTable(){
pickingOrderModelList = pickingOrderService.getPickingOrderByOverSeaOrder(pickingOrderService.getTypeBeforeOnLoaf(userDetail.getId()));
}
private void onLoadStatue(){
statusValue = pickingOrderService.getStatusAll();
}
public void onSearch(){
pickingOrderModelList = pickingOrderService.getPickingOnSearch(pickingOrderView);
initBtn();
}
public void onClickTable(){
log.debug("pickingOrderModel : {}", pickingOrderModel.getStatus().getStatusSeq());
flagBtnPickingOrderWithItemBarcode = false;
if (pickingOrderModel.getStatus().getStatusSeq() >= 2){
flagBtnShow = false;
flagBtnPrint = false;
flagBtnCancel = false;
} else if (pickingOrderModel.getStatus().getStatusSeq() == 1){
flagBtnShow = false;
flagBtnPrint = true;
flagBtnCancel = false;
}
if (pickingOrderModel.getStatus().getStatusSeq() == 4){
flagBtnPost = false;
}
if (pickingOrderModel.getStatus().getStatusSeq() == 0){
flagBtnCancel = true;
flagBtnPrint = true;
flagBtnShow = true;
}
}
public void onSyncData(){
syncConfirmOrderViewList = pickingOrderService.getDataOnSync();
if (Utils.isSafetyList(syncConfirmOrderViewList)){
flagBtnSync = false;
}
pickingOrderService.updateStatus(syncConfirmOrderViewList);
}
public void onClose(){
pickingOrderService.rollbackStatus();
seleteDataSync = Utils.getEmptyList();
}
public void onSyncOrder(){
if (!Utils.isZero(seleteDataSync.size())){
pickingOrderService.syncOrder(seleteDataSync, userDetail);
showDialog("Sync Success.", "Success.", "msgBoxSystemMessageDlg2");
onLoadTable();
} else {
showDialogWarning("Please select data.");
}
}
public void stikerWorkLoadReport(){
pickingOrderService.getStikerWorkLoadReport(pickingOrderModel.getId(), userDetail);
}
public void confirmationPackingReport(){
pickingOrderService.getConfirmationPackingReport(pickingOrderModel.getId(), userDetail);
}
public void pickingOrderWithItemBarcode(){
pickingOrderService.getPickingOrderWithItemBarcodeReport(pickingOrderModel.getId(), userDetail);
}
public void onAddtoPickingOrderShowItem(){
HttpSession session = FacesUtil.getSession(true);
session.setAttribute("pickingOrderId", pickingOrderModel);
FacesUtil.redirect("/site/pickingOrderShowItem.xhtml");
}
public void onCancel(){
if (pickingOrderModel.getStatus().getStatusSeq() == 1){
pickingOrderService.updateOnCancel(pickingOrderModel.getId());
showDialog("Cancel", "Cancel Success");
}else if (pickingOrderModel.getStatus().getStatusSeq() == 2){
pickingOrderService.cancel(pickingOrderModel);
pickingOrderService.updateOnCancel(pickingOrderModel.getId());
showDialog("Cancel", "Cancel Success");
}else if (pickingOrderModel.getStatus().getStatusSeq() == 3){
showDialog(MessageDialog.WARNING.getMessageHeader(), "This order has assign to pick. You can’t cancel this order now. You should wait for the picked data from picker");
pickingOrderModel = new PickingOrderModel();
}else if (pickingOrderModel.getStatus().getStatusSeq() == 4 || pickingOrderModel.getStatus().getStatusSeq() == 5){
if (!Utils.isNull(pickingOrderModel.getLoadingOrderModel()) && !Utils.isNull(pickingOrderModel.getLoadingOrderModel().getStatusModel())){
if (pickingOrderModel.getLoadingOrderModel().getStatusModel().getStatusSeq() <= 1){
pickingOrderService.cancel(pickingOrderModel);
pickingOrderService.updateOnCancel(pickingOrderModel.getId());
showDialog("Cancel", "Cancel Success");
} else {
showDialog(MessageDialog.WARNING.getMessageHeader(), "This order has move to loading area please unpack first.");
}
}
}
init();
}
public void onClickPost(){
if (pickingOrderService.checkPost(pickingOrderModel.getId())){
showDialog("Post", "Success");
init();
} else {
showDialog(MessageDialog.WARNING.getMessageHeader(), "This order not complete. Click Yes to check your post pick authorize.", "confirmUpdatePostDlg");
}
}
public void checkAuthoruze(){
if (pickingOrderService.authorize(userDetail.getId(), pickingOrderModel.getId())){
showDialog("Post", "Success");
init();
} else {
showDialog(MessageDialog.WARNING.getMessageHeader(), "You don’t have authorize");
}
}
}