<!DOCTYPE html>
<html lang="en">
   <head>
      <title>ByOnSite</title>
      <meta charset="utf-8">
      <link rel="icon" href="logo.ico" type="image/x-icon" />
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <meta name="robots" content="noindex, nofollow">
      <meta name="author" content="Bouygues TP TPINST">
      <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.css">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/css/bootstrap-select.min.css">
      <link rel="stylesheet" href="style.css">
      <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
      <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
      <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script>
      <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script>
      <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script>
      <script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.4/js/bootstrap-select.min.js"></script>
      <script src="main.js"></script>
      <script src="global.js"></script>
      <script src="projects.js"></script>
      <script src="users.js"></script>
      <script src="screens.js"></script>
      <script src="licenses.js"></script>
      <script src="authInterceptor.js"></script>
   </head>

   <body style="height:auto;">
      <div ng-app="App">
         <div ng-controller="Ctrl">
            <div class="container">
               <div class="header">
                 <div class="row">
                   <div class="col-md-3">
                   </div>
                   <div class="col-md-6" style="text-align:center">
                    <img src="logo_header.png" style="margin-right:30px;margin-top:30px;"/>
                   </div>
                   <div class="col-md-3">
                     <img src="chev_r.PNG" height=100px style="margin-bottom:100px;float:right"/>
                  </div>
                 </div>

                  <br>
                  <div id="success" ng-show="$root.show_success_notification" class="alert alert-success" role="alert"></div>
                  <div id="fail" ng-show="$root.show_fail_notification" class="alert alert-danger" role="alert"></div>
                  <br>
                  <div ng-show="!project" class="alert alert-primary" role="alert" style="width:100%;text-align:center;">
                    Please choose a project
                  </div>
                  <div ng-show="!credentials && project" class="alert alert-primary" role="alert" style="width:100%;text-align:center;">
                    Use credentials provided by TPINST to display project details
                  </div>
               </div>
               <form class="form-inline">
                  <label for="inlineFormInputGroup">Choose a project</label>
                  &nbsp;&nbsp;
                  &nbsp;&nbsp;
                  <img ng-src="http://bouygues-tpinst.fr/ByOnSite/logos/{{$root.projects[project_id].logo}}" ng-show="project"/>
                  &nbsp;&nbsp;
                  &nbsp;&nbsp;
                  <select class="form-control" id="projects" ng-model="$root.project">
                     <option value="" disabled selected>Select your project</option>
                     <option ng-repeat="project in $root.projects" ng-value="{{project.name}}">
                       {{project.name}}
                     </option>
                  </select>
                  &nbsp;&nbsp;
                  &nbsp;&nbsp;
                  <label class="sr-only" for="inlineFormInputGroup">Username</label>
                  <div class="input-group mb-2 mr-sm-2 mb-sm-0"  ng-show="project">
                     <div class="input-group-addon">Username</div>
                     <input type="text" class="form-control" ng-model ="username" id="inlineFormInputGroup" placeholder="Username">
                  </div>
                  &nbsp;&nbsp;
                  &nbsp;&nbsp;
                  <label class="sr-only" for="inlineFormInputGroup">Password</label>
                  <div class="input-group mb-2 mr-sm-2 mb-sm-0" ng-show="project">
                     <div class="input-group-addon">Password</div>
                     <input type="password" class="form-control" ng-model ="pwd" id="inlineFormInputGroup" placeholder="Password">
                  </div>
                  &nbsp;&nbsp;
                  <button type="button" class="btn btn-primary" data-toggle="tooltip" data-placement="right" title="Connection" ng-click="Connect()" ng-show="project">
                    <i class="fa fa-check"></i>
                  </button>
                  &nbsp;&nbsp;
                   <button type="button" class="btn btn-primary" data-toggle="tooltip" data-placement="right" title="Refresh page" ng-click="getProjectData()" ng-show="project">
                     <i class="fa fa-refresh"></i>
                   </button>
               </form>
               <br>
               <div id="main" ng-show="credentials">
                  <ul class="nav nav-tabs nav-pills nav-justified" role="tablist">
                    <li class="nav-item">
                      <a class="nav-link active" data-toggle="tab" href="#user" role="tab">
                         <span> Users &nbsp;&nbsp;<span class="badge badge-primary">{{$root.users.length}}</span></span>
                       </a>
                    </li>
                    <li class="nav-item">
                      <a class="nav-link" data-toggle="tab" href="#screen" role="tab">
                          <span> Screens &nbsp;&nbsp;<span class="badge badge-primary">{{$root.screens.length}}</span></span>
                      </a>
                    </li>
                    <li class="nav-item">
                      <a class="nav-link" data-toggle="tab" href="#license" role="tab">
                          <span> Licenses &nbsp;&nbsp;<span class="badge badge-primary">{{$root.licenses.length}}</span></span>
                      </a>
                    </li>
                    <li ng-if="admin_connected" class="nav-item">
                      <a class="nav-link" data-toggle="tab" href="#project" role="tab">
                        <span> Projects &nbsp;&nbsp;<span class="badge badge-primary">{{$root.projects.length}}</span></span>
                      </a>
                    </li>
                  </ul>
                  <div class="tab-content">
                     <div id="user" class="tab-pane active show fade" role="tabpanel">
                         <div class="table-responsive">
                            <table class="table table-hover">
                               <thead class="thead-inverse">
                                  <tr>
                                     <th>Firstname</th>
                                     <th>Lastname</th>
                                     <th>Company</th>
								                     <th>Connection code</th>
								                     <th>App code</th>
                                     <th>Language</th>
                                     <th>Access</th>
                                     <th colspan="3" class="add">
                                       <button type="button" class="btn btn-primary" data-toggle="tooltip" data-placement="top" title="Add new user" ng-click="showNewUser($event)">
                                         <i class="fa fa-plus"></i>
                                       </button>
                                     </th>
                                  </tr>
                               </thead>
                               <tbody id="table-content">
                                  <tr ng-repeat="(index, user) in $root.users | orderBy:'first_name'" ng-class="{'bg-warning': user.changed}">
                                     <td class="column-default column-label">
                                        <input type="text" class="form-control" ng-model="user.first_name" ng-change="user.changed = true">
                                     </td>
                                     <td class="column-default  column-label" >
                                        <input type="text" class="form-control" ng-model="user.last_name" ng-change="user.changed = true">
                                     </td>
                                     <td class="column-default column-label">
                                        <input type="text" class="form-control" ng-model="user.company" ng-change="user.changed = true">
                                     </td>
					                           <td class="column-default column-label">
                                        <input type="text" class="form-control" ng-model="user.first_connection_code" disabled ng-change="user.changed = true">
                                     </td>
			                               <td class="column-default column-label">
                                        <input type="text" class="form-control" ng-model="user.app_code" disabled ng-change="user.changed = true">
                                     </td>
                                     <td class="column-default column-radio">
                                        <md-radio-group ng-model="user.lang" ng-change="user.changed = true">
                                           <md-radio-button value="en" class="md-primary">English </md-radio-button>
                                           <md-radio-button value="fr" class="md-primary">Français</md-radio-button>
                                        </md-radio-group>
                                     </td>
                                     <td class="column-default column-radio">
                                        <md-radio-group ng-model="user.private_access" ng-change="user.changed = true">
                                           <md-radio-button value="0" class="md-primary">Public </md-radio-button>
                                           <md-radio-button value="1" class="md-primary">Private</md-radio-button>
                                        </md-radio-group>
                                     </td>
                                     <td class="column-default column-button">
                                         <button type="button" class="btn btn-success" data-toggle="tooltip" data-placement="bottom" title="Update {{user.first_name}} {{user.last_name}}" ng-click="saveUser(index);">
                                           <i class="fa fa-save"></i>
                                         </button>
                                     </td>
                                     <td class="column-default column-button">
                                        <button type="button" class="btn btn-danger" data-toggle="tooltip" data-placement="bottom" title="Delete {{user.first_name}} {{user.last_name}}" ng-click="deleteUser();$root.toDelete.user = user.id">
                                          <i class="fa fa-trash-o"></i>
                                        </button>
                                     </td>
			                               <td class="column-default column-button">
                                        <button type="button" class="btn btn-warning" data-toggle="tooltip" data-placement="bottom" title="Reset {{user.first_name}} {{user.last_name}}'s license" ng-click="resetUser();$root.toReset.user = user.id">
                                          <i class="fa fa-eraser"></i>
                                        </button>
                                     </td>
                                  </tr>
                               </tbody>
                            </table>
                         </div>
                     </div>
                     <div id="screen" class="tab-pane fade" role="tabpanel">
                       <div class="display:block">
                       <div class="col-md-12" style="background-color:black;height:64px;">
                         <br>
                         <div class="col-md-7" style="float:left;">
                           <div class="progress" >
                              <div class="progress-bar" role="progressbar" style="width:{{$root.screens.length/$root.projects[project_id].nb_screens*100}}%" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
                            </div>
                         </div>
                         <div class="col-md-2" style="float:left;">
                           <span style="color:white">{{$root.screens.length}} / {{$root.projects[project_id].nb_screens}} screens</span>
                         </div>
                         <div class="col-md-3" style="float:right;">
                           <button type="button" class="btn btn-primary" data-toggle="tooltip" data-placement="top" title="Add new screen" ng-click="showNewScreen($event)" ng-disabled="$root.screens.length > $root.projects[project_id].nb_screens" style="float:right;margin-top:-12px;margin-bottom:12px;">
                             Add a new screen
                           </button>
                              <br>  <br>
                         </div>
                         <br>
                       </div>
                       <div class="col-md-6 col-sm-12" ng-repeat="(index, screen) in $root.screens" style="float:left;">
                         <md-card md-theme="default" ng-class="{'bg-warning': screen.changed}">
                           <md-card-title>
                             <md-card-title-media>
                               <div class="md-media-lg card-media">
                                 <a ng-click="zoomImage($root.project, screen.path, screen.label_en);" style="cursor:zoom-in">
                                   <img ng-src="http://bouygues-tpinst.fr/ByOnSite/Projects/{{$root.project}}/{{screen.path}}" class="md-card-image" alt="No image with this path on our server" style="width:100%" title="Zoom IN">
                                 </a>
                               </div>
                             </md-card-title-media>
                             <md-card-title-text>
                                <span class="md-headline">{{screen.label_en}}</span>
                               <div class="input-group">
                                <span class="input-group-addon" id="basic-addon1">Path</span>
                                <input type="text" class="form-control" ng-model="screen.path" ng-disabled="(screen.path.includes('Pyxis') || screen.path.includes('Mobydic')) && admin_connected == false" ng-change="screen.changed = true">
                              </div>
                              <br>
                              <div class="input-group">
                                 <span class="input-group-addon" id="basic-addon1">Label EN</span>
                                 <input type="text" class="form-control" ng-model="screen.label_en" ng-disabled="(screen.path.includes('Pyxis') || screen.path.includes('Mobydic')) && admin_connected == false" ng-change="screen.changed = true">
                               </div>
                               <br>
                               <div class="input-group">
                                <span class="input-group-addon" id="basic-addon1">Label FR</span>
                                <input type="text" class="form-control" ng-model="screen.label_fr" ng-disabled="(screen.path.includes('Pyxis') || screen.path.includes('Mobydic')) && admin_connected == false" ng-change="screen.changed = true">
                              </div>
                             </md-card-title-text>
                           </md-card-title>
                           <md-card-actions layout="row" layout-align="center">
                             <md-switch class="md-primary" md-no-ink aria-label="Switch No Ink" ng-model="screen.is_private" ng-true-value="'1'" ng-false-value="'0'" ng-change="screen.changed = true">
                               <span ng-if="screen.is_private == 1"> Private</span>
                               <span ng-if="screen.is_private == 0"> Public</span>
                             </md-switch>
                             &nbsp;&nbsp;
                             &nbsp;&nbsp;
                             <md-switch class="md-primary" md-no-ink aria-label="Switch No Ink" ng-model="screen.is_active" ng-true-value="'1'" ng-false-value="'0'" ng-change="screen.changed = true">
                               <span ng-if="screen.is_active == 1"> Visible</span>
                               <span ng-if="screen.is_active == 0"> Hidden</span>
                             </md-switch>
                             <span flex></span>
                              <span style="vertical-align:middle">
                             <button type="button" class="btn btn-success" data-toggle="tooltip" data-placement="bottom" title="Update {{screen.label_en}}" ng-click="saveScreen(index);" ng-disabled="(screen.path.includes('Pyxis') || screen.path.includes('Mobydic')) && admin_connected == false">
                               <i class="fa fa-save"></i> Save
                             </button>
                             </span>
                             &nbsp;&nbsp;
                             &nbsp;&nbsp;
                             <span>
                             <button type="button" class="btn btn-danger" data-toggle="tooltip" data-placement="bottom" title="Delete {{screen.label_en}}" ng-click="deleteScreen();$root.toDelete.screen = screen.id" ng-disabled="(screen.path.includes('Pyxis') || screen.path.includes('Mobydic')) && admin_connected == false">
                               <i class="fa fa-trash-o"></i> Delete
                             </button>
                            </span>
                           </md-card-actions>
                         </md-card>
                       </div>
                     </div>
                     </div>
                     <div id="license" class="tab-pane fade" role="tabpanel">
                         <div class="table-responsive">
                            <table class="table table-hover">
                               <thead class="thead-inverse">
                                  <tr>
                                     <th>ID</th>
                                     <th>Installation code</th>
                                     <th>Device code</th>
                                     <th class="add">
                                       <button type="button" class="btn btn-primary" data-toggle="tooltip" data-placement="top" title="Add new license(s)" ng-click="showNewLicense($event)" ng-show="admin_connected">
                                         <i class="fa fa-plus"></i>
                                       </button>
                                     </th>
                                  </tr>
                               </thead>
                               <tbody id="table-content">
                                  <tr ng-repeat="(index, license) in $root.licenses">
                                     <td class="column-default column-label">
                                        <input type="text" class="form-control" ng-model="license.id_full" disabled>
                                     </td>
                                     <td class="column-default  column-label" >
                                        <input type="text" class="form-control" ng-model="license.installation_code" disabled>
                                     </td>
                                     <td class="column-default column-label">
                                        <input type="text" class="form-control" ng-model="license.license_code" ng-show="admin_connected" disabled>
                                        <input type="password" class="form-control" ng-model="license.license_code" ng-show="!admin_connected" disabled>
                                     </td>
								                     <td class="column-default column-button">
                                        <button type="button" class="btn btn-warning" data-toggle="tooltip" data-placement="bottom" title="Reset license {{license.id_full}}" ng-click="resLicense();$root.toReset.license = license.id">
                                          <i class="fa fa-eraser"></i>
                                        </button>
                                     </td>
                                  </tr>
                               </tbody>
                            </table>
                         </div>
                     </div>
                     <div id="project" class="tab-pane fade" ng-if="admin_connected" role="tabpanel">
                         <div class="table-responsive">
                            <table class="table table-hover" ng-show="screens">
                               <thead class="thead-inverse">
                                  <tr>
                                     <th>Name</th>
                                     <th>Logo</th>
                                     <th>Active</th>
                                     <th>Nb screens</th>
                                     <th>Admin user</th>
                                     <th>Admin pwd</th>
                                     <th>Mode</th>
                                     <th colspan="2" class="add">
                                       <button type="button" class="btn btn-primary" data-toggle="tooltip" data-placement="top" title="Add new/Repair project" ng-click="showNewProject($event)">
                                         <i class="fa fa-plus"></i> / <i class="fa fa-wrench"></i>
                                       </button>
                                     </th>
                                  </tr>
                               </thead>
                               <tbody id="table-content">
                                  <tr ng-repeat="(index,project) in $root.projects" ng-class="{'bg-warning': project.changed}">
                                      <td class="column-default column-label">
                                        <input type="text" class="form-control" ng-model="project.name" disabled>
                                     </td>
                                      <td class="column-default column-label">
                                        <div class="input-group">
                                          <img src="http://bouygues-tpinst.fr/ByOnSite/logos/{{project.logo}}"/>
                                          <input type="text" class="form-control" ng-model="project.logo" ng-change="project.changed = true">
                                        </div>
                                     </td>
                                     <td class="column-default column-radio">
                                        <md-radio-group ng-model="project.is_active" ng-change="project.changed = true">
                                           <md-radio-button value="1" class="md-primary">Yes</md-radio-button>
                                           <md-radio-button value="0" class="md-primary">No</md-radio-button>
                                        </md-radio-group>
                                     </td>
                                     <td class="column-cred column-label">
                                       <input type="text" class="form-control" ng-model="project.nb_screens" ng-change="project.changed = true">
                                    </td>
                                      <td class="column-cred column-label">
                                        <input type="text" class="form-control" ng-model="project.admin_user" ng-change="project.changed = true">
                                     </td>
                                     <td class="column-cred column-label">
                                        <input type="text" class="form-control" ng-model="project.admin_pwd" ng-change="project.changed = true">
                                     </td>
                                     <td class="column-default column-radio">
                                        <md-radio-group ng-model="project.is_public" ng-change="project.changed = true">
                                           <md-radio-button value="1" class="md-primary">Demo</md-radio-button>
                                           <md-radio-button value="0" class="md-primary">Prod</md-radio-button>
                                        </md-radio-group>
                                     </td>
                                     <td class="column-default column-button">
                                        <button type="button" class="btn btn-success" data-toggle="tooltip" data-placement="bottom" title="Update {{project.name}}"  ng-click="saveProject(index)">
                                          <i class="fa fa-save"></i>
                                        </button>
                                     </td>
                                     <td class="column-default column-button">
                                        <button type="button" class="btn btn-danger" data-toggle="tooltip" data-placement="bottom" title="Delete {{project.name}}" ng-click="delProject();$root.toDelete.project = project">
                                          <i class="fa fa-trash-o"></i>
                                        </button>
                                     </td>
                                  </tr>
                               </tbody>
                            </table>
                         </div>
                      </div>
                  </div>
               </div>
               <div class="footer">
                 <br>
                 <br>
                 <div class="row">
                   <div class="col-md-3">
                      <img src="chev_l.PNG" height=100px style="margin-bottom:100px;float:left"/>
                   </div>
                   <div class="col-md-6" style="text-align:center;">
                      <img src="bytp.png" height=100 style="margin-right:30px;margin-top:30px;"/>
                   </div>
                   <div class="col-md-3">
                  </div>
                 </div>
               </div>
            </div>
         </div>
      </div>

   </body>
