Beispiel #1
0
 def __init__(self):
     self.conn = Conexion()
     config = self.getConfig()
     self.emailFrom = config.Correo
     self.clave = config.Password
     self.server = config.ServidorSMTP
     self.puerto = config.Puerto
class Bitacora:
    IdBitacora = 0
    Idusuario = 0
    Accion = ""
    Detalle = ""
    FechaHora = ""
    conn = ""

    def __init__(self):
        self.conn = Conexion()

    def setBitacora(self, usuario, accion, detalle, fechahora):
        self.Idusuario = usuario
        self.Accion = accion
        self.Detalle = detalle
        self.FechaHora = fechahora

    def listarBitacora(self):
        stat = ['exec ListarBitacora']
        r = self.conn.hacerSelect(stat)
        return r

    def agregarBitacora(self):
        dml = [
            'exec AgregarBitacora ?,?,?,?', self.Idusuario, self.Accion,
            self.Detalle, self.FechaHora
        ]
        if self.conn.hacerDML(dml):
            return True
Beispiel #3
0
class EmpresaDepartamento:
    IdDepartamento = 0
    IdEmpresa = 0
    Nombre = ""
    conn = ""

    def __init__(self):
        self.conn = Conexion()

    def setIDEmpresa(self,id):
        self.IdEmpresa = id
    
    def setIDDepartamento(self,idDep):
        self.IdDepartamento = idDep

    def ListarDepartamentosEmp(self,idEmp):
        departamentos = []
        stat = ['select ep.IdEmpresa, ep.IdDepartamento, d.Nombre from Empresa_Departamento ep join Departamento d on ep.IdDepartamento = d.IdDepartamento where ep.IdEmpresa = ? and d.Activo = 1',idEmp]
        departamentos = self.conn.hacerSelect(stat)
        return departamentos

    def agregarDepartamentosEmp(self):
        dml = ["exec AgregarDepartamentosEmpresa ?,?",self.IdEmpresa,self.IdDepartamento]
        self.conn.hacerDML(dml)

    
    # def limpiarDepartamentosEmp(self):
    #     dml = ["delete from Empresa_Departamento where IdEmpresa = ?", self.IdEmpresa]
    #     self.conn.hacerDML(dml)

    # def limpiarUsuariosDepEmp(self):
    #     dml = ["exec EliminarUsuariosDep ?",self.IdDepartamento]
    #     self.conn.hacerDML(dml)
Beispiel #4
0
class ConfiguracionCorreo:
    IdConfig = 0
    Correo = ""
    ServidorSMTP = ""
    Puerto = 0
    Password = ""
    conn = ""

    def __init__(self):
        self.conn = Conexion()

    def setID(self, ID):
        self.IdConfig = ID

    def setConfig(self, ID, correo, server, puerto, contra):
        self.IdConfig = ID
        self.Correo = correo
        self.ServidorSMTP = server
        self.Puerto = puerto
        self.Password = contra

    def modificarConfigCorreo(self):
        dml = [
            'exec ModificarConfigCorreo ?,?,?,?,?', self.Correo,
            self.ServidorSMTP, self.Puerto, self.Password, self.IdConfig
        ]
        if self.conn.hacerDML(dml):
            return True

    def getInfoCorreo(self):
        stat = ['exec ConsultarIDConfig ?', self.IdConfig]
        config = self.conn.hacerSelect(stat)
        return config

    def listarConfigCorreo(self):
        stat = ['exec ListarConfigCorreo']
        configList = self.conn.hacerSelect(stat)
        return configList
Beispiel #5
0
 def __init__(self):
     self.conn = Conexion()
