Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //BUSCANDO AS CLASSES
- include_once __DIR__ . "/Conexao.class.php";
- //DEFININDO FUSO HORÁRIO
- date_default_timezone_set("America/Sao_Paulo");
- class Receita {
- //ATRIBUTOS
- private $con;
- private $idSequencialReceita;
- private $idReceita;
- private $valorReceita;
- private $dataVencimento;
- private $recebido;
- private $dataRecebimento;
- private $tipoRepeticao;
- private $parcelas;
- private $numeroParcela;
- private $recorrente;
- private $observacoes;
- private $idUsuario;
- private $idTipoReceita;
- private $idTipoRecebimento;
- //CONSTRUTOR
- public function __construct() {
- $this->con = new Conexao();
- }
- //GETTERS E SETTERS
- public function setIdSequencialReceita($idSequencialReceita) {
- $this->idSequencialReceita = $idSequencialReceita;
- }
- public function getIdSequencialReceita() {
- return $this->idSequencialReceita;
- }
- public function setIdReceita($idReceita) {
- $this->idReceita = $idReceita;
- }
- public function getIdReceita() {
- return $this->idReceita;
- }
- public function setValorReceita($valorReceita) {
- $this->valorReceita = $valorReceita;
- }
- public function getValorReceita() {
- return $this->valorReceita;
- }
- public function setDataVencimento($dataVencimento) {
- $this->dataVencimento = $dataVencimento;
- }
- public function getDataVencimento() {
- return $this->dataVencimento;
- }
- public function setRecebido($recebido) {
- $this->recebido = $recebido;
- }
- public function getRecebido() {
- return $this->recebido;
- }
- public function setDataRecebimento($dataRecebimento) {
- $this->dataRecebimento = $dataRecebimento;
- }
- public function getDataRecebimento() {
- return $this->dataRecebimento;
- }
- public function setTipoRepeticao($tipoRepeticao) {
- $this->tipoRepeticao = $tipoRepeticao;
- }
- public function getTipoRepeticao() {
- return $this->tipoRepeticao;
- }
- public function setParcelas($parcelas) {
- $this->parcelas = $parcelas;
- }
- public function getParcelas() {
- return $this->parcelas;
- }
- public function setNumeroParcela($numeroParcela) {
- $this->numeroParcela = $numeroParcela;
- }
- public function getNumeroParcela() {
- return $this->numeroParcela;
- }
- public function setRecorrente($recorrente) {
- $this->recorrente = $recorrente;
- }
- public function getRecorrente() {
- return $this->recorrente;
- }
- public function setObservacoes($observacoes) {
- $this->observacoes = $observacoes;
- }
- public function getObversacoes() {
- return $this->observacoes;
- }
- public function setIdUsuario($idUsuario) {
- $this->idUsuario = $idUsuario;
- }
- public function getIdUsuario() {
- return $this->idUsuario;
- }
- public function setIdTipoReceita($idTipoReceita) {
- $this->idTipoReceita = $idTipoReceita;
- }
- public function getIdTipoReceita() {
- return $this->idTipoReceita;
- }
- public function setIdTipoRecebimento($idTipoRecebimento) {
- $this->idTipoRecebimento = $idTipoRecebimento;
- }
- public function getIdTipoRecebimento() {
- return $this->idTipoRecebimento;
- }
- //METODOS
- public function InserirReceita()
- {
- $proximo_id_receita = $this->ProximoIdReceita();
- $sql = "INSERT INTO receitas (id_receita, valor_receita, data_vencimento, recebido, data_recebimento, tipo_repeticao, parcelas, numero_parcela, recorrente, observacoes, id_usuario, id_tipo_receita, id_tipo_recebimento) VALUES ";
- $insertQuery = array();
- $insertData = array();
- $n = 0;
- while ($n < $this->parcelas) {
- $this->numeroParcela = $this->numeroParcela + 1;
- $insertQuery[] = "(:id_receita".$n.", :valor_receita".$n.", :data_vencimento".$n.", :recebido".$n.", :data_recebimento".$n.", :tipo_repeticao".$n.", :parcelas".$n.", :numero_parcela".$n.", :recorrente".$n.", :observacoes".$n.", :id_usuario".$n.", :id_tipo_receita".$n.", :id_tipo_recebimento".$n.")";
- $insertData[":id_receita".$n] = $proximo_id_receita;
- $insertData[":valor_receita".$n] = $this->valorReceita;
- $insertData[":data_vencimento".$n] = $this->dataVencimento;
- $insertData[":recebido".$n] = $this->recebido;
- $insertData[":data_recebimento".$n] = $this->dataRecebimento;
- $insertData[":tipo_repeticao".$n] = $this->tipoRepeticao;
- $insertData[":parcelas".$n] = $this->parcelas;
- $insertData[":numero_parcela".$n] = $this->numeroParcela;
- $insertData[":recorrente".$n] = $this->recorrente;
- $insertData[":observacoes".$n] = $this->observacoes;
- $insertData[":id_usuario".$n] = $this->idUsuario;
- $insertData[":id_tipo_receita".$n] = $this->idTipoReceita;
- $insertData[":id_tipo_recebimento".$n] = $this->idTipoRecebimento;
- $this->dataVencimento = date("Y-m-d",(strtotime("next month",strtotime(date($this->dataVencimento)))));
- $n++;
- }
- $sql .= implode(", ", $insertQuery);
- if (!empty($insertQuery)) {
- try {
- $query = $this->con->conectar()->prepare($sql);
- if($query->execute($insertData)) {
- return "Receita cadastrada com sucesso!";
- } else {
- return "Erro ao tentar cadastrar a receita!".json_encode($insertData);
- }
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- }
- public function EditarReceita()
- {
- try {
- if(!empty($this->recorrente)) {
- $n = 0;
- while ($n <= $this->parcelas) {
- $query = $this->con->conectar()->prepare("UPDATE receitas SET valor_receita = :valor_receita".$n.", data_vencimento = :data_vencimento".$n.", recebido = :recebido".$n.", data_recebimento = :data_recebimento".$n.", observacoes = :observacoes".$n.", id_tipo_receita = :id_tipo_receita".$n.", id_tipo_recebimento = :id_tipo_recebimento".$n." WHERE id_receita = :id_receita".$n." AND numero_parcela = :numero_parcela".$n."");
- $query->bindParam(":id_receita".$n, $this->idReceita, PDO::PARAM_INT);
- $query->bindParam(":valor_receita".$n, $this->valorReceita, PDO::PARAM_STR);
- $query->bindParam(":data_vencimento".$n, $this->dataVencimento, PDO::PARAM_STR);
- $query->bindParam(":recebido".$n, $this->recebido, PDO::PARAM_INT);
- $query->bindParam(":data_recebimento".$n, $this->dataRecebimento, PDO::PARAM_STR);
- $query->bindParam(":observacoes".$n, $this->observacoes, PDO::PARAM_STR);
- $query->bindParam(":id_tipo_receita".$n, $this->idTipoReceita, PDO::PARAM_INT);
- $query->bindParam(":id_tipo_recebimento".$n, $this->idTipoRecebimento, PDO::PARAM_INT);
- $query->bindParam(":numero_parcela".$n, $this->numeroParcela, PDO::PARAM_INT);
- $query->execute();
- $this->numeroParcela = $this->numeroParcela + 1;
- $this->dataVencimento = date("Y-m-d",(strtotime("next month",strtotime(date($this->dataVencimento)))));
- $n++;
- }
- }
- else {
- $query = $this->con->conectar()->prepare("UPDATE receitas SET valor_receita = :valor_receita, data_vencimento = :data_vencimento, recebido = :recebido, data_recebimento = :data_recebimento, observacoes = :observacoes, id_tipo_receita = :id_tipo_receita, id_tipo_recebimento = :id_tipo_recebimento WHERE id_receita = :id_receita AND numero_parcela = :numero_parcela");
- $query->bindParam(":id_receita", $this->idReceita, PDO::PARAM_INT);
- $query->bindParam(":valor_receita", $this->valorReceita, PDO::PARAM_STR);
- $query->bindParam(":data_vencimento", $this->dataVencimento, PDO::PARAM_STR);
- $query->bindParam(":recebido", $this->recebido, PDO::PARAM_INT);
- $query->bindParam(":data_recebimento", $this->dataRecebimento, PDO::PARAM_STR);
- $query->bindParam(":observacoes", $this->observacoes, PDO::PARAM_STR);
- $query->bindParam(":id_tipo_receita", $this->idTipoReceita, PDO::PARAM_INT);
- $query->bindParam(":id_tipo_recebimento", $this->idTipoRecebimento, PDO::PARAM_INT);
- $query->bindParam(":numero_parcela", $this->numeroParcela, PDO::PARAM_INT);
- $query->execute();
- }
- if($query) {
- return "Receita alterada com sucesso!";
- } else {
- return "Erro ao tentar alterar a receita!";
- }
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- public function ExcluirReceita()
- {
- $sql = "DELETE FROM receitas WHERE id_receita = :id_receita ";
- $sql .= (!empty($this->recorrente)) ? "AND numero_parcela >= :numero_parcela" : "AND numero_parcela = :numero_parcela";
- try {
- $query = $this->con->conectar()->prepare($sql);
- $query->bindParam(":id_receita", $this->idReceita, PDO::PARAM_INT);
- $query->bindParam(":numero_parcela", $this->numeroParcela, PDO::PARAM_INT);
- if($query->execute()) {
- return "Receita deletada com sucesso!";
- } else {
- return "Erro ao tentar deletar a receita!";
- }
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- public function ProximoIdReceita()
- {
- try {
- $query = $this->con->conectar()->query("SELECT IFNULL(MAX(id_receita+1),1) AS proximo_id_receita FROM receitas");
- $query->execute();
- $retorno = array();
- while ($linha = $query->fetch(PDO::FETCH_ASSOC)) {
- $retorno[] = $linha;
- }
- return $retorno;
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- public function ReceberReceita()
- {
- try {
- $query = $this->con->conectar()->prepare("UPDATE receitas SET data_recebimento = :data_recebimento, recebido = 1 WHERE id_sequencial_receita = :id_sequencial_receita");
- $query->bindParam(":data_recebimento", $this->dataRecebimento, PDO::PARAM_STR);
- $query->bindParam(":id_sequencial_receita", $this->idSequencialReceita, PDO::PARAM_INT);
- if($query->execute()) {
- return "Receita recebida com sucesso!".$this->dataRecebimento;
- } else {
- return "Erro ao tentar receber a receita!";
- }
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- public function ListarValorRecebido()
- {
- $sql = "SELECT IFNULL(FORMAT(SUM(receitas_r),2,'de_DE'),'0,00') AS receitas_r, IFNULL(ROUND(((SUM(receitas_r) / receitas_total)*100),2),0) AS pct_r ";
- $sql .= "FROM (SELECT SUM(rr.valor_receita) AS receitas_r, (SELECT SUM(r.valor_receita) ";
- $sql .= "FROM receitas AS r WHERE DATE_FORMAT(r.data_vencimento,'%Y-%m') = DATE_FORMAT(rr.data_vencimento,'%Y-%m') AND r.id_usuario = rr.id_usuario) AS receitas_total ";
- $sql .= "FROM receitas AS rr WHERE rr.recebido = 1 AND DATE_FORMAT(rr.data_vencimento,'%Y-%m') = :periodo AND rr.id_usuario = :id_usuario ";
- $sql .= "GROUP BY rr.data_vencimento) AS receitas_recebidas";
- try {
- $query = $this->con->conectar()->prepare($sql);
- $query->bindParam(":id_usuario", $this->idUsuario, PDO::PARAM_INT);
- $query->bindParam(":periodo", $this->dataVencimento, PDO::PARAM_STR);
- $query->execute();
- $data = array();
- while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
- $data[] = $row;
- }
- return $data;
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- public function ListarValorNaoRecebido()
- {
- $sql = "SELECT IFNULL(FORMAT(SUM(receitas_nr),2,'de_DE'),'0,00') AS receitas_nr, IFNULL(ROUND(((SUM(receitas_nr) / receitas_total)*100),2),0) AS pct_nr ";
- $sql .= "FROM (SELECT SUM(rnr.valor_receita) AS receitas_nr, (SELECT SUM(r.valor_receita) ";
- $sql .= "FROM receitas AS r WHERE DATE_FORMAT(r.data_vencimento,'%Y-%m') = DATE_FORMAT(rnr.data_vencimento,'%Y-%m') AND r.id_usuario = rnr.id_usuario) AS receitas_total ";
- $sql .= "FROM receitas AS rnr WHERE rnr.recebido = 0 AND DATE_FORMAT(rnr.data_vencimento,'%Y-%m') = :periodo AND rnr.id_usuario = :id_usuario ";
- $sql .= "GROUP BY rnr.data_vencimento) AS receitas_nao_recebidas";
- try {
- $query = $this->con->conectar()->prepare($sql);
- $query->bindParam(":id_usuario", $this->idUsuario, PDO::PARAM_INT);
- $query->bindParam(":periodo", $this->dataVencimento, PDO::PARAM_STR);
- $query->execute();
- $data = array();
- while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
- $data[] = $row;
- }
- return $data;
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- public function ListarReceitasNaoRecebidas()
- {
- $sql = "SELECT t.tipo_receita, r.id_sequencial_receita, FORMAT(r.valor_receita,2,'de_DE') AS valor_receita, DATE_FORMAT(data_vencimento, '%d/%m/%Y') AS data_vencimento ";
- $sql .= "FROM tipo_receita AS t INNER JOIN receitas AS r ON t.id_tipo_receita = r.id_tipo_receita ";
- $sql .= "WHERE r.recebido = 0 AND r.id_usuario = :id_usuario GROUP BY r.id_sequencial_receita";
- try {
- $query = $this->con->conectar()->prepare($sql);
- $query->bindParam(":id_usuario", $this->idUsuario, PDO::PARAM_INT);
- $query->execute();
- $data = array();
- while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
- $data[] = $row;
- }
- return $data;
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- public function DetalhesReceita()
- {
- try {
- $query = $this->con->conectar()->prepare("SELECT * FROM receitas WHERE id_sequencial_receita = :id_sequencial_receita");
- $query->bindParam(":id_sequencial_receita", $this->idSequencialReceita, PDO::PARAM_INT);
- $query->execute();
- return json_encode($query->fetch(PDO::FETCH_ASSOC));
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- public function ListarTiposReceita()
- {
- $sql = "SELECT t.tipo_receita, FORMAT(SUM(r.valor_receita),2,'de_DE') AS valor_receita ";
- $sql .= "FROM tipo_receita AS t INNER JOIN receitas AS r ON t.id_tipo_receita = r.id_tipo_receita ";
- $sql .= "WHERE DATE_FORMAT(r.data_vencimento,'%Y-%m') = :periodo AND r.id_usuario = :id_usuario GROUP BY t.tipo_receita";
- try {
- $query = $this->con->conectar()->prepare($sql);
- $query->bindParam(":id_usuario", $this->idUsuario, PDO::PARAM_INT);
- $query->bindParam(":periodo", $this->dataVencimento, PDO::PARAM_STR);
- $query->execute();
- $data = array();
- while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
- $data[] = $row;
- }
- return $data;
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- public function ListarReceitasFiltro()
- {
- $sql = "SELECT r.id_sequencial_receita, r.id_receita, FORMAT(r.valor_receita,2,'de_DE') AS valor_receita, DATE_FORMAT(r.data_vencimento, '%d/%m/%Y') AS data_vencimento, r.recebido, r.data_recebimento, r.tipo_repeticao, r.parcelas, r.numero_parcela, r.recorrente, r.observacoes, r.id_usuario, r.id_tipo_receita, r.id_tipo_recebimento, ";
- $sql .= "tr.tipo_receita, re.tipo_recebimento FROM receitas AS r INNER JOIN tipo_receita AS tr ";
- $sql .= "ON r.id_tipo_receita = tr.id_tipo_receita INNER JOIN tipo_recebimento AS re ";
- $sql .= "ON r.id_tipo_recebimento = re.id_tipo_recebimento WHERE YEAR(r.data_vencimento) = YEAR(CURRENT_DATE()) ";
- switch($this->dataVencimento) {
- case "D":
- $sql .= "AND MONTH(r.data_vencimento) = MONTH(CURRENT_DATE()) AND DAY(r.data_vencimento) = DAY(CURRENT_DATE()) ";
- break;
- case "S":
- $sql .= "AND MONTH(r.data_vencimento) = MONTH(CURRENT_DATE()) AND WEEK(r.data_vencimento) = WEEK(CURRENT_DATE()) ";
- break;
- case "M":
- $sql .= "AND MONTH(r.data_vencimento) = MONTH(CURRENT_DATE()) ";
- break;
- case "M1":
- $sql .= "AND MONTH(r.data_vencimento) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH)) ";
- break;
- case "M3":
- $sql .= "AND r.data_vencimento >= CURRENT_DATE() AND r.data_vencimento < CURRENT_DATE() + INTERVAL 90 DAY ";
- break;
- case "M6":
- $sql .= "AND r.data_vencimento >= CURRENT_DATE() AND r.data_vencimento < CURRENT_DATE() + INTERVAL 120 DAY ";
- break;
- case "1M":
- $sql .= "AND MONTH(r.data_vencimento) = MONTH(CURRENT_DATE() - INTERVAL 1 MONTH) ";
- break;
- case "3M":
- $sql .= "AND r.data_vencimento BETWEEN (CURRENT_DATE() - INTERVAL 90 DAY) AND CURRENT_DATE() ";
- break;
- case "6M":
- $sql .= "AND r.data_vencimento BETWEEN (CURRENT_DATE() - INTERVAL 120 DAY) AND CURRENT_DATE() ";
- break;
- case "A":
- $sql .= "";
- break;
- default:
- $sql .= "AND MONTH(r.data_vencimento) = MONTH(CURRENT_DATE()) ";
- }
- $sql .= "AND r.id_usuario = :id_usuario ORDER BY r.id_receita DESC";
- try {
- $query = $this->con->conectar()->prepare($sql);
- $query->bindParam(":id_usuario", $this->idUsuario, PDO::PARAM_INT);
- $query->execute();
- $retorno = array();
- while ($linha = $query->fetch(PDO::FETCH_ASSOC)) {
- $retorno[] = $linha;
- }
- return $retorno;
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- public function ListarUltimasReceitas()
- {
- $sql = "SELECT FORMAT(r.valor_receita,2,'de_DE') AS valor_receita, DATE_FORMAT(r.data_vencimento, '%d/%m/%Y') AS data_vencimento, tr.tipo_receita ";
- $sql .= "FROM receitas AS r INNER JOIN tipo_receita AS tr ";
- $sql .= "ON r.id_tipo_receita = tr.id_tipo_receita WHERE id_usuario = :id_usuario GROUP BY r.id_receita DESC LIMIT 5";
- try {
- $query = $this->con->conectar()->prepare($sql);
- $query->bindParam(":id_usuario", $this->idUsuario, PDO::PARAM_INT);
- $query->execute();
- $data = array();
- while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
- $data[] = $row;
- }
- return $data;
- } catch(PDOException $e) {
- return "Error: ".$e->getMessage();
- }
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement