This commit is contained in:
paoloar77
2024-12-08 12:44:30 +01:00
parent c011885d7a
commit efdedba34b

View File

@@ -16,20 +16,20 @@ class ArticleController extends Controller
ini_set("memory_limit", "512M"); ini_set("memory_limit", "512M");
try { try {
$articoli = Article::whereRaw('DataOra >= ?', [$data_start]) $articoli = Article::whereRaw('DataOra >= ?', [$data_start])
->join(DB::raw('(SELECT IdArticolo, MAX(DataOra) AS data FROM T_WEB_Articoli WHERE DataOra >= ? GROUP BY IdArticolo) b'), function ($join) use ($data_start) { ->join(DB::raw('(SELECT IdArticolo, MAX(DataOra) AS data FROM T_WEB_Articoli WHERE DataOra >= ? GROUP BY IdArticolo) b'), function ($join) use ($data_start) {
$join->on('T_WEB_Articoli.IdArticolo', '=', 'b.IdArticolo') $join->on('T_WEB_Articoli.IdArticolo', '=', 'b.IdArticolo')
->on('T_WEB_Articoli.DataOra', '=', 'b.data'); ->on('T_WEB_Articoli.DataOra', '=', 'b.data');
}, [$data_start]) }, [$data_start])
->leftJoin(DB::raw('(SELECT CodArticoloGM, SUM(Qta) as totaleVenduti FROM T_WEB_Ordini WHERE DataOra >= ? GROUP BY CodArticoloGM) O'), function ($join) use ($data_start) { ->leftJoin(DB::raw('(SELECT CodArticoloGM, SUM(Qta) as totaleVenduti FROM T_WEB_Ordini WHERE DataOra >= ? GROUP BY CodArticoloGM) O'), function ($join) use ($data_start) {
$join->on('T_WEB_Articoli.IdArticolo', '=', 'O.CodArticoloGM'); $join->on('T_WEB_Articoli.IdArticolo', '=', 'O.CodArticoloGM');
}, [$data_start]) }, [$data_start])
->leftJoin(DB::raw('(SELECT g.IdTipologia, g.Descrizione as DescrizioneTipologia FROM T_WEB_Tipologie g JOIN (SELECT IdTipologia, MAX(DataOra) as data1 from T_WEB_Tipologie WHERE DataOra >= ? GROUP BY IdTipologia) h ON g.IdTipologia = h.IdTipologia AND g.DataOra = h.data1 ) i'), function ($join) use ($data_start) { ->leftJoin(DB::raw('(SELECT g.IdTipologia, g.Descrizione as DescrizioneTipologia FROM T_WEB_Tipologie g JOIN (SELECT IdTipologia, MAX(DataOra) as data1 from T_WEB_Tipologie WHERE DataOra >= ? GROUP BY IdTipologia) h ON g.IdTipologia = h.IdTipologia AND g.DataOra = h.data1 ) i'), function ($join) use ($data_start) {
$join->on('T_WEB_Articoli.IdTipologia', '=', 'i.IdTipologia'); $join->on('T_WEB_Articoli.IdTipologia', '=', 'i.IdTipologia');
}, [$data_start]) }, [$data_start])
->select('T_WEB_Articoli.*', 'b.data as ultimaDataOra', DB::raw('COALESCE(O.totaleVenduti, 0) as totaleVenduti')) ->select('T_WEB_Articoli.*', 'b.data as ultimaDataOra', DB::raw('COALESCE(O.totaleVenduti, 0) as totaleVenduti'))
->where('DescrizioneTipologia', 'Libri') ->where('DescrizioneTipologia', 'Libri')
->orderBy('totaleVenduti', 'desc') ->orderBy('totaleVenduti', 'desc')
->get(); ->get();
if ($articoli->isEmpty()) { if ($articoli->isEmpty()) {
return response()->json(['message' => 'Nessun articolo trovato.'], 404); return response()->json(['message' => 'Nessun articolo trovato.'], 404);
@@ -172,9 +172,7 @@ class ArticleController extends Controller
public function showArticoliByDataStart($data_start) public function showArticoliByDataStart($data_start)
{ {
try { try {
$validatedData = request()->validate([ $this->validateDate($data_start);
'data_start' => 'required|date_format:Y-m-d',
]);
$articoliVenduti = $this->articoliByDataStart($data_start); $articoliVenduti = $this->articoliByDataStart($data_start);
@@ -188,8 +186,20 @@ class ArticleController extends Controller
// Potresti considerare di registrare l'errore per debugging // Potresti considerare di registrare l'errore per debugging
return new Response('Error exporting articles: ' . $e->getMessage(), 500); return new Response('Error exporting articles: ' . $e->getMessage(), 500);
} }
} }
protected function validateDate($date)
{
$validator = \Validator::make(['data_start' => $date], [
'data_start' => 'required|date_format:Y-m-d'
]);
if ($validator->fails()) {
throw new ValidationException($validator);
}
}
public function showOrdini($numrec) public function showOrdini($numrec)
{ {
try { try {