Beispiel #6
0
class Email:
    emailreset = ""
    validador = ""
    token = ""
    fechaExpiracion = ""
    conn = ""

    # emailFrom = "*****@*****.**"
    # clave = "Keneth155tutos"

    def __init__(self):
        self.conn = Conexion()
        config = self.getConfig()
        self.emailFrom = config.Correo
        self.clave = config.Password
        self.server = config.ServidorSMTP
        self.puerto = config.Puerto

    def setEmail(self, email, val, token, fechaExp):
        self.emailreset = email
        self.validador = val
        self.token = token
        self.fechaExpiracion = fechaExp

    def setCorreo(self, c):
        self.emailreset = c

    def setToken(self, t):
        self.token = t

    def setValidador(self, v):
        self.validador = v

    def getConfig(self):
        stat = ['exec ObtenerConfig']
        r = self.conn.hacerSelect(stat)
        return r[0]

    def emailActualizacionTicket(self, emailTo, tipoEmail, tituloTicket,
                                 prioridad):
        if tipoEmail == 1:  # Notificacion al cliente que el Ticket se esta trabajando por un empleado
            subject = "Ticket en revision"
            body = f"Le informamos que su ticket <strong>{tituloTicket}</strong> esta siendo manejado por uno de nuestros empleados, le informaremos en cuanto este se resuelva"
        elif tipoEmail == 2:  # Notificacion al cliente que el Ticket se resolvio
            subject = "Ticket resuelto"
            body = f"Le informamos que su ticket <strong>{tituloTicket}</strong> ha sido resuelto. Podra ver la resolucion brindada desde su panel de control. Este ticket se eliminara en un lapso de 7 dias."
        elif tipoEmail == 3:  # Notificacion al empleado que un ticket le fue asignado
            subject = "Ticket asignado"

            if prioridad == 1:
                prio = "<p style='color:green;'>Verde<p>"
            elif prioridad == 2:
                prio = "<p style='color:yellow;'>Amarilla</p>"
            elif prioridad == 3:
                prio = "<p style='color:orange;'>Naranja</p>"
            elif prioridad == 4:
                prio = "<p style='color:red;'>Roja</p>"

            body = f"Se te ha asignado el ticket <strong>{tituloTicket}</strong> con prioridad {prio}"
        else:
            return "Error"

        msg = MIMEMultipart('alternative')
        msg["Subject"] = subject
        htmlBody = MIMEText(body, 'html')
        msg.attach(htmlBody)

        try:
            server = smtplib.SMTP(self.server, self.puerto)
            server.starttls()
            server.login(self.emailFrom, self.clave)
            server.sendmail(self.emailFrom, emailTo, msg.as_string())
        except:
            return "Error"

    def enviarEmailRecuperacion(self):
        self.eliminarPrevios()
        tokenKey = uuid.uuid4().hex.encode('utf-8')
        token = hashlib.sha256(tokenKey).hexdigest()

        validatorKey = uuid.uuid4().hex.encode('utf-8')
        validator = hashlib.sha256(validatorKey).hexdigest()

        fechaExp = datetime.datetime.now() + datetime.timedelta(seconds=3600)

        enlace = "http://localhost:5000/crearNuevaClave/" + validator + "/" + token

        try:
            server = smtplib.SMTP(self.server, self.puerto)
            server.starttls()
            server.login(self.emailFrom, self.clave)

            subject = "Recuperacion de clave Sistema de Tickets Trustnet Information Security"
            body = f"Para recueprar su clave dirigase al siguiente enlace {enlace} este expirara dentro de una hora, si no ha solicitado recuperar su clave puede ignorar este correo"
            msg = f'Subject: {subject}\n\n{body}'
            server.sendmail(self.emailFrom, self.emailreset, msg)

            insert = [
                "insert into pwdReset(emailReset,validador,token,fechaExpiracion) values(?,?,?,?)",
                self.emailreset, validator, token, fechaExp
            ]
            self.conn.hacerDML(insert)

        except:
            return "Error"

    def eliminarPrevios(self):
        dml = ["DELETE FROM pwdReset where emailReset = ?", self.emailreset]
        self.conn.hacerDML(dml)

    def enlaceValido(self):
        stat = [
            'select * from pwdReset where token = ? and validador = ?',
            self.token, self.validador
        ]
        r = self.conn.hacerSelect(stat)
        now = datetime.datetime.now()
        if len(r) == 1 and (r[0].fechaExpiracion -
                            now).total_seconds() <= 3600:
            return True

    def getEmail(self):
        stat = [
            'select * from pwdReset where token = ? and validador = ?',
            self.token, self.validador
        ]
        r = self.conn.hacerSelect(stat)
        print(list(r))
        return r[0].emailReset
