<?php

declare(strict_types=1);

namespace OCA\Mitgliederverwaltung\Db;

use JsonSerializable;
use OCP\AppFramework\Db\Entity;

/**
 * @method string getZeitpunkt()
 * @method void setZeitpunkt(string $zeitpunkt)
 * @method string getNcUserId()
 * @method void setNcUserId(string $ncUserId)
 * @method string getAktion()
 * @method void setAktion(string $aktion)
 * @method string getEntitaet()
 * @method void setEntitaet(string $entitaet)
 * @method int getEntitaetId()
 * @method void setEntitaetId(int $entitaetId)
 * @method string|null getFeld()
 * @method void setFeld(?string $feld)
 * @method string|null getAlterWert()
 * @method void setAlterWert(?string $alterWert)
 * @method string|null getNeuerWert()
 * @method void setNeuerWert(?string $neuerWert)
 */
class AuditLog extends Entity implements JsonSerializable {

    protected string $zeitpunkt = '';
    protected string $ncUserId = '';
    protected string $aktion = '';
    protected string $entitaet = '';
    protected int $entitaetId = 0;
    protected ?string $feld = null;
    protected ?string $alterWert = null;
    protected ?string $neuerWert = null;

    public function __construct() {
        $this->addType('id', 'integer');
        $this->addType('entitaetId', 'integer');
    }

    public function jsonSerialize(): array {
        return [
            'id' => $this->id,
            'zeitpunkt' => $this->zeitpunkt,
            'ncUserId' => $this->ncUserId,
            'aktion' => $this->aktion,
            'entitaet' => $this->entitaet,
            'entitaetId' => $this->entitaetId,
            'feld' => $this->feld,
            'alterWert' => $this->alterWert,
            'neuerWert' => $this->neuerWert,
        ];
    }
}
