Browse Source

Alpha version of new namespace design

Giancarlo Voci 8 years ago
parent
commit
74b2d124c9

+ 0 - 25
src/Configuration.php

@@ -1,25 +0,0 @@
-<?php
-/**
- * @author Open Mind
- * @date 11/06/2018
- * @time 12:10
- */
-
-class Configuration
-{
-  private $options = [
-    'templates' => [
-      '31' => [1004, 1026],
-      '79' => ['tplxslt'],
-    ],
-    'barcode_missing' => 5
-  ];
-
-  /**
-   * Configuration constructor.
-   */
-  public function __construct()
-  {
-  }
-}
- 

+ 235 - 0
src/Customers/Lamborghini/Pages.php

@@ -0,0 +1,235 @@
+<?php
+/**
+ * @author Open Mind
+ * @date 10/04/2018
+ * @time 09:43
+ */
+
+namespace Customers\Lamborghini;
+
+use OpenMind\Labeling\FindBoxCoreSystem;
+
+class Pages extends \OpenMind\Web\BaseController
+{
+  private $CORE_SETTINGS;
+  private $findBoxCore;
+
+  public function __construct($f3)
+  {
+    parent::__construct($f3);
+    $this->CORE_SETTINGS = $f3->get('CORE.fb');
+    $this->findBoxCore = new FindBoxCoreSystem(...array_values($this->CORE_SETTINGS));
+  }
+
+  public function Login($f3)
+  {
+    if (!is_null($this->userId)) {
+      $f3->reroute('/homemenu');
+      return;
+    } else
+      $f3->set('CONTENT', 'login.tpl');
+
+    echo \Template::instance()->render('masterpage.tpl');
+  }
+
+  public function HomeMenu($f3)
+  {
+    $f3->set('CONTENT', 'homemenu.tpl');
+    echo \Template::instance()->render('masterpage.tpl');
+  }
+
+  public function Pick2Light(object $f3, array $args)
+  {
+    $stepValues = [];
+    if ($args['step'] == 1) {
+      $f3->clear('COOKIE.p2l');
+      $f3->clear('COOKIE.consegna');
+      $f3->clear('COOKIE.labelid');
+    } else {
+      $stepValues = array_map('strtoupper', $this->getSanitizedPostRequest());
+      if (count($stepValues) == 0)
+        $stepValues = json_decode($f3->get('COOKIE.p2l'), true);
+    }
+
+    switch ($args['step']) {
+      case 3:
+        $distinta = new Distinta($f3);
+        $distinta->CleanDistintaTable();
+        $distinta->CopyDistinta($stepValues['consegna']);
+
+        $label = new \SmartESL($this->findBoxCore, [$stepValues['labelid']]);
+        $label->BlinkSpecial(0, 1, 1000, 8, 0);
+
+        $distinta->SaveProductsToFindBox('3', true, 50); // prende soltanto i primi 3 dalla tabella copia delle distinte
+
+        $f3->set('COOKIE.p2l', json_encode($stepValues));
+        $f3->set('COOKIE.consegna', $stepValues['consegna']);
+        $f3->set('COOKIE.labelid', $stepValues['labelid']);
+        $f3->reroute("/pick2light/4");
+        return;
+        break;
+      case 4:
+        $distinta = new Distinta($f3);
+        $distinta->SaveProductsToFindBox('3, 2000', false); // LIMIT 3,1000 perchè i primi 3 sono stati fatti nel case 3
+        break;
+      case 5:
+        $datiCommessa['consegna'] = $f3->get('COOKIE.consegna');
+        $datiCommessa['labelid'] = $f3->get('COOKIE.labelid');
+        $distinta = new Distinta($f3);
+        $pickedBarcode = $f3->get('POST.pickedlabelid');
+        // Decrease quantity and blink label
+        if ($pickedBarcode != null) {
+          // ANOMALIA
+          if ($pickedBarcode == $f3->get('BARCODE_COMMANDS.ANOMALIACODE')) {
+            // <Se è stato ancora passato un codice anomalia, cancella l'operazione di anomalia in corso
+            if (isset($stepValues['anomalia']))
+              unset($stepValues['anomalia']);
+            else
+              $f3->set('ANOMALIA', 'In attesa del codice anomalia');
+            //>
+          } else if ($stepValues['anomalia']) {
+            if ($distinta->MarkBarcodeAsAnomalia($pickedBarcode))
+              unset($stepValues['anomalia']);
+            else
+              $f3->set('ANOMALIA', 'Codice non trovato!');
+          } else { // E' stato passato un codice
+            $codeFromLabelId = $distinta->GetBarcodeFromLabelId($pickedBarcode);
+            $pickedBarcode = $codeFromLabelId ?? $pickedBarcode;
+            if ($distinta->RemoveQuantity($pickedBarcode)) {
+              // SPEGNE LED ETICHETTA DOPO PICKING
+              $label = new \SmartESL($this->findBoxCore, [$distinta->GetLabelIdFromBarcode($pickedBarcode)]);
+              $label->BlinkOff();
+            } else {
+              $f3->set('INFOTEXT', 'Barcode non riconosciuto o non associato ad alcuna etichetta elettronica');
+              file_put_contents('not_found.log', $pickedBarcode . "\r\n", FILE_APPEND);
+            }
+          }
+        }
+
+        $rowsDistinta = $distinta->getDistinta();
+        $f3->set('PRODUCTS', $rowsDistinta);
+        // End Picking List
+        if (count($rowsDistinta) == 0) {
+          //$distinta->ResetDistintaLabels($datiCommessa['consegna'], $datiCommessa['labelid']);
+          $anomalie = $distinta->getAnomalieFromConsegne($datiCommessa['consegna']);
+          $f3->set('LISTANOMALIE', $anomalie);
+
+          $label = new \SmartESL($this->findBoxCore, [$datiCommessa['labelid']]);
+          $distinta->SaveLabelCarrello($datiCommessa['labelid'], $datiCommessa['labelid'], $datiCommessa['consegna']);
+
+          // Se non ci sono anomalie torna alla homepage
+          if (count($anomalie) == 0) {
+            $f3->reroute('/');
+            return;
+          }
+        } else {
+          // Seleziona le prossime tre etichette
+          foreach($rowsDistinta as $rowDist) {
+            $labelId = $distinta->GetLabelIdFromBarcode($rowDist['barcode']);
+            if ($labelId != null) {
+              $label = new \SmartESL($this->findBoxCore, [$labelId]);
+              // Se è lo stesso barcode di quello appena pickato dall'operatore, non lo blinka di nuovo
+              if ($distinta->GetArticleCount($rowDist['barcode']) > 0) {
+                $label->BlinkSpecial(2, 1, 1000, 20);
+              }
+            }
+          }
+        }
+        break;
+    }
+
+    $f3->set('COOKIE.p2l', json_encode($stepValues));
+
+    $f3->set('DISTINTE', $f3->Get('DB')->exec('SELECT DISTINCT consegna, DATE_FORMAT(data_creazione,"%d/%m/%Y") as data_creazione, time_creazione, destinazione_merci FROM `distinte` d JOIN articles a ON a.materiale=d.barcode ORDER BY data_creazione, time_creazione, destinazione_merci'));
+    $f3->set('STEP', $args['step']);
+    $f3->set('PAGEVALUES', $stepValues);
+
+    $f3->set('CONTENT', 'pick2light.tpl');
+    echo \Template::instance()->render('masterpage.tpl');
+  }
+
+  public function Bind($f3, array $args)
+  {
+    $stepValues = [];
+    if ($args['step'] == 1)
+      $f3->clear('COOKIE.bind');
+    else {
+      $stepValues = array_map('strtoupper', $this->getSanitizedPostRequest());
+      if (count($stepValues) == 0)
+        $stepValues = json_decode($f3->get('COOKIE.p2l'), true);
+    }
+
+    $f3->set('COOKIE.bind', json_encode($stepValues));
+
+    if ($args['step'] == 3) {
+      $this->findBoxCore->Bind($stepValues['labelid'], $stepValues['barcode']);
+      $label = new \SmartESL($this->findBoxCore, [$stepValues['labelid']]);
+
+      if ($stepValues['labelid'] == $stepValues['barcode'])
+        $devType = 79;
+      else
+        $devType = 31;
+      $labelTemplateId = \F3::get("LABELS.TEMPLATES.DT{$devType}");
+
+      $label->Display($labelTemplateId[0], $stepValues['barcode']);
+
+
+      // Reset label carrello if barcode = label id
+      if ($stepValues['labelid'] == $stepValues['barcode']) {
+        $d = new Distinta($f3);
+        $d->ResetLabelCarrello($stepValues['labelid']);
+      } else {
+        $articles = new \DB\SQL\Mapper($this->dbHandle, 'articles');
+        $articles->load("materiale='{$stepValues['barcode']}'");
+
+        if (!$articles->dry()) {
+          $dataFields = array(
+            'tipo_magazzino' => $articles['tipo_magazzino'],
+            'ubicazione' => $articles['ubicazione'],
+            'incc_intr' => $articles['incc_intr']
+          );
+          $dataFields = array_merge($dataFields, array(
+            'quantita_contenitore' => $articles['qta_contenitore'],
+            'quantita_magazzino' => $articles['qta_riordino']
+          ));
+          $this->findBoxCore->SaveProducts($stepValues['barcode'], $articles['descrizione'], $dataFields);
+          if ($devType == 31 && ($articles['qta_contenitore'] == 'NO' || $articles['qta_riordino'] == 'NO'))
+            $pickTemplateId = $labelTemplateId[1];
+          else
+            $pickTemplateId = $labelTemplateId[2];
+
+          $eslData = json_encode($dataFields);
+          $this->dbHandle->exec("DELETE FROM label_bindings WHERE label_id='{$stepValues['labelid']}'");
+          $this->dbHandle->exec("INSERT INTO label_bindings (label_id, barcode, template_id, esl_datafields, descrizione) VALUES ('{$stepValues['labelid']}', '{$stepValues['barcode']}', '{$pickTemplateId}', '{$eslData}', '{$articles['descrizione']}')");
+        }
+      }
+    }
+
+    $f3->set('STEP', $args['step']);
+    $f3->set('CONTENT', 'bind.tpl');
+    $f3->set('AUTOFOCUS' . $args['step'], 'autofocus');
+    echo \Template::instance()->render('masterpage.tpl');
+  }
+
+  public function UnBind($f3, array $args)
+  {
+    $stepValues = array_map('strtoupper', $this->getSanitizedPostRequest());
+    if ($args['step'] == 2) {
+      $success = $this->findBoxCore->UnBind($stepValues['labelid']);
+      if ($success['err'] <> 0) {
+        $f3->set('INFOTEXT', $success['value']);
+      }
+    }
+    $f3->set('STEP', $args['step']);
+    $f3->set('CONTENT', 'unbind.tpl');
+    echo \Template::instance()->render('masterpage.tpl');
+  }
+
+  public function ElencoDistinta($f3)
+  {
+    $distinta = new Distinta($f3);
+    $f3->set('PRODUCTS', $distinta->getDistinte());
+    $f3->set('CONTENT', 'distinta.tpl');
+    echo \Template::instance()->render('masterpage.tpl');
+  }
+}

