package Controllers.VenteRapideClt;

import Controllers.Traitement.contro;
import Models.BonLivraisonClt.BonLivraisonClt;
import Models.CommandeClt.CommandeClt;
import java.io.IOException;
import java.net.URL;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.scene.text.Text;

/**
 * FXML Controller class
 *
 * @author maher
 */
public class Step2BonLivraisonCltController implements Initializable {

    @FXML private AnchorPane PaneStep2BonLivraison;
    
    @FXML public TextField TextFieldHeurLivraison ;
    @FXML public TextField TextFieldNumTele1 ;
    @FXML public TextField TextFieldNumTele2 ;
    @FXML public TextField TextFieldTransporteur ;
    @FXML public TextField TextFieldPoidProduit;
    @FXML public DatePicker DatePickerDateLivraison;
    @FXML public TextArea TextAreaAdressLivraison;
    
    @FXML public Text TextcltHeurLivraison ;
    @FXML public Text TextcltNumTele1 ;
    @FXML public Text TextcltNumTele2 ;
    @FXML public Text TextcltPoidProduit;
    @FXML public Text TextcltAdressLivraison;
    
    BonLivraisonClt BonLivraison = new BonLivraisonClt();
    CommandeClt Commande = new CommandeClt();
    
    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        TextFieldHeurLivraison.setText(LocalDateTime.now().getHour()+":"+LocalDateTime.now().getMinute());
    }    
    
    @FXML
    private void NextBonLivraisonCltButtonAction(ActionEvent event) throws IOException {
        contro clt = new contro();
        if( clt.ContrNumerique(TextFieldNumTele1, TextcltNumTele1) &&
            clt.ContrNumerique(TextFieldNumTele2, TextcltNumTele2) &&
            clt.ContrNumerique(TextFieldPoidProduit, TextcltPoidProduit) &&
            clt.ContrNull(TextAreaAdressLivraison, TextcltAdressLivraison)&&
            clt.ContrHour(TextFieldHeurLivraison, TextcltHeurLivraison) ){
            
            this.SetBonLivraision();
            this.ConvertCommandeToBonLivraision(Commande);
            
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step3FactureClt.fxml"));
            Parent NodeStep3FactureClt = (Parent)fxmlLoader.load();
            
            Step3FactureCltController Step3FactureClt = fxmlLoader.getController();
            PaneStep2BonLivraison.getChildren().clear();
            PaneStep2BonLivraison.getChildren().add(NodeStep3FactureClt);
            
            Step3FactureClt.SetDataStep2ToStep3(BonLivraison, Commande);
        }
    }
    
    
    @FXML
    private void LastBonLivraisonCltButtonAction(ActionEvent event) throws IOException {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step1CommandeClt.fxml"));
         Parent NodeStep1Commande = (Parent)fxmlLoader.load();
        
        Step1CommandeCltController Step1Commande = fxmlLoader.getController();
        
        Object[] ArrayObject = new Object[10];
        
        ArrayObject[0] = Commande.getListeproduit();
        Integer TypeClient = Commande.getTypeClient();
        ArrayObject[1] = TypeClient;
        
        if(TypeClient == 0){
            ArrayObject[2] = Commande.getCltPersonne();;
        }else if(TypeClient == 1){
            ArrayObject[3] = Commande.getCltEntreprise();
        }else if(TypeClient == 2){
            ArrayObject[4] = Commande.getCltPassager();
        }
        
        ArrayObject[5] = Commande.getCodeDevis();
        
        ArrayObject[7] = Commande.getTypeRegementString(); 
        
        Step1Commande.SetDefaultSaveDataImport(ArrayObject);
        
            
        PaneStep2BonLivraison.getChildren().clear();
        PaneStep2BonLivraison.getChildren().add(NodeStep1Commande);
    }
    
    
    public void SetDefaultTextFieldData(){
        TextFieldNumTele1.setText(BonLivraison.getTele1());
        TextFieldNumTele2.setText(BonLivraison.getTele2());
        
        DatePickerDateLivraison.setValue(LocalDate.now());
        
        TextAreaAdressLivraison.setText(BonLivraison.getAdresseLivraison());
        TextFieldTransporteur.setText(BonLivraison.getTransporteur());
        TextFieldPoidProduit.setText(BonLivraison.getPoidProduit());
        
    }
    
    public void SetBonLivraision(){
        BonLivraison.setTele1(TextFieldNumTele1.getText());
        BonLivraison.setTele2(TextFieldNumTele2.getText());
        BonLivraison.setHeurLivraison(TextFieldHeurLivraison.getText());
        if(DatePickerDateLivraison.getValue()!=null){
            BonLivraison.setDateLivraisonPreveu(DatePickerDateLivraison.getValue().toString());
        }
        BonLivraison.setTransporteur(TextFieldTransporteur.getText());
        BonLivraison.setPoidProduit(TextFieldPoidProduit.getText());
        BonLivraison.setAdresseLivraison(TextAreaAdressLivraison.getText());
    }
    
    
    public void ConvertCommandeToBonLivraision(CommandeClt commande)
    {
        //0 Personne  1 Entreprise | 2 Passager
        Integer TypeClt = commande.getTypeClient();
        BonLivraison.setTypeClient(TypeClt);
        if(TypeClt == 0){
            BonLivraison.setCltPersonne(commande.getCltPersonne());
            BonLivraison.setAdresseLivraison(commande.CltPersonne.getAdresse());
        }else if(TypeClt == 1){
            BonLivraison.setCltEntreprise(commande.getCltEntreprise());
            BonLivraison.setAdresseLivraison(commande.CltEntreprise.getAdresse());
        }else if(TypeClt == 2){
            BonLivraison.setCltPassager(commande.getCltPassager());
            BonLivraison.setAdresseLivraison(commande.CltPassager.getAdresse());
        }
    
        
        BonLivraison.setListeproduit(commande.getListeproduit());
        BonLivraison.setTotalHorsTaxNet(commande.getTotalHorsTaxNet());
        BonLivraison.setTotalTVA(commande.getTotalTVA());
        BonLivraison.setRemise(commande.getRemise());
        BonLivraison.setNetAPayer(commande.getNetAPayer());
        
        
        Commande=commande;
    }
}
