<?php

namespace App\DAO;

use App\DAO\DAO;
use App\DAO\DAOResponse\DAOResponse;
use App\DAO\DAOResponse\DAOResponseInterface;
use App\Entities\OrcamentoClienteDetalhe\OrcamentoClienteDetalhe;
use App\Utils\MathUtils;
use Exception;
use App\Models\OrcamentoClienteDetalheModel;
use App\Mappers\OrcamentoClienteDetalheMapper;
use App\Mappers\OrcamentoClienteMapper;
use App\Services\JWT\UsuarioLogado;
use App\Utils\DateUtils;
use App\ViewModels\Orcamento\OrcamentoCienteDetalheRegistrationViewModel\OrcamentoClienteDetalheRegistarionViewModel;
use App\ViewModels\Orcamento\OrcamentoClienteRegistrationViewModel\OrcamentoClienteRegistrationViewModel;
use App\ViewModels\Orcamento\OrcamentoClienteUpdateViewModel\OrcamentoClienteUpdateViewModel;

class OrcamentoClienteDAO extends DAO {

	public function registerNewOrcamentoCliente(OrcamentoClienteRegistrationViewModel $orcamento): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			insert into orcamento_cliente 
			(id_status,id_unidade,id_cliente,id_pet,valor,validade,criado_por,data_criacao,hora_criacao) values
			(:status_id:, :unidade_id:, :cliente_id:, :pet_id:, :valor:,:valid:,:usuario_id:,:data_cr:, :hora_cr:)
		SQL;

		$binds = [ 
			'status_id' => intval( $orcamento->getIdStatus() ),
			'unidade_id' => intval( $orcamento->getIdUnidade() ),
			'cliente_id' => intval( $orcamento->getIdCliente() ),
			'pet_id' => intval( $orcamento->getIdPet() ),
			'valor' => MathUtils::getDecimalFormatFromFloat( floatval( $orcamento->getValor() ) ),
			'valid' => intval( $orcamento->getValidade() ),
			'usuario_id' => intval( $orcamento->getCriadoPor() ),
			'data_cr' => $orcamento->getDataCriacao(),
			'hora_cr' => $orcamento->getHoraCriacao()
		];

