private void SetDeviceConfiguration(Dispositivo dispositivo) { if (!EditMode) { var tipo = dispositivo.TipoDispositivo; if (tipo != null) { foreach (TipoParametroDispositivo par in tipo.TiposParametro) { var detalle = new DetalleDispositivo { Dispositivo = dispositivo, Revision = 0, TipoParametro = par, Valor = par.ValorInicial }; EditObject.DetallesDispositivo.Add(detalle); } } } else { var maxRevision = dispositivo.MaxRevision + 1; var detallesById = dispositivo.DetallesDispositivo.Cast <DetalleDispositivo>().ToDictionary(d => d.Id, d => d); EditObject.DetallesDispositivo.Clear(); foreach (C1GridViewRow newParameter in grid.Rows) { var idDetail = Convert.ToInt32(grid.DataKeys[newParameter.RowIndex].Value); var idParametro = Convert.ToInt32(grid.DataKeys[newParameter.RowIndex].Values[1]); var txtValor = newParameter.FindControl("txtValor") as TextBox; if (idDetail > 0) { var oldParameter = detallesById[idDetail]; if (txtValor != null && oldParameter.Valor != txtValor.Text) { oldParameter.Valor = txtValor.Text; oldParameter.Revision = maxRevision; } EditObject.DetallesDispositivo.Add(oldParameter); } else { var parametro = DAOFactory.TipoParametroDispositivoDAO.FindById(idParametro); var oldParameter = new DetalleDispositivo { Dispositivo = EditObject, Revision = maxRevision, TipoParametro = parametro, Valor = txtValor != null ? txtValor.Text : parametro.ValorInicial }; EditObject.DetallesDispositivo.Add(oldParameter); } } } }
public DetalleDispo(DetalleDispositivo detalle) { Id = detalle.Id; Parametro = detalle.TipoParametro.Nombre; Descripcion = detalle.TipoParametro.Descripcion; Tipo = detalle.TipoParametro.TipoDato; Valor = detalle.Valor; Default = detalle.TipoParametro.ValorInicial; Editable = detalle.TipoParametro.Editable; IdParametro = detalle.TipoParametro.Id; }
// POST: api/Routes public IHttpActionResult Post(int id, [FromBody] String version) { try { var deviceId = GetDeviceId(Request); if (deviceId == null) { return(BadRequest()); } var mobileId = RouteService.GetMobileIdByImei(deviceId); DetalleDispositivoDAO detalle = new DetalleDispositivoDAO(); TipoParametroDispositivoDAO tipo = new TipoParametroDispositivoDAO(); DispositivoDAO dispositivodao = new DispositivoDAO(); var dispositivo = dispositivodao.FindByImei(deviceId); IList <DetalleDispositivo> lista = dispositivo.DetallesDispositivo.ToList(); DetalleDispositivo setVersion = null; foreach (var item in lista) { if (item.TipoParametro.Nombre.Equals("Version_Software") && item.TipoParametro.TipoDato == "string") { // dispositivo.DetallesDispositivo.Remove(item); //detalle.Delete(item); setVersion = item; setVersion.Valor = version; // dispositivodao.SaveOrUpdate(dispositivo); break; } } if (setVersion == null) { setVersion = new DetalleDispositivo(); TipoParametroDispositivoDAO tp = new TipoParametroDispositivoDAO(); setVersion.Dispositivo = dispositivo; setVersion.TipoParametro = tp.FindByTipoDispositivo(dispositivo.TipoDispositivo.Id).Where(x => x.Nombre.Equals("Version_Software")).FirstOrDefault(); setVersion.Valor = version; tp.SaveOrUpdate(setVersion.TipoParametro); dispositivo.DetallesDispositivo.Add(setVersion); } detalle.SaveOrUpdate(setVersion); dispositivodao.SaveOrUpdate(dispositivo); return(Ok("ok")); } catch (Exception error) { LogicTracker.App.Web.Api.Providers.LogWritter.writeLog(error); return(BadRequest()); } }
public DetalleDispositivosVo(DetalleDispositivo detalle, string vehiculo) { Id = detalle.Dispositivo.Id; CodigoDispositivo = detalle.Dispositivo.Codigo; Vehiculo = vehiculo ?? string.Empty; Telefono = detalle.Dispositivo.Telefono; Imei = detalle.Dispositivo.Imei; Config = detalle.Dispositivo.ConfiguracionAsString; if (Config.Length > 64) { Config = Config.Substring(0, 64); } Param = detalle.TipoParametro.Nombre; Valor = detalle.Valor; }
/// <summary> /// Constructor for the VO /// </summary> /// <param name="detalle"></param> public DetalleDispositivosVO(DetalleDispositivo detalle) { Imei = (detalle.Dispositivo != null) ? detalle.Dispositivo.Imei : String.Empty; CodigoDispositivo = (detalle.Dispositivo != null) ? detalle.Dispositivo.Codigo : String.Empty; Firm = detalle.Dispositivo != null ? detalle.Dispositivo.Firmware != null ? detalle.Dispositivo.Firmware.Nombre : String.Empty : String.Empty; Consumidor = (detalle.TipoParametro != null) ? detalle.TipoParametro.Consumidor : String.Empty; TipoParam = (detalle.TipoParametro != null) ? detalle.TipoParametro.TipoDato : String.Empty; Descripcion = (detalle.TipoParametro != null) ? detalle.TipoParametro.Descripcion : String.Empty; Param = (detalle.TipoParametro != null) ? detalle.TipoParametro.Nombre: String.Empty; Valor = detalle.Valor; Revision = detalle.Revision; ValorDefault = (detalle.TipoParametro != null) ? detalle.TipoParametro.ValorInicial : String.Empty; IdDispositivo = (detalle.Dispositivo != null) ? detalle.Dispositivo.Id : -1; IDDetail = detalle.Id; ParamEditable = (detalle.TipoParametro != null) && detalle.TipoParametro.Editable; }
/// <summary> /// When saving a new parameter type, generates a new configuration detail entry for all devices of the associated type. /// </summary> /// <param name="obj"></param> public override void SaveOrUpdate(TipoParametroDispositivo obj) { var dispositivosDAO = new DispositivoDAO(); var devices = obj.Id > 0 ? new List <Dispositivo>() : dispositivosDAO.GetByTipo(obj.DispositivoTipo); if (obj.Id.Equals(0)) { foreach (var device in devices) { var detail = new DetalleDispositivo { Dispositivo = device, Revision = (device.GetMaxRevision() + 1), TipoParametro = obj, Valor = obj.ValorInicial }; obj.DispositivoDetalle.Add(detail); device.AddDetalleDispositivo(detail); } } base.SaveOrUpdate(obj); }
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); }
/// <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; } } }