File: /home/artinside/www/lhh/source/App/Admin/Envelopador.php
<?php
namespace Source\App\Admin;
use Source\Models\Envelopadores;
use Source\Support\Pager;
use Source\Support\Thumb;
use Source\Support\Upload;
/**
* Class Envelopador
* @package Source\App\Admin
*/
class Envelopador extends Admin
{
/**
* envelopadores constructor.
*/
public function __construct($router)
{
parent::__construct();
$this->view->addData("router", $router);
}
/**
* @param array|null $data
*/
public function home(?array $data): void
{
//search redirect
if (!empty($data["s"])) {
$s = str_search($data["s"]);
echo json_encode(["redirect" => url("/admin/envelopadores/home/{$s}/1")]);
return;
}
$search = null;
$envelopadores = (new Envelopadores())->find();
if (!empty($data["search"]) && str_search($data["search"]) != "all") {
$search = str_search($data["search"]);
$envelopadores = (new Envelopadores())->find("name LIKE '%$search%'");
if (!$envelopadores->count()) {
$this->message->info("Sua pesquisa não retornou resultados")->flash();
redirect("/admin/envelopadores/home");
}
}
$all = ($search ?? "all");
$pager = new Pager(url("/admin/envelopadores/home/{$all}/"));
$pager->pager($envelopadores->count(), 12, (!empty($data["page"]) ? $data["page"] : 1));
$head = $this->seo->render(
CONF_SITE_NAME . " | Usuários",
CONF_SITE_DESC,
url("/admin"),
url("/admin/assets/images/image.jpg"),
false
);
echo $this->view->render("widgets/envelopadores/home", [
"app" => "envelopadores/home",
"head" => $head,
"search" => $search,
"envelopadores" => $envelopadores->order("name")->limit($pager->limit())->offset($pager->offset())->fetch(true),
"paginator" => $pager->render()
]);
}
/**
* @param array|null $data
* @throws \Exception
*/
public function envelopador(?array $data): void
{
//create
if (!empty($data["action"]) && $data["action"] == "create") {
$data = filter_var_array($data, FILTER_SANITIZE_STRIPPED);
$create = new Envelopadores();
$create->name = $data["name"];
$create->email = $data["email"];
$create->region = str_replace([" ", " ", " "], "", $data["region"]);
$create->status = $data["status"];
$create->description = $data["description"];
$create->phone1 = $data["phone1"];
$create->phone2 = $data["phone2"];
$create->instagram = $data["instagram"];
$create->facebook = $data["facebook"];
//upload photo
if (!empty($_FILES["photo"])) {
$files = $_FILES["photo"];
$upload = new Upload();
$image = $upload->image($files, $create->name, 600);
if (!$image) {
$json["message"] = $upload->message()->render();
echo json_encode($json);
return;
}
$create->photo = $image;
}
if (!$create->save()) {
$json["message"] = $create->message()->render();
echo json_encode($json);
return;
}
$this->message->success("Envelopador cadastrado com sucesso...")->flash();
$json["redirect"] = url("/admin/envelopadores/envelopador/{$create->id}");
echo json_encode($json);
return;
}
//update
if (!empty($data["action"]) && $data["action"] == "update") {
$data = filter_var_array($data, FILTER_SANITIZE_STRIPPED);
$update = (new Envelopadores())->findById($data["id"]);
if (!$update) {
$this->message->error("Você tentou gerenciar um envelopador que não existe")->flash();
echo json_encode(["redirect" => url("/admin/envelopadores/home")]);
return;
}
$update->name = $data["name"];
$update->email = $data["email"];
$update->region = str_replace([" ", " ", " "], "", $data["region"]);
$update->status = $data["status"];
$update->description = $data["description"];
$update->phone1 = $data["phone1"];
$update->phone2 = $data["phone2"];
$update->instagram = $data["instagram"];
$update->facebook = $data["facebook"];
//upload photo
if (!empty($_FILES["photo"])) {
if ($update->photo && file_exists(__DIR__ . "/../../../" . CONF_UPLOAD_DIR . "/{$update->photo}")) {
unlink(__DIR__ . "/../../../" . CONF_UPLOAD_DIR . "/{$update->photo}");
(new Thumb())->flush($update->photo);
}
$files = $_FILES["photo"];
$upload = new Upload();
$image = $upload->image($files, $update->name, 600);
if (!$image) {
$json["message"] = $upload->message()->render();
echo json_encode($json);
return;
}
$update->photo = $image;
}
if (!$update->save()) {
$json["message"] = $update->message()->render();
echo json_encode($json);
return;
}
$this->message->success("Envelopador atualizado com sucesso...")->flash();
echo json_encode(["redirect" => url("/admin/envelopadores/home")]);
return;
}
//delete
if (!empty($data["action"]) && $data["action"] == "delete") {
$data = filter_var_array($data, FILTER_SANITIZE_STRIPPED);
$delete = (new Envelopadores())->findById($data["id"]);
if (!$delete) {
$this->message->error("Você tentnou deletar um usuário que não existe")->flash();
echo json_encode(["redirect" => url("/admin/envelopadores/home")]);
return;
}
if ($delete->photo && file_exists(__DIR__ . "/../../../" . CONF_UPLOAD_DIR . "/{$delete->photo}")) {
unlink(__DIR__ . "/../../../" . CONF_UPLOAD_DIR . "/{$delete->photo}");
(new Thumb())->flush($delete->photo);
}
$delete->destroy();
$this->message->success("O usuário foi excluído com sucesso...")->flash();
echo json_encode(["redirect" => url("/admin/envelopadores/home")]);
return;
}
$edit = null;
if (!empty($data["id"])) {
$envelopadorId = filter_var($data["id"], FILTER_VALIDATE_INT);
$edit = (new Envelopadores())->findById($envelopadorId);
}
$head = $this->seo->render(
CONF_SITE_NAME . " | " . ($edit ? "Perfil de {$edit->name}" : "Novo Envelopador"),
CONF_SITE_DESC,
url("/admin"),
url("/admin/assets/images/image.jpg"),
false
);
echo $this->view->render("widgets/envelopadores/envelopador", [
"app" => "envelopadores/envelopador",
"head" => $head,
"envelopador" => $edit
]);
}
}