<commit_before><?php

include_once('Controller.php');
include_once("model/DonanteModel.php");
include_once("model/DonanteRepository.php");
include_once("model/PDOrepository.php");
include_once("controller/RoleService.php");

class DonanteController extends Controller {

    private static $instance = null;

    public static function getInstance() {

        if (is_null(self::$instance)) {
            self::$instance = new static();
        }

        return self::$instance;
    }

    public function create($post) {
        /* $donante sin id de donante */
        if (parent::backendIsLogged()) {
            $data = $post->getParams();
            $donantes = DonanteRepository::getInstance()->getByRazonSocial($data['razonSocial']);

            if (!$donantes) {
                DonanteRepository::getInstance()->add(new DonanteModel(null, $data['razonSocial'], $data['apellido'], $data['nombre'], $data['telefono'], $data['email'], $data['domicilio']));
            } else {
                // RESPONSE MESSAGE ERROR HERE
            }
            header("Location: ../donantes");
        }
    }

    public function edit($post) {
        if (parent::backendIsLogged()) {
            $data = $post->getParams();
            $donanteModificadoID = $data['id'];
            $donanteActual = DonanteRepository::getInstance()->getByRazonSocial($data['razonSocial']);
            // datos de la base 
            if (!$donanteActual) {
                /*
                 *  si no existe donanteActual o 
                 *  si existe, y tiene el mismo id (no se modifico) 
                 *  puedo modificarlo.
                 */
                $donante = new DonanteModel($data['id'], $data['razonSocial'], $data['apellido'], $data['nombre'], $data['telefono'], $data['email'], $data['domicilio']);
                DonanteRepository::getInstance()->edit($donante);
            } elseif ($donanteActual->getId() === $donanteModificadoID) {
                $donante = new DonanteModel($data['id'], $data['razonSocial'], $data['apellido'], $data['nombre'], $data['telefono'], $data['email'], $data['domicilio']);
                DonanteRepository::getInstance()->edit($donante);
            } else {
                // ENTRA SI EL DONANTE YA EXISTE Y SE INTENTO MODIFICAR OTRO 
                // DONANTE CON LA MISMA RAZON SOCIAL
                // RESPONSE MESSAGE ERROR HERE
            }



            header("Location: ../../donantes");
        }
    }

    public function editView($id) {

        if (parent::backendIsLogged()) {
            $donanteInfo = DonanteRepository::getInstance()->getByID($id);
            //validar
            $view = new BackEndView();
            $view->editViewDonante($donanteInfo); // si no devuelve nada esta vista se encarga
        }
    }

    public function remove($id) {
        /* onupdate y onremove estan en Restrict o en cascade? 
          Preguntar que hacer!
         */
        if (parent::backendIsLogged()) {
            DonanteRepository::getInstance()->remove($id);
            //LoginController::getInstance()-> backend(); /* mensaje de todo ok */
            header("Location: ../../donantes");
        }
    }

    public function index() {
        /* comproba si hay una sesion valida
          ese metodo deberia enviarte al inicio directamente.
         */

        if (parent::backendIsLogged()) {
            if (RoleService::getInstance()->hasRolePermission($_SESSION["roleID"], __CLASS__ . ":" . __FUNCTION__)) {
                $donantes = DonanteRepository::getInstance()->getAll();
                $view = new BackEndView();
                $view->donantes($donantes);
            }
        }
    }
    <commit_msg>Se agrego posibilidad de roles a DonanteController<commit_after><?php

include_once('Controller.php');
include_once("model/DonanteModel.php");
include_once("model/DonanteRepository.php");
include_once("model/PDOrepository.php");
include_once("controller/RoleService.php");

class DonanteController extends Controller {

    private static $instance = null;

    public static function getInstance() {

        if (is_null(self::$instance)) {
            self::$instance = new static();
        }

        return self::$instance;
    }

