SHARE
TWEET

Untitled

a guest Nov 14th, 2019 103 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package miniprojet.main;
  2. import javax.swing.*;
  3. import javax.swing.table.AbstractTableModel;
  4. import javax.swing.table.TableModel;
  5.  
  6. import miniprojet.stock.Médicament;
  7. import miniprojet.vente.Client;
  8. import miniprojet.vente.Facture;
  9. import miniprojet.vente.GestionnaireVenteControleur;
  10. import miniprojet.vente.Vendeur;
  11. import miniprojet.vente.Vente;
  12.  
  13. import java.awt.event.ActionListener;
  14. import java.time.LocalDate;
  15. import java.time.format.DateTimeFormatter;
  16. import java.util.ArrayList;
  17. import java.awt.event.ActionEvent;
  18. import java.awt.FlowLayout;
  19.  
  20.  
  21. public class CréationInterface {
  22.     private static GestionnaireVenteControleur ventesControleur = new GestionnaireVenteControleur();
  23.  
  24.    public static void main(String[] args) {
  25.        Vendeur vendeurExemple = new Vendeur("Keanu","Reeves");
  26.        Client clientExemple = new Client("Arnold", "Schwarzenegger",1213);
  27.        Facture factureExemple = new Facture(12, LocalDate.now());
  28.        Médicament medocExemple = new Médicament("Doliprane", 5, "Placebo");
  29.        Médicament medocExemple2 = new Médicament("Paracetamol", 7, "Antipyrétique");
  30.        ArrayList<Médicament> medocsVenteExemple = new ArrayList<Médicament>();
  31.        medocsVenteExemple.add(medocExemple);
  32.        medocsVenteExemple.add(medocExemple2);
  33.        Vente venteExemple = new Vente(vendeurExemple, clientExemple, factureExemple, medocsVenteExemple);
  34.        
  35.       ventesControleur.addVente(venteExemple);
  36.      
  37.       JFrame f = new JFrame("Gestion de pharmacie");
  38.      
  39.       // On supprime les ventes datant de plus de un an
  40.       LocalDate oneYearAgo = LocalDate.now().minusYears(1);
  41.       ventesControleur.getVentes().forEach(vente -> {
  42.             if (vente.getDate().isBefore(oneYearAgo)) {
  43.                 ventesControleur.delVente(vente);
  44.             }
  45.         });
  46.      
  47.       createMenuFrame(f);
  48.     }
  49.    
  50.    public static void createMenuFrame(JFrame frame) {
  51.        // Nettoyage et paramétrage de la frame :
  52.        frame.getContentPane().removeAll();
  53.        frame.getContentPane().repaint();
  54.        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  55.        frame.setSize(350, 70);
  56.        frame.setLocation(300,200);
  57.        frame.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
  58.        
  59.        JButton btnStock = new JButton("Stock");
  60.        btnStock.addActionListener(new ActionListener() {
  61.            public void actionPerformed(ActionEvent e) {
  62.                createStockFrame(frame);
  63.            }
  64.        });
  65.        frame.getContentPane().add(btnStock);
  66.      
  67.        JButton btnVente = new JButton("Vente");
  68.        btnVente.addActionListener(new ActionListener() {
  69.            public void actionPerformed(ActionEvent e) {
  70.                createVentesFrame(frame);
  71.            }
  72.        });
  73.        frame.getContentPane().add(btnVente);
  74.      
  75.        JButton btnRecettes = new JButton("Recettes");
  76.        btnRecettes.addActionListener(new ActionListener() {
  77.            public void actionPerformed(ActionEvent e) {
  78.                createRecettesFrame(frame);
  79.            }
  80.       });
  81.       frame.getContentPane().add(btnRecettes);
  82.      
  83.       frame.setVisible(true);
  84.       frame.setResizable(false);
  85.    }
  86.    
  87.    public static void createStockFrame(JFrame frame) {
  88.        // On nettoie la frame et on met ses paramètres
  89.        frame.getContentPane().removeAll();
  90.        frame.getContentPane().repaint();
  91.        frame.setDefaultCloseOperation(JFrameus.EXIT_ON_CLOSE);
  92.        frame.setSize(350, 70); // @Matthieu tu peux changer cette taille si elle t'arrange pas
  93.        frame.setLocation(300,200);
  94.        
  95.        // TODO : Créer le stock. Il doit y avoir un bouton pour ajouter un médicament ainsi qu'une liste des médicaments (juste le nom je pense) et leur quantité.
  96.        // Quand on clique sur un médicament de la liste, petit pop-up s'ouvre où : on doit pouvoir voir ses infos ainsi que changer sa quantité ou le supprimer
  97.        // Regarde sur Smited, j'ai mis un lien où il y a des exemples ultra complets avec tout ce qu'on veut faire (ou très proche)
  98.        
  99.        // Bouton pour revenir au menu principal
  100.        JButton returnButton = new JButton("Retour");
  101.        returnButton.addActionListener(new ActionListener() {
  102.            public void actionPerformed(ActionEvent e) {
  103.                createMenuFrame(frame);
  104.            }
  105.        });
  106.        frame.getContentPane().add(returnButton);
  107.        
  108.        // Affichage de la frame
  109.        // @Matthieu tu peux utiliser ceci si jamais tu arrives pas à trouver une taille qui te convient, mais regarde les exemples sur discord : frame.pack();
  110.        frame.setVisible(true);
  111.        frame.setResizable(false);
  112.    }
  113.    
  114.    public static void createVentesFrame(JFrame frame) {
  115.        // On nettoie la frame et on met ses paramètres
  116.        frame.getContentPane().removeAll();
  117.        frame.getContentPane().repaint();
  118.        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  119.        frame.setSize(350, 70);
  120.        frame.setLocation(300,200);
  121.        
  122.        // Bouton pour ajouter une vente
  123.        JButton btnAddVente = new JButton("Ajouter une vente");
  124.        btnAddVente.addActionListener(new ActionListener() {
  125.         public void actionPerformed(ActionEvent e) {
  126.             createAddVenteFrame();
  127.         }
  128.        });
  129.        frame.getContentPane().add(btnAddVente);
  130.        
  131.        // Bouton pour revenir au menu principal
  132.        JButton returnButton = new JButton("Retour");
  133.        returnButton.addActionListener(new ActionListener() {
  134.            public void actionPerformed(ActionEvent e) {
  135.                createMenuFrame(frame);
  136.            }
  137.        });
  138.        frame.getContentPane().add(returnButton);
  139.        
  140.        // Affichage des ventes
  141.        ArrayList<Vente> venteList = ventesControleur.getVentes();
  142.        final String[] entetes = {"Nom du client","Prénom du client", "Nom du vendeur", "Prénom du vendeur", "Date", "Prix"};
  143.        
  144.        TableModel dataModel = new AbstractTableModel() {
  145.               public int getColumnCount() { return entetes.length; }
  146.               public int getRowCount() { return venteList.size();}
  147.               public String getColumnName(int col) {return entetes[col];}
  148.               public Object getValueAt(int row, int col) {
  149.                   switch (col) {
  150.                   case 0:
  151.                       return venteList.get(row).getClient().getName();
  152.                   case 1:
  153.                       return venteList.get(row).getClient().getSurname();
  154.                   case 2:
  155.                       return venteList.get(row).getVendeur().getName();
  156.                   case 3:
  157.                       return venteList.get(row).getVendeur().getSurname();
  158.                   case 4:
  159.                       return venteList.get(row).getDate();
  160.                   case 5:
  161.                       return venteList.get(row).getMoney();
  162.                   default:
  163.                       return null;
  164.                   }
  165.               }
  166.           };
  167.          
  168.           JTable table = new JTable(dataModel);
  169.           frame.getContentPane().add(new JScrollPane(table));
  170.        
  171.        // Affichage de la frame
  172.        frame.pack();
  173.        frame.setVisible(true);
  174.        frame.setResizable(false);
  175.    }
  176.    
  177.    public static void createAddVenteFrame() {
  178.        // On crée une nouvelle frame
  179.        JFrame fAddVente = new JFrame("Ajouter une vente");
  180.        fAddVente.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));  
  181.        fAddVente.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  182.        fAddVente.setSize(400, 250);
  183.        fAddVente.setLocation(300,400);
  184.        
  185.        // Le forumlaire
  186.        JPanel p = new JPanel(new SpringLayout());
  187.        
  188.        JLabel lblVendeurName = new JLabel("Prénom du vendeur : ", JLabel.TRAILING);
  189.        p.add(lblVendeurName);
  190.        JTextField txtVendeurName = new JTextField(10);
  191.        lblVendeurName.setLabelFor(txtVendeurName);
  192.        p.add(txtVendeurName);
  193.        
  194.        JLabel lblVendeurSurname = new JLabel("Nom du vendeur : ", JLabel.TRAILING);
  195.        p.add(lblVendeurSurname);
  196.        JTextField txtVendeurSurname = new JTextField(10);
  197.        lblVendeurSurname.setLabelFor(txtVendeurSurname);
  198.        p.add(txtVendeurSurname);
  199.        
  200.        JLabel lblClientName = new JLabel("Prénom du client : ", JLabel.TRAILING);
  201.        p.add(lblClientName);
  202.        JTextField txtClientName = new JTextField(10);
  203.        lblClientName.setLabelFor(txtClientName);
  204.        p.add(txtClientName);
  205.        
  206.        JLabel lblClientSurname = new JLabel("Nom du client : ", JLabel.TRAILING);
  207.        p.add(lblClientSurname);
  208.        JTextField txtClientSurname = new JTextField(10);
  209.        lblClientSurname.setLabelFor(txtClientSurname);
  210.        p.add(txtClientSurname);
  211.        
  212.        JLabel lblClientSecurityNumber = new JLabel("Numéro de sécurité sociale du client : ", JLabel.TRAILING);
  213.        p.add(lblClientSecurityNumber);
  214.        JTextField txtClientSecurityNumber = new JTextField(10);
  215.        lblClientSecurityNumber.setLabelFor(txtClientSecurityNumber);
  216.        p.add(txtClientSecurityNumber);
  217.        
  218.        SpringUtilities.makeCompactGrid(p, 5, 2, 6, 6, 6, 6); // Affichage du formulaire
  219.        fAddVente.getContentPane().add(p);
  220.        
  221.        // Boutton pour enregistrer la vente (et fermer la frame)
  222.        JButton confirmButton = new JButton("Allez choisir les médicaments");
  223.        confirmButton.addActionListener(new ActionListener() {
  224.             public void actionPerformed(ActionEvent e) {
  225.                 String vendeurName = txtVendeurName.getText();
  226.                 String vendeurSurname = txtVendeurSurname.getText();
  227.                 String clientSurname = txtClientSurname.getText();
  228.                 String clientName = txtClientName.getText();
  229.                 int socialSecurityNumber = Integer.parseInt(txtClientSecurityNumber.getText());
  230.                
  231.                 chooseMedicaments(vendeurName, vendeurSurname, clientName, clientSurname, socialSecurityNumber);
  232.                
  233.                 fAddVente.dispose();
  234.             }
  235.            });
  236.        fAddVente.getContentPane().add(confirmButton);
  237.        
  238.        fAddVente.setVisible(true);
  239.        fAddVente.setResizable(false);
  240.        
  241.    }
  242.    
  243.    public static void chooseMedicaments(String vendeurName, String vendeurSurname, String clientName, String clientSurname, int socialSecurityNumber) {
  244.        // On crée une nouvelle frame
  245.        JFrame fChooseMedicaments = new JFrame("Choisir les médicaments");
  246.        fChooseMedicaments.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));  
  247.        fChooseMedicaments.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  248.        fChooseMedicaments.setSize(400, 300);
  249.        fChooseMedicaments.setLocation(300,400);
  250.        
  251.        
  252.        // TODO : Afficher une version légèrement modifiée du stock : quand on clique sur un medoc un pop-up s'ouvre pour demander la quantité qu'on en veut (et affiche la quantité actuellement disponible).
  253.        // Une fois la quantité entrée et le bouton "Valider" cliqué, si la quantité demandée est plus petite que la quantité disponible, le petit pop-up se ferme et l'utilisateur peut continuer à choisir des medocs à ajouter.
  254.        // A chaque fois qu'un médicament est ajouté avec sa quantité, fait un money += medoc.getPrix()*quantité pour que "money" soit généré automatiquement.
  255.        
  256.        // Ceci est temporaire, tu fais comme tu veux mais à la fin on veut money et une ArrayList des medocs.
  257.        ArrayList<Médicament> medocList = null;
  258.        ArrayList<Integer> quantities = null;
  259.        Float money = null;
  260.        
  261.        JButton confirmButton = new JButton("Confirmer");
  262.        confirmButton.addActionListener(new ActionListener() {
  263.             public void actionPerformed(ActionEvent e) {
  264.                 ventesControleur.addVente(new Vente(new Vendeur(vendeurName, vendeurSurname), new Client(clientName, clientSurname, socialSecurityNumber), new Facture(money, LocalDate.now()), medocList));
  265.                 fChooseMedicaments.dispose();
  266.             }
  267.            });
  268.        fChooseMedicaments.getContentPane().add(confirmButton);
  269.        
  270.        fChooseMedicaments.setVisible(true);
  271.        fChooseMedicaments.setResizable(false);
  272.    
  273.    }
  274.    
  275.    public static void createRecettesFrame(JFrame frame) {
  276.     // On nettoie la frame et on met ses paramètres
  277.        frame.getContentPane().removeAll();
  278.        frame.getContentPane().repaint();
  279.        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  280.        frame.setSize(425, 175);
  281.        frame.setLocation(300,200);
  282.        
  283.        // Explication
  284.        JLabel lblExplciation = new JLabel("Veuillez entrez ci-dessous les critères qui définiront la recette :");
  285.        frame.getContentPane().add(lblExplciation);
  286.        
  287.        // Sélection de jour/semaine/mois
  288.        JLabel lblJour = new JLabel("Jour :");
  289.        frame.getContentPane().add(lblJour);
  290.        
  291.        JRadioButton radioButton = new JRadioButton("");
  292.        frame.getContentPane().add(radioButton);
  293.        
  294.        JLabel lblSemaine = new JLabel("Semaine :");
  295.        frame.getContentPane().add(lblSemaine);
  296.        
  297.        JRadioButton radioButton_1 = new JRadioButton("");
  298.        frame.getContentPane().add(radioButton_1);
  299.        
  300.        JLabel lblMois = new JLabel("Mois :");
  301.        frame.getContentPane().add(lblMois);
  302.  
  303.        JRadioButton radioButton_2 = new JRadioButton("");
  304.        frame.getContentPane().add(radioButton_2);
  305.        
  306.        // On s'assure quel seul un peut être sélectionné à la fois
  307.        ButtonGroup group = new ButtonGroup();
  308.        group.add(radioButton);
  309.        group.add(radioButton_1);
  310.        group.add(radioButton_2);
  311.        
  312.        // Sélection de client, vendeur, type ou rien
  313.        JLabel lblTxtField = new JLabel("Veuillez entrez la spécificité :");
  314.        frame.getContentPane().add(lblTxtField);
  315.        
  316.        JTextField txtField = new JTextField(10);
  317.        frame.getContentPane().add(txtField);
  318.        
  319.        JLabel lblRien = new JLabel("Aucune restriction :");
  320.        frame.getContentPane().add(lblRien);
  321.        
  322.        JRadioButton radioButton_3 = new JRadioButton("");
  323.        frame.getContentPane().add(radioButton_3);
  324.        
  325.        JLabel lblClient = new JLabel("Client :");
  326.        frame.getContentPane().add(lblClient);
  327.        
  328.        JRadioButton radioButton_4 = new JRadioButton("");
  329.        frame.getContentPane().add(radioButton_4);
  330.        
  331.        JLabel lblVendeur = new JLabel("Vendeur :");
  332.        frame.getContentPane().add(lblVendeur);
  333.  
  334.        JRadioButton radioButton_5 = new JRadioButton("");
  335.        radioButton_5.setBounds(162, 224, 109, 23);
  336.        frame.getContentPane().add(radioButton_5);
  337.        
  338.        JLabel lblType = new JLabel("Type :");
  339.        frame.getContentPane().add(lblType);
  340.  
  341.        JRadioButton radioButton_6 = new JRadioButton("");
  342.        frame.getContentPane().add(radioButton_6);
  343.        
  344.        // On s'assure quel seul un peut être sélectionné à la fois
  345.        ButtonGroup group2 = new ButtonGroup();
  346.        group2.add(radioButton_3);
  347.        group2.add(radioButton_4);
  348.        group2.add(radioButton_5);
  349.        group2.add(radioButton_6);
  350.        
  351.        JButton confirmButton = new JButton("Afficher");
  352.        confirmButton.addActionListener(new ActionListener() {
  353.             public void actionPerformed(ActionEvent e) {
  354.                 // Gestion du jour, semaine, mois :
  355.                
  356.                 LocalDate todaysDate = LocalDate.now(); // Date d'aurjoud'hui
  357.                 // Date depuis laquelle nous souhaitons les recettes, initiliasée à todaysDate - 1 au cas où l'utilisateur n'aurait sélectionné aucun boutton
  358.                 LocalDate date = LocalDate.now().minusDays(1);
  359.                
  360.                 if (radioButton_1.isSelected()) { // Semaine
  361.                     date = LocalDate.now().minusWeeks(1);
  362.                 } else if (radioButton_2.isSelected()) { // Mois
  363.                     date = LocalDate.now().minusMonths(1);
  364.                 }
  365.                
  366.                 // Gestion de Client, Vendeur, Type ou rien
  367.                 String client = null;
  368.                 String vendeur = null;
  369.                 String type = null;
  370.                 if (radioButton_4.isSelected()) { // Client
  371.                     client = txtField.getText();
  372.                 } else if (radioButton_5.isSelected()) { // Vendeur
  373.                     vendeur = txtField.getText();
  374.                 } else if (radioButton_6.isSelected()) { // Type
  375.                     type = txtField.getText();
  376.                 }
  377.                
  378.                 createConsultationRecetteFrame(todaysDate, date, client, vendeur, type);
  379.             }
  380.            });
  381.        frame.getContentPane().add(confirmButton);
  382.        
  383.        // Bouton pour revenir au menu principal
  384.        JButton returnButton = new JButton("Retour");
  385.        returnButton.addActionListener(new ActionListener() {
  386.            public void actionPerformed(ActionEvent e) {
  387.                createMenuFrame(frame);
  388.            }
  389.        });
  390.        frame.getContentPane().add(returnButton);
  391.        
  392.        // TODO : Ajouter la liste des ventes. On doit pouvoir cliquer sur une vente pour afficher les infos dessus (petit pop-up)
  393.        
  394.        // Affichage de la frame
  395.        frame.setVisible(true);
  396.        frame.setResizable(false);
  397.    }
  398.    
  399.    public static void createConsultationRecetteFrame(LocalDate today, LocalDate date, String client, String vendeur, String type) {
  400.        JFrame fAfficherRecette = new JFrame("Recette selon les critères entrés");
  401.        fAfficherRecette.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
  402.        
  403.        fAfficherRecette.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  404.        fAfficherRecette.setSize(400, 300);
  405.        fAfficherRecette.setLocation(725, 200);
  406.        
  407.        Float money = ventesControleur.getRecettes(date, today, client, vendeur, type);
  408.        
  409.        JLabel lblJour = new JLabel("Du " + date.format(DateTimeFormatter.ofPattern("dd MMM yyyy")) + " au " + today.format(DateTimeFormatter.ofPattern("dd MMM yyyy")) + ", l'argent collecté selon les critères donnés est de : " + money + " francs.");
  410.        fAfficherRecette.getContentPane().add(lblJour);
  411.        
  412.        fAfficherRecette.pack();
  413.        fAfficherRecette.setVisible(true);
  414.        fAfficherRecette.setResizable(false);       
  415.    }
  416. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top