class Usuario:
    IdUsuario = 0
    Nombre = ""
    Cedula = ""
    Email = ""
    Pass = ""
    Avatar = "default-user.jpg"
    IdEmpresa = 0
    IdDepartamento = 0
    IDTipo = 0
    Logueado = 0
    conn = ""

    def __init__(self):
        self.conn = Conexion()

    def setUsuario(self, Nombre, Cedula, Email, Pass, IDTipo, IDEmpresa,
                   IDDepartamento):
        self.Nombre = Nombre
        self.Cedula = Cedula
        self.Email = Email
        self.Pass = Pass
        self.IdEmpresa = IDEmpresa
        self.IdDepartamento = IDDepartamento
        self.IDTipo = IDTipo

    def setNombre(self, n):
        self.Nombre = n

    def setIDEmpresa(self, i):
        self.IdEmpresa = i

    def setIdDep(self, i):
        self.IdDepartamento = i

    def setAvatar(self, avatar):
        self.Avatar = avatar

    def setEmail(self, Email):
        self.Email = Email

    def setPass(self, Pass):
        self.Pass = Pass

    def setCedula(self, Cedula):
        self.Cedula = Cedula

    def setID(self, ID):
        self.IdUsuario = ID

    def setTipo(self, tipo):
        self.IDTipo = tipo

    def setContra(self, c):
        self.Pass = c

    def getInfoUsuario(self):
        stat = ['exec ConsultarIdUsuario ?', self.IdUsuario]
        usuario = self.conn.hacerSelect(stat)
        return usuario

    def ListarUsuariosXDepartamento(self, activo):
        usuarios = []
        stat = ('exec ListarEmpleadosXDepartamento ?,?,?',
                session["Departamento"], activo, session["Empresa"])
        usuarios = self.conn.hacerSelect(stat)
        return usuarios

    def ListarUsuariosXEstado(self, filtro):
        usuarios = []
        stat = ['exec ListarUsuariosXEstado ?', filtro]
        usuarios = self.conn.hacerSelect(stat)
        return usuarios

    def ListarUsuariosXTipo(self, tipo, activo):
        usuarios = []
        stat = ['exec ListarUsuariosXTipo ?,?', tipo, activo]
        usuarios = self.conn.hacerSelect(stat)
        return usuarios

    def ListarEmpleadosDepEmp(self, idDep, idEmp):
        usuarios = []
        stat = ['exec ListarUsuariosDepEmp ?,?', idDep, idEmp]
        usuarios = self.conn.hacerSelect(stat)
        return usuarios

    def getTipoUsuario(self):
        stat = ['exec ConsultarTipoUsuario ?', self.IdUsuario]
        usuario = self.conn.hacerSelect(stat)
        if len(usuario) > 0:
            return usuario[0].IdTipoUsuario
        else:
            return 0

    def AgregarUsuario(self):
        dml = [
            'exec AgregarUsuario ?,?,?,?,?,?,?,?', self.Nombre, self.Cedula,
            self.Email, self.Pass, self.Avatar, self.IdEmpresa,
            self.IdDepartamento, self.IDTipo
        ]
        if self.conn.hacerDML(dml):
            if "ID" in session:
                objBitacora = Bitacora()
                objBitacora.setBitacora(int(session["ID"]), "Agregar",
                                        "Agregar Usuario", dt.datetime.now())
                objBitacora.agregarBitacora()

            return True

    def modificarPerfil(self):
        dml = [
            'exec ModificarUsuario ?,?,?,?,?,?,?,?,?', self.Nombre,
            self.Cedula, self.Email, self.Pass, self.Avatar, self.IdEmpresa,
            self.IdDepartamento, self.IDTipo, self.IdUsuario
        ]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Modificar",
                                    "Modificar Usuario", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def validarUsuario(self, tipo):
        stat = ['exec ValidarUsuario ?,?,?', self.Email, self.Pass, tipo]
        usuario = self.conn.hacerSelect(stat)
        # print(len(usuario))
        if len(usuario) > 0:
            dml = ['exec IniciarSesion ?', usuario[0].IdUsuario]
            self.conn.hacerDML(dml)
        return usuario

    def cerrarSesion(self):
        dml = [
            'update Usuario set Logueado = 0 where IdUsuario = ?',
            self.IdUsuario
        ]
        self.conn.hacerDML(dml)

    def validarEmail(self, src):
        stat = ['exec validarEmail ?', self.Email]
        usuario = self.conn.hacerSelect(stat)

        if len(usuario) > 0:
            if "modificarUsuario" in src or "perfil" in src:
                ID = src.rsplit('/')[-1]
                if int(usuario[0].IdUsuario) == int(ID) and str(
                        usuario[0].Email) == str(self.Email):
                    return False
                else:
                    return True
            else:
                return True

    def validarCedula(self, src):
        stat = ['exec validarCedula ?', self.Cedula]
        usuario = self.conn.hacerSelect(stat)

        if len(usuario) > 0:
            if "modificarUsuario" in src or "perfil" in src:
                ID = src.rsplit('/')[-1]
                if int(usuario[0].IdUsuario) == int(ID) and str(
                        usuario[0].Cedula) == str(self.Cedula):
                    return False
                else:
                    return True
            else:
                return True

    def consultarUsuarioEmpDep(self):
        stat = ['exec consultarUsuarioEmpDep ?,?', self.IdUsuario, self.IDTipo]
        usuario = self.conn.hacerSelect(stat)
        if len(usuario) > 0 and not hasattr(usuario[0], 'Vacio'):
            return True

    def consultarID(self):
        stat = ['exec ConsultarIdUsuario ?', self.IdUsuario]
        usuario = self.conn.hacerSelect(stat)
        return usuario

    def consultarTicketsUsuario(self):
        stat = ['exec consultarTicketsUsuario ?', self.IdUsuario]
        usuario = self.conn.hacerSelect(stat)
        if len(usuario) > 0:
            return True

    def existeTipoUsuario(self):
        stat = [
            'exec ExisteTipoUsuario ?,?', self.IdEmpresa, self.IdDepartamento
        ]
        usuario = self.conn.hacerSelect(stat)
        if len(usuario) > 0:
            if self.IdUsuario != 0:
                if usuario[0][0] == self.IdUsuario:
                    return False
            return True

    def activarUsuario(self):
        dml = ['exec ActivarUsuario ?', self.IdUsuario]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Activar",
                                    "Activar Usuario", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def eliminarUsuario(self):
        dml = ['exec EliminarUsuario ?', self.IdUsuario]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Eliminar",
                                    "Eliminar Usuario", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def listarUsuariosXEmpresa(self, activo):
        usuarios = []
        stat = ('exec ListarUsuariosXEmpresa ?,?', activo, session['Empresa'])
        usuarios = self.conn.hacerSelect(stat)
        return usuarios

    def cambiarClave(self):
        dml = ['exec CambiarClave ?,?', self.Email, self.Pass]
        if self.conn.hacerDML(dml):
            return True

    def buscarUsuarios(self, filtro):
        stat = [
            'exec BuscarUsuarios ?,?,?,?',
            str(filtro), self.IDTipo, self.IdDepartamento, self.IdEmpresa
        ]
        r = self.conn.hacerSelect(stat)
        return r
