예제 #1
0
        /// <summary>
        /// Obtiene la asignación actual del recurso solicitado
        /// </summary>
        /// <param name="tipo">Tipo de Búsqueda</param>
        /// <param name="id_recurso">Id de Recurso a consultar</param>
        /// <returns></returns>
        public static AsignacionOperadorUnidad ObtieneAsignacionActiva(TipoBusquedaAsignacion tipo, int id_recurso)
        {
            //Definiendo objeto de retorno
            AsignacionOperadorUnidad asignacion = new AsignacionOperadorUnidad();

            //Armando Objeto de Parametros
            object[] param;
            if (tipo == TipoBusquedaAsignacion.Operador)
            {
                param = new object[] { 7, 0, id_recurso, 0, null, null, 0, false, "", "" }
            }
            ;
            else
            {
                param = new object[] { 6, 0, 0, id_recurso, null, null, 0, false, "", "" }
            };

            //Realizando la consulta
            using (DataSet ds = CapaDatos.m_capaDeDatos.EjecutaProcAlmacenadoDataSet(_nombre_stored_procedure, param))
            {
                //Validando Origen de Datos
                if (TSDK.Datos.Validacion.ValidaOrigenDatos(ds, "Table"))
                {
                    //Recorriendo cada Fila
                    foreach (DataRow dr in ds.Tables["Table"].Rows)
                    {
                        asignacion = new AsignacionOperadorUnidad(Convert.ToInt32(dr["Id"]));
                        break;
                    }
                }
            }

            //Devolviendo resultado
            return(asignacion);
        }
예제 #2
0
 /// <summary>
 /// Inicializamos Control Operador Actual
 /// </summary>
 private void inicializaControlOperadorActual()
 {
     //Instanciando última asignación de operador para esta unidad
     using (SAT_CL.Global.AsignacionOperadorUnidad asignacion = SAT_CL.Global.AsignacionOperadorUnidad.ObtieneAsignacionActiva(SAT_CL.Global.AsignacionOperadorUnidad.TipoBusquedaAsignacion.Unidad, this._id_unidad))
         //Instanciando operador involucrado
         using (SAT_CL.Global.Operador operador = new SAT_CL.Global.Operador(asignacion.id_operador))
             //Mostrando datos del operador actual
             lblOperadorActual.Text = string.Format("{0}   [ Desde '{1}' - Hasta '{2}' ]", operador.id_operador > 0 ? operador.nombre : "Sin Asignar",
                                                    !Fecha.EsFechaMinima(asignacion.fecha_inicio) ? asignacion.fecha_inicio.ToString("dd/MM/yyyy HH:mm") : "",
                                                    !Fecha.EsFechaMinima(asignacion.fecha_fin) ? asignacion.fecha_fin.ToString("dd/MM/yyyy HH:mm") : "");
 }
예제 #3
0
        /// <summary>
        /// Notificación para pedir ubicación actual al dispositivo
        /// </summary>
        /// <param name="tipo_recurso">Tipo de Recurso</param>
        /// <param name="id_recurso">Id de Entidad acorde al tipo indicado</param>
        /// <returns></returns>
        public RetornoOperacion NotificacionPeticionUbicacion(MovimientoAsignacionRecurso.Tipo tipo_recurso, int id_recurso)
        {
            //Declrando objeto de resultado
            RetornoOperacion resultado = new RetornoOperacion();

            //Inicializando variables auxiliares
            string  tokenFCM   = "";
            int     idCompania = 0;
            Usuario usuario    = null;

            //En base al tipo de recurso
            switch (tipo_recurso)
            {
            case MovimientoAsignacionRecurso.Tipo.Operador:
                //Instanciando el recurso
                using (Operador op = new Operador(id_recurso))
                {
                    //Guardando id de compañía
                    idCompania = op.id_compania_emisor;
                    //Recuperando Usuario correspondiente
                    usuario = Usuario.ObtieneUsuarioAsignadoOperador(op.id_operador);
                }
                break;

            case MovimientoAsignacionRecurso.Tipo.Unidad:
                //Instanciando Unidad
                using (Unidad unidad = new Unidad(id_recurso))
                {
                    //recuperando Id de Compañía
                    idCompania = unidad.id_compania_emisor;

                    //Instanciando tipo de unidad
                    using (UnidadTipo tipo = new UnidadTipo(unidad.id_tipo_unidad))
                    {
                        //Si la unidad es motriz
                        if (tipo.bit_motriz)
                        {
                            //Determiando la propiedad de unidad
                            //Si no es propia
                            if (unidad.bit_no_propia)
                            {
                            }
                            //Si lo es
                            else
                            {
                                //Buscando asignación de operador activa
                                int idOperador = AsignacionOperadorUnidad.ObtieneOperadorAsignadoAUnidad(id_recurso);
                                //Recuperando Usuario correspondiente
                                usuario = Usuario.ObtieneUsuarioAsignadoOperador(idOperador);
                            }
                        }
                    }
                }
                break;
            }

            //Si hay compañía y usuario
            if (idCompania > 0 && usuario != null)
            {
                //Validando configuración de notificaciones
                resultado = CompaniaEmisorReceptor.ValidaConfiguracionUsoAplicacionMovil(idCompania);

                //Si se configuró el uso de aplicación móvil
                if (resultado.OperacionExitosa)
                {
                    //Validando sesión activa en algún dispositivo
                    if (Validacion.ValidaOrigenDatos(UsuarioSesion.ObtieneSesionesActivasUsuario(usuario.id_usuario, UsuarioSesion.TipoDispositivo.Android)))
                    {
                        //Recuperando referencia del token de usuario
                        using (DataTable mit = Referencia.CargaReferencias(usuario.id_usuario, 30, ReferenciaTipo.ObtieneIdReferenciaTipo(idCompania, 30, "Token FCM", 0, "Configuración")))
                            tokenFCM = mit != null ? mit.Rows[0]["Valor"].ToString() : "";

                        //Si se obtuvo el token del usuario correspondiente
                        if (tokenFCM != "")
                        {
                            //Armando mensaje de petición
                            var datos = new
                            {
                                Titulo           = "Comando de Ubicación",
                                Mensaje          = "N/D",
                                TipoNotificacion = "Ubicacion"
                            };

                            //Enviando mensaje vía FCM
                            resultado = FirebaseCloudNotifications.EnviaMensajeFCM(_url_servidor_fcm, _server_token_fcm, tokenFCM, FirebaseCloudNotifications.Prioridad.Alta, datos);
                        }
                        //Si no hay token
                        else
                        {
                            resultado = new RetornoOperacion("El token del dispositivo del usuario debe ser actualizado.");
                        }
                    }
                    //Si no hay sesión activa
                    else
                    {
                        resultado = new RetornoOperacion("El usuario no cuenta con una sesión activa en dispositivo móvil.");
                    }
                }
            }
            //Si no hay compañía o usuario
            else
            {
                resultado = new RetornoOperacion("No se localizó la compañía o el usuario asignado al recurso.");
            }

            //Si el resultado es correcto
            if (resultado.OperacionExitosa)
            {
                resultado = new RetornoOperacion("Petición enviada correctamente, el tiempo de respuesta puede variar de un dispositivo a otro y verse afectado por la calidad de datos móviles.", true);
            }

            //Devolviendo resultado
            return(resultado);
        }