package Controllers.CommandeClt;

import Models.Produit.ListeProduit;
import Controllers.Traitement.Adaptateur;
import Controllers.Traitement.MyWindow;
import Models.CommandeClt.CommandeClt;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import org.apache.log4j.Logger;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

/**
 * @author Maher Ben Tili
 */
public class CommandeCltDialogConfirmationController implements Initializable {
    /**
     * Initializes the controller class.
     */
    public Node nodeFxml ;
    
    Logger logger = Logger.getLogger(CommandeCltDialogConfirmationController.class.getName());
    
    @FXML public AnchorPane AnchorPrincipal ;
    @FXML public Button Enregister ;
    @FXML private Text DateCreation;
    @FXML private Text Reglement;
    @FXML private Text NetAPayer;
    @FXML private Text TotalHorsTaxNet;
    @FXML private Text TotalTVA;
    @FXML private Text CodeDevis;
            
    @FXML private Text TypeClt;
    @FXML private Text Nom;
    @FXML private Text Prenom;
    @FXML private Text Adresse;
    @FXML private Text TELE1;
    @FXML private Text TELE2;
    
    @FXML private Text TextPrenom ;
    @FXML private Text TextMatricule ;
    @FXML private Text TextCodeDevis;
    
    @FXML public TableView<ListeProduit> TableViewListeProduitPassCommClt ;
    @FXML public TableColumn<ListeProduit ,String> TabColReference;
    @FXML public TableColumn<ListeProduit ,String> TabColDesignation;
    @FXML public TableColumn<ListeProduit ,String> TabColQuantite ;
    @FXML public TableColumn<ListeProduit ,String> TabColPrixHT;
    @FXML public TableColumn<ListeProduit ,String> TabColRemise;
    @FXML public TableColumn<ListeProduit ,String> TabColTotalHT;
    @FXML public TableColumn<ListeProduit ,String> TabColTVA;
    @FXML public TableColumn<ListeProduit ,String> TabColTotalTTC;
    
    
    
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        
        TabColReference.setCellValueFactory(new PropertyValueFactory<ListeProduit, String>("reference"));
        TabColDesignation.setCellValueFactory(new PropertyValueFactory<ListeProduit, String>("designation"));

        TabColQuantite.setCellValueFactory(new PropertyValueFactory<ListeProduit, String>("quantite"));
        TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;");
        TabColQuantite.getStyleClass().add("Center");

        TabColPrixHT.setCellValueFactory(new PropertyValueFactory<ListeProduit, String>("PrixHT"));
        TabColPrixHT.setStyle( "-fx-alignment: CENTER;");
        TabColPrixHT.getStyleClass().add("Center");

        TabColRemise.setCellValueFactory(new PropertyValueFactory<ListeProduit, String>("Remise"));
        TabColRemise.setStyle( "-fx-alignment: CENTER;");
        TabColRemise.getStyleClass().add("Center");

        TabColTotalHT.setCellValueFactory(new PropertyValueFactory<ListeProduit, String>("TotalHT"));
        TabColTotalHT.setStyle( "-fx-alignment: CENTER;");
        TabColTotalHT.getStyleClass().add("Center");

        TabColTVA.setCellValueFactory(new PropertyValueFactory<ListeProduit, String>("TVA"));
        TabColTVA.setStyle( "-fx-alignment: CENTER;");
        TabColTVA.getStyleClass().add("Center");

        TabColTotalTTC.setCellValueFactory(new PropertyValueFactory<ListeProduit, String>("TotalTTC"));
        TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;");
        TabColTotalTTC.getStyleClass().add("Center");
        
        Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconsave.png"));
        ImageView buttonGraphic = new ImageView();
        buttonGraphic.setImage(coffeeImage);
        Enregister.setGraphic(buttonGraphic);
        
        
    }
    
    
    public void GetCommandeClt(CommandeClt commandeclt){
        DateCreation.setText(Adaptateur.NormalDateFormat(commandeclt.getDate()));
        
        
        if(commandeclt.getTypeRegement().equals("0")){
            Reglement.setText("comptant");
        }else if(commandeclt.getTypeRegement().equals("1")){
            Reglement.setText("facilité");
        }
        NetAPayer.setText(commandeclt.getNetAPayer());
        TotalHorsTaxNet.setText(commandeclt.getTotalHorsTaxNet());
        TotalTVA.setText(commandeclt.getTotalTVA());
       
        if(commandeclt.getCodeDevis()!=null){
            CodeDevis.setVisible(true);
            TextCodeDevis.setVisible(true);
            CodeDevis.setText(commandeclt.getCodeDevis());
        }
        
        
        TypeClt.setText(commandeclt.getTypeClientString());
        
        if(commandeclt.getTypeClient()==0){
            TextPrenom.setVisible(true);
            TextMatricule.setVisible(false);
            Nom.setText(commandeclt.CltPersonne.getNom());
            Prenom.setText(commandeclt.CltPersonne.getPrenom());
            Adresse.setText(commandeclt.CltPersonne.getAdresse());
            TELE1.setText(commandeclt.CltPersonne.getTelefixString());
            TELE2.setText(commandeclt.CltPersonne.getTelemobileString());
        }
       
        if(commandeclt.getTypeClient()==1){
            TextPrenom.setVisible(false);
            TextMatricule.setVisible(true);
            Nom.setText(commandeclt.CltEntreprise.getNom());
            Prenom.setText(commandeclt.CltEntreprise.getMatricule());
            Adresse.setText(commandeclt.CltEntreprise.getAdresse());
            TELE1.setText(commandeclt.CltEntreprise.getTele1String());
            TELE2.setText(commandeclt.CltEntreprise.getTele2String());
        }
       
        if(commandeclt.getTypeClient()==2){
            TextPrenom.setVisible(true);
            TextMatricule.setVisible(false);
            Nom.setText(commandeclt.CltPassager.getNom());
            Prenom.setText(commandeclt.CltPassager.getPrenom());
            Adresse.setText(commandeclt.CltPassager.getAdresse());
            TELE1.setText(commandeclt.CltPassager.getTelefixString());
            TELE2.setText(commandeclt.CltPassager.getTelemobileString());
        }
        
         
        
        TableViewListeProduitPassCommClt.setItems(commandeclt.getListeproduit());
    }
    
    
    public  CommandeCltDialogConfirmationController(){
        try {
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/CommandeClt/CommandeCltDialogConfirmation.fxml"));
            fxmlLoader.setController(this);
            nodeFxml = (Node) fxmlLoader.load();
        } catch (IOException ex) {
            logger.error("CommandeCltDialogConfirmationController  : CommandeCltDialogConfirmation.fxml :" + ex.getMessage());
        }
    }
    
    public void Show()
    {
        StackPane Sp = new StackPane();
            
        Scene scene = new Scene(Sp);
        
        Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight);
        
        Sp.getChildren().add(MyWindow.myParent);
        Sp.getChildren().add(nodeFxml);
        
        Stage stage = MyWindow.myStage;
        stage.setScene(scene);
        stage.show();
    }
    
    @FXML
    private void ExitButtonAction(ActionEvent event) throws IOException {
        AnchorPrincipal.setVisible(false);
    }
}