class Departamento:
    IdDepartamento = 0
    Nombre = ""
    Descripcion = ""
    conn = ""

    def __init__(self):
        self.conn = Conexion()

    def setDepartamento(self, IdDep, nom, desc):
        self.IdDepartamento = IdDep
        self.Nombre = nom
        self.Descripcion = desc

    def setID(self, ID):
        self.IdDepartamento = ID

    def setNombre(self, nombre):
        self.Nombre = nombre

    def setDescripcion(self, d):
        self.Descripcion = d

    def ListarDepartamentosXEstado(self, filtro):
        departamentos = []
        stat = ['exec ListarDepartamentosXEstado ?', filtro]
        departamentos = self.conn.hacerSelect(stat)
        return departamentos

    def ListarDepartamentos(self):
        departamentos = []
        stat = [
            'select * from Departamento where Activo = 1 order by IdDepartamento desc'
        ]
        departamentos = self.conn.hacerSelect(stat)
        return departamentos

    def agregarDepartamento(self):
        dml = [
            'INSERT INTO Departamento(Nombre,Descripcion) values(?,?)',
            self.Nombre, self.Descripcion
        ]
        self.conn.hacerDML(dml)
        objBitacora = Bitacora()
        objBitacora.setBitacora(int(session["ID"]), "Agregar",
                                "Agregar Departamento", dt.datetime.now())
        objBitacora.agregarBitacora()

    def verificarDepartamento(self, src):
        stat = ['exec validarDepartamento ?', self.Nombre]
        dep = self.conn.hacerSelect(stat)

        if len(dep) > 0:
            if "modificarDepartamento" in src:
                ID = src.rsplit('/')[-1]
                if int(dep[0].IdDepartamento) == int(ID) and str(
                        dep[0].Nombre).upper() == str(self.Nombre).upper():
                    return False
                else:
                    return True
            else:
                return True

    def verificarTickets(self):
        stat = ['exec ListarTicketsXDep ?,?', self.IdDepartamento, 1]
        tickets = self.conn.hacerSelect(stat)
        if len(tickets) == 0:
            stat = ['exec ListarTicketsXDep ?,?', self.IdDepartamento, 2]
            ticketsTrab = self.conn.hacerSelect(stat)
            if len(ticketsTrab) == 0:
                return True

    def consultarID(self):
        stat = ['exec ConsultarIdDepartamento ?', self.IdDepartamento]
        dep = self.conn.hacerSelect(stat)
        return dep

    def eliminarDepartamento(self):
        dml = ['exec EliminarUsuariosDep ?', self.IdDepartamento]

        self.conn.hacerDML(dml)
        dml2 = ['exec EliminarDepartamento ?', self.IdDepartamento]
        if self.conn.hacerDML(dml2):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Eliminar",
                                    "Eliminar Departamento", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def activarDepartamento(self):
        dml = ['exec ActivarDepartamento ?', self.IdDepartamento]
        if self.conn.hacerDML(dml):
            dml = ['exec ActivarUsuariosDep ?', self.IdDepartamento]
            self.conn.hacerDML(dml)
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Activar",
                                    "Activar Departamento", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def modificarDepartamento(self):
        dml = [
            'exec ModificarDepartamento ?,?,?', self.IdDepartamento,
            self.Nombre, self.Descripcion
        ]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]),
                                    "Modificar", "Modificar Departamento",
                                    dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def buscarDepartamentos(self, filtro):
        stat = ['exec BuscarDepartamentos ?', filtro]
        r = self.conn.hacerSelect(stat)
        return r