</html>
// Code goes here

/* Styles go here */

app.factory('Global', ['$rootScope', '$http','$mdDialog','$timeout', function($rootScope, $http, $mdDialog,  $timeout){
  var Global = {};
	var timeOut = 3000;
  // dev mode
  Global.dev = true;
  if (Global.dev)
    Global.ftp_folder ='test/';
  else
    Global.ftp_folder = 'Admin/';
  // API
  Global.base_url = '***************';
  Global.key = '?' // localStorage.getItem("tokenAPI") != null ? "?key="+sessionStorage.getItem("tokenAPI")+"&" : "?";  //Condition ? true : false    // '?key=S4xfGDDWXdU376e7xYUB&';
  Global.url_api = Global.base_url + Global.ftp_folder + 'api.php' + Global.key;
  Global.url_ftp = Global.base_url + Global.ftp_folder + 'ftp.php' + Global.key;
  Global.url_ftp_logo = Global.base_url + Global.ftp_folder + 'ftp_logo.php' + Global.key;
  Global.url_send_mail = Global.base_url + Global.ftp_folder + 'mail.php' + Global.key;

  // Notifications
  $rootScope.show_success_notification = false;
  $rootScope.show_fail_notification = false;

  Global.get = function(){
    return $http.get(Global.url_api+'action=GET&table=Global');
  }


  // Sucess and fail notifications
  Global.show_success = function(text){
    $('#success').html(text);
    $rootScope.show_success_notification = true;
    $rootScope.getProjectData();
    $timeout(Global.hide_success, timeOut);
  }
  Global.hide_success = function(){
      $rootScope.show_success_notification = false;
  }
  Global.show_fail = function(text){
    $('#fail').html(text);
    $rootScope.show_fail_notification = true;
    $timeout(Global.hide_fail, timeOut);
  }
  Global.hide_fail = function(){
      $rootScope.show_fail_notification = false;
  }


  // Update notification
  Global.updateNotif = function(response, name){
    if(response.data = "ok")
      Global.show_success(name + " was successfully updated.");
    else
      Global.show_fail(name + " wasn't updated.");
  }
  // Create Notification
  Global.addNotif = function(response, type){
    if(response.data = "ok")
      Global.show_success(type + " was successfully added.");
    else
      Global.show_fail(type + " wasn't added.");
    $mdDialog.hide();
  }
  // Delete notification
  Global.deleteNotif = function(response, type){
    if(response.data = "ok")
      Global.show_success("The " + type + " was successfully deleted from DB");
    else
      Global.show_fail("The " + type + " wasn't deleted");
    $mdDialog.hide();
  }
  // Reset notification
  Global.resetNotif = function(response, type){
    if(response.data = "ok")
      Global.show_success(type + " reset performed successfully");
    else
      Global.show_fail(type + " reset failed.");
    $mdDialog.hide();
  }

  // return Global variables and functions
  return Global;

}]);
var app = angular.module('App', ['ngMaterial', 'ngMessages'])
app.controller('Ctrl', ['$rootScope', '$scope','$http','$timeout','$mdDialog','Global', 'projects', 'screens', 'users', 'licenses', function($rootScope, $scope, $http, $timeout, $mdDialog,Global, projects, screens, users, licenses) {
  $scope.max_screens = 15;
  $scope.admin_connected = false;
  $scope.initialLoading = 0;

  $rootScope.toDelete = { user:null, screen:null, project:null};
  $rootScope.toReset = { user:null, license:null};

  ///////////////////////////
  /////////   GET    ///////
  //////////////////////////

  //Project for select
  $rootScope.getprojects= function(){
    projects.getName().then((response)=>{                     //projects.get().then(function(response){
      $rootScope.projects = response.data;
      $scope.initialLoading++;
    })
  }
  /*Global.get().then(function(response) {
    $scope.global=response.data[0];
    $scope.initialLoading++;
  });*/
  $rootScope.getprojects();

  $scope.getCredentials = function(){
    if ($scope.initialLoading>2)
    {
      $scope.credentials = $rootScope.projects[$scope.project_id].admin_user == $scope.username && $rootScope.projects[$scope.project_id].admin_pwd == $scope.pwd;
      $scope.admin_connected = $scope.global.admin_user == $scope.username && $scope.global.admin_pwd == $scope.pwd;
      if($scope.admin_connected)
      $scope.credentials = true;
    }
  }

  //connection
  $rootScope.Connect = () => { // === $rootScope.Connect = function() { ... }
  //Set params to request
  //let body = new URLSearchParams();
  //body.set('username', $scope.username);
  //body.set('password', $scope.pwd);
  //body.set('project', $rootScope.project);

  var request = Global.url_api+'action=Connection&username='+$scope.username+'&password='+$scope.pwd+'&project='+$rootScope.project;
  //Request options
  /*var req = {
    method: 'POST',
    url: Global.url_api+'action=Connection',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    data: body.toString()
  }*/
  //Ask to the server if credentials is correct
  $http.get(request)
  .then((response) => {
    console.log(response.data);
    if(response.status == 200){ //Status 200 : Everything OK
      var jwt_token = response.data.jwt;
      localStorage.setItem('tokenAPI',jwt_token); //Set the token sent by server in localStorage
      $scope.credentials = true; //Set visible the tab
      $rootScope.getProjectData(); //Get data from DB
    } else { //Status 401 : Unauthorized
      $scope.credentials = false;
    }
  })
}

// Get project users from DB
$scope.getProjectUsers = function() {
  users.get($rootScope.project).then(function(response) {
    $rootScope.users = response.data;
    $(function () {
      $('[data-toggle="tooltip"]').tooltip('dispose');
      $('[data-toggle="tooltip"]').tooltip();
      $('[data-toggle="tooltip"]').tooltip('update');
    })
  });
};
// Get project licenses from DB
$scope.getProjectLicenses = function() {
  licenses.get($rootScope.project).then(function(response) {
    $rootScope.licenses=response.data;
    for(var i =0;i<$scope.licenses.length;i++)
    $rootScope.licenses[i].id_full = $rootScope.project + "_" + $rootScope.licenses[i].id;
  });
};
// Get project screens from DB
$scope.getProjectScreens = function() {
  screens.get($rootScope.project).then(function(response) {
    $rootScope.screens = response.data;
  });
};
// GET USERS AND VIEWS FOR CURRENT PROJECT
$rootScope.getProjectData = function() {

  if(localStorage.getItem('tokenAPI') != null){    //if($scope.credentials){
    $scope.getProjectUsers();
    $scope.getProjectScreens();
    $scope.getProjectLicenses();
    for(i = 0; i < $rootScope.projects.length; i++)
    if($rootScope.projects[i].name == $rootScope.project)
    $scope.project_id = i;
    $scope.initialLoading++;
  }
  //$scope.getCredentials();
};


// new project service
$scope.zoomImage= function(project, path, label) {
  $mdDialog.show({
    controller: DialogControllerZI,
    resolve: {
      url: function () {return 'http://bouygues-tpinst.fr/ByOnSite/Projects/'+ project + '/'+path;},
      label: function () {return label;}
    },
    templateUrl: 'zoom_image.html'
  })
};
// new project controller
function DialogControllerZI($scope, $mdDialog, url, label) {
  $scope.url = url;
  $scope.label = label;
  $scope.cancel = function(){$mdDialog.cancel();};
}

//////////////
//  USERS  //
/////////////

///////   SAVE   //////
$scope.saveUser = function(index){ users.saveUser(index); };
//  DELETE  //
$scope.deleteUser= function() { users.deleteUser(); };
//  RESET  //
$scope.resetUser = function() { users.resetUser(); };
//  CREATE  //
$scope.showNewUser= function() { if($scope.credentials) users.showNewUser(); };

///////////////
//  SCREENS  //
///////////////
//  CREATE  //
$scope.saveScreen = function(index){ screens.saveScreen(index); };
//  DELETE //
$scope.deleteScreen = function() { screens.deleteScreen(); };
//  ADD  //
$scope.showNewScreen = function() { if($scope.credentials) screens.showNewScreen(); };

///////////////
// LICENSES  //
///////////////
//  CREATE  //
$scope.showNewLicense= function() { licenses.showNewLicense(); };
//  RESET //
$scope.resLicense= function(){ licenses.resLicense(); };

////////////////
//  PROJECTS  //
////////////////
//  CREATE  //
$scope.showNewProject= function(){ if($scope.credentials) projects.showNewProject(); };
//  SAVE  //
$scope.saveProject = function(index){ projects.saveProject(index); };
//  DELETE  //
$scope.delProject = function (){ projects.delProject(); };
}]);
app.factory('projects', ['$rootScope', '$http', 'Global', '$mdDialog', 'licenses', '$timeout', function($rootScope, $http, Global, $mdDialog, licenses, $timeout){
  var projects = {};


  // GET PROJECTS NAME
  projects.getName = () => {  // === projects.getName = function() { ... }
    return $http.get(Global.url_api+'action=GETINFO&table=Projects');
  }

  // CREATE PROJECT
  // http request
  var addProject = function(new_project){
    if (new_project.is_new)
    {
      var request = Global.url_api+'action=Newproject&name='+new_project.name;
      request += '&logo='+ new_project.logo;
      request += '&nb_screens='+ new_project.nb_screens;
      request += '&user='+ new_project.user;
      request += '&pwd='+ new_project.pwd;
      $r = $http.get(request).then(function (response) {
          $rootScope.getprojects();
      });
    }
    if (new_project.is_new || (!new_project.is_new && new_project.add_user_table))
    {
      var request = Global.url_api+'action=CreateTable&table='+new_project.name+'_users';
      request += "&keys="+ "`first_name` varchar(255), `last_name` varchar(255), `first_connection_code` varchar(255), `app_code` varchar(255) DEFAULT '', `company` varchar(255), `lang` varchar(2), `private_access` boolean" ;
      $r = $http.get(request).then(function(response) {});
    }
    if (new_project.is_new || (!new_project.is_new && new_project.add_license_table))
    {
      var request = Global.url_api+'action=CreateTable&table='+new_project.name+'_licenses';
      request += '&keys='+ '`installation_code` varchar(255), `license_code` varchar(255)' ;
      $r = $http.get(request).then(function(response) {
        $timeout(licenses.add10licences, 200);
      });
    }
    if (new_project.is_new || (!new_project.is_new && new_project.add_view_table))
    {
      var request = Global.url_api+'action=CreateTable&table='+new_project.name+'_views';
      request += '&keys='+ '`path` varchar(1000), `is_active` boolean, `is_private` boolean, `label_fr` varchar(255), `label_en` varchar(255)' ;
      $r = $http.get(request).then(function(response) {});
    }
    $rootScope.project = new_project.name;
    $rootScope.getProjectData();
    $mdDialog.hide();
  }

  // new project service
  projects.showNewProject= function() {
      $r = $http.get(Global.url_ftp_logo).then(function(response) {
      var available_logos = response.data;
      $mdDialog.show({
        controller: DialogControllerNP,
        resolve: {
          projects: function () {return $rootScope.projects;},
          logos: function() {return available_logos;}
        },
        templateUrl: 'new_project.html'
      })
    });
  };
  // new project controller
  function DialogControllerNP($scope, $mdDialog, projects, logos) {
    $scope.projects = projects;
    $scope.available_logos = logos;
    $scope.new_project = {is_new:true, nb_screens:'15', add_user_table:true, add_view_table:true, add_license_table:true };
    $scope.cancel = function(){$mdDialog.cancel();};
    $scope.addProject_ = function(new_project){addProject(new_project);};
  }

  // SAVE PROJECT
  // http request
  projects.saveProject = function (index) {
      var request = Global.url_api + 'action=UpdateProject';
      request += '&id=' + $rootScope.projects[index].id;
      request += '&name=' + $rootScope.projects[index].name;
      request += '&logo=' + $rootScope.projects[index].logo;
      request += '&nb_screens=' + $rootScope.projects[index].nb_screens;
      request += '&admin_user=' + $rootScope.projects[index].admin_user;
      request += '&admin_pwd=' + $rootScope.projects[index].admin_pwd;
      request += '&is_public=' + $rootScope.projects[index].is_public;
      request += '&is_active=' + $rootScope.projects[index].is_active;
      $r = $http.get(request).then(function (response) {
          Global.updateNotif(response, "Project " + $rootScope.projects[index].name);
          if (response.data = "ok")
             $rootScope.getprojects();
      });
  }

  // DELETE PROJECT
  // http request
  var deleteProject= function () {
      var request = Global.url_api + 'action=DeleteProject';
      request += '&id=' + $rootScope.toDelete.project.id;
      request += '&name=' + $rootScope.toDelete.project.name;
      $r = $http.get(request).then(function (response) {
          Global.deleteNotif(response, "project");
          if (response.data = "ok")
              location.reload();
      });
  }
  // delete project service
  projects.delProject = function () {
      $mdDialog.show({
          controller: DialogControllerDP,
          templateUrl: 'confirm_delete.html'
      })
  };
  // delete project controller
  function DialogControllerDP($scope, $mdDialog) {
      $scope.title = "Delete project";
      $scope.button = "Delete this project";
      $scope.text = "You are going to delete project. Do you wish to continue?";
      $scope.cancel = function () {$mdDialog.cancel(); };
      $scope.delete= function () { deleteProject();};
  }

  return projects;
}]);
app
.factory('users', ['$http', 'Global', '$mdDialog', '$rootScope', function($http, Global, $mdDialog, $rootScope){
  var users = {};

  users.get = function(project){
    return $http.get(Global.url_api+'action=GET&table='+project+'_users');
  }

  //  CREATE USER
  // http request
  var addUser = function(new_user){
    var request = Global.url_api+'action=AddUser&table='+$rootScope.project+'_users';
    request += '&first_name='+new_user.first_name;
    request += '&last_name='+new_user.last_name;
    request += '&company='+new_user.company;
    var first_connection_code = Math.random().toString(36).slice(2,10);
    request += '&first_connection_code=' + first_connection_code
    request += '&app_code=';
    request += '&lang='+new_user.lang;
    request += '&private_access='+new_user.private_access;
    $r = $http.get(request).then(function(response) {
      Global.addNotif(response, "User");
      sendMail(new_user.email,first_connection_code, new_user.first_name,new_user.last_name, new_user.lang);
    });

  }
  // create user service
  users.showNewUser= function() {
    $mdDialog.show({
      controller: DialogControllerNU,
      templateUrl: 'new_user.html',
    })
  };
  // create user controller
  function DialogControllerNU($scope, $mdDialog) {
    $scope.new_user={ first_name:"", last_name:"", company:"", email:"", lang:"en", private_access:"0"};
    $scope.cancel = function(){$mdDialog.cancel();};
    $scope.addUser = function(new_user){addUser(new_user);};
  }

  //Send mail to the user
  function sendMail(email,first_connection_code,first_name,last_name,lang){
    console.log("Passed in mail function")
    var request = Global.url_send_mail  //Ajouter des paramètres
    request += 'email='+email;
    request += '&code='+first_connection_code
    request += '&first_name='+first_name
    request += '&last_name='+last_name
    request += '&lang='+lang
    request += '&project='+$rootScope.project
    $r = $http.get(request).then(function(response) {
      console.log(response)
    })
  }
  //  SAVE USER
  // save user service
  users.saveUser = function(index){
    var request = Global.url_api+'action=UpdateUser&table='+$rootScope.project+'_users';
    request += '&id='+$rootScope.users[index].id;
    request += '&first_name='+$rootScope.users[index].first_name;
    request += '&last_name='+$rootScope.users[index].last_name;
    request += '&company='+$rootScope.users[index].company;
    request += '&first_connection_code='+$rootScope.users[index].first_connection_code;
    request += '&app_code='+$rootScope.users[index].app_code;
    request += '&lang='+$rootScope.users[index].lang;
    request += '&private_access='+$rootScope.users[index].private_access;
    $r = $http.get(request).then(function(response) {
      Global.updateNotif(response, $rootScope.users[index].first_name + " " + $rootScope.users[index].last_name);
    });
  }


  //  RESET USER
  // http request
  var resetUser = function(){
    var request = Global.url_api+'action=ResetUser&table='+$rootScope.project+'_users';
    request += '&id='+$rootScope.toReset.user;
    $r = $http.get(request).then(function(response) {
      Global.resetNotif(response, "Credentials");
    });
  }
  // reset user service
  users.resetUser= function() {
    $mdDialog.show({
      controller: DialogControllerRU,
      templateUrl: 'confirm_reset.html',
    })
  };
  // reset user controller
  function DialogControllerRU($scope, $mdDialog) {
    $scope.title = "Reset user";
    $scope.text = "You are going to reset user's credentials. Do you wish to continue?";
    $scope.button = "Reset this user";
    $scope.cancel = function() { $mdDialog.cancel();};
    $scope.reset = function(){resetUser();};
  }

  // DELETE USER
  // http request
  var deleteUser = function(){
    var request = Global.url_api+'action=DeleteUser&table='+$rootScope.project+'_users';
    request += '&id='+$rootScope.toDelete.user;
    $r = $http.get(request).then(function(response) {
      Global.deleteNotif(response, "user");
    });
  }
  // delete user service
  users.deleteUser= function() {
    $mdDialog.show({
      controller: DialogControllerDU,
      templateUrl: 'confirm_delete.html'
    })
  };
  // delete user controller
  function DialogControllerDU($scope, $mdDialog) {
    $scope.title = "Delete user";
    $scope.text = "You are going to delete a user. Do you wish to continue?";
    $scope.button = "Delete this user";
    $scope.cancel = function(){$mdDialog.cancel();};
    $scope.delete = function(){deleteUser();};
  }


  return users;
}]);
app.factory("authInterceptor", authInterceptor);

