From b65a4d34a1b8b1e0a4d4fb7caaf4852d30e008cd Mon Sep 17 00:00:00 2001
From: Cyril L'Orphelin <cyril.lorphelin@cc.in2p3.fr>
Date: Mon, 10 Feb 2020 15:08:44 +0100
Subject: [PATCH] MAJ doecker file

---
 Dockerfile                                 |   2 +-
 tms/src/Controller/LibrairieController.php |   6 +-
 tms/src/Controller/TapeController.php      | 150 +++++++++-
 tms/templates/librairie/main.html.twig     |   2 +-
 tms/templates/tapes/main.html.twig         | 320 +++++++++++++++++++++
 5 files changed, 470 insertions(+), 10 deletions(-)
 create mode 100644 tms/templates/tapes/main.html.twig

diff --git a/Dockerfile b/Dockerfile
index d1545088..a3e2f5ec 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -61,7 +61,7 @@ RUN adduser nginx
 RUN addgroup nginx root
 RUN mkdir /var/cache/nginx
 RUN mkdir -p /var/lib/nginx/fastcgi
-RUN chmod  777 -r  /var/cache/nginx  /var/log/nginx /var/lib/nginx
+RUN chmod  ugo+w  /var/cache/nginx  /var/log/nginx /var/lib/nginx
 
 USER nginx
 # support running as arbitrary user which belongs to the root group
diff --git a/tms/src/Controller/LibrairieController.php b/tms/src/Controller/LibrairieController.php
index 9c1930a4..38041ae7 100644
--- a/tms/src/Controller/LibrairieController.php
+++ b/tms/src/Controller/LibrairieController.php
@@ -17,15 +17,13 @@ class LibrairieController extends  AbstractController
      */
     public function listLibraries(Request $request)
     {
-        $message=$request->request->get('message');
+
         $librairies = $this->getDoctrine()
             ->getRepository(Librairie::class)
             ->findAll();
 
 
-
-        return $this->render('librairie/main.html.twig', array('librairies' => $librairies, 'message'=>$message));
-
+        return $this->render('librairie/main.html.twig', array('librairies' => $librairies));
 
     }
 
diff --git a/tms/src/Controller/TapeController.php b/tms/src/Controller/TapeController.php
index 89434ed7..99087dbf 100644
--- a/tms/src/Controller/TapeController.php
+++ b/tms/src/Controller/TapeController.php
@@ -2,18 +2,160 @@
 
 
 namespace App\Controller;
