MOON
Server: Apache
System: Linux server1.studioinfinity.com.br 2.6.32-954.3.5.lve1.4.90.el6.x86_64 #1 SMP Tue Feb 21 12:26:30 UTC 2023 x86_64
User: artinside (517)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/artinside/www/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;
        }


    }

}