authInterceptor.$inject = ["$q"];

function authInterceptor($q) {
    return {

        // Add an interceptor for requests.
        'request': function (config) {
            // Default to an empty object if no headers are set.
            config.headers = config.headers || {};
            // Set the token
            var token = localStorage.getItem('tokenAPI');
            config.headers.Authorization = "Bearer " + token;

            return config;
        },

        // Add an interceptor for any responses that error.
        'responseError': function (response) {

            // Check if the error is auth-related.
            if (response.status === 401 || response.status === 403) {
              console.log("Interceptor error");
            }

            return $q.reject(response);
        }

    };

}


app.config(["$httpProvider",
    function ($httpProvider) {
        //Registers the interceptor
        $httpProvider.interceptors.push("authInterceptor");
    }]);
<?php
require_once './jwt/BeforeValidException.php';
require_once './jwt/ExpiredException.php';
require_once './jwt/SignatureInvalidException.php';
require_once './jwt/JWT.php';

use \Firebase\JWT\JWT;

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, Authorization');

$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$dev=true;
if ($dev)
{
	$host = '*****';
	$user_name = '*****';
	$pwd = '******';
}
else {
	$host = '*****';
	$user_name = '*****';
	$pwd = '*****';
}
$key = $_GET['key'];
$action = $_GET['action'];
$bdd = new PDO($host, $user_name, $pwd, $pdo_options);

