Files
SIG/Ashx/CargaEventos.ashx

453 lines
23 KiB
Plaintext

<%@ WebHandler Language="VB" Class="CargaEventos" %>
Option Explicit On
Option Strict On
Imports System
Imports System.Web
Imports System.Collections
Imports System.Collections.Generic
Imports System.Web.SessionState
Imports System.Data
Imports Extensiones
Public Class CargaEventos : Implements IHttpHandler, IRequiresSessionState
Public Property events As List(Of CalendarEvent)
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.ContentType = "text/plain"
Dim CveUsuario = -1
Dim CveEmpresa = -1
Dim FI As Date
Dim FF As Date
If context.Request("METODO") IsNot Nothing Then
Select Case context.Request("METODO")
Case "servicio_domicilio"
If context.Request("U").ToEntero > 0 Then
CveUsuario = context.Request("U").ToEntero
CveEmpresa = context.Request("E").ToEntero
Dim CveSubProyecto As Integer = If(context.Request("CveSubProyecto") IsNot Nothing, context.Request("CveSubProyecto").ToEntero, -1)
Dim CveUsuarioPara As Integer = If(context.Request("CveUsuarioPara") IsNot Nothing, context.Request("CveUsuarioPara").ToEntero, -1)
FI = context.Request("start").ToDate
FF = context.Request("end").ToDate
If Not GetEventos(CveUsuario, CveEmpresa, FI, FF, CveOS:=-2, CveUsuarioPara:=CveUsuarioPara, CveSubProyecto:=CveSubProyecto, context:=context) Then
'Convierte el objeto de Eventos en JSON
'Dim oSerializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer
Dim sJSON As String = Newtonsoft.Json.JsonConvert.SerializeObject(events)
context.Response.Write(sJSON)
End If
End If
Exit Select
Case Else
Exit Select
End Select
Else
If context.Request("U").ToEntero > 0 Then
CveUsuario = context.Request("U").ToEntero
CveEmpresa = context.Request("E").ToEntero
FI = context.Request("start").ToDate
FF = context.Request("end").ToDate
If Not GetEventos(CveUsuario, CveEmpresa, FI, FF) Then
'Convierte el objeto de Eventos en JSON
'Dim oSerializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer
Dim sJSON As String = Newtonsoft.Json.JsonConvert.SerializeObject(events)
context.Response.Write(sJSON)
End If
End If
End If
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
Private Function GetEventos(CveUsuario As Integer, CveEmpresa As Integer, pFI As Date, pFF As Date, Optional CveOS As Integer = -1, Optional CveUsuarioPara As Integer = -1, Optional CveSubProyecto As Integer = -1, Optional context As HttpContext = Nothing) As Boolean
Dim ObjEventos As New ClsOIEventos
Dim ErrorEventos = False
Dim CveEmpresaCRM As Integer = 0
Dim DT_SubProyectos As New System.Data.DataTable
DT_SubProyectos.Columns.Add("CveSubProyecto", GetType(Integer))
DT_SubProyectos.Columns.Add("backgroundColor")
Dim DT_EstatusOS = New DataTable
DT_EstatusOS.Columns.Add("", GetType(Integer))
'son 26
Dim Colores() As String = {"#006699", "#0099cc", "#0066cc", "#0033cc", "#0000ff", "#3333ff", "#3333ff", "#6600ff", "#9933ff", "#cc00ff", "#cc00cc", "#cc0099", "#cc3399", "#cc6699", "#cc0066", "#009933", "#00cc00", "#00cc66", "#009999", "#669900", "#99cc00", "#cccc00", "#cc9900", "#ff9900", "#006666", "#669999"}
If CveOS = -2 Then
Dim objSub As New ClsSubProyectos
Dim DtTempSubproyectos As New DataTable
If objSub.GetSubProyectos(CveEmpresa) Then
DtTempSubproyectos = objSub.DtResultados.FiltraParametros("", "CveSubProyecto")
End If
objSub.Dispose()
Dim ColorIndex As Integer = 0
If DtTempSubproyectos.Rows.Count > 0 Then
For Each drow As DataRow In DtTempSubproyectos.Rows
Dim Subrow = DT_SubProyectos.NewRow
Subrow("CveSubProyecto") = drow("CveSubProyecto").ToString.ToEntero
Subrow("backgroundColor") = Colores(ColorIndex)
DT_SubProyectos.Rows.Add(Subrow)
ColorIndex = ColorIndex + 1
If ColorIndex >= 25 Then
ColorIndex = 0
End If
Next
End If
End If
Dim EsCoordinador As Boolean = False
Dim usuarioActual_ As Usuario = UsuarioActual(context)
If context IsNot Nothing AndAlso CveOS = -2 Then
If usuarioActual_.TienePermisoProceso(348) Then
EsCoordinador = True
End If
End If
If ObjEventos.GetEventos(-1, -1, -1, "-1", "-1", -1, CveUsuario, CveUsuarioPara, -1, -1, -1, "-1", -1, -1, -1, -1, CveOS, -1, -1, -1, -1, -1, CveUsuario, CveUsuario, CveUsuario, CveEmpresa, pFI, pFF, CveSubProyecto:=CveSubProyecto, EsCoordinador:=EsCoordinador) Then
If ObjEventos.DtResultados.Rows.Count > 0 Then
events = New List(Of CalendarEvent)
Try
For Each dr As DataRow In ObjEventos.DtResultados.Rows
If dr("CveEventoEstatus").ToString.ToEntero <> 5 Then
Dim cevent As CalendarEvent = New CalendarEvent()
cevent.id = dr("CveEvento").ToString.ToEntero
cevent.title = dr("Asunto").ToString
cevent.description = dr("Descripcion").ToString
cevent.start = String.Format("{0:s}", dr("FechaInicio").ToString.ToDateTime)
cevent.end = String.Format("{0:s}", dr("FechaFin").ToString.ToDateTime)
cevent.allDay = False
cevent.CveEventoEstatus = dr("CveEventoEstatus").ToString.ToEntero
cevent.cveagendatipo = dr("CveAgendaTipo").ToString
cevent.prioridad = dr("CvePrioridad").ToString.ToEntero
cevent.backgroundColor = dr("BackGroundColor").ToString
cevent.recurrenciatipo = dr("RecurrenciaTipo").ToString.ToEntero
cevent.frecuencia = dr("Frecuencia").ToString.ToEntero
cevent.diassemana = dr("DiasSemana").ToString
cevent.dia = dr("Dia").ToString.ToEntero
cevent.mes = dr("Mes").ToString.ToEntero
cevent.recurrenciafin = dr("RecurrenciaFin").ToString
cevent.CveProspecto = dr("CveProspecto").ToString.ToEntero
cevent.Prospecto = dr("Prospecto").ToString
cevent.CveTipoEvento = dr("Prospecto").ToString.ToEntero
cevent.EmpresaCRM = dr("EmpresaCRM").ToString
cevent.SubProyecto = dr("SubProyecto").ToString
cevent.CveSubProyecto = dr("CveSubProyecto").ToString.ToEntero
cevent.Direccion = dr("Direccion").ToString
cevent.CveEmpresaCRM = dr("CveEmpresaCRM").ToString
cevent.CveContactoCRM = dr("CveContactoCRM").ToString
cevent.CveAcercamientoCRM = dr("CveAcercamientoCRM").ToString
cevent.CvePersonal = dr("CvePersonal").ToString.ToEntero
cevent.CveCliente = dr("CveCliente").ToString.ToEntero
cevent.CveProveedor = dr("CveProveedor").ToString.ToEntero
cevent.NombreCliente = dr("NombreCliente").ToString
cevent.NombreProveedor = dr("NombreProveedor").ToString
cevent.NomprePersonal = dr("NomprePersonal").ToString
cevent.CveCompra = dr("CveCompra").ToString.ToEntero
cevent.SerieFolioCompra = dr("SerieFolioCompra").ToString
cevent.CveVenta = dr("CveVenta").ToString.ToEntero
cevent.SerieFolioVenta = dr("SerieFolioVenta").ToString
cevent.CveOS = dr("CveOS").ToString.ToEntero
cevent.CveOSDetalle = dr("CveOSDetalle").ToString.ToEntero
cevent.CveUsuarioAtendio = dr("CveUsuarioAtendio").ToString.ToEntero
cevent.CveSubProyectoUsuarioAtendio = dr("CveSubProyectoUsuarioAtendio").ToString.ToEntero
cevent.NombreAcercamiento = dr("NombreAcercamiento").ToString
cevent.CveActivoFijo = dr("CveActivoFijo").ToString.ToEntero
cevent.AFCodigo = dr("AFCodigo").ToString
cevent.CveMovimiento = dr("CveMovimientoAlmacen").ToString.ToEntero
cevent.MovimientoFolio = dr("MovimientoFolio").ToString
cevent.CveIE = dr("CveIE").ToString.ToEntero
cevent.FolioIE = dr("FolioIE").ToString
'11/05/2018 - Evento Gasto Recurrente
cevent.CveTipoEvento = dr("CveTipoEvento").ToString.ToEntero
If cevent.CveTipoEvento = 10 Then
cevent.Importe = dr("Importe").ToString.ToDouble
End If
If cevent.CveEventoEstatus.ToString.ToEntero = 3 Then
cevent.backgroundColor = "#1BBC9B"
End If
If CveOS = -2 Then
cevent.backgroundColor = DT_SubProyectos.FiltroPrimeroValor("backgroundColor", $" CveSubProyecto = {cevent.CveSubProyectoUsuarioAtendio } ")
cevent.backgroundColor = If(cevent.backgroundColor.Trim = "", "#1BBC9B", cevent.backgroundColor.Trim)
End If
If usuarioActual_.Empresa.Funcionalidad(578) = "1" Then
Dim colorString As String = dr("BackgroundColorOS").ToString.Trim
If colorString.Length > 0 AndAlso IsValidHtmlColor(colorString) Then
cevent.backgroundColor = $"#{colorString}"
Else
If dr("TipoEstatusOS").ToString.ToEntero.Contiene(1, 2, 3) Then
cevent.backgroundColor = "#006699"
ElseIf dr("TipoEstatusOS").ToString.ToEntero.Contiene(4) Then
cevent.backgroundColor = "#025716"
ElseIf dr("TipoEstatusOS").ToString.ToEntero.Contiene(5) Then
cevent.backgroundColor = "#730505"
Else
cevent.backgroundColor = "#006699"
End If
End If
End If
'VERIFICAMOS SI TIENE O NO RECURRENCIA
If Not cevent.recurrenciatipo > 0 Then
'AGREGAMOS CUANDO NO ES RECURRENTE
Dim tFecha As DateTime = DateAdd(DateInterval.Month, -6, ClsPaginas.NowADS())
'SI LA FECHA DEL EVENTO ES MENOR DE 6 MESES DE LA FECHA ACTUAL NO LO AGREGA
If dr("FechaFin").ToString.ToDateTime > tFecha Or dr("FechaInicio").ToString.ToDateTime > tFecha Then
events.Add(cevent)
End If
Else
'EMPIEZA METODO PARA AGREGAR CUANDO SI ES RECURRENTE
Dim FinRecurrencia = cevent.recurrenciafin.ToEntero
Dim FI As DateTime, FF As DateTime, FT As DateTime
Dim DiasSemana = cevent.diassemana.Split(","c)
FI = cevent.start.ToDateTime
FF = cevent.end.ToDateTime
'OBTENEMOS LA FECHA TERMINO (FT) DE LA RECURRENCIA
Select Case FinRecurrencia
Case -1
FT = DateAdd(DateInterval.Year, 2, dr("FechaInicio").ToString.ToDateTime)
Case 0
FT = dr("RecurrenciaFin").ToString.ToDate
Case Is > 0
FinRecurrencia -= 1
Select Case cevent.recurrenciatipo
Case 1
FT = DateAdd(DateInterval.Hour, FinRecurrencia * cevent.frecuencia, dr("FechaInicio").ToString.ToDateTime)
Case 2
FT = DateAdd(DateInterval.Day, FinRecurrencia * cevent.frecuencia, dr("FechaInicio").ToString.ToDateTime)
Case 3
FT = DateAdd(DateInterval.WeekOfYear, FinRecurrencia * cevent.frecuencia, dr("FechaInicio").ToString.ToDateTime)
FT = DateAdd(DateInterval.Day, (7 - Weekday(FT)).ToString.ToDouble, FT)
Case 4
FT = DateAdd(DateInterval.Month, FinRecurrencia * cevent.frecuencia, dr("FechaInicio").ToString.ToDateTime)
Case 5
FT = DateAdd(DateInterval.Year, FinRecurrencia * cevent.frecuencia, dr("FechaInicio").ToString.ToDateTime)
End Select
End Select
'SI ES TIPO SEMANAL Y DIASSEMANA TIENE VALORES CHECKEA ESTOS VALORES
Do
If DiasSemana.Length > 0 AndAlso DiasSemana(0) <> "" Then
For Each drDias As String In DiasSemana
Dim FIT = FI, FFT = FF
FIT = DateAdd(DateInterval.Day, (drDias.ToEntero - Weekday(FI)).ToString.ToDouble, FI)
FFT = DateAdd(DateInterval.Day, (drDias.ToEntero - Weekday(FF)).ToString.ToDouble, FF)
cevent = New CalendarEvent()
cevent.id = dr("CveEvento").ToString.ToEntero
cevent.title = dr("Asunto").ToString
cevent.description = dr("Descripcion").ToString
cevent.start = String.Format("{0:s}", FIT)
cevent.end = String.Format("{0:s}", FFT)
cevent.allDay = False
cevent.CveEventoEstatus = dr("CveEventoEstatus").ToString.ToEntero
cevent.cveagendatipo = dr("CveAgendaTipo").ToString
cevent.prioridad = dr("CvePrioridad").ToString.ToEntero
cevent.backgroundColor = dr("BackGroundColor").ToString
cevent.recurrenciatipo = dr("RecurrenciaTipo").ToString.ToEntero
cevent.frecuencia = dr("Frecuencia").ToString.ToEntero
cevent.diassemana = dr("DiasSemana").ToString
cevent.dia = dr("Dia").ToString.ToEntero
cevent.mes = dr("Mes").ToString.ToEntero
cevent.recurrenciafin = dr("RecurrenciaFin").ToString
cevent.CveProspecto = dr("CveProspecto").ToString.ToEntero
cevent.Prospecto = dr("Prospecto").ToString
'11/05/2018 - Evento Gasto Recurrente
cevent.CveTipoEvento = dr("CveTipoEvento").ToString.ToEntero
If cevent.CveTipoEvento = 10 Then
cevent.Importe = dr("Importe").ToString.ToDouble
End If
If cevent.CveEventoEstatus.ToString.ToEntero = 3 Then
cevent.backgroundColor = "#1BBC9B"
End If
'SI LA FECHA DEL EVENTO ES MENOR DE 6 MESES DE LA FECHA ACTUAL Y/0 SI LA FECHA INICIAL DE LA RECURRENCIA ES MENOR A LA FECHA QUE SE CREO EL EVENTO NO LO AGREGA
If FIT > DateAdd(DateInterval.Month, -6, ClsPaginas.NowADS()) And FIT >= dr("FechaInicio").ToString.ToDateTime Then
events.Add(cevent)
End If
Next
Else
cevent = New CalendarEvent()
cevent.id = dr("CveEvento").ToString.ToEntero
cevent.title = dr("Asunto").ToString
cevent.description = dr("Descripcion").ToString
cevent.start = String.Format("{0:s}", FI)
cevent.end = String.Format("{0:s}", FF)
cevent.allDay = False
cevent.CveEventoEstatus = dr("CveEventoEstatus").ToString.ToEntero
cevent.cveagendatipo = dr("CveAgendaTipo").ToString
cevent.prioridad = dr("CvePrioridad").ToString.ToEntero
cevent.backgroundColor = dr("BackGroundColor").ToString
cevent.recurrenciatipo = dr("RecurrenciaTipo").ToString.ToEntero
cevent.frecuencia = dr("Frecuencia").ToString.ToEntero
cevent.diassemana = dr("DiasSemana").ToString
cevent.dia = dr("Dia").ToString.ToEntero
cevent.mes = dr("Mes").ToString.ToEntero
cevent.recurrenciafin = dr("RecurrenciaFin").ToString
cevent.CveProspecto = dr("CveProspecto").ToString.ToEntero
cevent.Prospecto = dr("Prospecto").ToString
'11/05/2018 - Evento Gasto Recurrente
cevent.CveTipoEvento = dr("CveTipoEvento").ToString.ToEntero
If cevent.CveTipoEvento = 10 Then
cevent.Importe = dr("Importe").ToString.ToDouble
End If
If cevent.CveEventoEstatus.ToString.ToEntero = 3 Then
cevent.backgroundColor = "#1BBC9B"
End If
'SI LA FECHA DEL EVENTO ES MENOR DE 6 MESES DE LA FECHA ACTUAL NO LO AGREGA
If FI > DateAdd(DateInterval.Month, -6, ClsPaginas.NowADS()) Then
events.Add(cevent)
End If
End If
Select Case cevent.recurrenciatipo
Case 1
FI = DateAdd(DateInterval.Hour, cevent.frecuencia, FI)
FF = DateAdd(DateInterval.Hour, cevent.frecuencia, FF)
Case 2
FI = DateAdd(DateInterval.Day, cevent.frecuencia, FI)
FF = DateAdd(DateInterval.Day, cevent.frecuencia, FF)
Case 3
FI = DateAdd(DateInterval.WeekOfYear, cevent.frecuencia, FI)
FF = DateAdd(DateInterval.WeekOfYear, cevent.frecuencia, FF)
Case 4
FI = DateAdd(DateInterval.Month, cevent.frecuencia, FI)
FF = DateAdd(DateInterval.Month, cevent.frecuencia, FF)
Case 5
FI = DateAdd(DateInterval.Year, cevent.frecuencia, FI)
FF = DateAdd(DateInterval.Year, cevent.frecuencia, FF)
End Select
Loop Until FI > FT
End If
End If
Next
Catch ex As Exception
GuardaLog(ex.ToString())
End Try
End If
End If
ObjEventos.Dispose()
Return ErrorEventos
End Function
ReadOnly Property UsuarioActual(ByVal context As HttpContext) As Usuario
Get
UsuarioActual = DirectCast(If(context IsNot Nothing, context.Session("UsuarioSIG", Nothing)), Usuario)
End Get
End Property
Private Function IsValidHtmlColor(colorString As String) As Boolean
Try
Dim color As System.Drawing.Color = System.Drawing.ColorTranslator.FromHtml(colorString)
' Si no se produce una excepción, el color es válido
Return True
Catch ex As Exception
' Se produce una excepción, el color no es válido
Return False
End Try
End Function
End Class