+use App\Entity\TapeModele;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 use Symfony\Component\HttpFoundation\Response;
 
 class TapeController extends AbstractController
 {
-     /**
-      * @Route("/listTapes")
+    /**
+     * @Route("/listModel",name="show_models")
      */
-    public function listTapes()
+    public function listModel(Request $request)
     {
-        // this looks exactly the same
+       
+        $models = $this->getDoctrine()
+            ->getRepository(TapeModele::class)
+            ->findAll();
+
+
+
+        return $this->render('tapes/main.html.twig', array('models' => $models));
+
+
+    }
+
+
+
+    /**
+     * @Route("/addModel", name="add_Model")
+     */
+    public function addModel(Request $request){
+        $nom=$request->request->get('nom');        
+        $fabricant=$request->request->get('fabricant');
+        $capacite=$request->request->get('capacite');
+        $longueur=$request->request->get('longueur');
+        
+        $em = $this->getDoctrine()->getManager();
+
+        /** @var TYPE_NAME $exception */
+        try {
+
+            $entityManager = $this->getDoctrine()->getManager();
+
+            $model=new TapeModele();
+            $model->setNom($nom);
+            $model->setFabricant($fabricant);
+            $model->setCapacite($capacite);
+            $model->setLongueur($longueur);
+            $model->setDatecreation(new \DateTime());
+            $entityManager->persist($model);
+            $entityManager->flush();
+
+            $response = new Response(json_encode(array(
+                'status' => '200',
+                'message' => 'Base de données mise à jour'
+            )));
+
+        }
+        catch (DBALException $e) {
+
+            $response = new Response(json_encode(array(
+                'status' => '500',
+                'message' => $e
+            )));
+        }
+
+
+        $response->headers->set('Content-Type', 'application/json');
+        return $response;
+
+    }
+
+    /**
+     * @Route("/editModel", name="edit_Model")
+     */
+    public function editModel(Request $request){
+
+        $id=$request->request->get('id');
+        $nom=$request->request->get('nom');
+        $fabricant=$request->request->get('fabricant');
+        $capacite=$request->request->get('capacite');
+        $longueur=$request->request->get('longueur');
+
+        $em = $this->getDoctrine()->getManager();
+
+        /** @var TYPE_NAME $exception */
+        try {
+
+            $id=$request->request->get('id');
+            $em = $this->getDoctrine()->getManager();
+
+            $model=$this->getDoctrine()
+                ->getRepository(TapeModele::class)->find($id);
+            $model->setNom($nom);
+            $model->setFabricant($fabricant);
+            $model->setCapacite($capacite);
+            $model->setLongueur($longueur);
+
+            $em->persist($model);
+            $em->flush();
+
+            $response = new Response(json_encode(array(
+                'status' => '200',
+                'message' => 'Base de données mise à jour'
+            )));
+
+        }
+        catch (DBALException $e) {
+
+            $response = new Response(json_encode(array(
+                'status' => '500',
+                'message' => $e
+            )));
+        }
+
+
+        $response->headers->set('Content-Type', 'application/json');
+        return $response;
+
+    }
+
+    /**
+     * @Route("/removeModel", name="remove_Model")
+     */
+    public function removeModel(Request $request){
+        $id=$request->request->get('id');
+        $em = $this->getDoctrine()->getManager();
+
+        /** @var TYPE_NAME $exception */
+        try {
+            $model=$this->getDoctrine()
+                ->getRepository(TapeModele::class)->find($id);
+
+            $em->remove($model);
+            $em->flush($model);
+
+
+            $response = new Response(json_encode(array(
+                'status' => '200',
+                'message' => 'Base de données mise à jour'
+            )));
+
+        }
+        catch (DBALException $e) {
+
+            $response = new Response(json_encode(array(
+                'status' => '500',
+                'message' => $e
+            )));
+        }
+
+
+        $response->headers->set('Content-Type', 'application/json');
+        return $response;
+
     }
 
 }
\ No newline at end of file
diff --git a/tms/templates/librairie/main.html.twig b/tms/templates/librairie/main.html.twig
index 928b5ed1..23cb9a64 100644
--- a/tms/templates/librairie/main.html.twig
+++ b/tms/templates/librairie/main.html.twig
@@ -54,7 +54,7 @@
                                             <input type="text" id="type"  class="form-control" required/>
                                         </div>
                                         <div class="form-group">
-                                            <label for="type">Fabricant</label>
+                                            <label for="fabricant">Fabricant</label>
                                             <input type="text" id="fabricant"  class="form-control" required/>
                                         </div>
                                         <div class="form-group">
