public IHttpActionResult Put(ChangeDeviceViewModel device)
        {
            UserDeviceService userDeviceService = new UserDeviceService();

            if (device == null)
            {
                return(BadRequest("Input is null"));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try {
                var oldDevice = userDeviceService.GetById(device.Id);
                oldDevice.CacheData = device.CacheData;
                var result = userDeviceService.Update(oldDevice);
                if (result)
                {
                    return(Ok());
                }
                else
                {
                    return(BadRequest("Entity cannot be modified"));
                }
            } catch (Exception e) {
                return(InternalServerError(e));
            }
        }
        public IHttpActionResult Post(AddNewDeviceViewModel addNewDeviceViewModel)
        {
            var userId = User.Identity.GetUserId();
            UserDeviceService userDeviceService = new UserDeviceService();

            if (addNewDeviceViewModel == null)
            {
                return(BadRequest("Input is null"));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Device device = new Device()
            {
                AppUserId = userId,
                CacheData = addNewDeviceViewModel.CacheData.GetValueOrDefault(),
                Name      = addNewDeviceViewModel.Name,
                SecretKey = Guid.NewGuid().ToString("n")
            };

            try {
                userDeviceService.Create(device);
            }
            catch (Exception e) {
                return(InternalServerError(e));
            }

            return(Ok(device));
        }
        public IHttpActionResult Get()
        {
	        var userId = User.Identity.GetUserId();
			UserDeviceService userDeviceService = new UserDeviceService();

			return Ok(userDeviceService.GetAllUserDevices(userId));
        }
        public IHttpActionResult Get()
        {
            var userId = User.Identity.GetUserId();
            UserDeviceService userDeviceService = new UserDeviceService();

            return(Ok(userDeviceService.GetAllUserDevices(userId)));
        }
        public IHttpActionResult GetDeviceDetails(string deviceId)
        {
            var userId = User.Identity.GetUserId();
            UserDeviceService userDeviceService = new UserDeviceService();

            Device device = userDeviceService.GetById(deviceId);

            if (device != null)
            {
                if (device.AppUserId == userId)
                {
                    DeviceDetailsViewModel deviceDetailsViewModel = new DeviceDetailsViewModel()
                    {
                        ConnectionState = device.ConnectionState,
                        LastPing        = device.LastPing,
                        Id          = device.Id,
                        ActualState = device.ActualState,
                        Name        = device.Name,
                        SecretKey   = device.SecretKey
                    };

                    return(Ok(deviceDetailsViewModel));
                }
                return(BadRequest("Device does not available"));
            }

            return(BadRequest("Device does not exist"));
        }
        public IHttpActionResult GetDeviceStatesHistory(string deviceId, int startIndex = 0, int limit = 30)
        {
            var userId = User.Identity.GetUserId();
            UserDeviceService userDeviceService = new UserDeviceService();

            Device device = userDeviceService.GetById(deviceId);

            if (device != null)
            {
                if (device.AppUserId == userId)
                {
                    var deviceStatesHistoryES = new EntityService <DeviceHistoricalState>();
                    var deviceStatesHistory   = deviceStatesHistoryES.Collection.AsQueryable().
                                                Where(x => x.DeviceId == deviceId).
                                                OrderByDescending(x => x.StateTransitionDateTime).
                                                Skip(startIndex).
                                                Take(limit).
                                                ToList();

                    return(Ok(deviceStatesHistory));
                }
                return(BadRequest("Device does not available"));
            }

            return(BadRequest("Device does not exist"));
        }
		public IHttpActionResult Post(AddNewNotificationRuleModel addNewNotificationRuleModel) {
			var userId = User.Identity.GetUserId();
			NotificationRuleService notificationRuleService = new NotificationRuleService();
			UserDeviceService userDeviceService = new UserDeviceService();

			var sourceDevice =
				userDeviceService.Collection.Find(
					x => x.AppUserId == userId && x.Name == addNewNotificationRuleModel.SourceDeviceName).FirstOrDefault();

			var targetDevice =
				userDeviceService.Collection.Find(
					x => x.AppUserId == userId && x.Name == addNewNotificationRuleModel.TargetDeviceName).FirstOrDefault();

			if (sourceDevice != null && targetDevice != null) {
				var newRule = new NotificationRule() {
					AppUserId = userId,
					Id = ObjectId.GenerateNewId().ToString(),
					SourceDeviceId = sourceDevice.Id,
					SourceDeviceName = sourceDevice.Name,
					TargetDeviceId = targetDevice.Id,
					TargetDeviceName = targetDevice.Name,
					SourceMessage = addNewNotificationRuleModel.SourceMessage,
					TargetMessage = addNewNotificationRuleModel.TargetMessage
				};

				notificationRuleService.Create(newRule);

				return Ok(newRule);
			}

			return BadRequest("Devices  with such name do not exists");
		}
        public IHttpActionResult Post(AddNewNotificationRuleModel addNewNotificationRuleModel)
        {
            var userId = User.Identity.GetUserId();
            NotificationRuleService notificationRuleService = new NotificationRuleService();
            UserDeviceService       userDeviceService       = new UserDeviceService();

            var sourceDevice =
                userDeviceService.Collection.Find(
                    x => x.AppUserId == userId && x.Name == addNewNotificationRuleModel.SourceDeviceName).FirstOrDefault();

            var targetDevice =
                userDeviceService.Collection.Find(
                    x => x.AppUserId == userId && x.Name == addNewNotificationRuleModel.TargetDeviceName).FirstOrDefault();

            if (sourceDevice != null && targetDevice != null)
            {
                var newRule = new NotificationRule()
                {
                    AppUserId        = userId,
                    Id               = ObjectId.GenerateNewId().ToString(),
                    SourceDeviceId   = sourceDevice.Id,
                    SourceDeviceName = sourceDevice.Name,
                    TargetDeviceId   = targetDevice.Id,
                    TargetDeviceName = targetDevice.Name,
                    SourceMessage    = addNewNotificationRuleModel.SourceMessage,
                    TargetMessage    = addNewNotificationRuleModel.TargetMessage
                };

                notificationRuleService.Create(newRule);

                return(Ok(newRule));
            }

            return(BadRequest("Devices  with such name do not exists"));
        }
        public IHttpActionResult SetDeviceState(SetDeviceStateData setDeviceStateData)
        {
            var userId = User.Identity.GetUserId();
            UserDeviceService userDeviceService = new UserDeviceService();

            if (setDeviceStateData == null)
            {
                return(BadRequest("Input is null"));
            }

            var device = userDeviceService.GetBySecretKey(setDeviceStateData.SecretKey);

            if (device != null)
            {
                DeviceHistoricalState deviceHistoricalState = new DeviceHistoricalState()
                {
                    State = device.ActualState,
                    StateTransitionDateTime = DateTime.Now,
                    DeviceId = device.Id
                };

                if (userDeviceService.UpdateDeviceState(device, setDeviceStateData.DeviceState))
                {
                    var historialStateES = new EntityService <DeviceHistoricalState>();
                    historialStateES.Create(deviceHistoricalState);

                    IKernel kernel = new StandardKernel(new ConnectYourselfNinjectModule());
                    var     deviceEventsContainer = kernel.Get <IDevicesEventsContainer>();

                    deviceEventsContainer.RegisterDeviceStateChangeEvent(new DeviceStateChangedEvent {
                        DeviceId  = device.Id,
                        DateTime  = deviceHistoricalState.StateTransitionDateTime,
                        State     = setDeviceStateData.DeviceState,
                        AppUserId = device.AppUserId
                    });

                    //send state change message to device
                    if (device.ConnectionState == DeviveConnectionState.FullDuplex && !String.IsNullOrEmpty(device.ConnectionId))
                    {
                        var devicesHub = GlobalHost.ConnectionManager.GetHubContext <DevicesHub>();
                        devicesHub.Clients.Client(device.ConnectionId).RemoteSetState(setDeviceStateData.DeviceState);
                    }

                    return(Ok());
                }
                else
                {
                    return(BadRequest("Failed to update state device"));
                }
            }
            else
            {
                return(BadRequest("Device does not exists"));
            }
        }
 public async Task <ActionResult> ActivateDevice(long deviceId, string searchBadge, string searchModel, string searchOS, string sortField, string sortDirection, int?page, string showActive = "True", bool activate = true)
 {
     using (var service = new UserDeviceService(PrincipalName))
     {
         if (activate)
         {
             await service.ActivateDevice(deviceId);
         }
         else
         {
             await service.InActivateDevice(deviceId);
         }
     }
     return(RedirectToAction("Index", new { searchBadge, searchModel, searchOS, sortField, sortDirection, page, showActive }));
 }
Ejemplo n.º 11
0
		public static void OnUserDeviceMessageReceived(DeviceMessageEvent deviceMessageEvent) {
			var context = GlobalHost.ConnectionManager.GetHubContext<UsersHub>();

			if (UsersConnections.ContainsKey(deviceMessageEvent.AppUserId)) {
				UserDeviceService userDeviceService = new UserDeviceService();
				var device = userDeviceService.GetById(deviceMessageEvent.DeviceId);

				if (device != null) {
					var connection = UsersConnections[deviceMessageEvent.AppUserId];

					context.Clients.Client(connection.ConnectionId).notifyAboutDeviceMessageReceived(new DeviceMessageReceivedNotification() {
						DateTime = deviceMessageEvent.DateTime,
						Message = deviceMessageEvent.Message,
						DeviceName = device.Name,
						Id = device.Id
					});
				}
			}
		}
		public static void OnUserDeviceMessageReceived(DeviceMessageEvent deviceMessageEvent) {

			var notificationRulesService = new NotificationRuleService();
			var rules =
				notificationRulesService.Collection.Find(
					x => x.AppUserId == deviceMessageEvent.AppUserId && x.SourceDeviceId == deviceMessageEvent.DeviceId).ToList();

			if (rules.Any()) {
				var deviceService = new UserDeviceService();
				foreach (var notificationRule in rules) {
					if (notificationRule.SourceMessage == deviceMessageEvent.Message) {
						var device = deviceService.GetById(notificationRule.TargetDeviceId);
						if (device.ConnectionState == DeviveConnectionState.FullDuplex && !String.IsNullOrEmpty(device.ConnectionId)) {
							var devicesHub = GlobalHost.ConnectionManager.GetHubContext<DevicesHub>();
							devicesHub.Clients.Client(device.ConnectionId).NotificationRule(notificationRule.TargetMessage);
						}
					}
				}
			}
		}
        public async Task <ActionResult> Index(string deviceGuid, string searchModel, string searchOS, string sortField, string sortDirection, int page = 1, string showActive = "True")
        {
            IPagedList <Device> pagedDevices;

            //Persit information for next page load
            ViewBag.SearchDevice  = deviceGuid;
            ViewBag.SearchModel   = searchModel;
            ViewBag.SearchOS      = searchOS;
            ViewBag.SortField     = sortField ?? Namefieldname;
            ViewBag.ShowActive    = showActive;
            ViewBag.SortDirection = sortDirection ?? Ascending;
            ViewBag.Page          = page;

            bool?active;

            if (showActive.Equals("All", StringComparison.CurrentCultureIgnoreCase))
            {
                active = null;
            }
            else
            {
                active = showActive == "True";
            }

            using (var service = new UserDeviceService())
            {
                pagedDevices = await service.GetDevicesAsync(new DeviceSearchContext
                {
                    DeviceGuid    = deviceGuid,
                    Model         = searchModel,
                    Os            = searchOS,
                    Active        = active,
                    SortField     = sortField,
                    SortDirection = sortDirection == "descending" ? SortDirection.Descending : SortDirection.Ascending,
                    PageNumber    = page
                });
            }

            return(View(pagedDevices));
        }
        public IHttpActionResult Delete(string id)
        {
            UserDeviceService userDeviceService = new UserDeviceService();

            if (id.IsNullOrWhiteSpace())
            {
                return(BadRequest("Input is null"));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try {
                userDeviceService.Delete(id);
                return(Ok());
            }
            catch (Exception e) {
                return(InternalServerError(e));
            }
        }
Ejemplo n.º 15
0
        public async Task <ActionResult> Index(string searchBadge, string searchModel, string searchOS, string sortField, string sortDirection, string showActive = "True")
        {
            IEnumerable <UserDevice> userDevices;

            //Persit information for next page load
            ViewBag.SearchBadge   = searchBadge;
            ViewBag.SearchModel   = searchModel;
            ViewBag.SearchOS      = searchOS;
            ViewBag.SortField     = sortField ?? Namefieldname;
            ViewBag.ShowActive    = showActive;
            ViewBag.SortDirection = sortDirection ?? Ascending;

            bool?active;

            if (showActive.Equals("All", StringComparison.CurrentCultureIgnoreCase))
            {
                active = null;
            }
            else
            {
                active = showActive == "True";
            }

            using (var service = new UserDeviceService())
            {
                userDevices = await service.GetUserDevicesAsync(new UserDeviceSearchContext
                {
                    Badge         = searchBadge,
                    Model         = searchModel,
                    Os            = searchOS,
                    Active        = active,
                    SortField     = sortField,
                    SortDirection = sortDirection == "descending" ? SortDirection.Descending : SortDirection.Ascending,
                });
            }

            return(View(userDevices));
        }
		public IHttpActionResult GetDeviceStatesHistory(string deviceId, int startIndex = 0, int limit = 30) {
			var userId = User.Identity.GetUserId();
			UserDeviceService userDeviceService = new UserDeviceService();

			Device device = userDeviceService.GetById(deviceId);

			if (device != null) {
				if (device.AppUserId == userId) {
					var deviceStatesHistoryES = new EntityService<DeviceHistoricalState>();
					var deviceStatesHistory = deviceStatesHistoryES.Collection.AsQueryable().
						Where(x => x.DeviceId == deviceId).
						OrderByDescending(x => x.StateTransitionDateTime).
						Skip(startIndex).
						Take(limit).
						ToList();

					return Ok(deviceStatesHistory);
				}
				return BadRequest("Device does not available");
			}

			return BadRequest("Device does not exist");
		}
Ejemplo n.º 17
0
        public static void OnUserDeviceMessageReceived(DeviceMessageEvent deviceMessageEvent)
        {
            var context = GlobalHost.ConnectionManager.GetHubContext <UsersHub>();

            if (UsersConnections.ContainsKey(deviceMessageEvent.AppUserId))
            {
                UserDeviceService userDeviceService = new UserDeviceService();
                var device = userDeviceService.GetById(deviceMessageEvent.DeviceId);

                if (device != null)
                {
                    var connection = UsersConnections[deviceMessageEvent.AppUserId];

                    context.Clients.Client(connection.ConnectionId).notifyAboutDeviceMessageReceived(new DeviceMessageReceivedNotification()
                    {
                        DateTime   = deviceMessageEvent.DateTime,
                        Message    = deviceMessageEvent.Message,
                        DeviceName = device.Name,
                        Id         = device.Id
                    });
                }
            }
        }
		public IHttpActionResult GetDeviceDetails(string deviceId) {
			var userId = User.Identity.GetUserId();
			UserDeviceService userDeviceService = new UserDeviceService();

			Device device = userDeviceService.GetById(deviceId);

			if (device != null) {
				if (device.AppUserId == userId) {
					DeviceDetailsViewModel deviceDetailsViewModel = new DeviceDetailsViewModel() {
						ConnectionState = device.ConnectionState,
						LastPing = device.LastPing,
						Id = device.Id,
						ActualState = device.ActualState,
						Name = device.Name,
						SecretKey = device.SecretKey
					};

					return Ok(deviceDetailsViewModel);
				}
				return BadRequest("Device does not available");
			}

			return BadRequest("Device does not exist");
		}
        public async Task <ActionResult> Index(string searchBadge, string sortField, string sortDirection, int page = 1, string showActive = "True")
        {
            IPagedList <User> pagedUsers;

            //Persit information for next page load
            ViewBag.SearchBadge   = searchBadge;
            ViewBag.SortField     = sortField ?? Namefieldname;
            ViewBag.ShowActive    = showActive;
            ViewBag.SortDirection = sortDirection ?? Ascending;
            ViewBag.Page          = page;

            bool?active;

            if (showActive.Equals("All", StringComparison.CurrentCultureIgnoreCase))
            {
                active = null;
            }
            else
            {
                active = showActive.Equals("True", StringComparison.InvariantCultureIgnoreCase);
            }

            using (var service = new UserDeviceService())
            {
                pagedUsers = await service.GetUsersAsync(new UserSearchContext
                {
                    Badge         = searchBadge,
                    Active        = active,
                    SortField     = sortField,
                    SortDirection = sortDirection == "descending" ? SortDirection.Descending : SortDirection.Ascending,
                    PageNumber    = page
                });
            }

            return(View(pagedUsers));
        }
Ejemplo n.º 20
0
        public static void OnUserDeviceMessageReceived(DeviceMessageEvent deviceMessageEvent)
        {
            var notificationRulesService = new NotificationRuleService();
            var rules =
                notificationRulesService.Collection.Find(
                    x => x.AppUserId == deviceMessageEvent.AppUserId && x.SourceDeviceId == deviceMessageEvent.DeviceId).ToList();

            if (rules.Any())
            {
                var deviceService = new UserDeviceService();
                foreach (var notificationRule in rules)
                {
                    if (notificationRule.SourceMessage == deviceMessageEvent.Message)
                    {
                        var device = deviceService.GetById(notificationRule.TargetDeviceId);
                        if (device.ConnectionState == DeviveConnectionState.FullDuplex && !String.IsNullOrEmpty(device.ConnectionId))
                        {
                            var devicesHub = GlobalHost.ConnectionManager.GetHubContext <DevicesHub>();
                            devicesHub.Clients.Client(device.ConnectionId).NotificationRule(notificationRule.TargetMessage);
                        }
                    }
                }
            }
        }
		public IHttpActionResult Delete(string id) {
			UserDeviceService userDeviceService = new UserDeviceService();

			if (id.IsNullOrWhiteSpace()) {
				return BadRequest("Input is null");
			}

			if (!ModelState.IsValid) {
				return BadRequest(ModelState);
			}

			try {
				userDeviceService.Delete(id);
				return Ok();
			}
			catch (Exception e) {
				return InternalServerError(e);
			}
		}
		public IHttpActionResult Put(ChangeDeviceViewModel device) {
			UserDeviceService userDeviceService = new UserDeviceService();

			if (device == null) {
				return BadRequest("Input is null");
			}

			if (!ModelState.IsValid) {
				return BadRequest(ModelState);
			}

			try {
				var oldDevice = userDeviceService.GetById(device.Id);
				oldDevice.CacheData = device.CacheData;
				var result = userDeviceService.Update(oldDevice);
				if (result) {
					return Ok();
				} else {
					return BadRequest("Entity cannot be modified");
				}
			} catch (Exception e) {
				return InternalServerError(e);
			}
		}
		public IHttpActionResult SetDeviceState(SetDeviceStateData setDeviceStateData) {
			var userId = User.Identity.GetUserId();
			UserDeviceService userDeviceService = new UserDeviceService();

			if (setDeviceStateData == null) {
				return BadRequest("Input is null");
			}

			var device = userDeviceService.GetBySecretKey(setDeviceStateData.SecretKey);

			if (device != null) {
				DeviceHistoricalState deviceHistoricalState = new DeviceHistoricalState() {
					State = device.ActualState,
					StateTransitionDateTime = DateTime.Now,
					DeviceId = device.Id
				};

				if (userDeviceService.UpdateDeviceState(device, setDeviceStateData.DeviceState)) {
					var historialStateES = new EntityService<DeviceHistoricalState>();
					historialStateES.Create(deviceHistoricalState);

					IKernel kernel = new StandardKernel(new ConnectYourselfNinjectModule());
					var deviceEventsContainer = kernel.Get<IDevicesEventsContainer>();

					deviceEventsContainer.RegisterDeviceStateChangeEvent(new DeviceStateChangedEvent {
						DeviceId = device.Id,
						DateTime = deviceHistoricalState.StateTransitionDateTime,
						State = setDeviceStateData.DeviceState,
						AppUserId = device.AppUserId
					});

					//send state change message to device
					if (device.ConnectionState == DeviveConnectionState.FullDuplex && !String.IsNullOrEmpty(device.ConnectionId)) {
						var devicesHub = GlobalHost.ConnectionManager.GetHubContext<DevicesHub>();
						devicesHub.Clients.Client(device.ConnectionId).RemoteSetState(setDeviceStateData.DeviceState);
					}

					return Ok();
				} else {
					return BadRequest("Failed to update state device");
				}
			} else {
				return BadRequest("Device does not exists");
			}
		}
Ejemplo n.º 24
0
 public DevicesController(UserDeviceService userDeviceService)
 {
     _userDeviceService = userDeviceService;
 }
		public IHttpActionResult Post(AddNewDeviceViewModel addNewDeviceViewModel) {
			var userId = User.Identity.GetUserId();
			UserDeviceService userDeviceService = new UserDeviceService();

			if (addNewDeviceViewModel == null) {
				return BadRequest("Input is null");
			}

			if (!ModelState.IsValid) {
				return BadRequest(ModelState);
			}

			Device device = new Device() {
				AppUserId = userId,
				CacheData = addNewDeviceViewModel.CacheData.GetValueOrDefault(),
				Name = addNewDeviceViewModel.Name,
				SecretKey = Guid.NewGuid().ToString("n")
			};

			try {
				userDeviceService.Create(device);
			}
			catch (Exception e) {
				return InternalServerError(e);
			}

			return Ok(device);
		}
Ejemplo n.º 26
0
		public DevicesHub() {
			UserDeviceService = new UserDeviceService();
		}
Ejemplo n.º 27
0
 public EventController(UserDeviceService userDeviceService)
 {
     _userDeviceService = userDeviceService;
 }
Ejemplo n.º 28
0
 public DevicesHub()
 {
     UserDeviceService = new UserDeviceService();
 }