Exemplo n.º 1
0
 public UserInfoBriefViewCellModel(
     UserInfoContract userInfoContract,
     CurrentLayerContract currentLayerContract)
 {
     _userInfoContract     = userInfoContract;
     _currentLayerContract = currentLayerContract;
 }
        public async Task <IActionResult> GetUserLocation([FromRoute] string id)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var target           = _httpContextAccessor.CurrentUserId();
            var friendPermission = await _context.FriendRequests
                                   .SingleOrDefaultAsync(s => s.TargetId.Equals(target) &&
                                                         s.InitiatorId.Equals(id));

            if (friendPermission == null)
            {
                return(NotFound());
            }
            var options = await _context.ApplicationOptions
                          .OrderByDescending(a => a.OptionsDate)
                          .FirstOrDefaultAsync();

            var layer = await _context.CurrentLayers
                        .SingleOrDefaultAsync(s => s.UserId.Equals(id) &&
                                              s.TimeStamp >= DateTime.Now.ToUniversalTime().Subtract(options.DataTimeWindow));

            if (layer == null)
            {
                return(NoContent());
            }
            var contract = new CurrentLayerContract()
            {
                UserId          = layer.UserId,
                TimeStamp       = layer.TimeStamp,
                LayersDelimited = layer.LayersDelimited,
                CurrentZoneId   = layer.CurrentZoneId
            };

            return(Ok(contract));
        }