<?php

namespace FacturaScripts\Plugins\Partes\Extension\Model;

use Closure;
use FacturaScripts\Plugins\Partes\Model\OIOperarioTarea;

class Proyecto
{

    // Nos traemos los operarios asignados a la tarea

    /*
        private $id;

        protected function getMiembros(): OIOperarioTarea
        {
            $miembro = new OIOperarioTarea();
            $miembro->loadFromCode($this->id);
            return $miembro;

        }*/

    // ***************************************
    // ** Métodos disponibles para extender **
    // ***************************************

    public function clear(): Closure
    {
        return function () {
            // tu código aquí
            // se ejecuta cada vez que se instancia un objeto de este modelo. Asigna valores predeterminados.
        };
    }

    public function delete(): Closure
    {
        return function () {
            // tu código aquí
            // delete() se ejecuta una vez realizado el delete() del modelo,
            // cuando ya se ha eliminado el registro de la base de datos
        };
    }

    public function deleteBefore(): Closure
    {
        return function () {
            // tu código aquí
            // deleteBefore() se ejecuta antes de ejecutar el delete() del modelo.
            // Si devolvemos false, impedimos el delete().
        };
    }

    public function save(): Closure
    {
        return function () {
            // tu código aquí
            // save() se ejecuta una vez realizado el save() del modelo,
            // cuando ya se ha guardado el registro en la base de datos
        };
    }

    public function saveBefore(): Closure
    {
        return function () {
            // tu código aquí
            // saveBefore() se ejecuta antes de hacer el save() del modelo.
            // Si devolvemos false, impedimos el save().
        };
    }

    public function saveInsert(): Closure
    {
        return function () {
            // tu código aquí
            // saveInsert() se ejecuta una vez realizado el saveInsert() del modelo,
            // cuando ya se ha guardado el registro en la base de datos
        };
    }

    public function saveInsertBefore(): Closure
    {
        return function () {
            // tu código aquí
            // saveInsertBefore() se ejecuta antes de hacer el saveInsert() del modelo.
            // Si devolvemos false, impedimos el saveInsert().
        };
    }

    public function saveUpdate(): Closure
    {
        return function () {
            // tu código aquí
            // saveUpdate() se ejecuta una vez realizado el saveUpdate() del modelo,
            // cuando ya se ha guardado el registro en la base de datos
        };
    }

    public function saveUpdateBefore(): Closure
    {
        return function () {
            // tu código aquí
            // saveUpdateBefore() se ejecuta antes de hacer el saveUpdate() del modelo.
            // Si devolvemos false, impedimos el saveUpdate().
        };
    }

    public function test(): Closure
    {
        return function () {
            // tu código aquí
            // test se ejecuta justo después del método test del modelo.
            // Si devolvemos false, impedimos el save().
        };
    }

    public function testBefore(): Closure
    {
        return function () {
            // tu código aquí
            // test se ejecuta justo antes del método test del modelo.
            // Si devolvemos false, impedimos el save() y el resto de test().
        };
    }

}
