DELIMITER $$

DROP PROCEDURE IF EXISTS `fesiara`.`ListadoPermisosUsuario` $$
CREATE PROCEDURE `fesiara`.`ListadoPermisosUsuario`(IN i_DUI varchar(10))
BEGIN
        select
  	m.CodigoItem,
  	m.CodigoPadre,
	m.NombreMenu
	from fesiara.menuPrograma as m
  join fesiara.permisos as p  	on m.CodigoItem = p.CodigoItem
	join fesiara.roles as r  	    on r.CodigoRol 	= p.CodigoRol
	join fesiara.asignarrol as a 	on a.CodigoRol 	= r.CodigoRol
	join fesiara.usuarios as u    on u.DUI        = a.DUI
where	
	u.DUI = i_DUI
	group by
	m.CodigoItem,
	m.CodigoPadre,
	m.NombreMenu;

END $$

DELIMITER ;

DELIMITER $$

DROP PROCEDURE IF EXISTS `fesiara`.`MtoAsignarRol` $$
CREATE PROCEDURE `fesiara`.`MtoAsignarRol`(IN i_operacion	char(1),
                                         IN i_modo		int ,
                                         IN i_DUI 	varchar(10),
                                         IN i_CodigoRol int)
BEGIN
                                          declare m_DUI varchar(10);
                                          declare m_CodigoRol int;
      if (i_operacion='I') then
          insert into fesiara.asignarrol(`DUI`,`CodigoRol`)
          values
          (i_DUI,i_CodigoRol);
      end if;
      if (i_operacion='Q') then
          if (i_modo=0) then
              select * from fesiara.asignarrol
               where
                DUI=i_DUI and
                CodigoRol=i_CodigoRol;
            end if;
            if (i_modo=1) then
                select
                a.DUI,
                a.CodigoRol,
                concat(trim(u.Nombres),' ',(u.Apellido1)) as "Nombre",
                u.IdAsociacion,
                trim(s.NombreAsociacion) as "Asociacion"
                from fesiara.asignarrol as a
                join fesiara.usuarios as u on u.DUI=a.DUI
                join fesiara.asociaciones as s on u.IdAsociacion=s.IdAsociacion
                where
                a.CodigoRol=i_CodigoRol;
            end if;
        end if;
        if (i_operacion='L') then
            delete from fesiara.asignarrol
            where
            DUI=i_DUI;
        end if;
        if (i_operacion='D') then
            delete from fesiara.asignarrol
            where
            DUI=i_DUI and
            CodigoRol=I_CodigoRol;
        end if;
END $$

DELIMITER ;


DELIMITER $$

DROP PROCEDURE IF EXISTS `fesiara`.`MtoForo` $$
CREATE PROCEDURE `fesiara`.`MtoForo`(IN i_operacion	char(1),
                                         IN i_modo		int ,
                                         IN i_IdForo int,
                                         In i_DUI varchar(10),
                                         IN i_Titulo varchar(200),
                                         IN i_Mensaje text,
                                         IN i_Fecha date,
                                         In i_Respuetas int,
                                         in i_Identificador int,
                                         In i_Ult_Respuesta date,
                                         IN i_TipoForo binary)
BEGIN

      if (i_operacion='I') then

        insert into fesiara.foro(`DUI`,`Titulo`,`Mensaje`,`Fecha`,`Identificador`,`Ult_Respuesta`,`TipoForo`)

        values

        (i_DUI,i_Titulo,i_Mensaje,i_Fecha,i_Identificador,i_Ult_Respuesta,i_TipoForo);



      end if;



      if (i_operacion='U') then

        UPDATE fesiara.foro SET respuestas=respuestas+1, ult_respuesta=now()

        WHERE IdForo = i_IdForo;



      end if;



      if (i_operacion='Q') then

        if (i_modo=0) then

          SELECT

          f.IdForo,

          concat(trim(u.Nombres),' ',trim(u.Apellido1)) as 'Nombre',

          f.titulo,

          f.Mensaje,

          f.fecha,

          f.Respuestas,

          f.Identificador,

          f.Ult_Respuesta,

          f.TipoForo

          FROM fesiara.foro as f



          join fesiara.usuarios as u on u.DUI=f.DUI



          WHERE Identificador=0 ORDER BY Ult_respuesta DESC;



        end if;



        if (i_modo=1) then

          SELECT

          f.IdForo,

          concat(trim(u.Nombres),' ',trim(u.Apellido1)) as 'Nombre',

          f.titulo,

          f.Mensaje,

          f.fecha,

          f.Respuestas,

          f.Identificador,

          f.Ult_Respuesta,

          f.TipoForo

          FROM fesiara.foro as f

          join fesiara.usuarios as u on u.DUI=f.DUI

          where Identificador=i_Identificador

          order by Fecha asc;

        end if;



        if (i_modo=2) then



          SELECT



          f.IdForo,

          concat(trim(u.Nombres),' ',trim(u.Apellido1)) as 'Nombre',

          f.titulo,

          f.Mensaje,

          f.fecha,

          f.Respuestas,

          f.Identificador,

          f.Ult_Respuesta,

          f.TipoForo

          FROM fesiara.foro as f

          join fesiara.usuarios as u on u.DUI=f.DUI

          WHERE IdForo=i_IdForo;



        end if;

      end if;





