Przeglądaj źródła

Update API endpoints and enhance admin functionalities with QR code generation and user validation

szisz1982 4 dni temu
rodzic
commit
79c16cde98

+ 3 - 1
application/config/config.php

@@ -17,7 +17,9 @@ $config['db_name'] = 'openws'; // Database name
 $config['db_username'] = 'openws'; // Database username
 $config['db_password'] = '5jqPQEPGUihnY5XM6oPR'; // Database password
 
-$config['api_url'] = 'https://szollosil.bbus.smbinfo.hu/api/index.php';
+//$config['api_url'] = 'https://hoponticket.com/api/index.php';
+//$config['api_url'] = 'https://szollosil.bbus.smbinfo.hu/api/index.php';
+$config['api_url'] = 'https://php82.umsbox.hu/api/index.php';
 $config['api_key'] = '92JxvN5Zeti4E1FDwKg0QPEl3md4vY63';
 
 ?>

+ 37 - 4
application/controllers/admin.php

@@ -169,7 +169,7 @@ class admin extends Controller {
             $view->set('admins','<tr><td colspan="6">'.lang::_('Actually no active admin users in databse').'</td></tr>');
         }
 
-        $view->set('hotels', $api->getHotels(true));
+        $view->set('hotels', $api->getAllPartner(true));
         
         $view->render();
     }
@@ -261,11 +261,33 @@ class admin extends Controller {
         
         $view->render();
     }
