declare @p_idconsulta int
declare @p_idindicador int
declare @uid varchar(50)
declare @p_subcategoria1 int
declare @p_subcategoria2 int
declare @p_consulta int
declare @p_indicador int
declare @p_idfuncionalidad int
select @uid= uid from seg_usuario where id=1
select @p_consulta=id from rep_categoria where categoria= 'Consultas'
select @p_indicador=id from rep_categoria where categoria='Indicadores'
select @p_idfuncionalidad=id_funcionalidad from rep_reporte where id=1
--modificacion categoria

if not exists (select id from rep_categoria where categoria='evento' and id_categoria=@p_indicador)
begin
insert into rep_categoria (uid, eid, active, categoria, id_categoria) values (@uid, '01',1,'Evento', @p_indicador)
set @p_subcategoria1 = @@identity
end
else
begin
select @p_subcategoria1=id from rep_categoria where categoria='evento' and id_categoria=@p_indicador
end

if not exists (select id from rep_categoria where categoria='evento' and id_categoria=@p_consulta)
begin
insert into rep_categoria (uid, eid, active, categoria, id_categoria) values (@uid, '01',1,'Evento', @p_consulta)
set @p_subcategoria2 = @@identity
end
else
begin
select @p_subcategoria2=id from rep_categoria where categoria='evento' and id_categoria=@p_consulta
end



--Consulta
if not exists (select id from rep_reporte where reporte='Listado de tiempos de falla' and reporte_codigo='CONSULTAS' )

begin

insert into rep_reporte (uid, eid, reporte, reporte_codigo,id_funcionalidad, esformato, tienegraficos) values (@uid,'01','Listado de tiempos de falla','CONSULTAS',@p_idfuncionalidad,0,1)
set @p_idconsulta = @@identity

insert into rep_reporte_categoria (uid, eid, reporte_categoria, id_categoria, id_reporte)values (@uid, '01', 'dis_evento', @p_subcategoria2, @p_idconsulta)

insert into rep_campoReporte (uid, eid, campoReporte, id_reporte, id_tipoCampoReporte, tabla, valorDefecto, esParametro, esSerie, parametroTotal) values (@uid, '01', 'familia', @p_idconsulta, 4, 'gen_familia', '', 1,0,'')
insert into rep_campoReporte (uid, eid, campoReporte, id_reporte, id_tipoCampoReporte, tabla, valorDefecto, esParametro, esSerie, parametroTotal) values (@uid, '01', 'equipo', @p_idconsulta, 4, 'equ_equipo', '', 1,0,'')
insert into rep_campoReporte (uid, eid, campoReporte, id_reporte, id_tipoCampoReporte, tabla, valorDefecto, esParametro, esSerie, parametroTotal) values (@uid, '01', 'marca', @p_idconsulta, 4, 'cat_marca', '', 1,0,'')
insert into rep_campoReporte (uid, eid, campoReporte, id_reporte, id_tipoCampoReporte, tabla, valorDefecto, esParametro, esSerie, parametroTotal) values (@uid, '01', 'modelo', @p_idconsulta, 4, 'cat_catalogo.equipo', '', 1,0,'')

insert into rep_origenDato (uid,eid,id_usuario_modifico,id_usuario_creo,fechaModificacion,fechaCreacion,active,origenDato,origenDato_codigo,id_reporte) Values (@uid,'01',0,0,getdate(),getDate(),1,'con_tiempoFalla','',@p_idconsulta)

end

--Indicador
if not exists (select id from rep_reporte where reporte='contador de fallas' and reporte_codigo='ind_contadorFallas' )

begin

insert into rep_reporte (uid, eid, reporte, reporte_codigo,id_funcionalidad, esformato, tienegraficos) values (@uid,'01','contador de fallas','ind_contadorFallas',@p_idfuncionalidad,0,1)
set @p_idindicador = @@identity

insert into rep_indicador (uid, eid, indicador, indicador_codigo, id_reporte, titulo, descripcion, cabecera) values	(@uid, '01', 'fallas de un equipo', '1_N·mero', @p_idindicador, 'Numero de fallas X equipo', 'Cantidad de fallas que presento el equipo', 'Numero de fallas X equipo')

insert into rep_reporte_categoria (uid, eid, reporte_categoria, id_categoria, id_reporte) values (@uid, '01', 'dis_evento', @p_subcategoria1,@p_idindicador)

insert into rep_campoReporte (uid, eid, campoReporte, id_reporte, id_tipoCampoReporte, tabla, valorDefecto, esParametro, esSerie, parametroTotal) values (@uid, '01', 'familia', @p_idindicador, 4, 'gen_familia', '', 1,0,'')
insert into rep_campoReporte (uid, eid, campoReporte, id_reporte, id_tipoCampoReporte, tabla, valorDefecto, esParametro, esSerie, parametroTotal) values (@uid, '01', 'marca', @p_idindicador, 4, 'cat_marca', '', 1,0,'')
insert into rep_campoReporte (uid, eid, campoReporte, id_reporte, id_tipoCampoReporte, tabla, valorDefecto, esParametro, esSerie, parametroTotal) values (@uid, '01', 'modelo', @p_idindicador, 4, 'cat_catalogo.equipo', '', 1,0,'')

insert into rep_origenDato (uid,eid,id_usuario_modifico,id_usuario_creo,fechaModificacion,fechaCreacion,active,origenDato,origenDato_codigo,id_reporte) Values (@uid,'01',0,0,getdate(),getDate(),1,'ind_contadorFallas','',@p_idindicador)