END $$

DELIMITER ;

DELIMITER $$

DROP PROCEDURE IF EXISTS `fesiara`.`MtoGaleriaImagenes` $$
CREATE PROCEDURE `fesiara`.`MtoGaleriaImagenes`(IN i_operacion char(1),
                                                IN i_modo  int,
                                                IN i_id  int,
                                                IN i_imagen varchar(200),
                                                IN i_descripcion varchar(400),
                                                IN i_fecha date)
BEGIN
        if (i_operacion='I') then
                insert into fesiara.galeriaImagenes(`imagen`,`descripcion`,`fecha`)
                values (i_imagen,i_descripcion,i_fecha);
        end if;

        if (i_operacion='D') then
                delete from fesiara.galeriaImagenes where id=i_id;
        end if;

        if (i_operacion='Q') then
                if (i_modo=0) then
                        select
                        id,
                        imagen,
                        descripcion,
                        fecha
                        from fesiara.galeriaImagenes;
                end if;
        end if;


END $$

DELIMITER ;

DELIMITER $$

DROP PROCEDURE IF EXISTS `fesiara`.`MtoMenuPrograma` $$
CREATE PROCEDURE `fesiara`.`MtoMenuPrograma`(IN i_operacion	char(1),
                                         IN i_modo		int ,
                                         IN i_CodigoItem int,
                                         IN i_CodigoPadre int,
                                         IN NombreMenu varchar(45))
BEGIN
                                         declare m_CodigoItem int;
                                         declare m_CodigoPadre int;
                                         declare m_NombreMenu varchar(45);
      if (i_operacion='I') then
        insert into fesiara.menuprograma(`CodigoPadre`,`NombreMenu`)
        values
        (i_CodigoPadre,i_NombreMenu);
      end if;
      if (i_operacion='Q') then
        if (i_modo=0) then
          select * from fesiara.menuprograma;
        end if;
      end if;
      if (i_operacion='D') then
        delete from fesiara.menuprograma
        where
        CodigoItem=i_CodigoItem;
      end if;
END $$

DELIMITER ;


DELIMITER $$

DROP PROCEDURE IF EXISTS `fesiara`.`MtoNoticias` $$
CREATE PROCEDURE `fesiara`.`MtoNoticias`(IN i_operacion	char(1),
                                         IN i_modo		int ,
                                         IN i_IdNoticia int,
                                         IN i_Titulo varchar(200),
                                         IN i_Fecha date,
                                         IN i_Contenido text,
                                         In i_DUI varchar(10))
BEGIN
      if (i_operacion='I') then
        insert into fesiara.noticias(`Titulo`,`Fecha`,`Contenido`,`DUI`)
        values
        (i_Titulo,i_Fecha,i_Contenido,i_DUI);
      end if;

      if (i_operacion='Q') then
        if (i_modo=0) then
          select
          n.IdNoticia,
          n.Titulo,
          n.Fecha,
          n.Contenido,
          concat(trim(u.Nombres),' ',trim(u.Apellido1),' ',trim(u.Apellido2)) as 'Nombre'
          from fesiara.noticias as n join
          fesiara.usuarios as u on u.DUI=n.DUI
          order by Fecha desc limit 5;
        end if;
      end if;
END $$

DELIMITER ;


DELIMITER $$

DROP PROCEDURE IF EXISTS `fesiara`.`MtoPermisos` $$
CREATE PROCEDURE `fesiara`.`MtoPermisos`(IN i_operacion	char(1),
                                         IN i_modo		int ,
                                         IN i_CodigoRol int,
                                         IN i_CodigoItem int)
BEGIN
                                         declare m_CodigoRol int;
                                         declare m_CodigoItem int;
      if (i_operacion='I') then
          insert into fesiara.permisos(`CodigoRol`,`CodigoItem`)
          values
          (i_CodigoRol,i_CodigoItem);
      end if;
      if (i_operacion='Q') then
          if (i_modo=0) then
          select
          p.CodigoItem,
          m.CodigoPadre,
          m.NombreMenu
          from fesiara.permisos as p
          join fesiara.menuprograma as m on m.CodigoItem=p.Codigoitem
          where
          p.CodigoRol=i_CodigoRol;
          end if;
      end if;
      if (i_operacion='L') then
          delete from fesiara.permisos
          where
          CodigoRol=i_CodigoRol;
      end if;
      if (i_operacion='D') then
           delete from fesiara.permisos
           where
           CodigoRol=i_CodigoRol and
           CodigoItem=i_CodigoItem;
      end if;
END $$

DELIMITER ;

DELIMITER $$

