public void updateInfoOfProductInEshop(ProductInEshopInfoUpdateDto priceUpdateDto) {
    val.notNull(priceUpdateDto, "priceUpdateDto is null");
    val.notNull(priceUpdateDto.getId(), "id is null");

    // TODO validacie

    ProductInEshopEntity entity = productInEshopDao.readMandatory(priceUpdateDto.getId());
    entity.setPriceForUnit(priceUpdateDto.getPriceForUnit());
    entity.setPriceForPackage(priceUpdateDto.getPriceForPackage());
    entity.setPriceForOneItemInPackage(priceUpdateDto.getPriceForOneItemInPackage());
    entity.setLastUpdatedPrice(new Date());
    entity.setUpdateStatus(ProductInEshopUpdateStatus.OK);
    // TODO ako jeden
    // nastavenie best price
    if (notExistBestPrice(entity)) {
      entity.setBestPrice(priceUpdateDto.getPriceForPackage());
    } else {
      if (isBestPriceGreaterThanActualPriceForPackage(priceUpdateDto, entity)) {
        // nastav lepsiu cenu
        entity.setBestPrice(priceUpdateDto.getPriceForPackage());
      }
    }

    entity.setProductAction(priceUpdateDto.getProductAction());
    entity.setActionValidTo(priceUpdateDto.getActionValidTo());
    entity.setProductNameInEhop(priceUpdateDto.getProductName());
    entity.setProductPictureUrl(priceUpdateDto.getPictureUrl());
    productInEshopDao.update(entity);
  }
 private boolean isBestPriceGreaterThanActualPriceForPackage(
     ProductInEshopInfoUpdateDto priceUpdateDto, ProductInEshopEntity entity) {
   return entity.getBestPrice().compareTo(priceUpdateDto.getPriceForPackage()) > 0;
 }