Beispiel #9
0
class Empresa:
    IdEmpresa = 0
    Nombre = ""
    Direccion = ""
    Telefono = ""
    IdTipoEmpresa = 0
    conn = ""

    def __init__(self):
        self.conn = Conexion()

    def setID(self, ID):
        self.IdEmpresa = ID

    def setNombre(self, nombre):
        self.Nombre = nombre

    def setTelefono(self, tel):
        self.Telefono = tel

    def setIdTipo(self, t):
        self.IdTipoEmpresa = t

    def setEmpresa(self, nombre, direccion, telefono, tipo):
        self.Nombre = nombre
        self.Direccion = direccion
        self.Telefono = telefono
        self.IdTipoEmpresa = tipo

    def getUltimoID(self):
        stat = ["select MAX(IdEmpresa) as ID from Empresa"]
        lastID = self.conn.hacerSelect(stat)
        return lastID[0].ID

    def ListarEmpresasXEstado(self, filtro):
        empresas = []
        stat = ['exec ListarEmpresasXEstado ?', filtro]
        empresas = self.conn.hacerSelect(stat)

        return empresas

    def ListarEmpresasXTipo(self):
        empresas = []
        stat = ['exec ListarEmpresasXTipo ?', self.IdTipoEmpresa]
        empresas = self.conn.hacerSelect(stat)
        return empresas

    def verificarTickets(self):
        stat = ['exec ListarTicketsXEmpresa ?,?', self.IdEmpresa, 1]
        tickets = self.conn.hacerSelect(stat)
        if len(tickets) == 0:
            stat = ['exec ListarTicketsXEmpresa ?,?', self.IdEmpresa, 2]
            ticketsTrab = self.conn.hacerSelect(stat)
            if len(ticketsTrab) == 0:
                return True

    def verificarEmpresa(self, src):
        stat = ['exec VerificarEmpresa ?', self.Nombre]
        emp = self.conn.hacerSelect(stat)
        if len(emp) > 0:
            if "modificarEmpresa" in src:
                ID = src.rsplit('/')[-1]
                if int(emp[0].IdEmpresa) == int(ID) and str(
                        emp[0].Nombre).upper() == str(self.Nombre).upper():
                    return False
                else:
                    return True
            else:
                return True

        if len(emp) > 0:
            return True

    def verificarTelefono(self, src):
        stat = ['exec VerificarTelefono ?', str("+506" + self.Telefono)]
        emp = self.conn.hacerSelect(stat)
        if len(emp) > 0:
            if "modificarEmpresa" in src:
                ID = src.rsplit('/')[-1]
                if int(emp[0].IdEmpresa) == int(ID) and str(
                        emp[0].Telefono) == str("+506" + self.Telefono):
                    return False
                else:
                    return True
            else:
                return True

    def agregarEmpresa(self):
        dml = [
            "exec AgregarEmpresa ?,?,?,?", self.Nombre, self.Direccion,
            self.Telefono, self.IdTipoEmpresa
        ]
        if self.conn.hacerDML(dml):
            if "ID" in session:
                objBitacora = Bitacora()
                objBitacora.setBitacora(int(session["ID"]), "Agregar",
                                        "Agregar Empresa", dt.datetime.now())
                objBitacora.agregarBitacora()
            return True

    def EliminarEmpresa(self):
        dml = ['exec EliminarUsuariosEmp ?', self.IdEmpresa]
        self.conn.hacerDML(dml)
        dml2 = ['exec EliminarEmpresa ?', self.IdEmpresa]
        if self.conn.hacerDML(dml2):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Eliminar",
                                    "Eliminar Empresa", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def modificarEmpresa(self):
        dml = [
            'exec ModificarEmpresa ?,?,?,?', self.Nombre, self.Direccion,
            self.Telefono, self.IdEmpresa
        ]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Modificar",
                                    "Modificar Empresa", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def consultarID(self):
        stat = ['exec ConsultarIdEmpresa ?', self.IdEmpresa]
        empresa = self.conn.hacerSelect(stat)
        return empresa

    def activarEmpresa(self):
        dml = ['exec ActivarEmpresa ?', self.IdEmpresa]
        if self.conn.hacerDML(dml):
            dml = ['exec ActivarUsuariosEmpresa ?', self.IdEmpresa]
            self.conn.hacerDML(dml)
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Activar",
                                    "Activar Empresa", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def buscarEmpresas(self, filtro):
        stat = ['exec BuscarEmpresas ?', filtro]
        r = self.conn.hacerSelect(stat)
        return r
