<?php

namespace App\Models;

use App\Utils\DateUtils;
use App\Entities\ComandaPagamento\ComandaPagamento;

class ComandaPagamentoModel extends ModelEntity {
	protected $table = 'comanda_pagamento';
	protected $primaryKey = 'id';
	protected $returnType = 'array';
	protected $allowedFields = [ 
			'comanda_fechamento_id',
			'valor',
			'forma_pagamento_id',
			'dbtcrd',
			'maquineta',
			'bandeira',
			'codauth',
			'obsevacao',
			'dinheiro',
			'troco',
			'chavepix',
			'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 registerComandaPagamento(ComandaPagamento $comandaPagamento): void {

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

	}

	public function updateComandaPagamentoByID(int $id, ComandaPagamento $comandaPagamento): bool {

		$data = $comandaPagamento->toArray( true );
		$data ['data_atualizacao'] = DateUtils::today();
		$data ['hora_atualizacao'] = DateUtils::now_time();
		$binds = [ 
				'id' => $id
		];
		$sets = $this->generateUpdateSets( $data, $binds );
		$sql = "update comanda_pagamento $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;

	}

}