end
---creacion de procedimientos almacenados
---procedimiento 1
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ind_contadorFallas]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[ind_contadorFallas]
GO
CREATE PROCEDURE [ind_contadorFallas]
	@p_familia as INT = 0,
	@p_marca as INT = 0,
	@p_modelo as INT = 0,
	@p_eid varchar(100),
	@p_id as int=0
AS
BEGIN

select (count(view_dis_evento.id)) as valor,
		convert(varchar(7),view_dis_evento.fechaHoraInicio_ff,111) as periodo,
		case when view_equ_equipo.[equipo]='' then 'No hay Datos' 
else 
view_equ_equipo.[equipo] end as serie1

 from view_dis_evento 
inner join view_equ_equipo on view_dis_evento.id_equipo = view_equ_equipo.id
inner join view_cat_catalogo_equipo on view_equ_equipo.[cat_catalogo.equipo_catalogo.equipo]=view_cat_catalogo_equipo.[catalogo.equipo]
where (@p_modelo = 0 or view_cat_catalogo_equipo.[cat_catalogo_equipo_cat_subtipoCatalogo_subtipoCatalogo]=@p_modelo)
and (@p_marca = 0 or view_cat_catalogo_equipo.[cat_marca_marca]=@p_marca)
and (@p_familia = 0 or view_cat_catalogo_equipo.[cat_catalogo_equipo_gen_familia_familia]=@p_familia)
group by convert(varchar(7),view_dis_evento.fechaHoraInicio_ff,111),
			view_equ_equipo.[equipo]


select (count(view_dis_evento.id)) as valor,
		case when view_equ_equipo.[equipo]='' then 'No hay Datos' 
else
view_equ_equipo.[equipo] end as serie1

 from view_dis_evento 
inner join view_equ_equipo on view_dis_evento.id_equipo = view_equ_equipo.id
inner join view_cat_catalogo_equipo on view_equ_equipo.[cat_catalogo.equipo_catalogo.equipo]=view_cat_catalogo_equipo.[catalogo.equipo]
where (@p_modelo = 0 or view_cat_catalogo_equipo.[cat_catalogo_equipo_cat_subtipoCatalogo_subtipoCatalogo]=@p_modelo)
and (@p_marca = 0 or view_cat_catalogo_equipo.[cat_marca_marca]=@p_marca)
and (@p_familia = 0 or view_cat_catalogo_equipo.[cat_catalogo_equipo_gen_familia_familia]=@p_familia)
group by view_equ_equipo.[equipo]

select (count(view_dis_evento.id)) as total

 from view_dis_evento 
inner join view_equ_equipo on view_dis_evento.id_equipo = view_equ_equipo.id
inner join view_cat_catalogo_equipo on view_equ_equipo.[cat_catalogo.equipo_catalogo.equipo]=view_cat_catalogo_equipo.[catalogo.equipo]
where (@p_modelo = 0 or view_cat_catalogo_equipo.[cat_catalogo_equipo_cat_subtipoCatalogo_subtipoCatalogo]=@p_modelo)
and (@p_marca = 0 or view_cat_catalogo_equipo.[cat_marca_marca]=@p_marca)
and (@p_familia = 0 or view_cat_catalogo_equipo.[cat_catalogo_equipo_gen_familia_familia]=@p_familia)
end
go
---procedimiento 2
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'con_tiempoFalla') AND type in (N'P', N'PC')) DROP PROCEDURE [con_tiempoFalla]
GO

CREATE PROCEDURE [con_tiempoFalla]
	@p_familia as INT = 0,
	@p_marca as INT = 0,
	@p_modelo as INT = 0,
	@p_equipo as INT = 0,
	@p_eid varchar(100),
	@p_id as int=0
AS
BEGIN

select view_dis_evento.id,
view_equ_equipo.[equipo] as equipo_equipo, 
view_cat_catalogo_equipo.[cat_marca_marca] as cat_marca_marca,
view_cat_catalogo_equipo.[cat_catalogo_equipo_gen_familia_familia] as gen_familia_familia,
view_cat_catalogo_equipo.[catalogo.equipo] as cat_catalogo_equipo_catalogo_equipo ,
view_dis_evento.fechaHoraInicio_ff as dis_evento_fechahorainicio_ff,
[dbo].[diferenciaFechas](view_dis_evento.fechaHoraInicio_ff, view_dis_evento.duracion_hh) as dis_evento_duracion_hh
 from view_dis_evento 
inner join view_equ_equipo on view_dis_evento.id_equipo = view_equ_equipo.[id]
inner join view_cat_catalogo_equipo on view_equ_equipo.[cat_catalogo.equipo_catalogo.equipo]=view_cat_catalogo_equipo.[catalogo.equipo]
where (@p_equipo = 0 or view_equ_equipo.[cat_catalogo.equipo_catalogo.equipo]=@p_equipo)
and (@p_modelo = 0 or view_cat_catalogo_equipo.[cat_catalogo_equipo_cat_subtipoCatalogo_subtipoCatalogo]=@p_modelo)
and (@p_marca = 0 or view_cat_catalogo_equipo.[cat_marca_marca]=@p_marca)
and (@p_familia = 0 or view_cat_catalogo_equipo.[cat_catalogo_equipo_gen_familia_familia]=@p_familia)

end
go


IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[diferenciaFechas]') AND type in (N'F', N'FN'))
DROP function [dbo].[diferenciaFechas]
go
create function [dbo].[diferenciaFechas](@p_fechaInicio smalldatetime, @p_fechaFin smalldatetime) returns float
as 
begin
declare @p_duracion as float
set @p_duracion = 0

if @p_fechaFin <> '01/01/1900' 
begin
set @p_duracion =DATEDIFF(mi,@p_fechaInicio , @p_fechaFin)/60 
end
return @p_duracion
end
go
