<?php 
 /**
  * 
  */
 class Vente extends CI_Controller
 {

  function __construct()
  {
    parent::__construct();
    $this->load->library('Mylibrary');
    $this->ci = & get_instance();
    $this->ci->load->library("user_agent");
    // $this->Is_Connected();
    // $this->verification();

  }

  public function Is_Connected()
  {

   if (empty($this->session->userdata('SOCAR_ID_USER')))
   {
     redirect(base_url('Login/'));
   }
 }



 public function add_tocart()
 {

  $datas=array(
    'NUMERO_VENTE'=>$this->input->post('NUMERO_VENTE'),
    'PRIX_UNITAIRE'=>$this->input->post('PRIX_UNITAIRE'),
    'QUANTITE_COMMANDE'=>$this->input->post('QUANTITE_COMMANDE'),
    'ID_TAILLE_BOUTEILLE'=>$this->input->post('ID_TAILLE_BOUTEILLE'),
    'ID_VENTE'=>0,

  );

  $this->Model->insert_last_id('vente_details',$datas);

  $commune= $this->Model->getRequete("SELECT `ID_VENTE_DETAILS`,syst_taille_bouteille.DESCRIPTION,`QUANTITE_COMMANDE`,`PRIX_UNITAIRE` FROM `vente_details` JOIN syst_taille_bouteille ON syst_taille_bouteille.ID_TAILLE_BOUTEILLE = vente_details.ID_TAILLE_BOUTEILLE WHERE `NUMERO_VENTE`  LIKE '".$this->input->post('NUMERO_VENTE')."'  ");

  $datas= '<table class="table">';
  $datas.='<tr>
  <td><b>Taille</b></td>
  <td class="text-right"><b>Prix Unitaire</b></td>
  <td class="text-right"><b>Quantite</b></td>
  <td class="text-right"><b>Total</b></td>
  <td></td>
  </tr>';
  $totolpayabe =0;
  foreach($commune as $commun){
    $ptotal = $commun["QUANTITE_COMMANDE"]*$commun["PRIX_UNITAIRE"];
    $totolpayabe +=$ptotal;    
    $datas.= '<tr>
    <td>'.$commun["DESCRIPTION"].'</td>
    <td class="text-right">'.$commun["PRIX_UNITAIRE"].'</td>
    <td class="text-right">'.$commun["QUANTITE_COMMANDE"].'</td>
    <td class="text-right">'.$ptotal.'</td>
    <td><a class="btn btn-danger btn-xs" onclick="remove_cart('.$commun['ID_VENTE_DETAILS'].')" href="#" role="button">Enlever</a>
    </td>
    </tr>';

  }
  $datas.='<tr>
  <td colspan="3"><b>Total</b></td>

  <td class="text-right"><b>'.$totolpayabe.'</b></td>
  <td></td>
  </tr>';
  $datas.= '</table>';
  echo $datas;
}



public function add()
{

  $NUMERO_VENTE=$this->input->post('NUMERO_VENTE');
  $ID_CLIENT=$this->input->post('ID_CLIENT');
  $ID_VENTE_STATUT=1;
  $DATE_COMMANDE=$this->input->post('DATE_COMMANDE');


  $dataclient = array(          
    'NUMERO_VENTE'=>$NUMERO_VENTE,  
    'ID_CLIENT'=>$ID_CLIENT,  
    'ID_VENTE_STATUT'=>$ID_VENTE_STATUT,  
    'DATE_COMMANDE'=>$DATE_COMMANDE,
  );
  $this->form_validation->set_rules('ID_CLIENT', 'Client', 'required');
  $this->form_validation->set_rules('DATE_COMMANDE', 'Date', 'required');


    //SI Valide
  if ($this->form_validation->run() == FALSE){        

    $title = "Enregistrement Commande";


        // $data['typebout']=$this->Model->getList('syst_type_bouteille',array());
    $data['typeclient']=$this->Model->getList('client_client',array());
    $data['tailbout']=$this->Model->getList('syst_taille_bouteille',array());
    $data['title'] = $title;

        // if ($nrequette['RANGE_FROM'] == NULL) {
    $crequette= $this->Model->getRequeteOne("SELECT COUNT(ID_VENTE) AS NOMBRE FROM `vente_vente`");
    $number1 = $crequette['NOMBRE'] + 1;
    $formatted1 = str_pad($number1, 4, '0', STR_PAD_LEFT);
    $data['NUMERO_VENTE'] = 'V-'.$formatted1;


    $message = "<div class='alert alert-danger' id='message'>
    Donne manquantes, Processus échoué.
    <button type='button' class='close' data-dismiss='alert'>&times;</button>
    </div>";


    $this->session->set_flashdata(array('message'=>$message));
    $this->load->view("Commande_Add_View",$data);

  }else{
        // prod_production

    $ID_VENTE = $this->Model->insert_last_id('vente_vente',$dataclient);
    $this->Model->update('vente_details',array('NUMERO_VENTE'=>$NUMERO_VENTE),array('ID_VENTE'=>$ID_VENTE));
    $gettot= $this->Model->getRequeteOne("SELECT SUM((QUANTITE_COMMANDE*PRIX_UNITAIRE)) AS TOTAL FROM `vente_details` WHERE `ID_VENTE` = ".$ID_VENTE."");
    $this->Model->update('vente_vente',array('ID_VENTE'=>$ID_VENTE),array('MONTANT_TOTAL'=>$gettot['TOTAL']));

    $message = "<div class='alert alert-success'  id='message'>
    Enregistrement fait avec succès.
    <button type='button' class='close' data-dismiss='alert'>&times;</button>
    </div>";       
    $this->session->set_flashdata(array('message'=>$message));
    redirect(base_url('vente/Commande'));
  }
}





public function index()
{

  $data['title'] = "Vente & Livraison";
  $data['lot']=$this->Model->getList('prod_lot',array('ID_STATUS'=>1));
  $this->load->view('Vente_Add_View',$data);

}

public function listing()
{

  $data['title'] = "Vente & Livraison";
  $this->load->view('Vente_List_View',$data);

}


public function livraison() {
  // header('Content-Type: application/json');

  $ID_VENTE_DETAILS = $this->input->post('ID_VENTE_DETAILS');
  $QUANTITE_LIVRE = $this->input->post('QUANTITE_LIVRE');
  $PRIX_UNITAIRE = $this->input->post('PRIX_UNITAIRE');
  $ID_TAILLE_BOUTEILLE = $this->input->post('ID_TAILLE_BOUTEILLE');

  $qte_livre = ($ID_TAILLE_BOUTEILLE == 1) ? $QUANTITE_LIVRE * 12 :
  (($ID_TAILLE_BOUTEILLE == 2) ? $QUANTITE_LIVRE * 6 : $QUANTITE_LIVRE);

    // Récupérer les détails de la vente
  $vent = $this->Model->getOne('vente_details', ['ID_VENTE_DETAILS' => $ID_VENTE_DETAILS]);


  $data = [
    'DATE_SORTIE_STOCK' => date('Y-m-d'),
    'QUANTITE' => $qte_livre,
    'ID_TYPE_BOUTEILLE' => 2,
    'ID_TAILLE_BOUTEILLE' => $vent['ID_TAILLE_BOUTEILLE'],
    'ID_USER' => $this->session->userdata('SOCAR_ID_USER'),
  ];

    // Vérifier la quantité en stock
  $stockac = $this->Model->getOne('stock_stock', [
    'ID_TYPE_BOUTEILLE' => 2,
    'ID_TAILLE_BOUTEILLE' => $vent['ID_TAILLE_BOUTEILLE']
  ]);

    // Vérifier si la quantité en stock est suffisante
  if ($stockac['QUANTITE'] >= $qte_livre) {
        // Insérer la sortie de stock
    $estock = $this->Model->insert_last_id('stock_sortie_stock', $data);

    if ($estock) {
            // Mettre à jour les détails de la vente
      $this->Model->update('vente_details', [
        'ID_VENTE_DETAILS' => $ID_VENTE_DETAILS
      ], [
        'ID_STATUS' => 2,
        'QUANTITE_LIVRE' => $QUANTITE_LIVRE,
        'PRIX_UNITAIRE' => $PRIX_UNITAIRE
      ]);

            // Mettre à jour le stock
      $this->Model->update('stock_stock', [
        'ID_TYPE_BOUTEILLE' => 2,
        'ID_TAILLE_BOUTEILLE' => $vent['ID_TAILLE_BOUTEILLE']
      ], [
        'QUANTITE' => $stockac['QUANTITE'] - $qte_livre
      ]);
    }

        // Vérifier si la vente doit être mise à jour
    $orga = $this->Model->checkvalue('vente_details', [
      'ID_VENTE' => $vent['ID_VENTE'],
      'ID_STATUS' => 1,
      'QUANTITE_LIVRE' => NULL
    ]);

    if (!$orga) {
      $this->Model->update('vente_vente', [
        'ID_VENTE' => $vent['ID_VENTE']
      ], [
        'ID_VENTE_STATUT' => 2,
        'DATE_LIVRAISON' => date('Y-m-d')
      ]);
    }

    echo '1';
    // echo json_encode(['status' => 1]);

  } else {

    echo '2';
    // echo json_encode(['status' => 2]);
  }
}

// Méthode pour sauvegarder les éléments sélectionnés
public function saveSelectedItems() {
  $selectedItems = $this->input->post('selected_items');

  $dataToSave = [];

  if (!empty($selectedItems)) {
    foreach ($selectedItems as $itemId) {
            $prixUnitaire = $this->input->post('PRIX_UNITAIRE')[$itemId] ?? 0; // Utilisez le tableau
            $quantiteCommande = $this->input->post('QUANTITE_COMMANDE')[$itemId] ?? 0; // Utilisez le tableau

            $dataToSave = [
              'PRIX_UNITAIRE' => $prixUnitaire,
              'QUANTITE_LIVRE' => $quantiteCommande,
              'ID_STATUS' => 2,
            ];
            $this->Model->update('vente_details', ['ID_VENTE_DETAILS' => $itemId], $dataToSave);

            // Récupérer les détails de la vente
            $vent = $this->Model->getOne('vente_details', ['ID_VENTE_DETAILS' => $itemId]);

            $orga = $this->Model->checkvalue('vente_details', [
              'ID_VENTE' => $vent['ID_VENTE'],
              'ID_STATUS' => 1,
              'QUANTITE_LIVRE' => NULL
            ]);

            if (!$orga) {
              $this->Model->update('vente_vente', [
                'ID_VENTE' => $vent['ID_VENTE']
              ], [
                'ID_VENTE_STATUT' => 2,
                'DATE_LIVRAISON' => date('Y-m-d')
              ]);
            }
          }

          $message = "<div class='alert alert-success' id='message'>
          Enregistrement fait avec succès.
          <button type='button' class='close' data-dismiss='alert'>&times;</button>
          </div>"; 
          $this->session->set_flashdata(array('message' => $message));  
          redirect(base_url('vente/Vente'));
        } else {
          $message = "<div class='alert alert-danger' id='message'>
          Aucun élément sélectionné.
          <button type='button' class='close' data-dismiss='alert'>&times;</button>
          </div>"; 
          $this->session->set_flashdata(array('message' => $message));
          redirect(base_url('vente/Vente'));
        }
      }


    }                        