diff --git a/app/CustomFuncPao.php b/app/CustomFuncPao.php
index 60037d49..daaff653 100644
--- a/app/CustomFuncPao.php
+++ b/app/CustomFuncPao.php
@@ -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
- try {
- $str = "";
+ public static function getArticleRow($article, $index, $separator)
+ {
+ try {
+ $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) {
- // ...
- }
+ return self::formatArticleRow(
+ $article,
+ $index,
+ $separator,
+ $product,
+ $stockInfo,
+ $preorderInfo
+ );
+ } catch (\Exception $e) {
+ return "Errore getRigaArticoloByArt: " . $e->getMessage();
}
-
- 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 .
- '' . $article->IdArticolo . '' . $sep .
- ' ' . $article->Titolo . '' . $sep .
- ' Pubb:' . formatDateToItalian($article->DataPubblicazione) . $sep .
- $article->DescrizioneCollana . $sep .
- $article->DescrizioneStatoProdotto . ' (' . $article->DescrizioneFormato . ')' . $sep .
- '[Qta = ' . $article->QtaDisponibile . ']' . $sep .
- ' [' . showprice($prezzo) . ' ]' . $sep .
- '[In Stock = ' . $qtyinstock . ']' . $sep;
-
- if (!$preorder_attivato || $qtyinstock < QTA_MINIMA_PER_PREVENDITA) {
- $myview .= 'Imposta in PRE-ORDINE!' . $sep;
- } else {
- $myview .= 'Impostalo Non Disponibile' . $sep;
- }
- $myview .= 'Aggiorna Data Pubb' . $sep;
-
- $str .= $myview;
-
- if ($prodotto) {
-
- $datepreorder = findInsideProduct($prodotto, '_ywpo_for_sale_date');
-
- if ($preorder_attivato) {
- $str .= ' PREORDINE ATTIVO! ';
- if ($datepreorder) {
- $str .= ' Data PreOrdine: ' . $datepreorder . '';
- }
- }
- $str .= '
';
- }
- } 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 . '
';
+ }
+
+ private static function formatIndexAndId($index, $article, $separator)
+ {
+ return sprintf(
+ '[%d]%s%s%s',
+ $index,
+ $separator,
+ $article->permalink,
+ $article->IdArticolo,
+ $article->IdArticolo,
+ $separator
+ );
+ }
+
+ private static function formatTitleLink($article, $stockInfo, $separator)
+ {
+ return sprintf(
+ ' %s%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 = %s]%s[%s]%s[In Stock = %s]%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(
+ 'Imposta in PRE-ORDINE!%s',
+ $baseUrl,
+ $separator
+ );
+ }
+
+ return sprintf(
+ 'Impostalo Non Disponibile%s',
+ $baseUrl,
+ $separator
+ );
+ }
+
+ private static function formatUpdateDateLink($article, $separator)
+ {
+ return sprintf(
+ 'Aggiorna Data Pubb%s',
+ $article->permalink,
+ $article->IdArticolo,
+ $separator
+ );
+ }
+
+ private static function formatPreorderStatus($preorderDate)
+ {
+ $status = ' PREORDINE ATTIVO!';
+ if ($preorderDate) {
+ $status .= sprintf(' Data PreOrdine: %s', $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();