package com.ese.transform;
import com.ese.model.dao.WarehouseDAO;
import com.ese.model.db.MSLocationModel;
import com.ese.model.db.MSWarehouseModel;
import com.ese.model.db.StaffModel;
import com.ese.model.view.LocationView;
import com.ese.utils.AttributeName;
import com.ese.utils.FacesUtil;
import com.ese.utils.Utils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
public class LocationTransform extends Transform {
@Resource private WarehouseDAO warehouseDAO;
public List<LocationView> transformToViewList(List<MSLocationModel> locationModels){
log.debug("transformToViewList() {}", locationModels.size());
List<LocationView> locationViewList = new ArrayList<LocationView>();
for (MSLocationModel model : locationModels){
locationViewList.add(transformToView(model));
}
return locationViewList;
}
public LocationView transformToView(MSLocationModel msLocationModel){
log.debug("transformToView().");
LocationView locationView = new LocationView();
locationView.setId(msLocationModel.getId());
locationView.setLocationBarcode(msLocationModel.getLocationBarcode());
locationView.setLocationName(msLocationModel.getLocationName());
if (!Utils.isNull(msLocationModel.getMsWarehouseModel())){
locationView.setWarehouseModel(msLocationModel.getMsWarehouseModel());
} else {
locationView.setWarehouseModel(new MSWarehouseModel());
}
if (!Utils.isNull(msLocationModel.getCapacity())){
locationView.setCapacity(msLocationModel.getCapacity());
} else {
locationView.setCapacity(0);
}
locationView.setRemark(msLocationModel.getRemark());
if (!Utils.isNull(msLocationModel.getQty())){
locationView.setQty(msLocationModel.getQty());
} else {
locationView.setQty(0);
}
if (!Utils.isNull(msLocationModel.getStatus())){
locationView.setStatus(msLocationModel.getStatus());
} else {
locationView.setStatus(0);
}
locationView.setCreateBy(msLocationModel.getCreateBy());
locationView.setCreateDate(msLocationModel.getCreateDate());
locationView.setUpdateBy(msLocationModel.getUpdateBy());
locationView.setUpdateDate(msLocationModel.getUpdateDate());
if (!Utils.isNull(msLocationModel.getIsValid())){
locationView.setIsvalid(msLocationModel.getIsValid());
} else {
locationView.setIsvalid(0);
}
if (!Utils.isNull(msLocationModel.getVersion())){
locationView.setVersion(msLocationModel.getVersion());
} else {
locationView.setVersion(0);
}
if (!Utils.isNull(msLocationModel.getReservedQty())){
locationView.setReservedQty(msLocationModel.getReservedQty());
} else {
locationView.setReservedQty(0);
}
if (!Utils.isNull(msLocationModel.getIsMix())){
locationView.setIsMix(msLocationModel.getIsMix());
} else {
locationView.setIsMix(0);
}
if (!Utils.isNull(msLocationModel.getIsFoil())){
locationView.setIsFoil(msLocationModel.getIsFoil());
} else {
locationView.setIsFoil(0);
}
return locationView;
}
public MSLocationModel transformToModel(LocationView locationView){
int staffModel = (int) FacesUtil.getSession(false).getAttribute(AttributeName.STAFF.getName());
MSLocationModel msLocationModel = new MSLocationModel();
MSWarehouseModel warehouseModel = null;
msLocationModel.setId(locationView.getId());
msLocationModel.setLocationBarcode(locationView.getLocationBarcode());
msLocationModel.setLocationName(locationView.getLocationName());
try {
warehouseModel = warehouseDAO.findByID(locationView.getWarehouseModel().getId());
log.debug("warehouseModel : {}", warehouseModel);
} catch (Exception e) {
log.debug("Exception find warehouse error : ", e);
}
msLocationModel.setMsWarehouseModel(warehouseModel);
msLocationModel.setCapacity(locationView.getCapacity());
msLocationModel.setRemark(locationView.getRemark());
msLocationModel.setQty(locationView.getQty());
msLocationModel.setReservedQty(locationView.getReservedQty());
msLocationModel.setIsMix(locationView.getIsMix());
msLocationModel.setIsFoil(locationView.getIsFoil());
if (Utils.isZero(locationView.getId())){
msLocationModel.setCreateBy(staffModel);
msLocationModel.setCreateDate(Utils.currentDate());
msLocationModel.setUpdateBy(staffModel);
msLocationModel.setUpdateDate(Utils.currentDate());
msLocationModel.setIsValid(1);
msLocationModel.setVersion(1);
msLocationModel.setStatus(1);
} else {
msLocationModel.setCreateBy(locationView.getCreateBy());
msLocationModel.setCreateDate(locationView.getCreateDate());
msLocationModel.setUpdateBy(staffModel);
msLocationModel.setUpdateDate(Utils.currentDate());
msLocationModel.setIsValid(locationView.getIsvalid());
msLocationModel.setVersion(locationView.getVersion());
msLocationModel.setStatus(locationView.getStatus());
}
return msLocationModel;
}
}