예제 #1
0
        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);
                    }
                }
            }
        }
예제 #2
0
 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;
 }
예제 #3
0
        // 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());
            }
        }
예제 #4
0
        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;
        }
예제 #5
0
 /// <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;
 }
예제 #6
0
        /// <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);
        }
예제 #7
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);
        }
예제 #8
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);
        }
예제 #9
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;
                }
            }
        }