//DON'T NEED TOKEN ======================

//Handle user connection
if($action == 'Connection'){
	try{

		$response->credentials = false;
		$project = $_GET['project'];
		$username = $_GET['username'];
		$password = $_GET['password'];

		//Looking in project table
		$stmt = $bdd->prepare("SELECT * FROM Projects WHERE name = :name AND admin_user = :username AND admin_pwd = :password;");
		$stmt->bindParam(":name", $project);
		$stmt->bindParam(":username", $username);
		$stmt->bindParam(":password", $password);
		$stmt->execute();
		$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
		if(count($result) != 0) {
			$response->credentials = true;
		}

		//Looking in global table
		$stmt2 = $bdd->prepare("SELECT * FROM Global WHERE admin_user = :username AND admin_pwd = :password;");
		$stmt2->bindParam(":username", $username);
		$stmt2->bindParam(":password", $password);
		$stmt2->execute();
		$result2 = $stmt2->fetchAll(PDO::FETCH_ASSOC);
		if(count($result2) != 0) {
			$response->credentials = true;
		}

		if($response->credentials == true){
			//TOKEN Part
			$tokenId    = base64_encode(openssl_random_pseudo_bytes(32));
			$issuedAt   = time();
			$notBefore  = $issuedAt + 10;  //Adding 10 seconds
			$expire     = $notBefore + 60; // Adding 60 seconds
			$serverName = 'http://bouygues-tpinst.fr/';
			$secret_key = "6F3BB4F0B824BC976F11AA2C547D";
			$data = [
				'iat' => $issuedAt, //Time when token was generate
				'jti' => $tokenId,
				'iss' => $serverName,
				'exp' => $expire,
				'data' => [
					'test' => 'test'
				]
			];
			$algorithme = 'HS512';


			//Now create the TOKEN
			$jwt = JWT::encode(
				$data,
				$secret_key,
				$algorithme
			);

			$unencoded_array = ['jwt' => $jwt];
			echo json_encode($unencoded_array);
			//==========
		}
		else { //Credentials are not valid
			header('HTTP/1.0 401 Unauthorized');
			echo "Credentials not valid";
		}
	}catch(Exception $e){
		die('Erreur : '.$e->getMessage());
	}
}
//GET INFORMATION ABOUT PROJECTS (WITHOUT ADMIN ID)
else if($action == 'GETINFO'){
	try{
		$table = $_GET['table'];
		$sql = 'SELECT name,logo, nb_screens FROM '.$table.';';
		$response = $bdd->query($sql);
		$output = $response->fetchAll(PDO::FETCH_ASSOC);
	}catch(Exception $e){
		die('Erreur : '.$e->getMessage());
	}

	echo(json_encode($output));
}
//====================================

