/// <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); }
/// <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") : ""); }
/// <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); }