File: //home/artinside/public_html/raquel/source/App/Admin/Enrolments.php
<?php
namespace Source\App\Admin;
use Source\Core\Session;
use Source\Core\View;
use Source\Models\Activity;
use Source\Models\Auth;
use Source\Models\Ecommerce\OrderItens;
use Source\Models\Enrolment;
use Source\Models\Newsletter;
use Source\Support\Email;
use Source\Models\Ecommerce\Orders;
use Source\Support\Pager;
/**
* Class Enrolments
* @package Source\App\Admin
*/
class Enrolments extends Admin
{
/**
* Order constructor.
*/
public function __construct($router)
{
parent::__construct();
$this->view->addData("router", $router);
}
/**
* @param array|null $data
*/
public function newsletter(?array $data): void
{
$newsletter = (new Newsletter())->findById((int)$data['order_id']);
if (!$newsletter) {
redirect("admin/error/404");
}
$origin = 'newsletter';
$activity = (new Activity())->find("item_id = :itemid AND origin = :origin", "itemid={$data['order_id']}&origin={$origin}");
$head = $this->seo->render(
CONF_SITE_NAME . " | Inscrições",
CONF_SITE_DESC,
url("/admin"),
url("/admin/assets/images/image.jpg"),
false
);
echo $this->view->render("widgets/enrolment/newsletter", [
"app" => "enrolment/newsletter",
"head" => $head,
"newsletter" => $newsletter,
"activity" => $activity->order("id DESC")->fetch(true)
]);
}
public function inscription(array $data):void
{
if(isset($data) AND $data["action"] != null){
$data = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRIPPED);
$newsletter = (new Newsletter())->findById($data["id"]);
$newsletter->status = $data["status"];
if (!$newsletter->save()) {
$json["message"] = $newsletter->message()->render();
echo json_encode($json);
return;
}
$json["message"] = $this->message->success("Status alterado com Sucesso")->render();
$json["redirect"] = url("/admin/inscriptions/all");
echo json_encode($json);
return;
}
}
public function activity(array $data):void
{
if(isset($data) AND $data["action"] = "enrolment"){
$data = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRIPPED);
$activity = new Activity();
$activity->activity = $data["activity"];
$activity->origin = $data["action"];
$activity->item_id = $data["item_id"];
$activity->user_id = Auth::user()->id;
$activity->user_name = Auth::user()->fullName();
if (!$activity->save()) {
$json["message"] = $activity->message()->render();
echo json_encode($json);
return;
}
$json["message"] = $this->message->success("Atividade incluída com Sucesso")->render();
$json["reload"] = true;
echo json_encode($json);
return;
}
}
/**
* @param array|null $data
*/
public function enrolments(?array $data): void
{
//search redirect
if (!empty($data["s"])) {
$s = str_search($data["s"]);
echo json_encode(["redirect" => url("/admin/enrolments/all/{$s}")]);
return;
}
if (isset($data["s"]) and $data["s"] == "") {
echo json_encode(["redirect" => url("/admin/enrolments/all/all")]);
return;
}
if (isset($_SESSION["order-date"]) and $_SESSION["order-date"]->starting != "" and $_SESSION["order-date"]->final != "" and $data["type"] == "all") {
$dateQuery = "created_at BETWEEN '{$_SESSION["order-date"]->starting} 00:00:01' AND '{$_SESSION["order-date"]->final} 23:59:59'";
$dateQueryS = "AND e.created_at BETWEEN '{$_SESSION["order-date"]->starting} 00:00:01' AND '{$_SESSION["order-date"]->final} 23:59:59'";
} elseif (isset($_SESSION["order-date"]) and $_SESSION["order-date"]->starting != "" and $_SESSION["order-date"]->final != "") {
$dateQuery = "AND created_at BETWEEN '{$_SESSION["order-date"]->starting} 00:00:01' AND '{$_SESSION["order-date"]->final} 23:59:59'";
$dateQueryS = "AND e.created_at BETWEEN '{$_SESSION["order-date"]->starting} 00:00:01' AND '{$_SESSION["order-date"]->final} 23:59:59'";
} else {
$dateQuery = "";
}
$order = "created_at DESC";
$search = null;
$query = $dateQuery;
$title = "Todas Matrículas";
if ($data["type"] == "waiting") {
$query = "(status = 0) {$dateQuery}";
$title = "Aguardando Cadastro";
}
if ($data["type"] == "confirmed") {
$query = "(status = 1) {$dateQuery}";
$title = "Matrícula Efetuada";
}
$enrolment = (new Enrolment())->find($query);
if (!empty($data["search"]) && str_search($data["search"]) != "all") {
$search = str_search($data["search"]);
$enrolment = (new Enrolment())->fullSelect("SELECT e.*, cl.name FROM enrolments e
INNER JOIN clients cl WHERE e.client_id = cl.id AND (e.id LIKE '%{$search}%' OR cl.name LIKE '%{$search}%') {$dateQueryS}");
if (!$enrolment->count()) {
$this->message->info("Sua pesquisa não retornou resultados")->flash();
redirect("admin/enrolments/{$data["type"]}/all/1");
}
}
$all = ($search ?? "all");
$pager = new Pager(url("/admin/enrolments/{$data["type"]}/{$all}/"));
$pager->pager($enrolment->count(), 20, (!empty($data["page"]) ? $data["page"] : 1));
$head = $this->seo->render(
CONF_SITE_NAME . " | Matrículas",
CONF_SITE_DESC,
url("/admin"),
url("/admin/assets/images/image.jpg"),
false
);
echo $this->view->render("widgets/enrolment/enrolments", [
"app" => "order/order",
"head" => $head,
"enrolment" => $enrolment->order($order)->limit($pager->limit())->offset($pager->offset())->fetch(true),
"paginator" => $pager->render("pagination justify-content-center"),
"search" => $search,
"title" => $title
]);
}
/**
* @param array|null $data
*/
public function inscriptions(?array $data): void
{
//search redirect
if (!empty($data["s"])) {
$s = str_search($data["s"]);
echo json_encode(["redirect" => url("/admin/inscriptions/all/{$s}")]);
return;
}
if (isset($data["s"]) and $data["s"] == "") {
echo json_encode(["redirect" => url("/admin/inscriptions/all/all")]);
return;
}
if (isset($_SESSION["order-date"]) and $_SESSION["order-date"]->starting != "" and $_SESSION["order-date"]->final != "") {
$dateQuery = "AND created_at BETWEEN '{$_SESSION["order-date"]->starting} 00:00:01' AND '{$_SESSION["order-date"]->final} 23:59:59'";
$dateQueryS = "AND created_at BETWEEN '{$_SESSION["order-date"]->starting} 00:00:01' AND '{$_SESSION["order-date"]->final} 23:59:59'";
} else {
$dateQuery = "";
}
$order = "created_at DESC";
$search = null;
$query = $dateQuery;
$title = "Todas Inscrições";
if ($data["type"] == "all") {
$query = "(landing = 'mentoria') {$dateQuery}";
$title = "Aguardando Atendimento";
}
if ($data["type"] == "waiting") {
$query = "(status = 0 AND landing = 'mentoria') {$dateQuery}";
$title = "Aguardando Atendimento";
}
if ($data["type"] == "confirmed") {
$query = "(status = 1 AND landing = 'mentoria') {$dateQuery}";
$title = "Atendimento Finalizado";
}
if ($data["type"] == "current") {
$query = "(status = 2 AND landing = 'mentoria') {$dateQuery}";
$title = "Em Atendimento";
}
$newsletter = (new Newsletter())->find($query);
if (!empty($data["search"]) && str_search($data["search"]) != "all") {
$search = str_search($data["search"]);
$newsletter = (new Newsletter())->find("landing = 'mentoria' AND (name LIKE '%{$search}%' OR email LIKE '%{$search}%') {$dateQueryS}");
if (!$newsletter->count()) {
$this->message->info("Sua pesquisa não retornou resultados")->flash();
redirect("admin/inscriptions/{$data["type"]}/all/1");
}
}
$all = ($search ?? "all");
$pager = new Pager(url("/admin/inscriptions/{$data["type"]}/{$all}/"));
$pager->pager($newsletter->count(), 20, (!empty($data["page"]) ? $data["page"] : 1));
$head = $this->seo->render(
CONF_SITE_NAME . " | Inscrições",
CONF_SITE_DESC,
url("/admin"),
url("/admin/assets/images/image.jpg"),
false
);
echo $this->view->render("widgets/enrolment/inscriptions", [
"app" => "inscriptions/inscriptions",
"head" => $head,
"newsletter" => $newsletter->order($order)->limit($pager->limit())->offset($pager->offset())->fetch(true),
"paginator" => $pager->render("pagination justify-content-center"),
"search" => $search,
"title" => $title
]);
}
public function relatory(array $data): void
{
if ($data["startingDate"] != "" and validateDate($data["startingDate"], "d/m/Y") != true) {
unset($_SESSION["order-date"]);
$json["message"] = $this->message->error("Data Inicial Inválida")->flash();
$json["reload"] = true;
echo json_encode($json);
return;
}
if ($data["finalDate"] != "" and validateDate($data["finalDate"], "d/m/Y") != true) {
unset($_SESSION["order-date"]);
$json["message"] = $this->message->error("Data Final Inválida")->flash();
$json["reload"] = true;
echo json_encode($json);
return;
}
if ($data["startingDate"] == "" or $data["finalDate"] == "") {
unset($_SESSION["order-date"]);
$json["reload"] = true;
echo json_encode($json);
return;
}
if (isset($data) and $data["startingDate"] != "" and $data["finalDate"] != "") {
$session = new Session();
$session->set("order-date",
[
"starting" => date_fmt_back($data["startingDate"]),
"final" => date_fmt_back($data["finalDate"])
]);
$json["reload"] = true;
echo json_encode($json);
return;
}
}
}