Esempio n. 1
0
        /// <summary>
        /// Sends the new parameter value to all selected devices.
        /// </summary>
        protected override void OnSave()
        {
            var value = txtValorEnviar.Text.Trim();
            var name  = EditObject.Nombre;

            var dispositivoDao = DAOFactory.DispositivoDAO;

            var devices = lbDispositivos.SelectedValues.Select(id => dispositivoDao.FindById(id)).ToList();

            foreach (var device in devices)
            {
                var parametro = dispositivoDao.UpdateDeviceParameter(device, name, value);
                if (parametro != null && parametro.TipoParametro.RequiereReset)
                {
                    MessageSender.CreateReboot(device, null).Send();
                }
            }
        }
        /// <summary>
        /// Resset all devices configuration to its type parameters values.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnResetDevices_Click(object sender, EventArgs e)
        {
            try
            {
                var deviceType = DAOFactory.TipoDispositivoDAO.FindById(ddlTipoDispositivo.Selected);
                var devices    = DAOFactory.DispositivoDAO.GetByTipo(deviceType);

                foreach (var device in devices)
                {
                    DAOFactory.DispositivoDAO.ResetConfiguration(device);
                    if (device.DetallesDispositivo.Cast <DetalleDispositivo>().Any(detail => detail.TipoParametro.RequiereReset))
                    {
                        MessageSender.CreateReboot(device, null);
                    }
                }

                ShowInfo(CultureManager.GetLabel("DEVICE_RESET_OK"));
            }
            catch { ShowError(new Exception(CultureManager.GetError("DEVICE_RESET_ERROR"))); }
        }