Beispiel #10
0
class Ticket:
    IdTicket = 0
    IdCreador = 0
    IdSolucionador = 0
    IdAsignador = 0
    IdDepartamento = 0
    IdEmpresa = 0
    IdEmpresaCreadora = 0
    IdPrioridad = 0
    IdEstatus = 0
    IdUrgencia = 0
    Titulo = ""
    Detalle = ""
    FechaHoraCreacion = ""
    FechaHoraResolucion = ""
    Calificacion = 0
    Resolucion = ""
    conn = ""

    def __init__(self):
        self.conn = Conexion()

    def setID(self, Id):
        self.IdTicket = Id

    def setIDDepartamento(self, id):
        self.IdDepartamento = id

    def setIdEmpresa(self, id):
        self.IdEmpresa = id

    def setIDSolucionador(self, id):
        self.IdSolucionador = id

    def setPrioridad(self, id):
        self.IdPrioridad = id

    def setResolucion(self, p):
        self.Resolucion = p

    def setCalificacion(self, c):
        self.Calificacion = c

    def setTicket(self, titulo, detalle, idempresa, idempresaC, idC, idUr):
        self.Titulo = titulo
        self.Detalle = detalle
        self.IdEmpresa = idempresa
        self.IdEmpresaCreadora = idempresaC
        self.IdCreador = idC
        self.IdUrgencia = idUr

    def ListarTicketsXEmpresa(self, IdEmp, estado):
        tickets = []
        stat = ['exec ListarTicketsXEmpresa ?,?', IdEmp, estado]
        tickets = self.conn.hacerSelect(stat)
        return tickets

    def ListarTicketsXEmpresaCliente(self, IdEmp, estado):
        tickets = []
        stat = ['exec ListarTicketsXEmpresaCliente ?,?', IdEmp, estado]
        tickets = self.conn.hacerSelect(stat)
        return tickets

    def ListarTicketsXAsignar(self, IdEmp):
        tickets = []
        stat = ['exec ListarTicketsXAsignar ?', IdEmp]
        tickets = self.conn.hacerSelect(stat)
        return tickets

    def ListarTicketsXEmpresaDep(self, IdEmp, Idep, estado):
        tickets = []
        stat = ['exec ListarTicketsXEmpDep ?,?,?', IdEmp, Idep, estado]
        tickets = self.conn.hacerSelect(stat)
        return tickets

    def ListarTicketsXEstado(self, estado):
        tickets = []
        stat = ['exec ListarTicketsXEstado ?', estado]
        tickets = self.conn.hacerSelect(stat)
        return tickets

    def ListarTicketsXEmpleado(self, estado, idu):
        tickets = []
        stat = ['exec ListarTicketsEmpleado ?,?', idu, estado]
        tickets = self.conn.hacerSelect(stat)
        return tickets

    def ListarTicketsXCliente(self, estado, idu):
        tickets = []
        stat = ['exec ListarTicketsCliente ?,?', idu, estado]
        tickets = self.conn.hacerSelect(stat)
        return tickets

    def consultarID(self):
        stat = ['exec ConsultarIDTicket ?', self.IdTicket]
        ticket = self.conn.hacerSelect(stat)
        return ticket

    def agregarTicket(self):
        dml = [
            'exec CrearTicket ?,?,?,?,?,?', self.IdCreador, self.IdEmpresa,
            self.IdUrgencia, self.Titulo, self.Detalle, self.IdEmpresaCreadora
        ]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Agregar",
                                    "Agregar Ticket", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def eliminarTicket(self):
        dml = ['exec EliminarTicket ?', self.IdTicket]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Eliminar",
                                    "Eliminar Ticket", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def asignarTicket(self):
        dml = [
            'exec AsignarTicket ?,?,?,?,?', self.IdDepartamento,
            self.IdSolucionador, self.IdTicket,
            int(session['ID']), self.IdPrioridad
        ]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Asignar",
                                    "Asignar Ticket", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def trabjarTicket(self):
        dml = ['exec TrabajarTicket ?,?', int(session['ID']), self.IdTicket]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Trabajar",
                                    "Trabajar Ticket", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def cerrarTicket(self):
        dml = ['exec CerrarTicket ?,?', self.IdTicket, self.Resolucion]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Cerrar",
                                    "Cerrar Ticket", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def calificarTicket(self):
        dml = ['exec CalificarTicket ?,?', self.IdTicket, self.Calificacion]
        if self.conn.hacerDML(dml):
            objBitacora = Bitacora()
            objBitacora.setBitacora(int(session["ID"]), "Calificar",
                                    "Calificar Ticket", dt.datetime.now())
            objBitacora.agregarBitacora()
            return True

    def buscarTickets(self, filtro, tipo, idUsuario):
        stat = [
            'exec BuscarTickets ?,?,?,?,?', filtro, tipo, self.IdEmpresa,
            self.IdDepartamento, idUsuario
        ]
        r = self.conn.hacerSelect(stat)
        return r