+
+    public function qrcodes($uuid) {
+        if ($uuid=='') {
+            header("Location: /admin/orders");
+            die();
+        }
+        else {
+            $model = $this->loadModel('admin_orders_model');
+            $api = $this->loadModel('api_model');
+            $order = $model->loadOrder($uuid);
+            if ($order!==false) {
+                $view = $this->loadView('admin_qrcodes');
+                $view->set('tickets',$api->getQRCodes($order->order_uuid));
+                $view->render();
+            }
+            else {
+                header("Location: /admin/orders");
+                die();
+            }
+        }
+    }
     
     
     public function orders($action='') {
         $this->isAdmin();
         $model = $this->loadModel('admin_orders_model');
+        $api = $this->loadModel('api_model');
         $view = $this->loadView('admin_orders');
         
         if ($action=='show') {
@@ -290,7 +312,18 @@ class admin extends Controller {
         }
         
         $orders = $model->getOrders();
-        $view->set('orders',$orders);
+        $hotels = $api->getHotels(true);
+        foreach ($orders as $order) {
+            $hotelID = str_replace('hotel_','',$order->order_hotel);
+            foreach ($hotels as $hotel) {
+                $check = str_replace('hotel_','',$hotel['key']);
+                if ($check==$hotelID) {
+                    $order->order_hotel = $hotel['value'];
+                }
+            }
+            $list[] = $order;
+        }
+        $view->set('orders',$list);
         
         $view->render();
     }
@@ -706,7 +739,7 @@ class admin extends Controller {
             }
             $box = $model->loadBox();
             $view->set('active',$box);
-            $events = $apimodel->getEventsList($box->parent_service);
+            $events = $apimodel->getEventsList($box->parent_service, $box->parent_event);
             $view->set('events',$events);
             $menus = $apimodel->getMenusList($box->parent_event);
             $view->set('menus',$menus);
@@ -1159,7 +1192,7 @@ class admin extends Controller {
         $model = $this->loadModel('crawler_model');
         $api = $this->loadModel('api_model');
         $view = $this->loadView('monitoring_view');
-        $view->set('hotels', $api->getHotels(true));
+        $view->set('hotels', $api->getAllPartner());
         $view->render();
     }
     

+ 20 - 1
application/controllers/api.php

@@ -132,6 +132,25 @@ class api extends Controller {
     echo json_encode($model->getContent($_REQUEST['pageID'], $_REQUEST['lang']));
   }
 
+  public function frontendQRCodes() {
+    $model = $this->loadModel('api_model');
+    echo json_encode($model->getQRCodes($_REQUEST['orderID']));
+  }
+
+  public function frontendCreateOrderDetails() {
+    $data = json_decode(file_get_contents('php://input'), true);
+    $model = $this->loadModel('api_model');
+    $response = $model->createOrderDetails($data);
+    echo json_encode(['success' => true, 'data' => $response]);
+  }
+
+  public function frontendUpdateOrderDetails() {
+    $data = json_decode(file_get_contents('php://input'), true);
+    $model = $this->loadModel('api_model');
+    $response = $model->updateOrderDetails($data);
+    echo json_encode(['success' => true, 'data' => $response]);
+  }
+
   public function frontendInit() {
     $model = $this->loadModel('api_model');
     $data['uuid'] = $model->getUID();
@@ -148,7 +167,7 @@ class api extends Controller {
 
   public function frontendHotels() {
     $model = $this->loadModel('api_model');
-    $hotels = $model->getHotels();
+    $hotels = $model->getAllPartner();
     //print_r($hotels);
     //die();
     echo json_encode($hotels);

+ 3 - 2
application/models/admin_admins_model.php

@@ -43,12 +43,13 @@ class admin_admins_model extends Model {
     public function saveAdmin() {
         //$data = $this->escapeArray($_REQUEST);
         $data = $_REQUEST;
+        $hotels = explode(',',$data['selectedHotels']);
         if ($data['admin_id']!='') {
             $this->execute("update azonics_admin_users set "
                     . "admin_name='".$data['admin_name']."', "
                     . "admin_email='".$data['admin_email']."', "
                     . "admin_access_level='".$data['admin_access_level']."', "
-                    . "admin_dashboard='".serialize($data['admin_dashboard'])."', "
+                    . "admin_dashboard='".serialize($hotels)."', "
                     . "admin_real_name='".$data['admin_real_name']."' where admin_id='".$data['admin_id']."';");
             
             if ($data['admin_pass']!='' && $data['admin_pass']==$data['admin_pass_repeat']) {
@@ -84,7 +85,7 @@ class admin_admins_model extends Model {
                     . "admin_avatar='".$fname."', "
                     . "admin_status='1', "
                     . "admin_access_level='".$data['admin_access_level']."', "
-                    . "admin_dashboard='".serialize($data['admin_dashboard'])."', "
+                    . "admin_dashboard='".serialize($hotels)."', "
                     . "admin_real_name='".$data['admin_real_name']."', admin_creator='".$_SESSION['admin_user']->admin_id."';");
             
                 return true;

+ 17 - 7
application/models/admin_orders_model.php

@@ -4,17 +4,27 @@ class admin_orders_model extends Model {
     
     
     public function getOrders() {
-        $result = $this->query("SELECT * "
-                . "FROM orders "
-                . "WHERE status>'1' "
-                . "ORDER BY created DESC;");
+        if ($_SESSION['access_level'] == 13) {
+            $hotels = unserialize($_SESSION['admin_user']->admin_dashboard);
+            foreach ($hotels as $hotel) {
+                $list[] = str_replace("hotel_", "", $hotel);
+            }
+            $result = $this->query("SELECT * FROM azonics_orders WHERE order_uuid != '' AND order_hotel IN ('".implode("','",$list)."') ORDER BY order_date DESC;");
+        }
+        elseif ($_SESSION['access_level'] == 14) {
+            $user = $_SESSION['admin_user']->admin_name;
+            $result = $this->query("SELECT * FROM azonics_orders WHERE order_uuid != '' AND order_sales='".$user."' ORDER BY order_date DESC;");
+        }
+        else {
+            $result = $this->query("SELECT * FROM azonics_orders WHERE order_uuid != '' ORDER BY order_date DESC;");
+        }
+
         return $result;
     }
     
     
-    public function loadOrder() {
-        $order_id = $this->escapeString($_REQUEST['id']);
-        $row = $this->query("select * from orders where id='".$order_id."';");
+    public function loadOrder($uuid) {
+        $row = $this->query("select * from azonics_orders where order_uuid='".$uuid."';");
         return $row[0];
     }
     

+ 263 - 23
application/models/api_model.php

@@ -2,7 +2,10 @@
 
 class api_model extends Model {
 
-  private $API = 'https://szollosil.bbus.smbinfo.hu/api/index.php';
+  //private $API = 'https://szollosil.bbus.smbinfo.hu/api/index.php';
+  //private $API = 'https://hoponticket.com/api/index.php';
+  private $API = 'https://php82fpm.umsbox.hu/api/index.php';
+
   private $API_KEY = '92JxvN5Zeti4E1FDwKg0QPEl3md4vY63';
 
   public function getGroupsList() {
@@ -72,9 +75,57 @@ class api_model extends Model {
     return $products;
   }
 
-  public function getEventsList($groupID) {
+  public function getEventsList($groupID, $eventID='') {
     $curl = curl_init();
+    curl_setopt_array($curl, array(
+      CURLOPT_URL => $this->API.'/affiliateapi/events?group_id='.$groupID.'&groupByDate=1',
+      CURLOPT_RETURNTRANSFER => true,
+      CURLOPT_ENCODING => '',
+      CURLOPT_MAXREDIRS => 10,
+      CURLOPT_TIMEOUT => 0,
+      CURLOPT_FOLLOWLOCATION => true,
+      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
+      CURLOPT_CUSTOMREQUEST => 'GET',
+      CURLOPT_HTTPHEADER => array(
+        'DOLAPIKEY: '.$this->API_KEY
+      ),
+    ));
+    $response = curl_exec($curl);
+    curl_close($curl);
+    $events = [];
+    $response = json_decode($response, true);
+    foreach ($response as $key => $item) {
+      $event = [];
+      $event['key'] = $key;
+      /*if ($key != $eventID) {
+        continue;
+      }*/
+      foreach ($item as $subkey => $subitem) {
+        $sub = [];
+        $date = explode(' ', $subkey);
+        $sub['id'] = $subitem['id'];
+        $sub['label'] = $subitem['label'];
+        $sub['description'] = $subitem['description'];
+        $sub['date'] = $date[0];
+        $sub['time'] = substr($date[1],0,-3);
+        $sub['max_num'] = $subitem['max_num'];
+        $sub['participants'] = $subitem['participants'];
+        $sub['available'] = $subitem['max_num'] - $subitem['participants'];
+        $event['dates'][] = $sub;
+      }
+      $event['label'] = $event['dates'][0]['label'];
+      $event['description'] = $event['dates'][0]['description'];
+      $event['date'] = $event['dates'][0]['date'];
+      $event['time'] = $event['dates'][0]['time'];
+      $event['available'] = $event['dates'][0]['available'];
+      $events[] = $event;
+    }
+    //$data = json_encode($events, true);
+    return $events;
+  }
 
+  public function getEventsListByGroup($groupID, $eventID) {
+    $curl = curl_init();
     curl_setopt_array($curl, array(
       CURLOPT_URL => $this->API.'/affiliateapi/events?group_id='.$groupID.'&groupByDate=1',
       CURLOPT_RETURNTRANSFER => true,
@@ -95,6 +146,9 @@ class api_model extends Model {
     foreach ($response as $key => $item) {
       $event = [];
       $event['key'] = $key;
+      if ($key != $eventID) {
+        continue;
+      }
       foreach ($item as $subkey => $subitem) {
         $sub = [];
         $date = explode(' ', $subkey);
@@ -394,11 +448,14 @@ class api_model extends Model {
       $row->parent_price = $this->getLowestEventprice($row->parent_event);
       $images = $this->query("SELECT * FROM `azonics_events_blocks` WHERE block_status=1 AND box_id=".$row->box_id.";");
       $row->images = $images;
-      $row->dates = $this->getEventsList($groupID);
+      $row->dates = $this->getEventsListByGroup($groupID, $row->parent_event);
       if ($lang == 'en') {
         $row->box_title = $row->box_title_en;
         $row->box_subtitle = $row->box_subtitle_en;
       }
+      if (count($row->dates) < 1) {
+        continue;
+      }
       $results[] = $row;
     }
     return $results;
@@ -508,13 +565,45 @@ class api_model extends Model {
     return json_decode($response);
   }
 
-  public function getHotels($onlyHotels = false) {
+  public function getAllHotels() {
     $curl = curl_init();
 
     $url = $this->API.'/affiliateapi/getAllHotels?givePartnerData=1';
-    if ($onlyHotels) {
-      //$url .= '?givePartnerData=1';
+
+    curl_setopt_array($curl, array(
+      CURLOPT_URL => $url,
+      CURLOPT_RETURNTRANSFER => true,
+      CURLOPT_ENCODING => '',
+      CURLOPT_MAXREDIRS => 10,
+      CURLOPT_TIMEOUT => 0,
+      CURLOPT_FOLLOWLOCATION => true,
+      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
+      CURLOPT_CUSTOMREQUEST => 'GET',
+      CURLOPT_HTTPHEADER => array(
+        'DOLAPIKEY: '.$this->API_KEY
+      ),
+    ));
+    $response = curl_exec($curl);
+    curl_close($curl);
+    $groups = [];
+    $response = json_decode($response, true);
+    foreach ($response as $key => $value) {
+      if ($allHotels === false ) {
+        if ($value['contracted_partner'] == 1) {
+          $options[] = array('key' => 'hotel_'.$key, 'value' => $value['label'], 'partner' => $value['contracted_partner']);
+        }
+      }
+      else if ($allHotels === true) {
+        $options[] = array('key' => 'hotel_'.$key, 'value' => $value['label'], 'partner' => $value['contracted_partner']);
+      }
     }
+    return $options;
+  }
+
+  public function getAllPartner() {
+    $curl = curl_init();
+
+    $url = $this->API.'/affiliateapi/getAllHotels?givePartnerData=1';
 
     curl_setopt_array($curl, array(
       CURLOPT_URL => $url,
@@ -534,8 +623,71 @@ class api_model extends Model {
     $groups = [];
     $response = json_decode($response, true);
     foreach ($response as $key => $value) {
-      if ($value['contracted_partner'] == '1') {
-        $options[] = array('key' => 'hotel_'.$key, 'value' => $value['label']);
+        $options[] = array('id' => $value['id'], 'key' => $key, 'value' => $value['label'], 'partner' => $value['contracted_partner']);
+    }
+    return $options;
+  }
+
+  public function getAllContractedPartner() {
+    $curl = curl_init();
+
+    $url = $this->API.'/affiliateapi/getAllHotels?givePartnerData=1';
+
+    curl_setopt_array($curl, array(
+      CURLOPT_URL => $url,
+      CURLOPT_RETURNTRANSFER => true,
+      CURLOPT_ENCODING => '',
+      CURLOPT_MAXREDIRS => 10,
+      CURLOPT_TIMEOUT => 0,
+      CURLOPT_FOLLOWLOCATION => true,
+      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
+      CURLOPT_CUSTOMREQUEST => 'GET',
+      CURLOPT_HTTPHEADER => array(
+        'DOLAPIKEY: '.$this->API_KEY
+      ),
+    ));
+    $response = curl_exec($curl);
+    curl_close($curl);
+    $groups = [];
+    $response = json_decode($response, true);
+    foreach ($response as $key => $value) {
+      if ($value['contracted_partner'] == 1) {
+        $options[] = array('id' => $value['id'], 'key' => $key, 'value' => $value['label'], 'partner' => $value['contracted_partner']);
+      }
+    }
+    return $options;
+  }
+
+  public function getHotels($allHotels = false) {
+    $curl = curl_init();
+
+    $url = $this->API.'/affiliateapi/getAllHotels?givePartnerData=1';
+
+    curl_setopt_array($curl, array(
+      CURLOPT_URL => $url,
+      CURLOPT_RETURNTRANSFER => true,
+      CURLOPT_ENCODING => '',
+      CURLOPT_MAXREDIRS => 10,
+      CURLOPT_TIMEOUT => 0,
+      CURLOPT_FOLLOWLOCATION => true,
+      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
+      CURLOPT_CUSTOMREQUEST => 'GET',
+      CURLOPT_HTTPHEADER => array(
+        'DOLAPIKEY: '.$this->API_KEY
+      ),
+    ));
+    $response = curl_exec($curl);
+    curl_close($curl);
+    $groups = [];
+    $response = json_decode($response, true);
+    foreach ($response as $key => $value) {
+      if ($allHotels === false ) {
+        if ($value['contracted_partner'] == 1) {
+          $options[] = array('key' => 'hotel_'.$key, 'value' => $value['label'], 'partner' => $value['contracted_partner']);
+        }
+      }
+      else if ($allHotels === true) {
+        $options[] = array('key' => 'hotel_'.$key, 'value' => $value['label'], 'partner' => $value['contracted_partner']);
       }
     }
     return $options;
@@ -585,9 +737,19 @@ class api_model extends Model {
     curl_close($curl);
     $options = [];
     $response = json_decode($response, true);
+
+    if (is_array($response)) {
+      usort($response, function($a, $b) {
+        $la = isset($a['label']) ? mb_strtolower($a['label'], 'UTF-8') : '';
+        $lb = isset($b['label']) ? mb_strtolower($b['label'], 'UTF-8') : '';
+        return $la <=> $lb;
+      });
+    }
+    
     foreach ($response as $value) {
       $options[] = array('key' => $value['id'].'_'.$value['code'], 'value' => $value['label']);
     }
+
     return $options;
   }
 
@@ -627,7 +789,7 @@ class api_model extends Model {
     }
   }
 
-  public function getMonthRevenue($hotelID, $actualMonth = 0) {
+  public function getMonthRevenue($hotelIDs, $actualMonth = 0) {
     $curl = curl_init();
 
     $postfix = '';
@@ -636,7 +798,7 @@ class api_model extends Model {
     }
 
     curl_setopt_array($curl, array(
-      CURLOPT_URL => $this->API.'/affiliateapi/getAmount?hotel_id='.$hotelID.$postfix,
+      CURLOPT_URL => $this->API.'/affiliateapi/getAmount?hotelids='.$hotelIDs.$postfix,
       CURLOPT_RETURNTRANSFER => true,
       CURLOPT_ENCODING => '',
       CURLOPT_MAXREDIRS => 10,
@@ -650,29 +812,107 @@ class api_model extends Model {
     ));
     $response = curl_exec($curl);
     curl_close($curl);
-    $response = str_replace('"','',$response);
-    $result = intval($response);
+    $result = json_decode($response);
     return $result;
   }
 
+  public function createOrderDetails($data) {
+    $this->execute("INSERT INTO `azonics_orders` SET 
+    order_uuid = '".$data['order_uuid']."', 
+    order_hotel = '".$data['order_hotel']."', 
+    order_sales = '".$data['order_sales']."', 
+    order_cart = '".serialize($data['order_cart'])."', 
+    order_customer_fname = '".$data['order_customer_fname']."', 
+    order_customer_lname = '".$data['order_customer_lname']."', 
+    order_customer_email = '".$data['order_customer_email']."', 
+    order_customer_city = '".$data['order_customer_city']."', 
+    order_customer_country = '".$data['order_customer_country']."', 
+    order_customer_zip = '".$data['order_customer_zip']."', 
+    order_customer_street = '".$data['order_customer_street']."', 
+    order_customer_house = '".$data['order_customer_house']."', 
+    order_customer_phone = '".$data['order_customer_phone']."', 
+    order_customer_hotel = '".$data['order_customer_hotel']."', 
+    order_customer_ip = '".$data['order_customer_ip']."', 
+    order_customer_browser = '".$data['order_customer_browser']."', 
+    order_terms_accepted = 1, 
+    order_status = 1;");
+    return $this->getLastInsertID();
+  }
+
+  public function updateOrderDetails($data) {
+    $this->execute("UPDATE azonics_orders SET 
+    order_transaction_id = '".$data['order_transaction_id']."', 
+    order_auth_code = '".$data['order_auth_code']."' WHERE order_id = '".$data['order_id']."';");
+    return $data['order_id'];
+  }
+
   public function getReports() {
-    $hotels = $this->getHotels(true);
+    $hotels = $this->getAllPartner();
     $reports = [];
     $userData = unserialize($_SESSION['admin_user']->admin_dashboard);
+    $ids = [];
     foreach ($userData as $hotelID) {
-      $hotel = array_filter($hotels, function($h) use ($hotelID) {
-        return $h['key'] == $hotelID;
-      });
-      if (!empty($hotel)) {
-        $hotel = array_values($hotel)[0];
+      foreach ($hotels as $hotel) {
+        if ($hotel['key'] == $hotelID) {
+          $ids[] = $hotel['id'];
+          $reports[] = [
+            'id' => $hotel['id'],
+            'hotel' => $hotel['value'],
+            'actual_month' => '',
+            'last_month' => ''
+          ];
+        }
+      }
+    }
+    $actualMonth = $this->getMonthRevenue(implode(',',$ids), 1);
+    $lastMonth = $this->getMonthRevenue(implode(',',$ids), 0);
+    foreach ($reports as $key => $report) {
+      foreach ($actualMonth as $id => $item) {
+        if ($id == $report['id']) {
+          $reports[$key]['actual_month'] = $item;
+        }
+      }
+      foreach ($lastMonth as $id => $item) {
+        if ($id == $report['id']) {
+          $reports[$key]['last_month'] = $item;
+        }
       }
-      $report = [];
-      $report['hotel'] = $hotel['value'];
-      $report['actual_month'] = $this->getMonthRevenue($hotelID, 1);
-      $report['last_month'] = $this->getMonthRevenue($hotelID, 0);
-      $reports[] = $report;
     }
     return $reports;
   }
 
+
+  public function getQRCodes($orderID) {
+      $curl = curl_init();
+      
+      curl_setopt_array($curl, array(
+        CURLOPT_URL => $this->API.'/affiliateapi/getSaledItemsQR?sendid='.$orderID,
+        CURLOPT_RETURNTRANSFER => true,
+        CURLOPT_ENCODING => '',
+        CURLOPT_MAXREDIRS => 10,
+        CURLOPT_TIMEOUT => 0,
+        CURLOPT_FOLLOWLOCATION => true,
+        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
+        CURLOPT_CUSTOMREQUEST => 'GET',
+        CURLOPT_HTTPHEADER => array(
+          'DOLAPIKEY: '.$this->API_KEY
+        ),
+      ));
+
+      $response = curl_exec($curl);
+      curl_close($curl);
+
+      $groups = [];
+      $response = json_decode($response, true);
+
+      foreach ($response as $key => $item) {
+          $group = [];
+          $group['id'] = $key;
+          $group['label'] = $item;
+          $groups[] = $group;
+      }
+      //$data = json_encode($groups, true);
+      return $groups;
+  }
+
 }

+ 80 - 45
application/views/admin_admins.php

@@ -19,7 +19,7 @@
                 <h3 class="box-title"><?=lang::_('List of users')?></h3>
                 <button class="btn btn-flat btn-success" style="float: right;" type="button" name="add_admin2" onclick="window.location='/admin/admins';"><i class="fa fa-plus"></i> Add new user</button>
             </div>
-            <div class="box-body">
+            <div class="box-body" style="min-height: 82vh;">
                 <div class="row"><div class="col-lg-12">
                     <table id="mytable6" class="table table-bordered table-hover dataTable table-striped data-list">
                         <thead>
@@ -41,9 +41,10 @@
                                 <td><?=$admin->admin_name?></td>
                                 <td><?=$admin->admin_real_name?></td>
                                 <td><?=admin_utils::getAccessLevelName($admin->admin_access_level)?></td>
-                                <td>
+                                <?php $selectedValues = unserialize($admin->admin_dashboard); ?>
+                                <td style="min-height: 60px; height: 60px; max-height: 60px; overflow: hidden; display: flex;">
+                                    <a href="javascript:;" onclick="javascript: $(this).parent('td').attr('style','height: auto; max-height: auto;');"><i class="fa fa-angle-down"></i></a>
                                     <?php 
-                                    $selectedValues = unserialize($admin->admin_dashboard);
                                     foreach ($selectedValues as $selectedHotel) {
                                         foreach ($hotels as $hotel) {
                                             if ($hotel['key'] == $selectedHotel) {
@@ -116,47 +117,6 @@
                                     <?=admin_utils::getAdminAccessLevels($active->admin_access_level)?>
                                 </select>
                             </div>
-                            <div class="form-group">
-                                <label for="admin_dashboard"><?=lang::_('Hotel')?>: </label>
-                                <?php
-                                    if ($active->admin_dashboard != '' && $active->admin_dashboard != 'N;') {
-                                        $selectedHotels = unserialize($active->admin_dashboard);
-                                        if ($selectedHotels === false) {
-                                            $selectedHotels = [];
-                                        }
-                                    }
-                                    else {
-                                        $selectedHotels = [];
-                                    }
-
-                                    if ($_SESSION['admin_user']->admin_dashboard != '' && $_SESSION['admin_user']->admin_dashboard != 'N;') {
-                                        $avaiableHotels = unserialize($_SESSION['admin_user']->admin_dashboard);
-                                        if ($avaiableHotels === false) {
-                                            $avaiableHotels = [];
-                                        }
-                                    }
-                                    else {
-                                        $avaiableHotels = [];
-                                    }
-                                ?>
-                                <select class="form-control" id="admin_dashboard" name="admin_dashboard[]" multiple>
-                                    <?php
-                                    if ($_SESSION['admin_user']->admin_dashboard != '') {
-                                        foreach ($hotels as $hotel) {
-                                            if (in_array($hotel['key'], $avaiableHotels)) {
-                                                $filteredHotels[] = $hotel;
-                                            }
-                                        }
-                                        $hotels = $filteredHotels;
-                                    }
-                                    ?>
-                                    <?php foreach ($hotels as $hotel) : ?>
-                                    <option value="<?=$hotel['key']?>"<?=in_array($hotel['key'], $selectedHotels) ? ' selected' : '' ?>>
-                                    <?=$hotel['value']?>
-                                    </option>
-                                    <?php endforeach; ?>
-                                </select>
-                            </div>
                         </div>
                         <div class="col-lg-6">
                             <input type="hidden" name="tempContainer" value="" id="tempContainer" />
@@ -181,9 +141,84 @@
                             <br>
                         </div>
                     </div>
+                    <?php
+                        if ($active->admin_dashboard != '' && $active->admin_dashboard != 'N;') {
+                            $selectedHotels = unserialize($active->admin_dashboard);
+                            if ($selectedHotels === false) {
+                                $selectedHotels = [];
+                            }
+                        }
+                        else {
+                            $selectedHotels = [];
+                        }
+                    ?>
+                    <div class="row">
+                        <div class="col-lg-6">
+                            <div class="form-group">
+                                <?php
+                                if ($_SESSION['admin_user']->admin_dashboard != '' && $_SESSION['admin_user']->admin_dashboard != 'N;') {
+                                    $avaiableHotels = unserialize($_SESSION['admin_user']->admin_dashboard);
+                                    if ($avaiableHotels === false) {
+                                        $avaiableHotels = [];
+                                    }
+                                    foreach ($hotels as $hotel) {
+                                        if (in_array($hotel['key'], $avaiableHotels)) {
+                                            $filteredHotels[] = $hotel;
+                                        }
+                                    }
+                                    $hotels = $filteredHotels;
+                                }
+                                else {
+                                    $avaiableHotels = [];
+                                }
+                                ?>
+                                <table id="mytable_hotels_forselect" class="table table-bordered table-hover dataTable table-striped">
+                                    <thead>
+                                        <tr>
+                                            <th><?=lang::_('Kiválasztható hotelek')?></th>
+                                            <th>&nbsp;</th>
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        <?php foreach ($hotels as $hotel) : ?>
+                                            <?php if (in_array($hotel['key'], $selectedHotels) == false) : ?>
+                                            <tr>
+                                                <td><?=$hotel['value']?></td>
+                                                <td><button data-id="<?=$hotel['key']?>" type="button" class="btn btn-success" onclick="javascript: addHotel($(this), '<?=$hotel['value']?>', '<?=$hotel['key']?>');"><i class="fa fa-plus"></i></button></td>
+                                            </tr>
+                                            <?php endif; ?>
+                                        <?php endforeach; ?>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                        <div class="col-lg-6">
+                            <div class="form-group">
+                                <table id="mytable_hotels_selected" class="table table-bordered table-hover dataTable table-striped">
+                                    <thead>
+                                        <tr>
+                                            <th>&nbsp;</th>
+                                            <th><?=lang::_('Kiválasztott hotelek')?></th>
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        <?php foreach ($hotels as $hotel) : ?>
+                                            <?php if (in_array($hotel['key'], $selectedHotels) == true) : ?>
+                                            <tr>
+                                                <td><button data-id="<?=$hotel['key']?>" type="button" class="btn btn-danger" onclick="javascript: removeHotel($(this), '<?=$hotel['value']?>', '<?=$hotel['key']?>');"><i class="fa fa-remove"></i></button></td>
+                                                <td><?=$hotel['value']?></td>
+                                            </tr>
+                                            <?php endif; ?>
+                                        <?php endforeach; ?>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </div>
+                    </div>
+                    <input type="hidden" name="selectedHotels" id="selectedHotels" value="" />
                     <div class="row">
                         <div class="col-lg-12">
-                            <button type="button" onclick="validateForm('#adminEditor','#avatarImage')" class="btn btn-success"><?=lang::_('Save user');?></button>
+                            <button type="button" onclick="validateUser('#adminEditor','#avatarImage')" class="btn btn-success"><?=lang::_('Save user');?></button>
                         </div>
                     </div>
                 </form>

+ 2 - 0
application/views/admin_dashboard.php

@@ -15,6 +15,7 @@
     
     <section class="content">
         <div class="row">
+            <?php if ($_SESSION['admin_user']->admin_access_level != '1' && $_SESSION['admin_user']->admin_access_level != '11') : ?>
             <?php foreach ($reports as $report) : ?>
             <div class="col-xl-3 col-lg-3 col-md-6 col-sm-12 col-xs-12">
                 <div class="box box-info">
@@ -28,6 +29,7 @@
                 </div>
             </div>
             <?php endforeach; ?>
+            <?php endif; ?>
         </div>
     </section>
 </div>

+ 58 - 0
application/views/admin_footer.php

@@ -107,7 +107,65 @@
                     }
                 }
             });
+
+            $("#mytable_hotels_forselect").dataTable({
+                iDisplayLength: 5,
+                sDom: '<"row"<"col-xs-12"f>>t<"row"<"col-xs-12"p>>',
+                aaSorting: [[0,"asc"]], 
+                oLanguage: {
+                    sSearch:                    "<?=lang::_('')?>", 
+                    sInfo:                      "", 
+                    sLengthMenu:                "", 
+                    oPaginate: {
+                        sFirst: "", 
+                        sLast:  "", 
+                        sNext:  "<?=lang::_('')?>", 
+                        sPrevious:  "<?=lang::_('')?>"
+                    }
+                }
+            });
             
+            $("#mytable_hotels_selected").dataTable({
+                iDisplayLength: 5,
+                sDom: '<"row"<"col-xs-12"f>>t<"row"<"col-xs-12"p>>',
+                aaSorting: [[1,"asc"]], 
+                oLanguage: {
+                    sSearch:                    "<?=lang::_('')?>", 
+                    sInfo:                      "", 
+                    sLengthMenu:                "", 
+                    oPaginate: {
+                        sFirst: "", 
+                        sLast:  "", 
+                        sNext:  "<?=lang::_('')?>", 
+                        sPrevious:  "<?=lang::_('')?>"
+                    }
+                }
+            });
+
+            function addHotel(btn, hotelName, hotelKey) {
+                var tableSelected = $('#mytable_hotels_selected').dataTable();
+                tableSelected.fnAddData([
+                    '<button data-id="'+hotelKey+'" type="button" class="btn btn-danger" onclick="javascript: removeHotel($(this), \''+hotelName+'\', \''+hotelKey+'\');"><i class="fa fa-remove"></i></button>',
+                    hotelName
+                ]);
+                var tableForSelect = $('#mytable_hotels_forselect').dataTable();
+                var nRow = $(btn).closest('tr')[0];
+                var iPos = tableForSelect.fnGetPosition(nRow);
+                tableForSelect.fnDeleteRow(iPos);
+            }
+
+            function removeHotel(btn, hotelName, hotelKey) {
+                var tableSelected = $('#mytable_hotels_selected').dataTable();
+                var nRow = $(btn).closest('tr')[0];
+                var iPos = tableSelected.fnGetPosition(nRow);
+                tableSelected.fnDeleteRow(iPos);
+                tableForSelect = $('#mytable_hotels_forselect').dataTable();
+                tableForSelect.fnAddData([
+                    hotelName, 
+                    '<button data-id="'+hotelKey+'" type="button" class="btn btn-success" onclick="javascript: addHotel($(this), \''+hotelName+'\', \''+hotelKey+'\');"><i class="fa fa-plus"></i></button>'
+                ]);
+            }
+
             $(".sparkline").each(function () {
             var $this = $(this);
             $this.sparkline('html', $this.data());

+ 42 - 299
application/views/admin_orders.php

@@ -3,105 +3,69 @@
 <div class="content-wrapper">
     <section class="content-header">
         <h1>
-            <?=lang::_('Megrendelések')?>
-            <small><?=lang::_('Megrendelések kezelése')?></small>
+            <?=lang::_('Orders')?>
+            <small><?=lang::_('Manage orders')?></small>
         </h1>
         <ol class="breadcrumb">
             <li><a href="/admin"><i class="fa fa-users"></i> <?=lang::_('Admin')?></a></li>
-            <li class="active"><?=lang::_('Megrendelések kezelése')?></li>
+            <li class="active"><?=lang::_('Orders')?></li>
         </ol>
     </section>
     
     <section class="content">
-<!--        <div class="row">
-            
-            <div class="col-lg-12">
-
-                <div class="box box-primary" id="dashboard">
-                    <div class="box-header with-border">
-                        <h3 class="box-title"><?=lang::_('Dashboard')?></h3>
-                        <div class="box-tools pull-right">
-                            <?php if ($active_item->user_id!='' || $_REQUEST['new']=='true') : ?>
-                            <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-plus"></i></button>
-                            <?php else : ?>
-                            <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
-                            <?php endif; ?>
-                        </div>
-                    </div>
-                    <div class="box-body">
-                    <div class="row">
-                        <div class="col-lg-12">
-                            <div class="box box-primary" style="min-height: 382px;">
-                                <div class="box-header ui-sortable-handle" style="cursor: move;">
-                                    <i class="ion ion-clipboard"></i>
-                                    <h3 class="box-title"><?=lang::_('Info')?></h3>
-                                </div>
-                                <div class="box-body chart-responsive">
-                                    <div class="chart" id="userchart" style="height: 300px;"></div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-
-                    </div>
-                </div>
-            </div>
-        </div>-->
-
-        <div class="box box-info <?php if ($active_item->order_id!='' || $_REQUEST['new']=='true') echo 'collapsed-box'; ?>">
+        <div class="box box-info">
             <div class="box-header with-border">
-                <h3 class="box-title"><?=lang::_('Megrendelések listája')?></h3>
-                <div class="box-tools pull-right">
-                    <?php if ($active_item->order_id!='' || $_REQUEST['new']=='true') : ?>
-                    <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-plus"></i></button>
-                    <?php else : ?>
-                    <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
-                    <?php endif; ?>
-                </div>
+                <h3 class="box-title"><?=lang::_('Orders list')?></h3>
             </div>
             <div class="box-body" style="overflow-x: auto;">
-                <div class="row" style="min-width: 1100px;"><div class="col-lg-12">
+                <div class="row" style="min-width: 100%"><div class="col-lg-12">
                     <table class="table table-bordered table-hover dataTable table-striped data-list">
                         <thead>
                             <tr>
-                                <th><?=lang::_('Azonosító')?></th>
-                                <th style="width: 150px;"><?=lang::_('Szállítási név')?></th>
-                                <th style="width: 250px;"><?=lang::_('Szállítási cím')?></th>
-                                <th style="width: 150px;"><?=lang::_('Számlázási név')?></th>
-                                <th style="width: 250px;"><?=lang::_('Számlázási cím')?></th>
+                                <th><?=lang::_('Date')?></th>
+                                <th><?=lang::_('Order ID')?></th>
+                                <th><?=lang::_('Hotel')?></th>
+                                <th><?=lang::_('Sales')?></th>
+                                <th><?=lang::_('First name')?></th>
+                                <th><?=lang::_('Last name')?></th>
                                 <th><?=lang::_('Email')?></th>
-                                <th><?=lang::_('Telefon')?></th>
-                                <th><?=lang::_('Típus')?></th>
-                                <th style="width: 150px;">&nbsp;</th>
-                                <th><?=lang::_('Állapot')?></th>
+                                <th><?=lang::_('Phone')?></th>
+                                <th><?=lang::_('Country')?></th>
+                                <th><?=lang::_('City')?></th>
+                                <th><?=lang::_('ZIP')?></th>
+                                <th><?=lang::_('Street')?></th>
+                                <th><?=lang::_('House number')?></th>
+                                <th><?=lang::_('Transaction ID')?></th>
+                                <th><?=lang::_('Status')?></th>
+                                <th><?=lang::_('IP')?></th>
+                                <th><?=lang::_('Browser')?></th>
+                                <th>&nbsp;</th>
                             </tr>
                         </thead>
                         <tbody>
                             <?php foreach ($orders as $order) : ?>
                             <tr>
-                                <td>A-<?=date('Y')?>-<?=$order->id?></td>
-                                <td><?=$order->vnev?> <?=$order->knev?></td>
-                                <td><?=$order->irsz?>. <?=$order->varos?>, <?=$order->utca?> (<?=$order->hsz?>)</td>
-                                <td><?=$order->bill_vnev?> <?=$order->bill_knev?></td>
-                                <td><?=$order->bill_irsz?>. <?=$order->bill_varos?>, <?=$order->bill_utca?> (<?=$order->bill_hsz?>)</td>
-                                <td><?=$order->email?></td>
-                                <td><?=$order->tel?></td>
-                                <td><?=$order->fizmod?></td>
+                                <td><?=$order->order_date?></td>
+                                <td><?=$order->order_uuid?></td>
+                                <td><?php if ($order->order_hotel !== 'undefined' && $order->order_hotel !== '0') echo $order->order_hotel; ?></td>
+                                <td><?=$order->order_sales?></td>
+                                <td><?=$order->order_customer_fname?></td>
+                                <td><?=$order->order_customer_lname?></td>
+                                <td><?=$order->order_customer_email?></td>
+                                <td><?=$order->order_customer_phone?></td>
+                                <td><?=$order->order_customer_country?></td>
+                                <td><?=$order->order_customer_city?></td>
+                                <td><?=$order->order_customer_zip?></td>
+                                <td><?=$order->order_customer_street?></td>
+                                <td><?=$order->order_customer_house?></td>
+                                <td><?=$order->order_transaction_id?></td>
+                                <td><?=$order->order_auth_code?></td>
+                                <td><?=$order->order_customer_ip?></td>
+                                <td><?=$order->order_customer_browser?></td>
                                 <td>
-                                    <?php if ($order->fizmod=='Banki átutalás') : ?>
-                                    <button title="Díjbekérő megtekintése" type="button" onclick="window.open('http://webshop.rackmester.hu/temp/pdf/invoice_<?=$order->id?>.pdf');" class="btn btn-flat btn-success" style=""><i class="fa fa-file-pdf-o"></i></button>
+                                    <?php if ($order->order_auth_code=='FINISHED') : ?>
+                                    <button title="Printable QR codes" type="button" onclick="window.open('/admin/qrcodes/<?=$order->order_uuid?>');" class="btn btn-flat btn-success" style=""><i class="fa fa-qrcode"></i></button>
                                     <?php endif; ?>
-                                    <button type="button" onclick="window.location='/admin/orders/show/?id=<?=$order->id?>#editor';" class="btn btn-flat btn-warning" style=""><i class="fa fa-eye"></i></button>
-                                    <button type="button" onclick="window.location='/admin/orders/delete/?id=<?=$order->id?>';" class="btn btn-flat btn-danger"><i class="fa fa-trash-o"></i></button>
-                                </td>
-                                <td>
-                                    <select name="state" class="form-control" onchange="javascript: setOrderState('<?=$order->id?>',$(this).val());">
-                                        <option disabled>Rendelés állapota</option>
-                                        <option value="2" <?php if ($order->status=='2') echo 'selected'; ?>>Új megrendelés</option>
-                                        <option value="3" <?php if ($order->status=='3') echo 'selected'; ?>>Fizetve</option>
-                                        <option value="4" <?php if ($order->status=='4') echo 'selected'; ?>>Szállítás alatt</option>
-                                        <option value="5" <?php if ($order->status=='5') echo 'selected'; ?>>Teljesítve</option>
-                                    </select>
                                 </td>
                             </tr>
                             <?php endforeach; ?>
@@ -110,227 +74,6 @@
                 </div></div>
             </div>
         </div>
-        
-        <div class="callout callout-success<?php if (!$error) echo ' message-hide';?>">
-            <button type="button" class="close" onclick="javascript: $(this).parent('div').fadeOut('fast');">×</button>
-            <h4><i class="fa fa-check"></i>&nbsp;&nbsp;<?=lang::_('Yep, successfully saved!')?></h4>
-            <p><?=lang::_('The given informations stored in database')?></p>
-        </div>
-        
-        <?php if ($active_item->id!='' || $_REQUEST['new']=='true') : ?>
-        <div id="editor"></div>
-        <form role="form" id="orderEditor" action="#" method="post">
-        <div class="box box-info" id="editor_form">
-            <div class="box-header with-border">
-                <h3 class="box-title"><?=lang::_('Megrendelés részletei')?></h3>
-                <div class="box-tools pull-right">
-                    <?php if ($_REQUEST['from']=='dashboard') : ?>
-                    <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-plus"></i></button>
-                    <?php else : ?>
-                    <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
-                    <?php endif; ?>
-                </div>
-            </div>
-            <div class="box-body">
-                    <div class="row">
-                        <div class="col-lg-6">
-                            <h4>Szállítási adatok</h4>
-                            <div class="form-group">
-                                <label for="vnev"><?=lang::_('First name')?>: </label>
-                                <input disabled type="text" name="vnev" value="<?=$active_item->vnev?>" class="form-control" id="vnev" data-validate="true" />
-                            </div>
-                            <div class="form-group">
-                                <label for="knev"><?=lang::_('Last name')?>: </label>
-                                <input disabled type="text" name="knev" value="<?=$active_item->knev?>" class="form-control" id="knev" data-validate="true" />
-                            </div>
-                            <div class="form-group">
-                                <label for="cegnev"><?=lang::_('Cégnév')?>: </label>
-                                <input disabled type="text" name="cegnev" value="<?=$active_item->cegnev?>" class="form-control" id="cegnev" />
-                            </div>
-                            <div class="form-group">
-                                <label for="utca"><?=lang::_('Szállítási cím')?>: </label>
-                                <input disabled type="text" name="utca" value="<?=$active_item->utca?>" class="form-control" id="utca" />
-                            </div>
-                            <div class="form-group">
-                                <label for="hsz"><?=lang::_('Szállítási információ')?>: </label>
-                                <input disabled type="text" name="hsz" value="<?=$active_item->hsz?>" class="form-control" id="hsz" />
-                            </div>
-                            <div class="form-group">
-                                <label for="varos"><?=lang::_('Város')?>: </label>
-                                <input type="text" name="varos" value="<?=$active_item->varos?>" class="form-control" id="varos" />
-                            </div>
-                            <div class="form-group">
-                                <label for="irsz"><?=lang::_('Irányítószám')?>: </label>
-                                <input disabled type="text" name="irsz" value="<?=$active_item->irsz?>" class="form-control" id="irsz" />
-                            </div>
-                        </div>
-                        <div class="col-lg-6">
-                            <h4>Számlázási adatok</h4>
-                            <div class="form-group">
-                                <label for="bill_vnev"><?=lang::_('First name')?>: </label>
-                                <input disabled type="text" name="bill_vnev" value="<?=$active_item->bill_vnev?>" class="form-control" id="bill_vnev" data-validate="true" />
-                            </div>
-                            <div class="form-group">
-                                <label for="bill_knev"><?=lang::_('Last name')?>: </label>
-                                <input disabled type="text" name="bill_knev" value="<?=$active_item->bill_knev?>" class="form-control" id="bill_knev" data-validate="true" />
-                            </div>
-                            <div class="form-group">
-                                <label for="bill_cegnev"><?=lang::_('Cégnév')?>: </label>
-                                <input disabled type="text" name="bill_cegnev" value="<?=$active_item->bill_cegnev?>" class="form-control" id="bill_cegnev" />
-                            </div>
-                            <div class="form-group">
-                                <label for="bill_utca"><?=lang::_('Számlázási cím')?>: </label>
-                                <input disabled type="text" name="bill_utca" value="<?=$active_item->bill_utca?>" class="form-control" id="bill_utca" />
-                            </div>
-                            <div class="form-group">
-                                <label for="bill_hsz"><?=lang::_('Számlázási cím információ')?>: </label>
-                                <input disabled type="text" name="bill_hsz" value="<?=$active_item->bill_hsz?>" class="form-control" id="bill_hsz" />
-                            </div>
-                            <div class="form-group">
-                                <label for="bill_varos"><?=lang::_('Város')?>: </label>
-                                <input disabled type="text" name="bill_varos" value="<?=$active_item->bill_varos?>" class="form-control" id="bill_varos" />
-                            </div>
-                            <div class="form-group">
-                                <label for="bill_irsz"><?=lang::_('Irányítószám')?>: </label>
-                                <input disabled type="text" name="bill_irsz" value="<?=$active_item->bill_irsz?>" class="form-control" id="bill_irsz" />
-                            </div>
-                        </div>
-                    </div>
-                    
-                    <div class="row">
-                        <div class="col-lg-12"><hr><h4>Kapcsolat</h4></div>
-                        <div class="col-lg-4">
-                                <div class="form-group">
-                                    <label for="email"><?=lang::_('Email')?>: </label>
-                                    <input disabled type="text" name="email" value="<?=$active_item->email?>" class="form-control" id="email" data-validate="true" />
-                                </div>
-                        </div>
-                        <div class="col-lg-4">
-                                <div class="form-group">
-                                    <label for="tel"><?=lang::_('Phone')?>: </label>
-                                    <input disabled type="text" name="tel" value="<?=$active_item->tel?>" class="form-control" id="tel" />
-                                </div>
-                        </div>
-                        <div class="col-lg-4">
-                                <div class="form-group">
-                                    <label for="fizmod"><?=lang::_('Fizetési mód')?>: </label>
-                                    <input disabled type="text" name="fizmod" value="<?=$active_item->fizmod?>" class="form-control" id="fizmod" />
-                                </div>
-                        </div>
-                        <div class="col-lg-12">
-                                <div class="form-group">
-                                    <label for="megjegyzes"><?=lang::_('Megjegyzés')?>: </label>
-                                    <textarea disabled name="megjegyzes" id="megjegyzes" class="form-control"><?=$active_item->megjegyzes?></textarea>
-                                </div>
-                        </div>
-                    </div>
-                
-                    <div class="row">
-                        <div class="col-lg-12">
-                            <h4>Kosár tartalma</h4>
-                            <table class="table table-bordered table-hover dataTable table-striped data-list">
-                                <thead>
-                                    <tr>
-                                        <th>Termék neve</th>
-                                        <th>Cikkszám</th>
-                                        <th>Egységár</th>
-                                        <th>Darab</th>
-                                        <th>Összeg</th>
-                                        <th>&nbsp;</th>
-                                    </tr>
-                                </thead>
-                                <tbody>
-                                    <?php foreach ($cart as $item) : ?>
-                                    <tr>
-                                        <td><?=$item->name?></td>
-                                        <td><?=$item->part_no?></td>
-                                        <td><?=$item->price?>,- &euro;</td>
-                                        <td><?=$item->qnt?></td>
-                                        <td><strong><?=$item->price*$item->qnt?>,- &euro;</strong></td>
-                                        <td><button type="button" onclick="window.location='/admin/orders/deletecart/?id=<?=$item->order_id?>&cid=<?=$item->cart_id?>';" class="btn btn-flat btn-danger"><i class="fa fa-trash-o"></i></button></td>
-                                    </tr>
-                                    <?php endforeach; ?>
-                                </tbody>
-                            </table>
-                        </div>
-                    </div>
-            </div>
-        </div>
-        <?php endif; ?>
-
-        <?php if ($active_item->user_id!='') : ?>
-        <div id="todoz"></div>
-        <div class="box box-info">
-            <div class="box-header with-border">
-                <h3 class="box-title"><?=lang::_('To Do list')?></h3>
-                <div class="box-tools pull-right">
-                    <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
-                </div>
-            </div>
-            <div class="box-body">
-                <div class="row">
-                    <div class="col-lg-12">
-                        <?php $todo_item = admin_utils::get_todo_object($_REQUEST['todo_id'])?>
-                        <table class="table">
-                            <tr>
-                                <td style="text-align: left;"><textarea class="form-control" id="todo_text" name="todo_text" rows="3" placeholder="<?=lang::_('Szöveges leírás...')?>"><?=$todo_item->todo_text?></textarea></td>
-                            </tr>
-                            <tr>
-                                <td>
-                                    <input id="todo_date" type="text" class="form-control" name="todo_date" value="<?=$todo_item->todo_date?>" placeholder="<?=lang::_('Teendőhöz válassza ki a teendő időpontját!')?>" />
-                                </td>
-                            </tr>
-                            <tr>
-                                <td style="text-align: left;">
-                                    <button type="button" class="btn btn-success" onclick="save_todo('user',<?=$active_item->user_id?>,'<?=$todo_item->todo_id?>')">Mentés</button>
-                                </td>
-                            </tr>
-                            <tr>
-                                <td style="text-align: left;">
-                                    <strong><?=lang::_('Active To Do list')?></strong>
-                                    <br /> 
-                                    <input type="radio" value="all" name="szuro" class="szuro" checked="true"> <?=lang::_('Összes')?>&nbsp;&nbsp;&nbsp;<input type="radio" value="todo" name="szuro" class="szuro"> <?=lang::_('Teendő')?>&nbsp;&nbsp;&nbsp;<input type="radio" value="comment" name="szuro" class="szuro"> <?=lang::_('Megjegyzés')?>
-                                </td>
-                            </tr>
-                            <tr><td>
-                            <?php $todos = admin_utils::get_todos(false,$active_item->user_id,0,100,'todo_create_date','desc'); ?>
-                            <table class="table">
-                                <thead>
-                                    <tr>
-                                        <th style="text-align: left;"><?=lang::_('Todo date')?></th>
-                                        <th style="text-align: left;"><?=lang::_('Create date')?></th>
-                                        <th style="text-align: left;"><?=lang::_('Todo text')?></th>
-                                        <th style="text-align: left;">&nbsp;</th>
-                                    </tr>
-                                </thead>
-                                <tbody>
-                                    <?php foreach ($todos as $todo) : ?>
-                                    <?php if ($todo->todo_date!='') : ?>
-                                    <tr class="all todo">
-                                    <?php else : ?>
-                                    <tr class="all comment">
-                                    <?php endif; ?>
-                                        <td style="text-align: left;"><?=$todo->todo_date?></td>
-                                        <td style="text-align: left;"><?=$todo->todo_create_date?></td>
-                                        <td style="text-align: left;"><?=$todo->todo_text?></td>
-                                        <td style="text-align: left;">
-                                            <button type="button" class="btn btn-flat btn-xs btn-warning" onclick="javascript: window.location='/admin/users/show/?id=<?=$active_item->user_id?>&todo_id=<?=$todo->todo_id?>#editor';"><i class="fa fa-pencil"></i></button>
-                                            &nbsp;&nbsp;&nbsp;&nbsp;
-                                            <button type="button" class="btn btn-flat btn-xs btn-danger" onclick="delete_todo('<?=$todo->todo_id?>')"><i class="fa fa-trash"></i></button>
-                                        </td>
-                                    </tr>
-                                    <?php endforeach; ?>
-                                </tbody>
-                            </table>
-                            </td></tr>                                                        
-                        </table>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <?php endif; ?>
-
-        </form>
     </section>
 </div>
 

+ 57 - 0
application/views/admin_qrcodes.php

@@ -0,0 +1,57 @@
+<html>
+    <head>
+        <!-- Bootstrap 3.3.2 -->
+        <link href="<?php echo BASE_URL; ?>static/bootstrap/css/bootstrap.css" rel="stylesheet" type="text/css" />    
+        <!-- FontAwesome 4.3.0 -->
+        <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
+
+        <title>QR codes</title>
+        <style>
+            body {
+                font-family: Arial, sans-serif;
+                padding: 20px;
+            }
+            .qr-codes {
+                display: flex;
+                flex-wrap: wrap;
+                gap: 20px;
+            }
+
+            .qr-code {
+                width: 33%;
+                display: block;
+                margin: 10px;
+                text-align: center;
+            }
+            .qr-code img {
+                width: 100%;
+                height: auto;
+            }
+            .qr-code p {
+                margin-top: 5px;
+                font-size: 14px;
+            }
+
+            @media print {
+                .btn {
+                    display: none;
+                }
+                .qr-code {
+                    width: 33%;
+                    page-break-inside: avoid;
+                }
+            }
+        </style>
+    </head>
+    <body>
+        <button type="button" onclick="window.print();" class="btn btn-flat btn-success" style="margin-bottom: 20px;"><i class="fa fa-print"></i> Print</button>
+        <div class="qr-codes">
+            <?php foreach ($tickets as $ticket) : ?>
+            <div class="qr-code">
+                <img src="/qrcode.php?s=qr&d=<?=$ticket['id']?>" alt="QR code 1">
+                <p><?=$ticket['label']?></p>
+            </div>
+            <?php endforeach; ?>
+        </div>
+    </body>
+</html>

+ 22 - 2
application/views/monitoring_view.php

@@ -28,16 +28,35 @@
                             <tr>
                                 <th><?=lang::_('Hotel name')?></th>
                                 <th><?=lang::_('Hotel URL')?></th>
+                                <th><?=lang::_('Partner')?></th>
                                 <th>&nbsp;</th>
                             </tr>
                         </thead>
                         <tbody>
+                            <?php
+                                if ($_SESSION['admin_user']->admin_dashboard != '' && $_SESSION['admin_user']->admin_dashboard != 'N;') {
+                                    $avaiableHotels = unserialize($_SESSION['admin_user']->admin_dashboard);
+                                    if ($avaiableHotels === false) {
+                                        $avaiableHotels = [];
+                                    }
+                                    foreach ($hotels as $hotel) {
+                                        if (in_array($hotel['key'], $avaiableHotels)) {
+                                            $filteredHotels[] = $hotel;
+                                        }
+                                    }
+                                    $hotels = $filteredHotels;
+                                }
+                                else {
+                                    $avaiableHotels = [];
+                                }
+                            ?>
                             <?php foreach ($hotels as $hotel) : ?>
                             <tr>
                                 <td><?=$hotel['value']?></td>
-                                <td>https://openshop.urbanms.hu/hotel/<?=$hotel['key']?></td>
+                                <td>https://citywebshop.hu/hotel/<?=$hotel['key']?></td>
+                                <td><?=$hotel['partner'] == '1' ? 'contracted' : ''?></td>
                                 <td>
-                                    <button type="button" onclick="window.open('/qrcode.php?s=qr&d=https://openshop.urbanms.hu/hotel/<?=$hotel['key']?>&sf=8')" class="btn btn-flat btn-xs btn-success"><i class="fa fa-qrcode"></i></button>
+                                    <button type="button" onclick="window.open('/qrcode.php?s=qr&d=https://citywebshop.hu/hotel/<?=$hotel['key']?>&sf=8')" class="btn btn-flat btn-xs btn-success"><i class="fa fa-qrcode"></i></button>
                                 </td>
                             </tr>
                             <?php endforeach; ?>
@@ -46,6 +65,7 @@
                             <tr>
                                 <th><?=lang::_('Hotel name')?></th>
                                 <th><?=lang::_('Hotel URL')?></th>
+                                <th><?=lang::_('Partner')?></th>
                                 <th>&nbsp;</th>
                             </tr>
                         </tfoot>

+ 2 - 1
exportdata.php

@@ -9,7 +9,8 @@ define('DB_USER','openws');
 define('DB_PW','5jqPQEPGUihnY5XM6oPR');
 define('DB_DBNAME','openws');
 
-const API = 'https://szollosil.bbus.smbinfo.hu/api/index.php';
+//const API = 'https://szollosil.bbus.smbinfo.hu/api/index.php';
+const API = 'https://hoponticket.com/api/index.php';
 const API_KEY = 'HwHoW92ywx6w2L5h4lV2QHZpOr3q84AM';
 
 function getHotelIdByHash($hash, $options) {

+ 57 - 0
static/js/admin_functions.js

@@ -59,6 +59,61 @@ function validateForm(frm,cropper,cropper2) {
 }
 
 
+function validateUser(frm,cropper,cropper2) {
+    var inputError = false;
+    var selector = frm+' input[data-validate]';
+    
+    $(selector).each(function() {
+        if ($(this).val()=='') {
+            inputError = true;
+            $(this).addClass('field-error');
+        }
+        else {
+            $(this).removeClass('field-error');
+        }
+    });
+
+    if ($('#user_pass1').val()!='') {
+        if ($('#user_pass1').val()!='' && $('#user_pass2').val()=='') {
+            $('#user_pass1').addClass('field-error');
+            $('#user_pass2').addClass('field-error');
+            inputError = true;
+        }
+        else {
+            $('#user_pass1').removeClass('field-error');
+            $('#user_pass2').removeClass('field-error');
+        }
+    }
+    
+    if (!inputError) {
+        var tableSelected = $('#mytable_hotels_selected').dataTable();
+        var data = tableSelected.fnGetData();   // array of rows
+        var names = [];
+        var id = '';
+
+        for (var i = 0; i < data.length; i++) {
+            console.log(data[i][0]);
+            id = $(data[i][0]).attr('data-id');
+            names.push(id);
+        }
+    
+        $('#selectedHotels').val(names);
+    
+        /*if (cropper!=='' && cropper!==null) {
+            var imageData = $(cropper).cropit('export');
+            if (imageData) $('#tempContainer').val(imageData);
+        }
+
+        if (cropper2!=='' && cropper2!==null) {
+            var imageData2 = $(cropper2).cropit('export');
+            if (imageData2) $('#tempContainer2').val(imageData2);
+        }*/
+        
+        $(frm).submit();
+    }
+}
+
+
 function setModuleRoleStatus(roleID,moduleID) {
     if (roleID!=='' && moduleID!=='') {
         var request = {
@@ -1733,6 +1788,8 @@ $(document).ready(function() {
     $('#mytable_s2').wrap('<div style="overflow-x: scroll;" id="scroller"></div>');
     $('#mytable_s3').wrap('<div style="overflow-x: scroll;" id="scroller"></div>');
     $('#mytable_s4').wrap('<div style="overflow-x: scroll;" id="scroller"></div>');
+    //$('#mytable_hotels_forselect').wrap('<div style="overflow-x: scroll;" id="scroller"></div>');
+    //$('#mytable_hotels_selected').wrap('<div style="overflow-x: scroll;" id="scroller"></div>');
     
 
     $('.main-header').swipe({