Esempio n. 3
0
        protected override void OnSave()
        {
            EditObject.Clave           = txtClave.Text;
            EditObject.Codigo          = txtCodigo.Text.Trim();
            EditObject.Imei            = txtIMEI.Text.Trim().TrimStart('0');
            EditObject.Port            = Convert.ToInt32(txtPuerto.Text);
            EditObject.Estado          = (short)ddlEstado.Selected;
            EditObject.Tablas          = npTablas.Value.ToString("#0");
            EditObject.Telefono        = txtTelefono.Text;
            EditObject.LineaTelefonica = cbLineaTelefonica.Selected > 0 ? DAOFactory.LineaTelefonicaDAO.FindById(cbLineaTelefonica.Selected) : null;
            EditObject.IdNum           = txtId.Text != string.Empty ? Convert.ToInt32(txtId.Text) : EditObject.Id;

            EditObject.Linea           = ddlPlanta.Selected > 0 ? DAOFactory.LineaDAO.FindById(ddlPlanta.Selected) : null;
            EditObject.Empresa         = ddlLocacion.Selected > 0 ? DAOFactory.EmpresaDAO.FindById(ddlLocacion.Selected): EditObject.Linea != null ? EditObject.Linea.Empresa : null;
            EditObject.FlashedFirmware = ddlFirmware.Selected > 0 ? DAOFactory.FirmwareDAO.FindById(ddlFirmware.Selected) : null;
            EditObject.TipoDispositivo = DAOFactory.TipoDispositivoDAO.FindById(ddlTipoDispositivo.Selected);
            EditObject.Precinto        = cbPrecinto.Selected > 0 ? DAOFactory.PrecintoDAO.FindById(cbPrecinto.Selected) : null;
            AddConfigurations();

            if (DeviceState.Get() != EditObject.Estado)
            {
                EditObject.DtCambioEstado = DateTime.UtcNow;
            }

            SetDeviceConfiguration(EditObject);
            if (!EditMode)
            {
                DAOFactory.DispositivoDAO.Save(EditObject);
            }
            else
            {
                DAOFactory.DispositivoDAO.Update(EditObject);
            }

            if (EditObject.DetallesDispositivo.Cast <DetalleDispositivo>().Any(detail => detail.TipoParametro.RequiereReset))
            {
                MessageSender.CreateReboot(EditObject, null);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Saves or updates the parameter T with the givenn values.
        /// </summary>
        protected override void OnSave()
        {
            EditObject.Consumidor      = txtConsumidor.Text;
            EditObject.Descripcion     = txtDescripcion.Text;
            EditObject.DispositivoTipo = DAOFactory.TipoDispositivoDAO.FindById(ddlTipoDispositivo.Selected);
            EditObject.Editable        = chbEditable.Checked;
            EditObject.Nombre          = txtNombre.Text;
            EditObject.TipoDato        = txtTipoDato.Text;
            EditObject.ValorInicial    = txtValorInicial.Text;
            EditObject.RequiereReset   = chkReset.Checked;

            var reset = !EditMode && EditObject.RequiereReset;

            DAOFactory.TipoParametroDispositivoDAO.SaveOrUpdate(EditObject);
            if (reset)
            {
                var devices = DAOFactory.DispositivoDAO.GetByTipo(EditObject.DispositivoTipo);
                foreach (var dispositivo in devices)
                {
                    MessageSender.CreateReboot(dispositivo, null).Send();
                }
            }
        }
Esempio n. 5
0
        protected override void OnSave()
        {
            var rebootDevices = new List <Dispositivo>();

            using (var transaction = SmartTransaction.BeginTransaction())
            {
                try
                {
                    var dispositivos = cbDispositivo.SelectedValues.Where(id => id > 0).Select(id => DAOFactory.DispositivoDAO.FindById(id));

                    foreach (var dispositivo in dispositivos)
                    {
                        var reboot = false;

                        foreach (C1GridViewRow row in grid.Rows)
                        {
                            var chkEdit = row.FindControl("chkEdit") as CheckBox;
                            if (!chkEdit.Checked)
                            {
                                continue;
                            }

                            var parametro = DAOFactory.TipoParametroDispositivoDAO.FindById(Convert.ToInt32(grid.DataKeys[row.RowIndex].Value));
                            var txtValor  = row.FindControl("txtValor") as TextBox;

                            var valor = txtValor.Text;

                            var detalle =
                                dispositivo.DetallesDispositivo.Cast <DetalleDispositivo>().Where(det => det.TipoParametro.Id == parametro.Id).FirstOrDefault();

                            if (detalle == null)
                            {
                                detalle = new DetalleDispositivo {
                                    Dispositivo = dispositivo, Revision = dispositivo.MaxRevision + 1, TipoParametro = parametro
                                };
                                dispositivo.AddDetalleDispositivo(detalle);
                            }

                            reboot       |= parametro.RequiereReset && detalle.Valor != valor;
                            detalle.Valor = valor;
                        }
                        DAOFactory.DispositivoDAO.SaveOrUpdate(dispositivo);

                        if (reboot)
                        {
                            rebootDevices.Add(dispositivo);
                        }
                    }

                    transaction.Commit();

                    foreach (var device in rebootDevices)
                    {
                        MessageSender.CreateReboot(device, null).Send();
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
            cbDispositivo_SelectedIndexChanged(null, EventArgs.Empty);
        }
Esempio n. 6
0
        protected override HandleResults OnDeviceHandleMessage(SetDetail message)
        {
            STrace.Debug(GetType().FullName, message.DeviceId, String.Format("SetDetail Processing: Name={0} Value={1}", message.GetUserSetting(SetDetail.Fields.Name), message.GetUserSetting(SetDetail.Fields.Value)));
            if (String.IsNullOrEmpty(message.GetUserSetting(SetDetail.Fields.Name)))
            {
                return(HandleResults.SilentlyDiscarded);
            }

            DaoFactory.Session.Refresh(Dispositivo);

            var userSettingName  = message.GetUserSetting(SetDetail.Fields.Name);
            var userSettingValue = message.GetUserSetting(SetDetail.Fields.Value);

            if (userSettingName == "Telephone")
            {
                Dispositivo.Telefono = userSettingValue ?? String.Empty;
                DaoFactory.DispositivoDAO.SaveOrUpdate(Dispositivo);
                return(HandleResults.Success);
            }

            if (userSettingName == "Port")
            {
                try
                {
                    Dispositivo.Port = Convert.ToInt32(userSettingValue ?? "0");
                    DaoFactory.DispositivoDAO.SaveOrUpdate(Dispositivo);
                    return(HandleResults.Success);
                }
                catch (Exception)
                {
                    return(HandleResults.SilentlyDiscarded);
                }
            }

            using (var transaction = SmartTransaction.BeginTransaction())
            {
                try
                {
                    var name         = (userSettingName ?? String.Empty).ToLower();
                    var consumidor   = message.GetUserSetting(SetDetail.Fields.Consumidor) ?? String.Empty;
                    var editable     = message.GetUserSetting(SetDetail.Fields.Editable) == "true";
                    var metadata     = message.GetUserSetting(SetDetail.Fields.Metadata) ?? String.Empty;
                    var reset        = message.GetUserSetting(SetDetail.Fields.RequiereReset) == "true";
                    var tipo         = message.GetUserSetting(SetDetail.Fields.TipoDato) ?? String.Empty;
                    var valorinicial = message.GetUserSetting(SetDetail.Fields.ValorInicial) ?? String.Empty;
                    var valor        = userSettingValue ?? String.Empty;

                    var tipoDispositivo = Dispositivo.TipoDispositivo;
                    var parametros      = tipoDispositivo.TiposParametro.Cast <TipoParametroDispositivo>();
                    var parametro       = parametros.FirstOrDefault(p => p.Nombre.ToLower() == name);
                    if (parametro == null)
                    {
                        parametro = new TipoParametroDispositivo
                        {
                            Consumidor      = consumidor,
                            Nombre          = name,
                            Descripcion     = name,
                            DispositivoTipo = tipoDispositivo,
                            Editable        = editable,
                            Metadata        = metadata,
                            RequiereReset   = reset,
                            TipoDato        = tipo,
                            ValorInicial    = valorinicial,
                        };

                        tipoDispositivo.TiposParametro.Add(parametro);

                        DaoFactory.TipoDispositivoDAO.SaveOrUpdate(tipoDispositivo);
                    }

                    var detalles = Dispositivo.DetallesDispositivo.Cast <DetalleDispositivo>();
                    var detalle  = detalles.FirstOrDefault(d => d.TipoParametro.Nombre.ToLower() == name);
                    if (detalle == null)
                    {
                        detalle = new DetalleDispositivo {
                            Dispositivo = Dispositivo, Revision = 0, TipoParametro = parametro
                        };

                        Dispositivo.AddDetalleDispositivo(detalle);
                    }

                    var changed = detalle.Valor != valor;
                    detalle.Valor = valor;
                    DaoFactory.DispositivoDAO.SaveOrUpdate(Dispositivo);
                    transaction.Commit();
                    if (changed && parametro.RequiereReset)
                    {
                        try
                        {
                            MessageSender.CreateReboot(Dispositivo, null).Send();
                        }
                        catch (Exception ex)
                        {
                            STrace.Exception(GetType().FullName, ex, Dispositivo.Id,
                                             String.Format("No se pudo enviar el comando Reboot al Dispositivo {0}", Dispositivo.Id));
                        }
                    }
                }
                catch (Exception ex)
                {
                    STrace.Exception(GetType().FullName, ex, message.DeviceId,
                                     String.Format("SetDetail Exception: Name={0} Value={1}", message.GetUserSetting(SetDetail.Fields.Name),
                                                   message.GetUserSetting(SetDetail.Fields.Value)));
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(HandleResults.Success);
        }
Esempio n. 7
0
        private void SendMessage(string cmd, string param)
        {
            if (cbVehiculoMensaje.SelectedIndex < 0)
            {
                // No hay un vehiculo seleccionado
                JsAlert(string.Format(CultureManager.GetError("NO_SELECTED"), CultureManager.GetEntity("PARENTI03")));
                return;
            }

            var ok       = 0;
            var error    = 0;
            var nogarmin = 0;

            var sent           = string.Empty;
            var failed         = string.Empty;
            var nogarminfailed = string.Empty;

            foreach (ListItem li in cbVehiculoMensaje.Items)
            {
                if (!li.Selected)
                {
                    continue;
                }

                var c = DAOFactory.CocheDAO.FindById(Convert.ToInt32(li.Value));

                if (c.Dispositivo == null)
                {
                    // El vehiculo no tiene dispositivo asignado
                    JsAlert(string.Format(CultureManager.GetSystemMessage("UNASIGNED_VEHICLE"), c.Interno));
                    continue;
                }

                bool sendState;

                var dispositivo = c.Dispositivo;

                if (cmd == "PurgeConfiguration")
                {
                    DAOFactory.DispositivoDAO.PurgeConfiguration(dispositivo);
                    if (dispositivo.DetallesDispositivo.Any(detail => detail.TipoParametro.RequiereReset))
                    {
                        MessageSender.CreateReboot(dispositivo, null);
                    }
                    sendState = true;
                }
                else
                {
                    var message = MessageSender.Create(dispositivo, new MessageSaver(DAOFactory)).AddCommand(cmd);
                    switch (cmd)
                    {
                    case MessageSender.Comandos.Qtree: break;

                    case MessageSender.Comandos.FullQtree: break;

                    case MessageSender.Comandos.ReloadFirmware: break;

                    case MessageSender.Comandos.ReloadConfiguration: break;

                    case MessageSender.Comandos.ReloadMessages: break;

                    case MessageSender.Comandos.ResetFMIOnGarmin:
                        var detalle = DAOFactory.DetalleDispositivoDAO.GetGteMessagingDeviceValue(dispositivo.Id);
                        if (!(detalle != null && detalle == "GARMIN"))
                        {
                            nogarmin++;
                            nogarminfailed += "\\n" + li.Text;
                            continue;
                        }
                        break;

                    case MessageSender.Comandos.Reboot: break;

                    case MessageSender.Comandos.RebootSolicitation: break;

                    case MessageSender.Comandos.SubmitCannedMessage: message.AddCannedMessageCode(param); break;

                    case MessageSender.Comandos.SubmitTextMessage: message.AddMessageText(param); break;

                    case MessageSender.Comandos.SetWorkflowState: message.AddWorkflowState(param); break;

                    case MessageSender.Comandos.DeleteCannedMessage: message.AddCannedMessageInfo(param, 0); break;

                    case MessageSender.Comandos.ResetStateMachine: break;

                    case MessageSender.Comandos.RetrievePictures: message.AddDateRange(dtFotoDesde.SelectedDate.Value.ToDataBaseDateTime(), dtFotoHasta.SelectedDate.Value.ToDataBaseDateTime()); break;

                    case MessageSender.Comandos.DisableFuel: message.AddInmediately(param == "1"); break;

                    case MessageSender.Comandos.EnableFuel: break;

                    case MessageSender.Comandos.ClearFota: DeleteFota(dispositivo); return;
                    }
                    sendState = message.Send();
                }

                if (sendState)
                {
                    ok++;
                    sent += "\\n" + li.Text;
                }
                else
                {
                    error++;
                    failed += "\\n" + li.Text;
                }
            }

            if (ok > 0)
            {
                JsAlert(string.Format(CultureManager.GetSystemMessage("MESSAGE_SENT"), sent));
            }
            if (nogarmin > 0)
            {
                JsAlert(string.Format(CultureManager.GetError("DEVICE_WITHOUT_GARMIN_CONFIGURED"), nogarminfailed));
            }
            if (error > 0)
            {
                JsAlert(string.Format(CultureManager.GetError("MESSAGE_NOT_SENT"), failed));
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Saves or updates the device T with the givenn values.
        /// </summary>
        protected override void OnSave()
        {
            EditObject.Modelo         = txtModelo.Text;
            EditObject.Fabricante     = txtFabricante.Text;
            EditObject.ColaDeComandos = txtColaComando.Text;

            EditObject.Firmware             = ddlFirmware.Selected > 0 ? DAOFactory.FirmwareDAO.FindById(ddlFirmware.Selected) : null;
            EditObject.TipoDispositivoPadre = ddlPadre.Selected > 0 ? DAOFactory.TipoDispositivoDAO.FindById(ddlPadre.Selected) : null;

            AddConfigurations();

            var reset = SetParametros();

            DAOFactory.TipoDispositivoDAO.SaveOrUpdate(EditObject);


            using (var transaction = SmartTransaction.BeginTransaction())
            {
                try
                {
                    var parametros = EditObject.TiposParametro.Cast <TipoParametroDispositivo>().ToList();

                    var devices = DAOFactory.DispositivoDAO.GetByTipo(EditObject);
                    foreach (var dispositivo in devices)
                    {
                        if (EditMode && reset)
                        {
                            MessageSender.CreateReboot(dispositivo, null).Send();
                        }
                        var save     = false;
                        var detalles = dispositivo.DetallesDispositivo.Cast <DetalleDispositivo>().ToList();
                        foreach (var parametro in parametros)
                        {
                            var detalle = detalles.FirstOrDefault(d => d.TipoParametro.Id == parametro.Id);
                            if (detalle != null)
                            {
                                continue;
                            }

                            detalle = new DetalleDispositivo
                            {
                                Dispositivo   = dispositivo,
                                Revision      = 1,
                                TipoParametro = parametro,
                                Valor         = parametro.ValorInicial
                            };

                            dispositivo.DetallesDispositivo.Add(detalle);
                            save = true;
                        }
                        if (save)
                        {
                            DAOFactory.DispositivoDAO.Update(dispositivo);
                        }
                    }
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
        }