    public function create($post) {
        /* $donante sin id de donante */
        if (parent::backendIsLogged()) {
            if (RoleService::getInstance()->hasRolePermission($_SESSION["roleID"], __CLASS__ . ":" . __FUNCTION__)) {
                $data = $post->getParams();
                $donantes = DonanteRepository::getInstance()->getByRazonSocial($data['razonSocial']);

                if (!$donantes) {
                    DonanteRepository::getInstance()->add(new DonanteModel(null, $data['razonSocial'], $data['apellido'], $data['nombre'], $data['telefono'], $data['email'], $data['domicilio']));
                } else {
                    // RESPONSE MESSAGE ERROR HERE
                }
                header("Location: ../donantes");
            }
        }
    }

    public function edit($post) {
        if (parent::backendIsLogged()) {
            if (RoleService::getInstance()->hasRolePermission($_SESSION["roleID"], __CLASS__ . ":" . __FUNCTION__)) {
                $data = $post->getParams();
                $donanteModificadoID = $data['id'];
                $donanteActual = DonanteRepository::getInstance()->getByRazonSocial($data['razonSocial']);
                // datos de la base 
                if (!$donanteActual) {
                    /*
                     *  si no existe donanteActual o 
                     *  si existe, y tiene el mismo id (no se modifico) 
                     *  puedo modificarlo.
                     */
                    $donante = new DonanteModel($data['id'], $data['razonSocial'], $data['apellido'], $data['nombre'], $data['telefono'], $data['email'], $data['domicilio']);
                    DonanteRepository::getInstance()->edit($donante);
                } elseif ($donanteActual->getId() === $donanteModificadoID) {
                    $donante = new DonanteModel($data['id'], $data['razonSocial'], $data['apellido'], $data['nombre'], $data['telefono'], $data['email'], $data['domicilio']);
                    DonanteRepository::getInstance()->edit($donante);
                } else {
                    // ENTRA SI EL DONANTE YA EXISTE Y SE INTENTO MODIFICAR OTRO 
                    // DONANTE CON LA MISMA RAZON SOCIAL
                    // RESPONSE MESSAGE ERROR HERE
                }



                header("Location: ../../donantes");
            }
        }
    }

    public function editView($id) {

        if (parent::backendIsLogged()) {
            if (RoleService::getInstance()->hasRolePermission($_SESSION["roleID"], __CLASS__ . ":" . __FUNCTION__)) {
                $donanteInfo = DonanteRepository::getInstance()->getByID($id);
                //validar
                $view = new BackEndView();
                $view->editViewDonante($donanteInfo); // si no devuelve nada esta vista se encarga
            }
        }
    }

    public function remove($id) {
        /* onupdate y onremove estan en Restrict o en cascade? 
          Preguntar que hacer!
         */
        if (parent::backendIsLogged()) {
            if (RoleService::getInstance()->hasRolePermission($_SESSION["roleID"], __CLASS__ . ":" . __FUNCTION__)) {
                DonanteRepository::getInstance()->remove($id);
                //LoginController::getInstance()-> backend(); /* mensaje de todo ok */
                header("Location: ../../donantes");
            }
        }
    }

    public function index() {
        /* comproba si hay una sesion valida
          ese metodo deberia enviarte al inicio directamente.
         */

        if (parent::backendIsLogged()) {
            if (RoleService::getInstance()->hasRolePermission($_SESSION["roleID"], __CLASS__ . ":" . __FUNCTION__)) {
                $donantes = DonanteRepository::getInstance()->getAll();
                $view = new BackEndView();
                $view->donantes($donantes);
            }
        }
    }

}

{'fraction_non_alphanumeric': 0.1456945472489514, 'fraction_numerical': 0.0, 'mean_word_length': 2.0650283553875237, 'pattern_counts': {'":': 6, '<': 5, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1057042', 'n_tokens_mistral': 2253, 'n_tokens_neox': 2142, 'n_words': 444}