DROP VIEW v_entries_tot;

CREATE OR REPLACE VIEW v_entries_tot AS
SELECT E.id AS id,  E.instancia,  `start_time`,  `end_time`,  `entry_type`,  `repeat_id`,  `room_id`, `timestamp`,  `create_by`,  `modified_by`,  `tipoAudiencia_id`, LEFT(`modif_by`, 256),  `name`,  `type` AS Orig_type, LEFT(`description`, 256),  `status`,  `reminded`,  `info_time`,  `info_user`, LEFT(`info_text`, 256),  `ical_uid`,  `ical_sequence`,  `ical_recur_id`,  `juez_id`,  `juez2_id`,  `juez3_id`,  `fiscal_id`,  `fiscal2_id`,  `defensor_id`,  `defensor2_id`,  E.tipoAudiencia,  `cantidadImputados`,  `estado`,  `motivoCancelacion`,  `ignorarSolapamientoPartes`, LEFT(`observaciones`, 256),  `noContarEstaAudiencia`,  `noMostrarEnGrilla`,  `contarPor`,  `operador_id`,  `resultadista_id`,  `horaInicioReal`,  `horaFinReal`,  `responsableDemora_id`,  `plazoPP`,  `tipoDelito`,  `femicidio`,  `conImputadoDetenido`,  `controlResguardoInveniet`, LEFT(`otrasResoluciones`, 256),  `allow_registration`,  `registrant_limit_enabled`,  `registrant_limit`,  `registration_opens`,  `registration_opens_enabled`,  `registration_closes`,  `registration_closes_enabled`, toolTipAudiencia(E.id) AS vToolTip, TA.micolor AS type
FROM mrbs_entry E INNER JOIN mrbs_tipo_audiencia TA ON E.tipoAudiencia_id = TA.id
UNION
SELECT E.id AS id,  E.instancia,  `start_time`,  `end_time`,  `entry_type`,  `repeat_id`,  `room2_id`, `timestamp`,  `create_by`,  `modified_by`,  `tipoAudiencia_id`, LEFT(`modif_by`, 256),  `name`,  `type`  AS Orig_type, LEFT(`description`, 256),  `status`,  `reminded`,  `info_time`,  `info_user`, LEFT(`info_text`, 256),  `ical_uid`,  `ical_sequence`,  `ical_recur_id`,  `juez_id`,  `juez2_id`,  `juez3_id`,  `fiscal_id`,  `fiscal2_id`,  `defensor_id`,  `defensor2_id`,  E.tipoAudiencia,  `cantidadImputados`,  `estado`,  `motivoCancelacion`,  `ignorarSolapamientoPartes`, LEFT(`observaciones`, 256),  `noContarEstaAudiencia`,  `noMostrarEnGrilla`,  `contarPor`,  `operador_id`,  `resultadista_id`,  `horaInicioReal`,  `horaFinReal`,  `responsableDemora_id`,  `plazoPP`,  `tipoDelito`,  `femicidio`,  `conImputadoDetenido`,  `controlResguardoInveniet`, LEFT(`otrasResoluciones`, 256),  `allow_registration`,  `registrant_limit_enabled`,  `registrant_limit`,  `registration_opens`,  `registration_opens_enabled`,  `registration_closes`,  `registration_closes_enabled`, toolTipAudiencia(E.id) AS vToolTip, TA.micolor AS type 
FROM mrbs_entry E INNER JOIN mrbs_tipo_audiencia TA ON E.tipoAudiencia_id = TA.id WHERE room2_id IS NOT null
UNION
SELECT E.id AS id,  E.instancia,  `start_time`,  `end_time`,  `entry_type`,  `repeat_id`,  `room3_id`, `timestamp`,  `create_by`,  `modified_by`,  `tipoAudiencia_id`, LEFT(`modif_by`, 256),  `name`,  `type` AS Orig_type, LEFT(`description`, 256),  `status`,  `reminded`,  `info_time`,  `info_user`, LEFT(`info_text`, 256),  `ical_uid`,  `ical_sequence`,  `ical_recur_id`,  `juez_id`,  `juez2_id`,  `juez3_id`,  `fiscal_id`,  `fiscal2_id`,  `defensor_id`,  `defensor2_id`,  E.tipoAudiencia,  `cantidadImputados`,  `estado`,  `motivoCancelacion`,  `ignorarSolapamientoPartes`, LEFT(`observaciones`, 256),  `noContarEstaAudiencia`,  `noMostrarEnGrilla`,  `contarPor`,  `operador_id`,  `resultadista_id`,  `horaInicioReal`,  `horaFinReal`,  `responsableDemora_id`,  `plazoPP`,  `tipoDelito`,  `femicidio`,  `conImputadoDetenido`,  `controlResguardoInveniet`, LEFT(`otrasResoluciones`, 256),  `allow_registration`,  `registrant_limit_enabled`,  `registrant_limit`,  `registration_opens`,  `registration_opens_enabled`,  `registration_closes`,  `registration_closes_enabled`, toolTipAudiencia(E.id) AS vToolTip, TA.micolor AS type 
FROM mrbs_entry E INNER JOIN mrbs_tipo_audiencia TA ON E.tipoAudiencia_id = TA.id WHERE room3_id IS NOT NULL


DELIMITER $$

CREATE FUNCTION toolTipAudiencia (vid INT) 
RETURNS VARCHAR(400) 
CHARSET utf8mb4 
COLLATE utf8mb4_general_ci 
SQL SECURITY INVOKER 
BEGIN
  DECLARE vToolTip VARCHAR(400);
 	
  SELECT CONCAT(
    TA.tipoAudiencia, '\n',
    'Tribunal: ', Tribunal2(Juez.juez_id, J2.juez_id, J3.juez_id, Juez.nombre, J2.nombre, J3.nombre, ' - '), '\n',
    'Salas: ', salas(E.room_id, E.room2_id, E.room3_id, ' - '), '\n',
    'Fiscalia: ', Fiscal.nombre, '-', IFNULL(mFQ.nombre, ''), '\n',
    'Defensa: ', Defensor.nombre, '-', IFNULL(md2.nombre, ''), '\n',
    'Caso: ', E.description, '\n',
    'Estado Audiencia: ', E.Estado
  ) 
  INTO vToolTip
  FROM mrbs_entry E
    INNER JOIN mrbs_room R ON E.room_id = R.id AND R.visible = 1
    INNER JOIN mrbs_juez Juez ON E.juez_id = Juez.juez_id
    INNER JOIN mrbs_juez J2 ON E.juez2_id = J2.juez_id
    INNER JOIN mrbs_juez J3 ON E.juez3_id = J3.juez_id
    INNER JOIN mrbs_fiscal Fiscal ON E.fiscal_id = Fiscal.fiscal_id
    INNER JOIN mrbs_defensor Defensor ON E.defensor_id = Defensor.defensor_id
    INNER JOIN mrbs_tipo_audiencia TA ON E.tipoAudiencia_id = TA.id
    LEFT OUTER JOIN v_fiscquer mFQ ON E.fiscal2_id = mFQ.id 
    LEFT OUTER JOIN mrbs_defensor md2 ON E.defensor2_id = md2.defensor_id
  WHERE E.ID = vid;

  RETURN vToolTip;
END$$

DELIMITER ;

SELECT toolTipAudiencia(345026)
