
<center><h2><strong>Ubuntu</strong></h2>
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
<?php

    /*
    Class pour commande V2
    26/11/2019
    */

//echo "<h1>=>ClassCdeV2 CB en TEST</h1>CODE:STRIPE remplacer lk_ sk_";


    Class ClassCdeV2    {

        public function __construct() {
            $this->EtapeParam = [
                ['nom'=>'Zero !'    ,'titre'=>''],
                ['nom'=>'offre'     ,'titre'=>'Je choisis mon offre'],
                ['nom'=>'options'   ,'titre'=>''],
                ['nom'=>'mesinfos'  ,'titre'=>'Mes informations'],
                ['nom'=>'infosste'  ,'titre'=>"Informations sur l'entreprise"],
                ['nom'=>'paiement'  ,'titre'=>"Je paie et j'ouvre ma ligne"],

            ];

            $this->Operateurs = ['BOU'=>'Bouygues Telecom','ORG'=>'Orange','SFR'=>'SFR','MEI'=>'Le meilleur réseau à mon adresse'];

        }

        public function CnxDBaseSQL() {
            if ($_SERVER['REMOTE_ADDR'] == "127.0.0.1") {
                $connexion = mysqli_connect("127.0.0.1", "root", "") or die ("could not connect to mysql");
                mysqli_select_db($connexion, "airmob") or die ("no database");
            } else {
//                $connexion = mysqli_connect("airmobeuagweb.mysql.db", "airmobeuagweb", "5345fhjthk875HJzzs112") or die ("could not connect to mysql");
                $connexion = mysqli_connect("airmobeuagwwwnew.mysql.db", "airmobeuagwwwnew", "8iH9MEjfVySL5q7YWkywKA") or die ("could not connect to mysql");
                mysqli_select_db($connexion, "airmobeuagwwwnew") or die ("no database");

            }
            return $connexion;
        }

    //  Cherche le nouveau N° de bdc
        public function NoBDC () {
            $QF    = mysqli_query($this->CnxDBaseSQL(), "SELECT nobdc FROM commandes_v2 WHERE nobdc LIKE 'BC%' ORDER BY nobdc DESC LIMIT 1");
            $Col   = mysqli_fetch_array($QF, MYSQLI_ASSOC);
            $NewNo = substr($Col['nobdc'],-5)+1;
            $XDigit = "5"; // 5 digit
        //  BC2020020500003
            return "BC".date('Ymd').str_repeat("0", abs(strlen($NewNo)-$XDigit) ).$NewNo;
        }

        public function AfficheSuiviEtape() {
            $Etapecourante = $_SESSION['AIRCMDV2']['etape'];
            include ("./form/step.php");

            if($Etapecourante=="1" && $_REQUEST['type']=="i") $Titre ="Commandez votre solution internet";
            elseif($Etapecourante=="1" && $_REQUEST['type']=="t") $Titre ="Commandez votre solution de téléphonie";
            else                                      $Titre=$this->EtapeParam[$Etapecourante]['titre'];

            echo "<h1 class='Taille14' id='' style='text-align:center; color:#245ba5;'>".$Titre."</h1>";
            echo "<br>";

        }

    /* Affiche etape */
        public function AfficheFormEtape() {
            $Etapecourante = $_SESSION['AIRCMDV2']['etape'];
            $NomForm = $this->EtapeParam[$Etapecourante]['nom'];
            include ("./form/".$NomForm.".php");
        }

    /*  Enregistre les choix utilisateurs */
        public function PostForm() {
            $Etapecourante = $_SESSION['AIRCMDV2']['etape'];
            $Type          = $_SESSION['AIRCMDV2']['type'];

    //  DEBUG : affichage
    //    echo "$Etapecourante / <pre>"; print_r($_REQUEST); echo "</pre>";

        //  Valide ADD + SUIVANT
            if( $_REQUEST['btn_suivant'] or $_REQUEST['btn_add'] or $_REQUEST['btn_continuer'] ) {
            //  ----------------------------
            //  Validation de ma 1ere etape
            //  ----------------------------
                if( !@$_SESSION['AIRCMDV2']['Cde_debut'] ) {

                    $_SESSION['AIRCMDV2']['idunique']  = uniqid();
                    $_SESSION['AIRCMDV2']['Cde_debut'] = date("Y-m-d H:i:s", mktime(date("H") + 1, date("i"), date("s"), date("m"), date("d"), date("Y")));;

                    $Q_INSERT = "INSERT INTO commandes_v2 (idunique, creation ) VALUES ('".$_SESSION['AIRCMDV2']['idunique']."','".date('Y-m-d H:i:s')."') ";
                    $QUERY 	  = mysqli_query ($this->CnxDBaseSQL() , $Q_INSERT);


                   // echo mysqli_error($this->CnxDBaseSQL());

                }
               // $NomProduit =  $_SESSION['AIRCMDV2']['NomProduits'][$_REQUEST['p']]['nom'];

            //  Si ADD enregistre
                if( $_REQUEST['btn_add']) {
                 //   echo "<h1>ADD</h1>";
                    $EtapeSave  = $Etapecourante ; // Maintient la valeur de l etape
                    $newKey     = max(array_keys( $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave] ))+1;;
                    $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$newKey]=['id' =>  $_REQUEST['p'],'confirme'=>'OK'] ;
                }
                elseif( $_REQUEST['btn_continuer']) {
                    $EtapeSave  = $Etapecourante+1 ; // Maintient la valeur de l etape
                }
            // Si SUIVANT
                else {
                   $EtapeSave = $Etapecourante - 1; // Etape suivante donc enreg. sur l etape precedente
                }

            // Enreg.
            //   echo "<h1>POST ($EtapeSave)</h1>";
                foreach ($_REQUEST as $NomChamp => $Val) {
                    list($none,$prod,$cde) = explode ('_',$NomChamp);
                    // Conserve les choix de l utilisateur
                    if($none=="Choix") {
                        if($prod=="DATA") $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['id']        = $Val;
                        if($prod=="OPE" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['operateur'] = $Val;
                        if($prod=="TEL" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['tel']       = $Val;
                        if($prod=="OPT1") $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['id']        = $Val;
                        if($prod=="OPT2") $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['id']        = $Val;
                        if($prod=="ABO" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['abo']       = $Val;

                        $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['confirme'] = "OK";
                    }
                    else  if($none=="Porta") {
                        if($prod=="RIO" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['rio']       = $Val;
                        if($prod=="NUM" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['numero']    = $Val;
                    }
                    else if ($none=="form") {
                        $_SESSION['AIRCMDV2']['Commande']['Utilisateur'][$prod] = $Val;
                    }
                }

            // Enregistre en MySQL
              $this->EnregCmd();

              if( $_REQUEST['btn_continuer']) {
                        if($_REQUEST['type']=="i") {
                            //header('Location:http://2020.airmob.eu/telephonie-commander/');
                            echo "<script>top.window.location = 'https://airmob.net/telephonie-commander/'</script>";
                            die;
                        }
                        if($_REQUEST['type']=="t") {
                            echo "<script>top.window.location = 'https://airmob.net/internet-commander/'</script>";
                            //header('Location:http://2020.airmob.eu/internet-commander/');
                        }
                  //
              }
            }
        }

    //  Enregistre les infos au fur et à mesure des étapes
        public function EnregCmd(){

        //  Articles
            $CmdArray = $this->FormatCmd();
        //  Détail Cmd
            $CmdJson    = json_encode($CmdArray);
        // Montant Cmd
            $Ht         = $CmdArray['total_rec']+$CmdArray['total_fas'];
            $Tva        = ($Ht*20)/100;
            $Ttc        = $Ht+$Tva;
        // Ajoute 2 chmaps à la requete
            $UPDATE[]   = "detail_cmd='".$CmdJson."'";
            //$UPDATE[]   = "montant='$Ttc'";
            $UPDATE[]   = "montant='".$_SESSION['AIRCMDV2']['TotalCmd']."'";

        //  Creation de la requete
            foreach ($_SESSION['AIRCMDV2']['Commande']['Utilisateur'] as $Champ => $Valeur) {
                $UPDATE[] = $Champ."='".addslashes($Valeur)."'";
            }

        // Enregsitre le code promo
            if($_SESSION['AIRCMDV2']['CodePROMO']) {
                $UPDATE[]   = "code_promo='".$_SESSION['AIRCMDV2']['CodePROMO']['nom']."=".$_SESSION['AIRCMDV2']['CodePROMO']['remise']."'";
            } else {
                $UPDATE[]   = "code_promo=''";
            }

        //  Enregsitrement permament
            $Q_UPDATE = "UPDATE commandes_v2 SET ".join(',',$UPDATE) ."WHERE idunique='".$_SESSION['AIRCMDV2']['idunique']."'";
            $QUERY 	    = mysqli_query ($this->CnxDBaseSQL() , $Q_UPDATE);

            //cho mysqli_error($this->CnxDBaseSQL());
        }

    // STRIPE enregistre le paiement OK ou KO
        public function PaiementCmd($Msg,$RetourAPI , $nobdc) {
        error_reporting(E_ALL);
        ini_set("display_errors", 0);

        // Evite l ecrassement
            if ($_SESSION['AIRCMDV2']['idunique']) {
                $Q_UPDATE = "UPDATE commandes_v2 SET nobdc='".$nobdc."',code_promo='".  $RetourAPI->description."',msg='" . $Msg . "',paiement='" . date('Y-m-d H:i:s') . "' WHERE idunique='" . $_SESSION['AIRCMDV2']['idunique'] . "'";
                $QUERY    = mysqli_query($this->CnxDBaseSQL(), $Q_UPDATE);
                unset( $_SESSION['AIRCMDV2']); // Vide la commande
            }
        }

    // NEW Valide la commande depuis le webhook
        public function PaiementCmdCB($idunique , $Msg , $codepromo , $nobdc) {
        //  Info du BDC
            $QF  = mysqli_query($this->CnxDBaseSQL(), "SELECT * FROM commandes_v2 WHERE idu='".$idunique."'");
            $Bdc = mysqli_fetch_array($QF, MYSQLI_ASSOC);
        // Ne remplace pas si dej aun paiement ok
            if($Bdc['paiement']!='paiement_ok') {
                $Q_UPDATE = "UPDATE commandes_v2 SET nobdc='" . $nobdc . "',code_promo='" . $codepromo . "',msg='" . $Msg . "',paiement='" . date('Y-m-d H:i:s') . "' WHERE idunique='" . $idunique . "'";
                $QUERY    = mysqli_query($this->CnxDBaseSQL(), $Q_UPDATE);
            }

        }

    // Recapitule la commande après paiement
        public function RecapituleCmd( $id ) {
            $cnx = $this->CnxDBaseSQL();
            $QF  = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE nobdc='$id' or idunique='$id'");
            $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC);

            echo "<hr><br>";
            if  ($Col['nobdc']) echo "N°de commande : ".$Col['nobdc'];
            else                echo "N°de transaction : ".$Col['idunique'];
            echo "<br>";
            echo "Montant TTC : ". number_format($Col['montant'], 2, ',', ' ')." euros";
        }



    // Format la commande
        public function FormatCmd() {

            $ArrType = ['i'=>'Internet','t'=>'Telephonie','f'=>'Fibre']; // Internet, Telephonie

            foreach($ArrType as $TypedeCommande=>$NomType) {
                $MyCmd =[];
                foreach ($_SESSION['AIRCMDV2']['Commande'][$TypedeCommande] as $Etape => $Cmd) {

                    foreach ($Cmd as $K => $Dtl) {
                        if($Dtl['qte']) $qte = $Dtl['qte']; else $qte = "1";
                        if ($Dtl['id']) {

                            $NomProduit =  utf8_encode($_SESSION['AIRCMDV2']['NomProduits'][$Dtl['id']]['nom']);
                            $Rec        =  $_SESSION['AIRCMDV2']['NomProduits'][$Dtl['id']]['rec']*$qte;
                            $Total_Rec  += $Rec;
                            $Fas        =  $_SESSION['AIRCMDV2']['NomProduits'][$Dtl['id']]['fas']*$qte;
                            $Total_Fas  += $Fas;

                            if ($Etape == 1) $MyCmd[] = ['Type' => $NomType, 'ctg'=>'offre'  , 'idart' => $Dtl['id'] , 'nom'=>$NomProduit,'rec'=>$Rec,'fas'=>$Fas,'tel' => $Dtl['tel'],'ope' => $Dtl['operateur'], 'num' => $Dtl['numero'], 'rio' => $Dtl['rio'],'abo'=>$Dtl['abo'] ];
                            if ($Etape == 2) $MyCmd[] = ['Type' => $NomType, 'ctg'=>'option' , 'idart' => $Dtl['id'] , 'nom'=>$NomProduit,'rec'=>$Rec,'fas'=>$Fas,'qte'=>$Dtl['qte']   ];

                        }
                    }
                    $MyCmdALL[$TypedeCommande] = $MyCmd;
                }
            }
            return ['dtl_cmd'=>$MyCmdALL,'total_rec'=>$Total_Rec,'total_fas'=>$Total_Fas];
        }

    //  Charge les produits
        public function ListeProduits( $select_arr ) {
        // Extrait les articles sélectionnés
            if( is_array($select_arr) ) {
                foreach($select_arr as $Chp) {
                $W[] = "offre ='$Chp'";
                }
                $WHERE = join (' or ', $W);
            }
        // Query
            $cnx        = $this->CnxDBaseSQL();
            $Lst = mysqli_query($cnx, "SELECT * FROM offres WHERE $WHERE ORDER BY id ") or die(mysqli_error());
            while ($Detail = mysqli_fetch_array($Lst, MYSQLI_ASSOC)) {
                $_SESSION['AIRCMDV2']['LstProduits'][$Detail['offre']][$Detail['id']] = $Detail;
                $_SESSION['AIRCMDV2']['NomProduits'][$Detail['id']] = $Detail;
            }
        }

    // Etape version Mobile
        public function StepMobile() {
            $NoEtape   = $_SESSION['AIRCMDV2']['etape'];

            ${'active'.$NoEtape}='is-active' ;
            ${'bold'.$NoEtape}='bold; border-bottom:2px solid #235BA5' ;

            if(!$bold1 && !$bold2 && !$bold3 && !$bold4)  $bold5="bold; color :#000;";

            echo "
        <div id=\"container\" style=\"border:0px;\">
        <div id=\"content\" style=\"width:650px\">
            <br /><br />
            <ul class=\"list-unstyled multi-steps\" >
                <li class=\"$active1 \">Mon offre</li>
                <li class=\"$active2\">Mes options</li>
                <li class=\"$active3\">Mes informations</li>
                <li class=\"$active4\">Mon entreprise</li>
                <li class=\"$active5\">Paiement</li>
            </ul>
            </div>
            </div>
        ";

        }

    //  Declenche la ligne etape
        public function Step() {
            $NoEtape   = $_SESSION['AIRCMDV2']['etape'];
            ${'active'.$NoEtape}='is-active' ;
            echo "
            <div  lass='container-fluid col-md-12'>
                <br /><br />
                <ul class=\"list-unstyled multi-steps\" >
                    <li class=\"$active1 \">Mon offre</li>
                    <li class=\"$active2\">Mes options</li>
                    <li class=\"$active3\">Mes informations</li>
                    <li class=\"$active4\">Mon entreprise</li>
                    <li class=\"$active5\">Paiement</li>
                </ul>
            </div>";
        }

        public function Surv() {
            $cnx        = $this->CnxDBaseSQL();

            $QW    = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE nobdc<>'' ORDER BY id desc LIMIT 20");

            while ($ColC = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                $MyGest[$ColC['nobdc']] = $ColC;
            }
            return $MyGest;
        }

    //  Connexion à l API STRIPE
        public function APIStripe( $Array ) {
            $this->action   = $Array['action'];
            $this->data     = $Array['data'];
        // CODE:STRIPE
//            $CodeAPIStripe = "sk_test_wtOLZRJRmrRm5va5cDWUKeNl"; // AIRMOB TEST
           $CodeAPIStripe = "sk_live_jmMEEsrBrru0qcmySOPhViz1"; // AIRMOB Prod

            $ch = curl_init();
            curl_setopt_array($ch, [
                CURLOPT_URL => "https://api.stripe.com/v1/".$this->action,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_USERPWD => $CodeAPIStripe,
                CURLOPT_HTTPAUTH => CURLAUTH_BASIC
            ]);

            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($this->data));
            $response = json_decode(curl_exec($ch));
            return $response;

            curl_close($ch);
        }




        function MyCurl_APIZOHO_V2( $Param ) {
            // Compte les appels à ZOHO
            ob_start();
            echo "<PRE>"; print_r($Param); echo "</PRE>";
            $buffer = ob_get_contents();
            ob_end_clean();
            /*
            $fpW = fopen("./xml/compte_api.zoho.".date('m').".txt", "a+");
            fwrite($fpW, "MyCurl_APIZOHO_V2 :: ".date('Y-m-d H:i:s')." :: ".$buffer."\n");
            fclose($fpW);
            */
            //$this->Compte_CallApiZoho( "R2D2\MyCurl_APIZOHO_V2", $Param) ;

            $mycurl = curl_init();
            curl_setopt_array($mycurl, array(
                CURLOPT_URL             =>  $Param['url'],
                CURLOPT_USERAGENT       =>  $_SERVER['HTTP_USER_AGENT'],
                CURLOPT_RETURNTRANSFER  => true,
                CURLOPT_ENCODING        => "",
                CURLOPT_MAXREDIRS       => 10,
                CURLOPT_TIMEOUT         => 30,
                CURLOPT_CUSTOMREQUEST 	=> $Param['method'],
                CURLOPT_HTTPHEADER      => array(),
                CURLOPT_SSL_VERIFYPEER  => false,
                CURLOPT_HEADER          => true,
            ));
            //                 CURLOPT_POSTFIELDS 		=> $Param['body'],
            if( key_exists('body',$Param)  ) curl_setopt($mycurl, CURLOPT_POSTFIELDS, $Param['body']);
            //  Si Header
            if( is_array($Param['header']) ) curl_setopt($mycurl, CURLOPT_HTTPHEADER, $Param['header']);

            $result = curl_exec($mycurl);
            $err 	= curl_error($mycurl);

            //  Scinde HEADER & REPONSE
            list($header, $reponse) = explode("\r\n\r\n", $result, 2);

            //$reponse = json_decode($reponse,TRUE);
            curl_close($mycurl);

            return $reponse;
        }




    // Liste les commandes
        public function ListeCmds() {
            $cnx = $this->CnxDBaseSQL();
            $QW    = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE paiement LIKE '".date('Y-m-d')."%' && msg='paiement_ok' ");
            while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                $Liste[] = $Col;
            }
            return $Liste;
        }

    // INSERT la commande
        public function InsertCmd($idunique) {
            $cnx    = $this->CnxDBaseSQL();
            $INSERT	= mysqli_query ($cnx , "INSERT INTO zoho_factures (idunique) VALUE ('".$idunique."')");
            $error  = mysqli_error($cnx);
            if ($error) return $error; else return "OK";
        }

    // UPDATE la commande
        public function UpdateCmd( $query ) {
            $cnx    = $this->CnxDBaseSQL();
            $UPDATE = mysqli_query ($cnx , $query);
            $error  = mysqli_error($cnx);
            if ($error) return $error; else return "OK";
        }

    // Etat du traitement ZOHO
        public function ZohoTraitement( $idunique ) {
            $cnx = $this->CnxDBaseSQL();
            $QF  = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE idunique='$idunique'");
            $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC);
            $Traitement = $Col;
            return $Traitement;
        }

    // Cherche la référence ZOHO de l article
        public function ZohoReference( $idart ) {
            $cnx = $this->CnxDBaseSQL();
            $QF  = mysqli_query($cnx, "SELECT * FROM offres WHERE id='$idart'");
            $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC);

            return $Col;
        }


    // Rapport d'etat sur la création de facture
        public function CRFactures() {
            $cnx = $this->CnxDBaseSQL();
        // LMiste les factures du jour
            $QW    = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE paiement LIKE '".date('Y-m-d')."%' && msg='paiement_ok' ");
            while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                $Liste[$Col['idunique']] = $Col;
            }

            foreach($Liste as $idu=>$dtl) {
                $ret = $this->ZohoTraitement($idu);

                if($ret['zoho_idclient']=="ERR" || $ret['zoho_nofacture']=="ERR") {
                    $ERR_Mel[] = $ret;
                }
            }

            if(count($ERR_Mel)>0) {

                ob_start();
                    echo "<PRE>";
                    print_r($ERR_Mel);
                    echo "</PRE>";
                    $buffer = ob_get_contents();
                ob_end_clean();

                echo $buffer;

                $emailweb ="luc2@bvcs.fr";

                mail("$emailweb","[AIRMOB/CDEV2] ERREUR",$buffer,"From: $emailweb\nX-Mailer:  $emailweb\nReply-To: $emailweb\nX-Mailer: PHP");
            }




            /*
            */
            return $Liste;
        }



    }
?>