<?php

namespace Modules\DemandeAchat\Outil;

use Entity\Model\Acart;
use Entity\Model\Acccadre;
use Entity\Model\Marches;
use Helpers\Outil\Sql;
use Helpers\Outil\Date;

class CalculDateLivraison
{

    public static function calculDateLivraison($pdo, $param)
    {
        $dateLivraison = '';
        $delai1 = 0;
        $delai2 = 0;
        $delai3 = 0;

        /* VARIABLES DATES */
        // Date Livraison ouhaitée actuelle
        Date::dateToSql($param['DTELIVSOU']);
        $date1 = $param['DTELIVSOU'];
        // Date Livraison de l'entête
        Date::dateToSql($param['DTE_LIV']);
        $date2 = $param['DTE_LIV'];

        /* VARIABLES DELAIS */
        if ($param['ACD'] != '') {
            // Délai de livraison en jours sur le lien article/Acccord cadre
            $delai1 = (new Acart($pdo))
                ->find(
                    [
                        'CODE_ACD' => $param['ACD'],
                        'CODE_ART' => $param['CODE_ART']
                    ]
                )['DELAI'] ?? 0;

            // Délai de livraison en jours sur du marché de l'Accord-cadre
            $delai2 = (new Marches($pdo))
                ->find(
                    (new Acccadre($pdo))
                        ->find($param['ACD'])['MARCHE']
                )['DELAILIV'] ?? 0;
        }


        // Délai de traitement standard pour une DA
        $delai3 = Sql::paravrac($pdo, 'PARAMGEN', 'DUREETTDA');

        if ($delai1 != 0) {
            $days2Add = $delai1 + $delai3;
            $dateLivraison = Date::dateConverte(Date::convert("+$days2Add day", null, "Ymd"));
        } elseif ($delai2 != 0) {
            $days2Add = $delai2 + $delai3;
            $dateLivraison = Date::dateConverte(Date::convert("+$days2Add day", null, "Ymd"));
        } elseif ($date1 != '' && $date1 != '00000000') {
            $dateLivraison = Date::dateConverte($date1);
        } elseif ($date2 != '' && $date2 != '00000000') {
            $dateLivraison = Date::dateConverte($date2);
        } elseif ($delai3 != 0) {
            $dateLivraison = Date::dateConverte(Date::convert("+$delai3 day", null, "Ymd"));
        } else {
            $dateLivraison = Date::dateConverte('00000000');
        }

        return $dateLivraison;
    }
}
