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