		$conn = db_connect();
		$conn->query( $sql, $binds );
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			if (substr( strtolower( trim( $errors ['message'] ) ), 0, 15 ) == 'duplicate entry') {
				$dao_response->setStatus( DAOResponseInterface::DUPLICATED_UNIQUE_KEY );
			} else {
				$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
			}
			$dao_response->setData( [ ] );
			return $dao_response;
		}

		$newid = $conn->insertID();
		$dao_response->setStatus( DAOResponseInterface::SUCESS );
		$dao_response->setData( [ 
			'id_orcamento' => $newid
		] );

		return $dao_response;

	}

	public function updateOrcamentoCliente(OrcamentoClienteUpdateViewModel $orcamento): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			update orcamento_cliente
			set
				valor = :valor:, validade = :valid:, 
				atualizado_por = :usuario_id:,
				data_atualizacao = :data_atz:,
				hora_atualizacao = :hora_atz:
			where
				id = :orcamento_id:
		SQL;

		$binds = [ 
			'orcamento_id' => $orcamento->getId(),
			'valor' => MathUtils::getDecimalFormatFromFloat( floatval( $orcamento->getValor() ) ),
			'valid' => intval( $orcamento->getValidade() ),
			'usuario_id' => intval( $orcamento->getAtualizadoPor() ),
			'data_atz' => $orcamento->getDataAtualizacao(),
			'hora_atz' => $orcamento->getHoraAtualizacao()
		];

		$conn = db_connect();
		$conn->query( $sql, $binds );
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			if (substr( strtolower( trim( $errors ['message'] ) ), 0, 15 ) == 'duplicate entry') {
				$dao_response->setStatus( DAOResponseInterface::DUPLICATED_UNIQUE_KEY );
			} else {
				$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
			}
			$dao_response->setData( [ ] );
			return $dao_response;
		}

		$affectrows = $conn->affectedRows();
		if ($affectrows > 0) {
			$dao_response->setStatus( DAOResponseInterface::SUCESS );
		} else {
			$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
		}

		return $dao_response;

	}

	public function registerOrcamentoClienteDetalhes(array $lista, int $id_orcamento): DAOResponse {

		$dao_response = new DAOResponse();

		try {

			$sql = <<<SQL
				insert into orcamento_cliente_detalhe 
				(criado_por, data_criacao, hora_criacao, id_orcamento, id_procedimento,
					id_procedimento_valor, id_convenio_procedimento, quantidade, valor_unidade,valor) values
				(:usuario_id:, :data_cr: , :hora_cr:, :orcamento_id:, :procedimento_id:,
					:pv_id:, :cp_id:, :qtd:, :vlu:, :vlr:)
			SQL;

			$this->db->transStart();

			for($i = 0; $i < count( $lista ); $i++) {
				$item = $lista [$i];
				$item->setIdOrcamento( $id_orcamento );
				$binds = [ 
					'usuario_id' => $item->getCriadoPor(),
					'data_cr' => $item->getDataCriacao(),
					'hora_cr' => $item->getHoraCriacao(),
					'orcamento_id' => $id_orcamento,
					'procedimento_id' => $item->getIdProcedimento(),
					'pv_id' => $item->getIdProcedimentoValor(),
					'cp_id' => $item->getIdConvenioProcedimento(),
					'qtd' => $item->getQuantidade(),
					'vlu' => $item->getValorUnidade(),
					'vlr' => $item->getValor()
				];

				$this->db->query( $sql, $binds );

				$error = $this->db->error();
				if ($error && $error ['code']) {
					$this->setDatabaseErrorsForPetRegistration( $dao_response, $error );
					return $dao_response;
				}
			}
			$dao_response->setStatus( DAOResponseInterface::SUCESS );
			$this->db->transComplete();
		} catch ( Exception $e ) {
			$this->setDatabaseErrorsForPetRegistration( $dao_response, $this->db->error() );
		}
		return $dao_response;

	}

	private function persistItemOrcamento(OrcamentoClienteDetalheRegistarionViewModel &$itemOrcamento): OrcamentoClienteDetalhe {

		$model = new OrcamentoClienteDetalheModel();
		$orcamento = OrcamentoClienteDetalheMapper::getOrcamentoClienteDetalheFromObjRegistrationVM( $itemOrcamento );
		$model->registerregisterOrcamentoDetalhe( $orcamento );
		if (!$orcamento->getId()) {
			throw new Exception( 'O cadastro de item de orçamento não teve êxito' );
		}
		return $orcamento;

	}

	public function getItensOrcamentoByID(int $id_orcamento): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			select
				ocd.id, ocd.criado_por, pf.nome as nome_criador, 
				ocd.data_criacao, ocd.hora_criacao, ocd.id_orcamento,
				ocd.id_procedimento, p.descricao as procedimento, tp.descricao as tipo_ptocedimento,
				ocd.id_procedimento_valor, ocd.id_convenio_procedimento,
				c.codigo as cod_convenio, tc.descricao as tipo_convenio, 
				un.descricao as unidade, ocd.quantidade, ocd.valor_unidade,
				ocd.valor,ocd.atualizado_por,
				(select pessoa_fisica.nome from usuario, pessoa_fisica
					where usuario.id = ocd.atualizado_por
						and usuario.id_pessoa = pessoa_fisica.id_pessoa
				) as nome_atualizador ,
				ocd.data_atualizacao, ocd.hora_atualizacao
			from
				orcamento_cliente_detalhe ocd , usuario u, pessoa_fisica pf , procedimento p ,
				tipo_procedimento tp, convenio_procedimento cp , unidade un, convenio c , tipo_convenio tc
			where
				ocd.id_orcamento = :orcamento_id:
				and ocd.criado_por = u.id
				and u.id_pessoa = pf.id_pessoa
				and ocd.id_procedimento = p.id
				and p.id_tipo_procedimento = tp.id
				and ocd.id_convenio_procedimento = cp.id
				and cp.id_unidade = un.id
				and cp.id_convenio = c.id
				and c.id_tipo_convenio = tc.id 
		SQL;

		$binds = [ 
			'orcamento_id' => $id_orcamento
		];

		$conn = db_connect();
		$result = $conn->query( $sql, $binds )
			->getResultArray();
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			if (count( $result ) == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [ 
					'itens' => $result
				] );
			}
		}

		return $dao_response;

	}

	public function getOrcamentoByID(int $id_orcamento): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			select
				oc.id,	oc.id_status, oc.id_unidade, oc.id_cliente, oc.id_pet, oc.valor,
				oc.validade, oc.criado_por, pf.nome as nome_criador ,
				oc.data_criacao, oc.hora_criacao, oc.atualizado_por,
				(select pessoa_fisica.nome from usuario, pessoa_fisica
					where usuario.id = oc.atualizado_por
						and usuario.id_pessoa = pessoa_fisica.id_pessoa
				) as nome_atualizador ,
				oc.data_atualizacao, oc.hora_atualizacao
			from
				orcamento_cliente oc, usuario u, pessoa_fisica pf
			where
				oc.id = :orcamento_id:
				and oc.criado_por = u.id
				and u.id_pessoa = pf.id_pessoa
		SQL;

		$binds = [ 
			'orcamento_id' => $id_orcamento
		];

		$conn = db_connect();
		$result = $conn->query( $sql, $binds )
			->getResultArray();
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			if (count( $result ) == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [ 
					'orcamento' => $result [0]
				] );
			}
		}

		return $dao_response;

	}

	public function getOrcamentoByClienteIDFromUnidadeID(int $id_unidade, int $id_cliente): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			select
				oc.id,	oc.id_status, oc.id_unidade, oc.id_cliente, oc.id_pet, oc.valor,
				oc.validade, oc.criado_por, pf.nome as nome_criador ,
				oc.data_criacao, oc.hora_criacao, oc.atualizado_por,
				(select pessoa_fisica.nome from usuario, pessoa_fisica
					where usuario.id = oc.atualizado_por
						and usuario.id_pessoa = pessoa_fisica.id_pessoa
				) as nome_atualizador ,
				oc.data_atualizacao, oc.hora_atualizacao
			from
				orcamento_cliente oc, usuario u, pessoa_fisica pf
			where
				oc.id_cliente = :cliente_id:
				and oc.id_unidade = :unidade_id:
				and oc.criado_por = u.id
				and u.id_pessoa = pf.id_pessoa
		SQL;

		$binds = [ 
			'cliente_id' => $id_cliente,
			'unidade_id' => $id_unidade
		];

		$conn = db_connect();
		$result = $conn->query( $sql, $binds )
			->getResultArray();
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			if (count( $result ) == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [ 
					'orcamento' => $result
				] );
			}
		}

		return $dao_response;

	}

	public function getOrcamentoByPetIDFromUnidadeID(int $id_unidade, int $id_pet): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			select
				oc.id,	oc.id_status, oc.id_unidade, oc.id_cliente, oc.id_pet, oc.valor,
				oc.validade, oc.criado_por, pf.nome as nome_criador ,
				oc.data_criacao, oc.hora_criacao, oc.atualizado_por,
				(select pessoa_fisica.nome from usuario, pessoa_fisica
					where usuario.id = oc.atualizado_por
						and usuario.id_pessoa = pessoa_fisica.id_pessoa
				) as nome_atualizador ,
				oc.data_atualizacao, oc.hora_atualizacao
			from
				orcamento_cliente oc, usuario u, pessoa_fisica pf
			where
				oc.id_pet = :pet_id:
				and oc.id_unidade = :unidade_id:
				and oc.criado_por = u.id
				and u.id_pessoa = pf.id_pessoa
		SQL;

		$binds = [ 
			'pet_id' => $id_pet,
			'unidade_id' => $id_unidade
		];

		$conn = db_connect();
		$result = $conn->query( $sql, $binds )
			->getResultArray();
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			if (count( $result ) == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [ 
					'orcamento' => $result
				] );
			}
		}

		return $dao_response;

	}

	public function deleteOrcamentoClienteById(int $id_orcamento): DAOResponse {

		$dao_response = new DAOResponse();

		$sql_del_dtl = <<<SQL
			delete from orcamento_cliente_detalhe
			where id_orcamento = :orcamento_id:
		SQL;

		$sql_del = <<<SQL
			delete from orcamento_cliente
			where id = :orcamento_id:
		SQL;

		$binds = [ 
			'orcamento_id' => $id_orcamento
		];

		$conn = db_connect();
		$conn->query( $sql_del_dtl, $binds )->numRows;
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
			return $dao_response;
		}

		$conn->query( $sql_del, $binds )->numRows;
		$errors_del = $conn->error();

		if ($errors_del ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
			return $dao_response;
		}

		$dao_response->setStatus( DAOResponseInterface::SUCESS );

		return $dao_response;

	}

	public function deleteOrcamentoClienteDetalheByOcamentoId(int $id_orcamento): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			delete from orcamento_cliente_detalhe
			where id_orcamento = :orcamento_id:
		SQL;

		$binds = [ 
			'orcamento_id' => $id_orcamento
		];

		$conn = db_connect();
		$conn->query( $sql, $binds )->numRows;
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
			return $dao_response;
		}

		$dao_response->setStatus( DAOResponseInterface::SUCESS );

		return $dao_response;

	}

	public function getDadosValidarOrcamento(int $id_orcamento): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			select
				oc.id,	oc.id_status, oc.validade, oc.id_unidade, 
				oc.id_cliente, oc.id_pet, oc.valor,
				oc.validade, oc.criado_por,
				oc.data_criacao, oc.hora_criacao, oc.atualizado_por,
				oc.data_atualizacao, oc.hora_atualizacao
			from
				orcamento_cliente oc
			where
				oc.id = :orcamento_id:
		SQL;

		$binds = [ 
			'orcamento_id' => $id_orcamento
		];

		$conn = db_connect();
		$result = $conn->query( $sql, $binds )
			->getResultArray();
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			if (count( $result ) == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [ 
					'orcamento' => $result [0]
				] );
			}
		}

		return $dao_response;

	}
	
	
	public function getDadosValidarOrcamentoUnidade(int $id_orcamento, int $id_unidade): DAOResponse {
		
		$dao_response = new DAOResponse();
		
		$sql = <<<SQL
			select
				oc.id,	oc.id_status, oc.validade, oc.id_unidade,
				oc.id_cliente, oc.id_pet, oc.valor,
				oc.validade, oc.criado_por,
				oc.data_criacao, oc.hora_criacao, oc.atualizado_por,
				oc.data_atualizacao, oc.hora_atualizacao
			from
				orcamento_cliente oc
			where
				oc.id = :orcamento_id:
				and oc.id_unidade = :unidade_id:
		SQL;
		
		$binds = [
				'orcamento_id' => $id_orcamento,
				'unidade_id' => $id_unidade
		];
		
		$conn = db_connect();
		$result = $conn->query( $sql, $binds )
		->getResultArray();
		$errors = $conn->error();
		
		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			if (count( $result ) == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [
						'orcamento' => $result [0]
				] );
			}
		}
		
		return $dao_response;
		
	}

	public function getOrcamentoItemById(int $id): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			select
				id, criado_por, data_criacao, hora_criacao, id_orcamento,
				id_procedimento, id_procedimento_valor, id_convenio_procedimento,
				quantidade, valor_unidade, valor, atualizado_por, data_atualizacao,
				hora_atualizacao
			from
				orcamento_cliente_detalhe oc
			where
				id = :item_id:
		SQL;

		$binds = [ 
			'item_id' => $id
		];

		$conn = db_connect();
		$result = $conn->query( $sql, $binds )
			->getResultArray();
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			if (count( $result ) == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [ 
					'item' => $result [0]
				] );
			}
		}

		return $dao_response;

	}

	public function setOrcamentoToExecutado(int $id_orcamento): DAOResponse {

		$dao_response = new DAOResponse();

		$sql = <<<SQL
			update
				orcamento_cliente
			set
				atualizado_por = :usuario_id: ,
				data_atualizacao = :data_atz: ,
				hora_atualizacao = :hora_atz: ,
				id_status = 2
			where
				id = :orcamento_id:
		SQL;

		$binds = [ 
			'orcamento_id' => $id_orcamento,
			'usuario_id' => UsuarioLogado::getUsuarioId(),
			'data_atz' => DateUtils::today(),
			'hora_atz' => DateUtils::now_time()
		];

		$conn = db_connect();
		$result = $conn->query( $sql, $binds )->numRows;
		$errors = $conn->error();

		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			$affectrow = $conn->affectedRows();
			if ($affectrow == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [ ] );
			}
		}

		return $dao_response;

	}

	public function syncOrcamentoStatusExpirado(int $id_orcamento): DAOResponse {

		$sql = <<<SQL
			update orcamento_cliente
			set id_status = 4
			where 
				id = :orcamento_id: 
				and id_status = 1 
				and CURRENT_DATE() > DATE_ADD(data_criacao, interval validade day)
		SQL;

		$binds = [ 
			'orcamento_id' => $id_orcamento
		];
		
		$dao_response = new DAOResponse();
		
		$conn = db_connect();
		$result = $conn->query( $sql, $binds )->numRows;
		$errors = $conn->error();
		
		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			$affectrow = $conn->affectedRows();
			if ($affectrow == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [ ] );
			}
		}
		
		return $dao_response;

	}
	
	public function syncOrcamentoStatusExpiradoUnidadeCliente(int $id_unidade, int $id_cliente): DAOResponse {
		
		$sql = <<<SQL
			update orcamento_cliente
			set id_status = 4
			where
				id_cliente = :cliente_id:
				and id_unidade = :unidade_id:
				and id_status = 1
				and CURRENT_DATE() > DATE_ADD(data_criacao, interval validade day)
		SQL;
		
		$binds = [
				'cliente_id' => $id_cliente,
				'unidade_id' => $id_unidade,
		];
		
		$dao_response = new DAOResponse();
		
		$conn = db_connect();
		$result = $conn->query( $sql, $binds )->numRows;
		$errors = $conn->error();
		
		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			$affectrow = $conn->affectedRows();
			if ($affectrow == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [ ] );
			}
		}
		
		return $dao_response;
		
	}
	
	public function syncOrcamentoStatusExpiradoUnidadePet(int $id_unidade, int $id_pet): DAOResponse {
		
		$sql = <<<SQL
			update orcamento_cliente
			set id_status = 4
			where
				id_pet = :pet_id:
				and id_unidade = :unidade_id:
				and id_status = 1
				and CURRENT_DATE() > DATE_ADD(data_criacao, interval validade day)
		SQL;
		
		$binds = [
				'pet_id' => $id_pet,
				'unidade_id' => $id_unidade,
		];
		
		$dao_response = new DAOResponse();
		
		$conn = db_connect();
		$result = $conn->query( $sql, $binds )->numRows;
		$errors = $conn->error();
		
		if ($errors ['code'] != 0) {
			$dao_response->setErrors( $errors );
			$dao_response->setStatus( DAOResponseInterface::DATABASE_CONNECTION_ERROR );
		} else {
			$affectrow = $conn->affectedRows();
			if ($affectrow == 0) {
				$dao_response->setStatus( DAOResponseInterface::RECORD_NOT_FOUND );
			} else {
				$dao_response->setStatus( DAOResponseInterface::SUCESS );
				$dao_response->setData( [ ] );
			}
		}
		
		return $dao_response;
		
	}

}

