public static Estadistica obtener(int anio, int trimestre, string tipo) { Estadistica estadistica = null; List <SqlParameter> parametros = Estadisticas.obtenerParametrosBusqueda(anio, trimestre); switch (tipo) { case "cantReservasCanceladas": estadistica = Estadisticas.obtenerTop5CantReservasCanceladas(parametros); break; case "cantConsumiblesFacturados": estadistica = Estadisticas.obtenerTop5CantConsumiblesFacturados(parametros); break; case "cantDiasFueraServicio": estadistica = Estadisticas.obtenerTop5CantDiasFueraServicio(parametros); break; case "habitacionMayorOcupacion": estadistica = Estadisticas.obtenerTop5HabitacionMayorOcupacion(parametros); break; case "clienteMasPuntos": estadistica = Estadisticas.obtenerTop5ClienteMasPuntos(parametros); break; } return(estadistica); }
public static Estadistica obtenerTop5CantReservasCanceladas(List <SqlParameter> parametros) { try { Estadistica estadistica = new Estadistica(); DataGridViewTextBoxColumn cantidad = new DataGridViewTextBoxColumn(); cantidad.HeaderText = "Cantidad Reservas Canceladas"; cantidad.DataPropertyName = "cantidad"; cantidad.ReadOnly = true; cantidad.Visible = true; estadistica.columnas.Add(cantidad); DataGridViewTextBoxColumn nombre = new DataGridViewTextBoxColumn(); nombre.HeaderText = "Nombre"; nombre.DataPropertyName = "nombre"; nombre.ReadOnly = true; nombre.Visible = true; estadistica.columnas.Add(nombre); DataGridViewTextBoxColumn mail = new DataGridViewTextBoxColumn(); mail.HeaderText = "E-mail"; mail.DataPropertyName = "mail"; mail.ReadOnly = true; mail.Visible = true; estadistica.columnas.Add(mail); DataGridViewTextBoxColumn telefono = new DataGridViewTextBoxColumn(); telefono.HeaderText = "Telefono"; telefono.DataPropertyName = "telefono"; telefono.ReadOnly = true; telefono.Visible = true; estadistica.columnas.Add(telefono); string sql = @"SELECT TOP 5 count(*) as cantidad, h.nombre, h.mail, h.telefono FROM WHERE_EN_EL_DELETE_FROM.hoteles h INNER JOIN WHERE_EN_EL_DELETE_FROM.reservas r ON r.hotel_id = h.hotel_id AND r.cancelacion_fecha IS NOT NULL AND r.cancelacion_usuario_id IS NOT NULL AND r.cancelacion_fecha BETWEEN convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110) GROUP BY h.nombre, h.mail, h.telefono ORDER BY cantidad DESC"; estadistica.data = DBInterface.seleccionar(sql, parametros); return(estadistica); } catch (Exception) { throw new Exception("Ocurrio un error al procesar su consulta."); } }
public static Estadistica obtenerTop5ClienteMasPuntos(List <SqlParameter> parametros) { try { Estadistica estadistica = new Estadistica(); DataGridViewTextBoxColumn puntos = new DataGridViewTextBoxColumn(); puntos.HeaderText = "Puntos"; puntos.DataPropertyName = "puntostotales"; puntos.ReadOnly = true; puntos.Visible = true; estadistica.columnas.Add(puntos); DataGridViewTextBoxColumn nombre = new DataGridViewTextBoxColumn(); nombre.HeaderText = "Nombre"; nombre.DataPropertyName = "nombre"; nombre.ReadOnly = true; nombre.Visible = true; estadistica.columnas.Add(nombre); DataGridViewTextBoxColumn apellido = new DataGridViewTextBoxColumn(); apellido.HeaderText = "Apellido"; apellido.DataPropertyName = "apellido"; apellido.ReadOnly = true; apellido.Visible = true; estadistica.columnas.Add(apellido); DataGridViewTextBoxColumn documentoTipo = new DataGridViewTextBoxColumn(); documentoTipo.HeaderText = "Tipo de documento"; documentoTipo.DataPropertyName = "documento_tipo"; documentoTipo.ReadOnly = true; documentoTipo.Visible = true; estadistica.columnas.Add(documentoTipo); DataGridViewTextBoxColumn documentoNumero = new DataGridViewTextBoxColumn(); documentoNumero.HeaderText = "Numero de documento"; documentoNumero.DataPropertyName = "documento_nro"; documentoNumero.ReadOnly = true; documentoNumero.Visible = true; estadistica.columnas.Add(documentoNumero); string sql = @"SELECT TOP 5 SUM(p.puntos) as puntostotales, c.nombre, c.apellido, c.documento_tipo, c.documento_nro FROM WHERE_EN_EL_DELETE_FROM.clientes c INNER JOIN ( SELECT f.cliente_id, SUM(i.precio_unitario*i.cantidad) as monto, SUM(i.precio_unitario*i.cantidad)/10 as puntos FROM WHERE_EN_EL_DELETE_FROM.facturas f INNER JOIN WHERE_EN_EL_DELETE_FROM.items i ON i.factura_id = f.factura_id INNER JOIN WHERE_EN_EL_DELETE_FROM.consumos co ON co.consumo_id = i.consumo_id WHERE f.fecha BETWEEN convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110) GROUP BY f.cliente_id UNION SELECT f.cliente_id, SUM(i.precio_unitario*i.cantidad) as monto, SUM(i.precio_unitario*i.cantidad)/20 as puntos FROM WHERE_EN_EL_DELETE_FROM.facturas f INNER JOIN WHERE_EN_EL_DELETE_FROM.items i ON i.factura_id = f.factura_id AND i.consumo_id IS NULL WHERE f.fecha BETWEEN convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110) GROUP BY f.cliente_id ) p ON p.cliente_id = c.cliente_id GROUP BY c.cliente_id, c.nombre, c.apellido, c.documento_nro, c.documento_tipo ORDER BY puntostotales DESC"; estadistica.data = DBInterface.seleccionar(sql, parametros); return(estadistica); } catch (Exception er) { throw new Exception("Ocurrio un error al procesar su consulta."); } }
public static Estadistica obtenerTop5HabitacionMayorOcupacion(List <SqlParameter> parametros) { try { Estadistica estadistica = new Estadistica(); DataGridViewTextBoxColumn cantidadDias = new DataGridViewTextBoxColumn(); cantidadDias.HeaderText = "Cantidad Dias Ocupada"; cantidadDias.DataPropertyName = "cantidaddias"; cantidadDias.ReadOnly = true; cantidadDias.Visible = true; estadistica.columnas.Add(cantidadDias); DataGridViewTextBoxColumn cantidadVeces = new DataGridViewTextBoxColumn(); cantidadVeces.HeaderText = "Cantidad Veces Ocupada"; cantidadVeces.DataPropertyName = "cantidadveces"; cantidadVeces.ReadOnly = true; cantidadVeces.Visible = true; estadistica.columnas.Add(cantidadVeces); DataGridViewTextBoxColumn piso = new DataGridViewTextBoxColumn(); piso.HeaderText = "Piso"; piso.DataPropertyName = "piso"; piso.ReadOnly = true; piso.Visible = true; estadistica.columnas.Add(piso); DataGridViewTextBoxColumn numero = new DataGridViewTextBoxColumn(); numero.HeaderText = "Numero"; numero.DataPropertyName = "numero"; numero.ReadOnly = true; numero.Visible = true; estadistica.columnas.Add(numero); DataGridViewTextBoxColumn nombre = new DataGridViewTextBoxColumn(); nombre.HeaderText = "Nombre"; nombre.DataPropertyName = "nombre"; nombre.ReadOnly = true; nombre.Visible = true; estadistica.columnas.Add(nombre); DataGridViewTextBoxColumn mail = new DataGridViewTextBoxColumn(); mail.HeaderText = "E-mail"; mail.DataPropertyName = "mail"; mail.ReadOnly = true; mail.Visible = true; estadistica.columnas.Add(mail); DataGridViewTextBoxColumn telefono = new DataGridViewTextBoxColumn(); telefono.HeaderText = "Telefono"; telefono.DataPropertyName = "telefono"; telefono.ReadOnly = true; telefono.Visible = true; estadistica.columnas.Add(telefono); string sql = @"SELECT TOP 5 SUM(d.cantidad) as cantidaddias, COUNT(*) as cantidadveces, ha.piso, ha.numero, h.nombre, h.mail, h.telefono FROM WHERE_EN_EL_DELETE_FROM.hoteles h INNER JOIN WHERE_EN_EL_DELETE_FROM.habitaciones ha ON ha.hotel_id = h.hotel_id INNER JOIN ( SELECT (CASE WHEN e.ingreso_fecha IS NULL THEN 0 WHEN convert(date, @fechaHasta, 110)<=convert(date, @fechaActual, 110) AND e.ingreso_fecha IS NOT NULL AND e.egreso_fecha IS NULL THEN DATEDIFF(day, e.ingreso_fecha, convert(date, @fechaHasta, 110)) WHEN convert(date, @fechaHasta, 110)>=convert(date, @fechaActual, 110) AND e.ingreso_fecha IS NOT NULL AND e.egreso_fecha IS NULL THEN DATEDIFF(day, e.ingreso_fecha, convert(date, @fechaActual, 110)) WHEN convert(date, @fechaDesde, 110)<=e.ingreso_fecha AND e.egreso_fecha<=convert(date, @fechaHasta, 110) THEN DATEDIFF(day, e.ingreso_fecha, e.egreso_fecha) WHEN e.ingreso_fecha<=convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110)<=e.egreso_fecha THEN DATEDIFF(day, convert(date, @fechaDesde, 110), convert(date, @fechaHasta, 110)) WHEN e.ingreso_fecha>=convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110)<=e.egreso_fecha THEN DATEDIFF(day, e.ingreso_fecha, convert(date, @fechaHasta, 110)) WHEN e.ingreso_fecha<=convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110)>=e.egreso_fecha THEN DATEDIFF(day, convert(date, @fechaDesde, 110), e.egreso_fecha) END) as cantidad, rh.habitacion_id FROM WHERE_EN_EL_DELETE_FROM.estadias e INNER JOIN WHERE_EN_EL_DELETE_FROM.reservas r ON r.reserva_id = e.reserva_id INNER JOIN WHERE_EN_EL_DELETE_FROM.reservas_habitaciones rh ON rh.reserva_id = r.reserva_id WHERE e.ingreso_fecha BETWEEN convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110) OR e.egreso_fecha BETWEEN convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110) OR (e.ingreso_fecha<=convert(date, @fechaDesde, 110) AND e.egreso_fecha>=convert(date, @fechaHasta, 110)) ) d ON d.habitacion_id = ha.habitacion_id WHERE d.cantidad>0 GROUP BY ha.piso, ha.numero, h.nombre, h.mail, h.telefono ORDER BY cantidaddias DESC"; string fecha = Sesion.obtenerFechaSistema().ToString("MM-dd-yyyy"); SqlParameter parametro = new SqlParameter("@fechaActual", fecha); //TODO cambiar! parametro.DbType = DbType.String; parametros.Add(parametro); estadistica.data = DBInterface.seleccionar(sql, parametros); return(estadistica); } catch (Exception er) { if (er.Message == "La fecha ingresada en la configuracion no corresponde a su formato o esta incompleto.") { throw new Exception("La fecha ingresada en la configuracion no corresponde a su formato o esta incompleto."); } else { throw new Exception("Ocurrio un error al procesar su consulta."); } } }
public static Estadistica obtenerTop5CantDiasFueraServicio(List <SqlParameter> parametros) { try { Estadistica estadistica = new Estadistica(); DataGridViewTextBoxColumn cantidad = new DataGridViewTextBoxColumn(); cantidad.HeaderText = "Cantidad Dias Fuera de Servicio"; cantidad.DataPropertyName = "cantidad"; cantidad.ReadOnly = true; cantidad.Visible = true; estadistica.columnas.Add(cantidad); DataGridViewTextBoxColumn nombre = new DataGridViewTextBoxColumn(); nombre.HeaderText = "Nombre"; nombre.DataPropertyName = "nombre"; nombre.ReadOnly = true; nombre.Visible = true; estadistica.columnas.Add(nombre); DataGridViewTextBoxColumn mail = new DataGridViewTextBoxColumn(); mail.HeaderText = "E-mail"; mail.DataPropertyName = "mail"; mail.ReadOnly = true; mail.Visible = true; estadistica.columnas.Add(mail); DataGridViewTextBoxColumn telefono = new DataGridViewTextBoxColumn(); telefono.HeaderText = "Telefono"; telefono.DataPropertyName = "telefono"; telefono.ReadOnly = true; telefono.Visible = true; estadistica.columnas.Add(telefono); string sql = @"SELECT TOP 5 SUM(c.cantidad) as cantidad, h.nombre, h.mail, h.telefono FROM WHERE_EN_EL_DELETE_FROM.hoteles h INNER JOIN ( SELECT (CASE WHEN convert(date, @fechaDesde, 110)<cc.fecha_inicio AND cc.fecha_fin<convert(date, @fechaHasta, 110) THEN DATEDIFF(day, cc.fecha_inicio, cc.fecha_fin) WHEN cc.fecha_inicio<convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110)<cc.fecha_fin THEN DATEDIFF(day, convert(date, @fechaDesde, 110), convert(date, @fechaHasta, 110)) WHEN cc.fecha_inicio>convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110)<cc.fecha_fin THEN DATEDIFF(day, cc.fecha_inicio, convert(date, @fechaHasta, 110)) WHEN cc.fecha_inicio<convert(date, @fechaDesde, 110) AND convert(date, @fechaHasta, 110)>cc.fecha_fin THEN DATEDIFF(day, convert(date, @fechaDesde, 110), cc.fecha_fin) END) as cantidad, cc.hotel_id FROM WHERE_EN_EL_DELETE_FROM.cese_actividades cc ) c ON c.hotel_id = h.hotel_id GROUP BY h.nombre, h.mail, h.telefono ORDER BY cantidad DESC"; estadistica.data = DBInterface.seleccionar(sql, parametros); return(estadistica); } catch (Exception) { throw new Exception("Ocurrio un error al procesar su consulta."); } }