DROP PROCEDURE IF EXISTS `fesiara`.`MtoRoles` $$
CREATE PROCEDURE `fesiara`.`MtoRoles`(IN i_operacion	char(1),
                                         IN i_modo		int ,
                                         IN i_CodigoRol int,
                                         IN i_NombreRol varchar(25),
                                         IN i_DUI varchar(10))
BEGIN
        declare m_NombreRol varchar(25);
        declare m_CodigoRol int;
     if (i_operacion='I') then

          insert into fesiara.roles(`CodigoRol`,`NombreRol`)
          values
          (' ',i_NombreRol);

      end if;
      if (i_operacion='Q') then
          if (i_modo=0) then
              select * from fesiara.roles;
          end if;
          if (i_modo=1) then
              select
              r.CodigoRol,
              r.NombreRol
              from fesiara.roles as r

              join fesiara.asignarrol as a on a.codigorol=r.codigorol
              where
              a.DUI=i_DUI;
          end if;
          if (i_modo=2) then
            select * from fesiara.roles
            where
            CodigoRol=i_CodigoRol;
          end if;
      end if;

      if (i_operacion='D') then
          delete from fesiara.roles
          where
          CodigoRol=i_CodigoRol;
      end if;
END $$

DELIMITER ;

DELIMITER $$

DROP PROCEDURE IF EXISTS `fesiara`.`MtoUsuarios` $$
CREATE PROCEDURE `fesiara`.`MtoUsuarios`(IN i_operacion	char(1),
                                          	  IN i_modo		int ,
                        	                    IN i_DUI 	varchar(10),
                                              IN i_Clave varchar(45),
                                            	IN i_Nombres varchar(45),
                                            	IN i_Apellido1 varchar(25),
                                              IN i_Apellido2 varchar(25),
                                              IN i_IdAsociacion int(11) ,
                                              IN i_Profesion Varchar(45),
                                              IN i_TipoSocio binary,
                                              IN i_Direccion varchar(200),
                                              IN i_Telefono varchar(11) ,
                                              IN i_Celular varchar(11)  ,
                                              IN i_Email varchar(100),
                                         IN i_Email2 varchar(200))
begin
                                          declare m_DUI 	varchar(10);
                                          declare m_Clave varchar(45);
                                          declare m_Nombres varchar(45);
                                          declare m_Apellido1 varchar(25);
                                          declare m_Apellido2 varchar(25);
                                          declare m_IdAsociacion int(11);
                                          declare m_Profesion Varchar(45);
                                          declare m_Direccion varchar(200);
                                          declare m_Telefono varchar(11);
                                          declare m_Celular varchar(11);
                                          declare m_Email varchar(100);
                                          declare Error int;
            if (i_operacion ='I') then
  		           INSERT INTO fesiara.Usuarios(
                 `DUI`,
                 `Clave`,
                 `Nombres`,
                 `Apellido1`,
                 `Apellido2`,
                 `IdAsociacion`,
                `Profesion`,
                 `TipoSocio`,
                 `Direccion`,
                `Telefono`,
                 `Celular`,
                 `Email`,
                 `Email2`)
      		       values (
                 i_DUI,
                 i_Clave,
                 i_Nombres,
                 i_Apellido1,
                 i_Apellido2,
                 i_IdAsociacion,
                 i_Profesion,
                 i_TipoSocio,
                 i_Direccion,
                 i_Telefono,
                 i_Celular,
                 i_Email,
                 i_Email2);
      		      end if;
            if (i_operacion='Q') then
                if (i_modo=0) then
                    select
                    DUI,
                    concat(trim(Nombres),' ',trim(Apellido1),' ',trim(Apellido2)) as 'Nombre',
                    IdAsociacion as 'Asociacion'
                    from fesiara.usuarios
                    where
                    IdAsociacion=i_IdAsociacion
                    order by Nombres asc;
                end if;
                if (i_modo=1) then
                  select * from  fesiara.usuarios
                  where
                  Email=i_Email and
                  Clave=i_Clave;
                end if;
                if (i_modo=2) then
                  select
                  DUI,
                  concat(trim(Nombres),' ',trim(Apellido1),' ',trim(Apellido2)) as 'Nombre',
                  IdAsociacion as 'Asociacion'
                  from fesiara.usuarios
                  where
                  Nombres like concat(i_Nombres,'%');
                end if;
                if (i_modo=3) then
                   select * from fesiara.usuarios
                   where
                    DUI=i_DUI;
                  end if;
              end if;
              if (i_operacion='D') then
                  set Error=1;
                 if not exists( select 1 from fesiara.asignarrol where DUI=i_DUI Limit 1) then
                    set Error=0;
                    delete from fesiara.usuarios where DUI=I_DUI;
                  end if;
                  if (Error=0) then
                      select 0 as "Error" from fesiara.menuprograma limit 1;
                  else
                      select 1 as "Error" from fesiara.menuprograma limit 1;
                  end if;
              end if;
END $$

DELIMITER ;