diff --git a/tms/templates/tapes/main.html.twig b/tms/templates/tapes/main.html.twig
new file mode 100644
index 00000000..2d9a9060
--- /dev/null
+++ b/tms/templates/tapes/main.html.twig
@@ -0,0 +1,320 @@
+{% extends 'base.html.twig' %}
+
+
+
+
+{% block container %}
+
+    <div  class="container">
+
+
+
+
+        <div class="row m-4 p-4"  >
+
+
+
+            <div class="col-9  p-4">
+                <h2 class="m-2">BANDES</h2><hr/>
+                <div class="row">
+                    <a class="btn btn-primary text-white" data-toggle="modal" data-target="#addModal"><i class="fas fa-plus-circle"></i> Ajouter un modèle de bande</a>
+
+                </div>
+                <div class="row m-2 p-2">
+                    <div  class="messageSuccess m-2 d-none spinner-border text-success" role="status"></div>
+                    <div  class="messageSuccess ml-2 d-none alert alert-success">Base de données -  Mise à jour en cours ...</div>
+
+                    <div id="messageError" class="ml-2 alert alert-danger d-none">Problème de mise à jour</div>
+
+
+                </div>
+
+                <!-- Modal associé au bouton d'ajout -->
+
+                <div class="modal fade" id="addModal">
+                    <div class="modal-dialog">
+                        <div class="modal-content">
+                            <form class="needs-validation" novalidate>
+                                <div class="modal-header">
+                                    <h5 class="modal-title">Ajout d'une bande</h5>
+                                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                                        <span aria-hidden="true">&times;</span>
+                                    </button>
+                                </div>
+                                <div class="modal-body">
+
+                                    <div class="form-group">
+                                        <label for="nom">Nom</label>
+                                        <input type="text" id="nom"  class="form-control" required/>
+                                    </div>
+                                   
+                                    <div class="form-group">
+                                        <label for="fabricant">Fabricant</label>
+                                        <input type="text" id="fabricant"  class="form-control" required/>
+                                    </div>
+                                    <div class="form-group">
+                                        <label for="capacite">Capacite</label>
+                                        <input type="number" id="capacite"  class="form-control" required/>
+                                    </div>
+                                    <div class="form-group">
+                                        <label for="longueur">Longueur</label>
+                                        <input type="number" id="longueur"  class="form-control" required/>
+                                    </div>
+
+
+
+
+                                </div>
+                                <div class="modal-footer">
+                                    <a id="addModel"  class="btn btn-primary text-white" data-toggle="modal"><i class="fas fa-plus-circle"></i> Ajouter une librairie</a>
+
+                                </div>
+                            </form>
+
+                        </div><!-- /.modal-content -->
+                    </div><!-- /.modal-dialog -->
+                </div><!-- /.modal -->
+
+
+            </div>
+
+            <div class="col-10 text-left border-primary  p-4" style="border-left : 4px solid;">
+
+                <table id="tableLibraries" class="dataTable  m-4 table table-bordered" >
+
+                    <thead>
+                    <tr>
+                        <th>Nom</th>
+                        <th>Description</th>
+                        <th>Fabricant</th>
+                        <th>Nombre de Slots</th>
+                        <th>Date de creation</th>
+                        <th></th>
+
+                    </tr>
+                    </thead>
+                    <tbody>
+                    {% for librairy in librairies %}
+                        <tr>
+                            <td>{{ librairy.nom }}</td>
+                            <td>{{ librairy.type }}</td>
+                            <td>{{ librairy.fabricant }}</td>
+                            <td>{{ librairy.nbslots }}</td>
+                            <td class="small">{{ librairy.datecreation |date('Y-m-d h:m') }}</td>
+                            <td>
+                                <a title="Remove Model" id="remove_{{ librairy.librairieid }}" class="removeModel" href="#"><i class="fas fa-trash-alt m-2"></i></a>
+                                <a title="Edit Model" data-toggle="modal" data-target="#editModal_{{ librairy.librairieid }}" href="edit_{{ librairy.librairieid }}" > <i class="fas fa-edit m-2"></i></a>
+
+
+                                <!-- Modal associé au bouton d'édition  -->
+
+                                <div class="modal fade" id="editModal_{{ librairy.librairieid }}">
+                                    <div class="modal-dialog">
+                                        <div class="modal-content">
+                                            <form class="needs-validation" novalidate>
+                                                <div class="modal-header">
+                                                    <h5 class="modal-title">Edition d'une librairie</h5>
+                                                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                                                        <span aria-hidden="true">&times;</span>
+                                                    </button>
+                                                </div>
+                                                <div class="modal-body">
+
+                                                    <div class="form-group">
+                                                        <label for="nom">Nom</label>
+                                                        <input type="text" id="nom_{{ librairy.librairieid }}"  class="form-control" value="{{ librairy.nom }}" required />
+                                                    </div>
+                                                    <div class="form-group">
+                                                        <label for="type">Description</label>
+                                                        <input type="text" id="type_{{ librairy.librairieid }}"  class="form-control" value="{{ librairy.type }}" required/>
+                                                    </div>
+                                                    <div class="form-group">
+                                                        <label for="type">Fabricant</label>
+                                                        <input type="text" id="fabricant_{{ librairy.librairieid }}"  class="form-control" value="{{ librairy.fabricant }}" required/>
+                                                    </div>
+                                                    <div class="form-group">
+                                                        <label for="nbslots">Nombre de Slots</label>
+                                                        <input type="number" id="nbslots_{{ librairy.librairieid }}"  class="form-control" value="{{ librairy.nbslots }}" required/>
+                                                    </div>
+
+
+
+
+
+                                                </div>
+                                                <div class="modal-footer">
+                                                    <a  id="edit_{{ librairy.librairieid }}"  class="editModel btn btn-primary text-white" data-toggle="modal"><i class="fas fa-plus-circle"></i> Modifier la librairie</a>
+
+                                                </div>
+                                            </form>
+
+                                        </div><!-- /.modal-content -->
+                                    </div><!-- /.modal-dialog -->
+                                </div>
+                            </td>
+
+                        </tr>
+                    {% endfor %}
+
+                    </tbody>
+
+
+                </table>
+
+            </div>
+
+
+        </div>
+
+
+
+
+    </div>
+
+
+
+{% endblock %}
+{% block javascripts%}
+    <script>
+        $(document).ready(function() {
+
+            'use strict';
+            window.addEventListener('load', function() {
+                // Fetch all the forms we want to apply custom Bootstrap validation styles to
+                var forms = document.getElementsByClassName('needs-validation');
+                // Loop over them and prevent submission
+                var validation = Array.prototype.filter.call(forms, function(form) {
+                    form.addEventListener('submit', function(event) {
+                        if (form.checkValidity() === false) {
+                            event.preventDefault();
+                            event.stopPropagation();
+                        }
+                        form.classList.add('was-validated');
+                    }, false);
+                });
+            }, false);
+
+
+            $('#addModel').click(function () {
+
+
+
+                var nom=$("#nom").val();
+                var type=$("#type").val();
+                var fabricant=$("#fabricant").val();
+                var nbslots=$("#nbslots").val();
+
+
+                $.ajax({
+                    url:'/addModel',
+                    type: "POST",
+                    dataType: "json",
+                    data: {
+                        "nom": nom,
+                        "fabricant": fabricant,
+                        "type": type,
+                        "nbslots": nbslots
+                    },
+                    async: false,
+                    success: function (data)
+                    {
+                        $("#addModal").hide();
+                        $(".messageSuccess").removeClass('d-none');
+                        $(".messageSuccess").fadeOut(5000);
+
+                        setInterval(function () {
+                            location.reload();
+                        }, 5000);
+
+
+
+                    },
+                    error : function(xhr, textStatus, errorThrown) {
+
+                        $("#messageError").removeClass('d-none');
+                        $("#messageError").fadeOut(5000);
+
+                    }
+                });
+            });
+
+            $('.editModel').click(function () {
+
+
+                var id = $(this).attr('id').split("edit_").pop();
+                var nom=$("#nom_"+id).val();
+                var type=$("#type_"+id).val();
+                var fabricant=$("#fabricant_"+id).val();
+                var nbslots=$("#nbslots_"+id).val();
+
+
+                $.ajax({
+                    url:'/editModel',
+                    type: "POST",
+                    dataType: "json",
+                    data: {
+                        "id": id,
+                        "nom": nom,
+                        "fabricant": fabricant,
+                        "type": type,
+                        "nbslots": nbslots
+                    },
+                    async: false,
+                    success: function (data)
+                    {
+                        $("#editModal_"+id).hide();
+                        $(".messageSuccess").removeClass('d-none');
+                        $(".messageSuccess").fadeOut(5000);
+
+                        setInterval(function () {
+                            location.reload();
+                        }, 5000);
+
+
+
+                    },
+                    error : function(xhr, textStatus, errorThrown) {
+
+                        $("#messageError").removeClass('d-none');
+                        $("#messageError").fadeOut(5000);
+
+                    }
+                });
+            });
+            $('.removeModel').click(function () {
+                var id = $(this).attr('id').split("remove_").pop();
+
+                $.ajax({
+                    url:'/removeModel',
+                    type: "POST",
+                    dataType: "json",
+                    data: {
+                        "id": id
+                    },
+                    async: false,
+                    success: function (data)
+                    {
+                        $(".messageSuccess").removeClass('d-none');
+                        $(".messageSuccess").fadeOut(5000);
+
+                        setInterval(function () {
+                            location.reload();
+                        }, 5000);
+
+
+
+                    },
+                    error : function(xhr, textStatus, errorThrown) {
+
+                        $("#messageError").removeClass('d-none');
+                        $("#messageError").fadeOut(5000);
+
+                    }
+                });
+            });
+
+
+        });
+
+    </script>
+{% endblock %}
-- 
GitLab