<?php

namespace App\Models;

use App\Utils\DateUtils;
use App\Entities\ComandaLancamento\ComandaLancamento;

class ComandaLancamentoModel extends ModelEntity {
	protected $table = 'comanda_lancamento';
	protected $primaryKey = 'id';
	protected $returnType = 'array';
	protected $allowedFields = [ 
			'comanda_item_id',
			'comanda_fechamento_id',
			'extornado',
			'criado_por',
			'data_criacao',
			'hora_criacao',
			'atualizado_por',
			'data_atualizacao',
			'hora_atualizacao'
	];
	protected $useSoftDeletes = false;
	protected $skipValidation = true;
	protected $useTimestamps = false;
	protected $createdField = 'data_criacao';
	protected $updatedField = 'data_atualizacao';

	public function registerComandaFechamento(ComandaLancamento $comandaLancamento): void {

		$data = $comandaLancamento->toArray( true );
		$id = $this->insert( $data );
		$comandaLancamento->setId( $id );

	}

	public function updateComandaLancamentoByID(int $id, ComandaLancamento $comandaLancamento): bool {

		$data = $comandaLancamento->toArray( true );
		$data ['data_atualizacao'] = DateUtils::today();
		$data ['hora_atualizacao'] = DateUtils::now_time();
		$binds = [ 
				'id' => $id
		];
		$sets = $this->generateUpdateSets( $data, $binds );
		$sql = "update comanda_lancamento $sets where id = :id:";
		log_message( 'info', $sql );
		log_message( 'info', json_encode( $data ) );
		log_message( 'info', json_encode( $binds ) );
		$query = $this->db->query( $sql, $binds );
		return $query->connID->affected_rows === 1;

	}

}