+ 2 - 0
src/Data/Modulo.php → src/OpenMind/Database/Modulo.php

@@ -5,6 +5,8 @@
  * @time 11:41
  */
 
+namespace OpenMind\Database;
+
 class Modulo
 {
   /**

+ 2 - 0
src/Data/ModuloParts.php → src/OpenMind/Database/ModuloParts.php

@@ -5,6 +5,8 @@
  * @time 11:43
  */
 
+namespace OpenMind\Database;
+
 class ModuloParts
 {
   /**

+ 89 - 0
src/OpenMind/Web/BaseController.php

@@ -0,0 +1,89 @@
+<?php
+/**
+ * @author Open Mind
+ * @date 09/04/2018
+ * @time 16:15
+ */
+
+namespace OpenMind\Web;
+
+class BaseController
+{
+  protected $dbHandle;
+  protected $userId;
+  private $sanitizedPostRequest;
+
+  /**
+   * @return mixed
+   */
+  public function getSanitizedPostRequest()
+  {
+    return $this->sanitizedPostRequest;
+  }
+
+  public function __construct($f3)
+  {
+    $this->sanitizedPostRequest = $f3->clean($f3->get('POST'));
+
+    $this->dbHandle = $f3->get('DB');
+
+    $this->userId = $this->checkLogin($f3->get('COOKIE.username'), $f3->get('COOKIE.password'));
+    $f3->set('USERID', $this->userId);
+
+    if (!is_null($this->userId))
+      return;
+
+    $f3->clear('COOKIE.username');
+    $f3->clear('COOKIE.password');
+    $f3->clear('COOKIE.id');
+
+    if (!in_array($f3->get('PATTERN'), ['/login', '/']))
+      $f3->reroute('/');
+
+    return;
+  }
+
+  /**
+   * Check if login is valid
+   * @param $username
+   * @param $password
+   * @return int|null
+   */
+  private function checkLogin($username, $password): ?int
+  {
+    $accounts = \F3::get('users.PASSWORD');
+    foreach($accounts as $index => $account) {
+      $exist = password_verify("{$username}|{$password}", $account);
+      if ($exist)
+        return $index;
+    }
+    return null;
+  }
+
+  public function Login($f3)
+  {
+    $accountData = $this->getSanitizedPostRequest();
+
+    $userId = $this->checkLogin($accountData['username'], $accountData['password']);
+
+    if (is_null($userId)) {
+      http_response_code(500);
+      echo "Dati di accesso non corretti";
+      return;
+    }
+
+    $f3->set('COOKIE.username', $accountData['username']);
+    $f3->set('COOKIE.password', $accountData['password']);
+    $f3->set('COOKIE.id', $userId);
+    //http_response_code(200);
+    $f3->reroute('/homemenu');
+  }
+
+  public function Logout($f3)
+  {
+    $f3->clear('COOKIE.username');
+    $f3->clear('COOKIE.password');
+    $f3->clear('COOKIE.id');
+    $f3->reroute('/');
+  }
+}