site-proximo/classes/zapetteHandler.php
2020-02-25 16:20:56 +01:00

121 lines
3.1 KiB
PHP

<?php
require_once 'dao.php';
class ZapetteHandler
{
private $valid_actions = ["scan", "validate",];
private $action;
private $data;
private $given_password;
private $dao;
private $password;
private $responseArray = array(
"status" => 0,
"message" => "Success",
"data" => "",
);
public function __construct($post)
{
$this->read_password();
$this->given_password = $this->get_password($post);
$this->action = $this->get_action($post);
$this->data = $this->get_data($post);
$this->dao = new Dao();
}
public function do_action()
{
$result = "";
if ($this->is_password_valid()) {
if ($this->action == "scan") {
$result = $this->get_scanned_article();
if (sizeof($result) == 0)
$this->setUnknownCodeErrorResponse();
} else if ($this->action == "validate") {
$result = $this->update_stock();
if (!$result)
$this->setUpdateStockErrorResponse();
}
} else {
$this->setWrongPasswordErrorResponse();
}
$this->responseArray["data"] = $result;
return $this->responseArray;
}
private function read_password() {
$real_path = __DIR__ . "/.htpasszapette";
$fp = fopen($real_path, 'r');
$this->password = trim(fread($fp, filesize($real_path)));
fclose($fp);
}
private function is_password_valid() {
return $this->given_password == $this->password;
}
private function get_scanned_article() {
$article = [];
if ($this->data != "") {
$article = $this->dao->get_article_of_code($this->data);
}
return $article;
}
private function update_stock() {
$result = false;
if ($this->data != "") {
foreach ($this->data as $row) {
$result = $this->dao->update_article_stock($row["id"], $row["quantity"]);
}
}
return $result;
}
function setWrongPasswordErrorResponse()
{
$this->responseArray["status"] = 1;
$this->responseArray["message"] = "Error: Wrong password";
}
function setUnknownCodeErrorResponse()
{
$this->responseArray["status"] = 2;
$this->responseArray["message"] = "Error: Unknown code scanned";
}
function setUpdateStockErrorResponse()
{
$this->responseArray["status"] = 3;
$this->responseArray["message"] = "Error: Impossible to update stock";
}
private function get_action($inputData)
{
if (!in_array($inputData["action"], $this->valid_actions))
return "";
else
return $inputData["action"];
}
private function get_data($inputData)
{
if ($inputData["data"] == null)
return "";
else
return $inputData["data"];
}
private function get_password($inputData)
{
if ($inputData["password"] == null)
return "";
else
return $inputData["password"];
}
}