public ObservableCollection<NotificacionModel> GetNotifications(UsuarioModel user, int runRefresh)
        {
            ObservableCollection<NotificacionModel> notifications = new ObservableCollection<NotificacionModel>();
            ObservableCollection<NotificacionModel> notificationsRecurrencia = new ObservableCollection<NotificacionModel>();
            //cuando arranca la aplicacion
            if (runRefresh ==0)
            {
                //se Recetean la tabla de NOTIFICACION_ACTIVA
                this.ResetNotificationActiva();
                notifications = this.LoadNotifications(user);
                //actualiza o inserta en la tabla NOTIFICACION_ACTIVA la bandera IsActiva en true
                if (notifications.Count != 0)
                    this.UpdateNotificationActiva(notifications);
                //Si la recurrencia es > 0 actualiza la fecha ultima muestra
                notifications.ToList().Where(r => r.Recurrencia > 0).ToList().ForEach(n =>
                {
                    n.FechaUltimaMuestra = new UNID().getNewUNID();
                    notificationsRecurrencia.Add(n);
                });

                //inserta los registros con recurrencia
                if (notificationsRecurrencia.Count != 0)
                    this.UpdateNotificationRecurrencia(notificationsRecurrencia);

            }
            else
            {
                notifications = this.LoadNotifications(user);
            }
            return notifications;
        }
        /// <summary>
        /// En base al nombre del usuario obtener su informacion
        /// </summary>
        /// <param name="userMail"></param>
        /// <returns></returns>
        public UsuarioModel GetUsuario(string userMail)
        {
            UsuarioModel um = null;

            using (var entity = new Nosc.DAL.NoscDBEntities())
            {
                try
                {
                    var res = (from o in entity.APP_USUARIO
                               where o.UsuarioCorreo == userMail
                               select o).First<APP_USUARIO>();

                    um = new UsuarioModel()
                    {
                        IdUsuario = res.IdUsuario,
                        NombreUsuario = res.Nombre,
                        Area = res.Area,
                        Apellido =res.Apellido,
                        Puesto = res.Puesto,
                        UsuarioCorreo =res.UsuarioCorreo,
                        UsuarioPwd =res.UsuarioPwd,
                        IsActive = res.IsActive
                    };

                }
                catch (Exception ex)
                {
                    ;
                }
            }

            return um;
        }
 public void GetNotificationsTest()
 {
     NotificationRepository target = new NotificationRepository(); // TODO: Inicializar en un valor adecuado
     UsuarioModel user = new UsuarioModel()
         {
             IdUsuario = 20130101120059002,
             NombreUsuario="*****@*****.**"
         }; // TODO: Inicializar en un valor adecuado
     ObservableCollection<NotificacionModel> expected = null; // TODO: Inicializar en un valor adecuado
     ObservableCollection<NotificacionModel> actual;
     actual = target.GetNotifications(user,1);
     Assert.AreEqual(expected, actual);
     Assert.Inconclusive("Compruebe la exactitud de este método de prueba.");
 }
 public void GetTreeData(UsuarioModel user, int runRefresh)
 {
     ObservableCollection<NotificacionModel> notifications = this.NotificationRepository.GetNotifications(user,runRefresh);
     if (notifications.Count > 0)
     {
         (from o in notifications
          select new AppModel() { IdApp=o.App.IdApp,AppName=o.App.AppName,AppIconPath=o.App.AppIconPath }
             ).Distinct().ToList<AppModel>().ForEach(o =>
          {
              this.Childrens.Add(new NotificationAppViewModel()
                  {
                      App = o,
                      Notifications = this.GetNotification(notifications, o)
                  }
              );
          });
     }
 }
 /// <summary>
 /// Constructor
 /// </summary>
 public NotificationTreeViewModel(UsuarioModel user, int runRefresh)
 {
     this.NotificationRepository = new NotificationRepository();
     this.Childrens = new ObservableCollection<NotificationAppViewModel>();
     this.GetTreeData(user,runRefresh);
 }
        public ObservableCollection<NotificacionModel> LoadNotifications(UsuarioModel user)
        {
            ObservableCollection<NotificacionModel> notifications = new ObservableCollection<NotificacionModel>();

            long fechaActual = new UNID().getNewUNID();

            using (var entity = new Nosc.DAL.NoscDBEntities())
            {
                try
                {
                    //obtine las notificaciones con validaciones
                    (from o in entity.Notificacions.Include("CAT_APP")
                     where
                          o.APP_USUARIO.IdUsuario == user.IdUsuario
                          &&
                          o.IsNotificacionActiva
                          &&
                          o.FechaNotificacion <= fechaActual
                     select new
                     {
                         o,
                         NotificacionActive = o.NOTIFICACION_ACTIVA.Select
                             (s =>
                             new Model.NotificacionActivaModel()
                             {
                                 IdNotificacion = s.IdNotificacion
                                 ,
                                 IdNotificacionActiva = s.IdNotificacionActiva
                                 ,
                                 IsActive = s.IsActive
                             }
                             )
                     }).ToList().ForEach(p =>
                     {
                         notifications.Add(new NotificacionModel()
                         {
                             App = new AppModel()
                             {
                                 AppName = p.o.CAT_APP.AppName,
                                 AppIconPath = p.o.CAT_APP.AppIcon,
                                 IdApp = p.o.CAT_APP.IdApp
                             },
                             FechaCreacion = p.o.FechaCreacion,
                             IdNotificacion = p.o.IdNotificacion,
                             Mensaje = p.o.Mensaje,
                             Parametro = p.o.Parametro,
                             Titulo = p.o.Titulo,
                             FechaNotificacion = p.o.FechaNotificacion,
                             Recurrencia = p.o.Recurrencia,
                             FechaUltimaMuestra = p.o.FechaUltimaMuestra,
                             NotificacionActiva = p.NotificacionActive,
                             IdUsuario = p.o.APP_USUARIO.IdUsuario,
                             Usuario = new UsuarioModel()
                             {
                                 IdUsuario = p.o.APP_USUARIO.IdUsuario
                             }
                         });
                     });
                }
                catch (Exception ex)
                {

                }
            }
            return notifications;
        }