This commit is contained in:
paoloar77
2024-12-20 17:52:30 +01:00
parent d7df0f23d1
commit e128715bd9

View File

@@ -970,89 +970,190 @@ function findInsideProduct(array $prodotto, string $miocampo): ?string
return null;
}
function getRigaArticoloByArt($article, $ind, $sep)
class ArticleFormatter
{
private const QTA_MINIMA_PER_PREVENDITA = 5; // Assuming this was defined elsewhere
private const CAMPO_PREORDINE = 'preorder'; // Assuming this was defined elsewhere
public static function getArticleRow($article, $index, $separator)
{
try {
$str = "";
$product = self::getProduct($article->IdArticolo);
$stockInfo = self::getStockInfo($product);
$preorderInfo = self::getPreorderInfo($product);
$mydatestr = $article->DataPubblicazione;
$sku = $article->IdArticolo;
$prodotto = Product::where('sku', $sku)->first();
$permalink = "";
$qtyinstock = '';
$colore = 'black';
$prezzo = '';
if ($prodotto) {
try {
$qtyinstock = intval($prodotto['stock_quantity']);
$prezzo = $prodotto['sale_price'];
if (!$prezzo) {
$prezzo = $prodotto['price'];
}
if ($qtyinstock <= 0) {
$colore = 'red';
} else {
$colore = 'green';
}
$permalink = $prodotto['permalink'];
} catch (\Exception $e) {
// ...
}
}
if ($prodotto) {
$preorder = findInsideProduct($prodotto, CAMPO_PREORDINE);
$preorder_attivato = $preorder === 'yes';
}
// echo '[' . $ind . ']' . $sep . $mydatestr . $sep . $article->IdArticolo . $sep . $article->Titolo . $sep . $article->DescrizioneStatoProdotto . $sep . $article->DescrizioneFormato . ' [Quantita = ' . $article->QtaDisponibile . ']';
$myview = '[' . $ind . ']' . $sep .
'<a href="' . $article->permalink . '?id=' . $article->IdArticolo . '" target="_blank">' . $article->IdArticolo . '</a>' . $sep .
'<a href="' . $permalink . '" target="_blank"><span style="color:' . $colore . '; font-weight: bold;"> ' . $article->Titolo . '</span></a>' . $sep .
' Pubb:' . formatDateToItalian($article->DataPubblicazione) . $sep .
$article->DescrizioneCollana . $sep .
$article->DescrizioneStatoProdotto . ' (' . $article->DescrizioneFormato . ')' . $sep .
'[Qta = <span style="">' . $article->QtaDisponibile . '</span>]' . $sep .
' [' . showprice($prezzo) . ' ]' . $sep .
'[In Stock = <span style="color:' . $colore . '; font-weight: bold;">' . $qtyinstock . '</span>]' . $sep;
if (!$preorder_attivato || $qtyinstock < QTA_MINIMA_PER_PREVENDITA) {
$myview .= '<a href="' . $article->permalink . '/apimacro/public/aggiornapreorder/' . $article->IdArticolo . '/1/" target="_blank">Imposta in PRE-ORDINE!</a>' . $sep;
} else {
$myview .= '<a href="' . $article->permalink . '/apimacro/public/aggiornapreorder/' . $article->IdArticolo . '/-1/" target="_blank">Impostalo Non Disponibile</a>' . $sep;
}
$myview .= '<a href="' . $article->permalink . '/apimacro/public/aggiornadatapubblicazione/' . $article->IdArticolo . '/" target="_blank">Aggiorna Data Pubb</a>' . $sep;
$str .= $myview;
if ($prodotto) {
$datepreorder = findInsideProduct($prodotto, '_ywpo_for_sale_date');
if ($preorder_attivato) {
$str .= ' <span style="color:green">PREORDINE ATTIVO! </span>';
if ($datepreorder) {
$str .= ' <span style="">Data PreOrdine: ' . $datepreorder . '</span>';
}
}
$str .= '<br>';
}
return self::formatArticleRow(
$article,
$index,
$separator,
$product,
$stockInfo,
$preorderInfo
);
} catch (\Exception $e) {
return "Errore getRigaArticoloByArt: " . $e->getMessage();
}
return $str;
}
private static function getProduct($sku)
{
return Product::where('sku', $sku)->first();
}
private static function getStockInfo($product)
{
if (!$product) {
return [
'quantity' => 0,
'price' => '',
'color' => 'black',
'permalink' => ''
];
}
$quantity = intval($product['stock_quantity']);
$price = $product['sale_price'] ?: $product['price'];
return [
'quantity' => $quantity,
'price' => $price,
'color' => $quantity <= 0 ? 'red' : 'green',
'permalink' => $product['permalink']
];
}
private static function getPreorderInfo($product)
{
if (!$product) {
return ['active' => false, 'date' => null];
}
return [
'active' => self::findInsideProduct($product, self::CAMPO_PREORDINE) === 'yes',
'date' => self::findInsideProduct($product, '_ywpo_for_sale_date')
];
}
private static function formatArticleRow($article, $index, $separator, $product, $stockInfo, $preorderInfo)
{
$elements = [
self::formatIndexAndId($index, $article, $separator),
self::formatTitleLink($article, $stockInfo, $separator),
self::formatPublicationInfo($article, $separator),
self::formatStockInfo($article, $stockInfo, $separator),
self::formatPreorderActions($article, $preorderInfo, $stockInfo, $separator),
self::formatUpdateDateLink($article, $separator)
];
$output = implode('', $elements);
if ($product && $preorderInfo['active']) {
$output .= self::formatPreorderStatus($preorderInfo['date']);
}
return $output . '<br>';
}
private static function formatIndexAndId($index, $article, $separator)
{
return sprintf(
'[%d]%s<a href="%s?id=%s" target="_blank">%s</a>%s',
$index,
$separator,
$article->permalink,
$article->IdArticolo,
$article->IdArticolo,
$separator
);
}
private static function formatTitleLink($article, $stockInfo, $separator)
{
return sprintf(
'<a href="%s" target="_blank"><span style="color:%s; font-weight: bold;"> %s</span></a>%s',
$stockInfo['permalink'],
$stockInfo['color'],
$article->Titolo,
$separator
);
}
private static function formatPublicationInfo($article, $separator)
{
return sprintf(
'Pubb:%s%s%s%s%s (%s)%s',
formatDateToItalian($article->DataPubblicazione),
$separator,
$article->DescrizioneCollana,
$separator,
$article->DescrizioneStatoProdotto,
$article->DescrizioneFormato,
$separator
);
}
private static function formatStockInfo($article, $stockInfo, $separator)
{
return sprintf(
'[Qta = <span>%s</span>]%s[%s]%s[In Stock = <span style="color:%s; font-weight: bold;">%s</span>]%s',
$article->QtaDisponibile,
$separator,
showprice($stockInfo['price']),
$separator,
$stockInfo['color'],
$stockInfo['quantity'],
$separator
);
}
private static function formatPreorderActions($article, $preorderInfo, $stockInfo, $separator)
{
$baseUrl = $article->permalink . '/apimacro/public/aggiornapreorder/' . $article->IdArticolo;
if (!$preorderInfo['active'] || $stockInfo['quantity'] < self::QTA_MINIMA_PER_PREVENDITA) {
return sprintf(
'<a href="%s/1/" target="_blank">Imposta in PRE-ORDINE!</a>%s',
$baseUrl,
$separator
);
}
return sprintf(
'<a href="%s/-1/" target="_blank">Impostalo Non Disponibile</a>%s',
$baseUrl,
$separator
);
}
private static function formatUpdateDateLink($article, $separator)
{
return sprintf(
'<a href="%s/apimacro/public/aggiornadatapubblicazione/%s/" target="_blank">Aggiorna Data Pubb</a>%s',
$article->permalink,
$article->IdArticolo,
$separator
);
}
private static function formatPreorderStatus($preorderDate)
{
$status = ' <span style="color:green">PREORDINE ATTIVO!</span>';
if ($preorderDate) {
$status .= sprintf(' <span>Data PreOrdine: %s</span>', $preorderDate);
}
return $status;
}
private static function findInsideProduct($product, $field)
{
// Implementation needed - this was referenced but not shown in original code
return $product[$field] ?? null;
}
}
function getRigaArticoloByArt($article, $index, $separator) {
return ArticleFormatter::getArticleRow($article, $index, $separator);
}
function showCartolibri()
{
@@ -1077,6 +1178,7 @@ function showCartolibri()
}
}
function showRiviste()
{
$articles = getArticoliRiviste();