else {

	var_dump($_SERVER['HTTP_AUTHORIZATION']);
	$Authorization = $_SERVER['HTTP_AUTHORIZATION'];

	//Looking for authorization headers
	if($Authorization){
		//Extract le token from Bearer
		list($jwt) = sscanf($Authorization->toString(), 'Authorization: Bearer %s');
		if($jwt){
			try{
				$secret_key = '6F3BB4F0B824BC976F11AA2C547D2D5D6CE8D98D5A4683BBAF61689500688E4F';
				$token = JWT::decode($jwt,$secret_key,'HS512');
				echo ("TOKEN : ".$token.toString());
			}catch(Exception $e){
				header('HTTP/1.0 401 Unauthorized');
				echo 'Unauthorized token';
			}
		} else {
			header('HTTP/1.0 401 Unauthorized'); //Give error code 401 : Unauthorized
			echo 'Can\'t extract token from bearer';
		}
	} else {
		header('HTTP/1.0 401 Unauthorized'); //Give error code 401 : Unauthorized
		echo 'Token not found in the header';
	}


	//To access this part of API, client must send to the server the token API generate on the connection
		if($action == "GET")
		{
			try {
				// connection to the database.
				$table = $_GET['table'];
				$sql = 'SELECT * FROM '.$table.';';
				$response = $bdd->query($sql);
				$output = $response->fetchAll(PDO::FETCH_ASSOC);
			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
			// Print JSON encode of the array.
			echo(json_encode($output));
		}
		// RESET USER
		else if($action == 'ResetUser')
		{
			try {
				$table = $_GET['table'];
				$id = $_GET['id'];
				$query = "UPDATE `".$table."` SET `app_code`='".$app_code."' WHERE `id` = ".$id;
				echo "ok";
				$bdd->exec($query);
			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		// UPDATE USER
		else if($action == 'UpdateUser')
		{
			try {
				$table = $_GET['table'];
				$id = $_GET['id'];
				$first_name = $_GET['first_name'];
				$last_name = $_GET['last_name'];
				$first_connection_code = $_GET['first_connection_code'];
				$app_code = $_GET['app_code'];
				$company = $_GET['company'];
				$lang = $_GET['lang'];
				$private_access = $_GET['private_access'];
				$query = "UPDATE `".$table."` SET `first_name`='".$first_name."', `last_name`='".$last_name."', `first_connection_code`='".$first_connection_code."', `app_code`='".$app_code."', `company`='".$company."', `lang`='".$lang."', `private_access`='".$private_access."' WHERE `id` = ".$id;
				echo "ok";
				$bdd->exec($query);
			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		// ADD NEW USER
		else if($action == 'AddUser')
		{
			try {
				$table = $_GET['table'];
				$first_name = $_GET['first_name'];
				$last_name = $_GET['last_name'];
				$first_connection_code = $_GET['first_connection_code'];
				$company = $_GET['company'];
				$lang = $_GET['lang'];
				$private_access = $_GET['private_access'];

				$query = "INSERT INTO `".$table."`(`id`, `first_name`, `last_name`, `first_connection_code`, `company`, `lang`, `private_access`)
				VALUES ('','".$first_name."','".$last_name."','".$first_connection_code."','".$company."','".$lang."','".$private_access."')";
				echo "ok";
				$bdd->exec($query);

			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		// DELETE USER
		else if($action == 'DeleteUser')
		{
			try {
				$table = $_GET['table'];
				$id = $_GET['id'];
				$query = "DELETE FROM `".$table."` WHERE `id` = ".$id;
				echo "ok";
				$bdd->exec($query);

			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		// UPDATE VIEW
		else if($action == 'UpdateView')
		{
			try {
				$table = $_GET['table'];
				$id = $_GET['id'];
				$path = $_GET['path'];
				$label_fr = $_GET['label_fr'];
				$label_en = $_GET['label_en'];
				$is_private = $_GET['is_private'];
				$is_active = $_GET['is_active'];
				$private_access = $_GET['private_access'];
				$query = "UPDATE `".$table."` SET `path`='".$path."', `label_fr`='".$label_fr."', `label_en`='".$label_en."', `is_private`='".$is_private."', `is_active`='".$is_active."' WHERE `id` = ".$id;
				echo "ok";
				$bdd->exec($query);
			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		// ADD NEW VIEW
		else if($action == 'AddView')
		{
			try {
				$table = $_GET['table'];
				$path = $_GET['path'];
				$label_fr = $_GET['label_fr'];
				$label_en = $_GET['label_en'];
				$is_private = $_GET['is_private'];
				$is_active = $_GET['is_active'];

				$query = "INSERT INTO `".$table."`(`id`, `path`, `is_active`, `is_private`, `label_fr`, `label_en`)
				VALUES ('','".$path."','".$is_active."','".$is_private."','".$label_fr."','".$label_en."')";
				echo "ok";
				$bdd->exec($query);

			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		// DELETE VIEW
		else if($action == 'DeleteView')
		{
			try {
				$table = $_GET['table'];
				$id = $_GET['id'];
				$query = "DELETE FROM `".$table."` WHERE `id` = ".$id;
				echo "ok";
				$bdd->exec($query);

			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		else if($action == 'AddLicense')
		{
			try {
				$table = $_GET['table'];
				$nb_license= $_GET['nb_license'];
				$characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
				for ($i=0; $i<$nb_license;$i++)
				{
					$installation_code = '';
					$max = strlen($characters) - 1;
					for ($j = 0; $j <8; $j++) {
						$installation_code .= $characters[mt_rand(0, $max)];
					}
					$query = "INSERT INTO `".$table."`(`id`, `installation_code`, `license_code`)
					VALUES ('','".$installation_code."','')";
					$bdd->exec($query);
				}
				echo "ok";
			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		else if($action == 'UpdateLicense')
		{
			try {
				$table = $_GET['table'];
				$license_code = $_GET['license_code'];
				$id = $_GET['id'];
				$query = "UPDATE `".$table."` SET `license_code`='".$license_code."' WHERE `id` = ".$id;
				echo "ok";
				$bdd->exec($query);
			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		else if($action == 'CreateTable')
		{
			try {
				$table = $_GET['table'];
				$keys = $_GET['keys'];
				$query = "CREATE TABLE IF NOT EXISTS `".$table."` ( `id` INT NOT NULL AUTO_INCREMENT, " . $keys .", PRIMARY KEY (`id`)) ENGINE = InnoDB;";
				echo "ok";
				$bdd->exec($query);
			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		else if($action == 'Newproject')
		{
			try {
				$table = "Projects";
				$name = $_GET['name'];
				$logo = $_GET['logo'];
				$user = $_GET['user'];
				$pwd = $_GET['pwd'];
				$nb_screens = $_GET['nb_screens'];
				$query = "INSERT INTO `".$table."`(`id`, `is_active`, `name`, `logo`, `nb_screens`, `admin_user`, `admin_pwd`, `is_public`)
				VALUES ('','1','".$name."','".$logo."','".$nb_screens."','".$user."','".$pwd."','0')";
				echo "ok";
				$bdd->exec($query);
			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
		else if($action == 'UpdateProject')
		{
			try {
				$table = "Projects";
				$id = $_GET['id'];
				$name = $_GET['name'];
				$logo = $_GET['logo'];
				$nb_screens = $_GET['nb_screens'];
				$admin_user = $_GET['admin_user'];
				$admin_pwd = $_GET['admin_pwd'];
				$is_active =  $_GET['is_active'];
				$is_public =  $_GET['is_public'];
				$query = "UPDATE `".$table."` SET `name`='".$name."', `logo`='".$logo."', `nb_screens`='".$nb_screens."',`admin_user`='".$admin_user."', `admin_pwd`='".$admin_pwd."', `is_active`='".$is_active."' , `is_public`='".$is_public."'WHERE `id` = ".$id;
				echo "ok";
				$bdd->exec($query);
			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}

		else if($action == 'DeleteProject')
		{
			try {
				$table = "Projects";
				$id = $_GET['id'];
				$name = $_GET['name'];
				$query = "DELETE FROM `".$table."` WHERE `id` = ".$id;
				$bdd->exec($query);

				$query = "DROP TABLE `".$name."_users`";
				$bdd->exec($query);
				$query = "DROP TABLE `".$name."_views`";
				$bdd->exec($query);
				$query = "DROP TABLE `".$name."_licenses`";
				$bdd->exec($query);

				echo "ok";
			} catch (Exception $e) {
				die('Erreur : ' . $e->getMessage());
			}
		}
}
?>