mrpunkdasilva / mkt-fin-log

Repositório para o grupo Marketing & Finanças & Logística
MIT License
1 stars 0 forks source link

Task #36

Closed mrpunkdasilva closed 11 months ago

mrpunkdasilva commented 11 months ago
<?php

class Task
{
    private $mysqli;
    private $tabela = 'tarefas';

    public function __construct($mysqli)
    {
        $this->mysqli = $mysqli;
    }

    public function cadastrar($dados)
    {
        $query = "
            INSERT INTO 
                {$this->tabela} 
                    (titulo, descricao, data_de_vencimento, aluno_id, sprint_id, status_tarefa)
            VALUES 
                    (?, ?, ?, ?, ?, ?)
        ";

        $stmt = $this->mysqli->prepare($query);
        $stmt->bind_param(
            "ssssss",
            $dados['titulo'],
            $dados['descricao'],
            $dados['data_de_vencimento'],
            $dados['aluno_id'],
            $dados['sprint_id'],
            $dados['status_tarefa']
        );

        if (!$stmt->execute()) {
            die("Erro ao criar tarefa: " . $stmt->error);
        }

        $stmt->close();
    }

    public function deletar($id)
    {
        $sql = "
            UPDATE 
                {$this->tabela}
            SET 
                status_tarefa = 'desativada'
            WHERE 
                id = ?
        ";
        $stmt = $this->mysqli->prepare($sql);

        if (!$stmt) {
            die('Erro na preparação da query: ' . $this->mysqli->error);
        }

        $stmt->bind_param('i', $id);

        if ($stmt->execute()) {
            if ($stmt->affected_rows > 0) {
                return true;
            } else {
                return false;
            }
        } else {
            die('Erro na execução da query: ' . $this->mysqli->error);
        }
    }

    public function atualizar($dados)
    {
        $query = "
            UPDATE {$this->tabela}
            SET 
                titulo = ?,
                descricao = ?,
                data_de_vencimento = ?,
                aluno_id = ?,
                sprint_id = ?,
                status_tarefa = ?
            WHERE 
                id = ?
        ";
        $stmt = $this->mysqli->prepare($query);

        if (!$stmt) {
            die('Erro na preparação da query: ' . $this->mysqli->error);
        }

        $stmt->bind_param(
            'ssssssi',
            $dados['titulo'],
            $dados['descricao'],
            $dados['data_de_vencimento'],
            $dados['aluno_id'],
            $dados['sprint_id'],
            $dados['status_tarefa'],
            $dados['id']
        );

        if ($stmt->execute()) {
            return true;
        } else {
            die('Erro na execução da query: ' . $stmt->error);
        }
    }

    public function buscarTodos()
    {
        $query = "
            SELECT 
                *
            FROM 
                {$this->tabela}
        ";

        $result = $this->mysqli->query($query);

        if ($result->num_rows === 0) {
            return null;
        }

        $tarefas = [];
        while ($linha = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
            $tarefas[] = $linha;
        }

        return $tarefas;
    }

    public function buscar($id)
    {
        $tarefa = [];

        $sql = $this->mysqli->query("
            SELECT 
                *
            FROM 
                {$this->tabela}
            WHERE 
                id = '{$id}'
                    AND
                status_tarefa = 'ativa'
        ");

        if ($sql->num_rows === 0) {
            return null;
        }

        $tarefa = $sql->fetch_assoc();

        return $tarefa;
    }

    public function listarTarefasPorAluno($alunoId)
    {
        $query = "
            SELECT 
                *
            FROM 
                {$this->tabela}
            WHERE 
                aluno_id = '{$alunoId}'
        ";

        $result = $this->mysqli->query($query);

        if ($result->num_rows === 0) {
            return null;
        }

        $tarefas = [];
        while ($linha = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
            $tarefas[] = $linha;
        }

        return $tarefas;
    }

    public function contarTarefasPorSprint($sprintId)
    {
        $query = "
            SELECT 
                COUNT(*) as total
            FROM 
                {$this->tabela}
            WHERE 
                sprint_id = '{$sprintId}'
                    AND
                status_tarefa = 'ativa'
        ";

        $result = $this->mysqli->query($query);

        if ($result->num_rows === 0) {
            return 0;
        }

        $row = $result->fetch_assoc();
        return $row['total'];
    }

    public function obterTarefasAtrasadas()
    {
        $dataAtual = date('Y-m-d');
        $query = "
            SELECT 
                *
            FROM 
                {$this->tabela}
            WHERE 
                data_de_vencimento < '{$dataAtual}'
        ";

        $result = $this->mysqli->query($query);

        if ($result->num_rows === 0) {
            return null;
        }

        $tarefasAtrasadas = [];
        while ($linha = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
            $tarefasAtrasadas[] = $linha;
        }

        return $tarefasAtrasadas;
    }

    public function concluirTarefa($tarefaId)
    {
        $query = "
            UPDATE {$this->tabela}
            SET 
                status_tarefa = 'concluida'
            WHERE 
                id = ?
        ";
        $stmt = $this->mysqli->prepare($query);

        if (!$stmt) {
            die('Erro na preparação da query: ' . $this->mysqli->error);
        }

        $stmt->bind_param('i', $tarefaId);

        if ($stmt->execute()) {
            return true;
        } else {
            die('Erro na execução da query: ' . $stmt->error);
        }
    }

}