public async Task <IActionResult> Details([FromQuery] Guid id)
        {
            var notice = await _noticeRepository.GetAsync(id);

            if (notice == null)
            {
                return(NotFound(new ApiResult <dynamic>(new { Id = ErrorCodes.InvalidNoticeId })));
            }
            var user = await _userManager.FindByIdAsync(notice.AppUserId);

            var userInfo = new UserInfo
            {
                Username = user?.UserName,
                Email    = user?.Email,
                Name     = user?.Name
            };
            var result = new NoticeDetails
            {
                Notice = notice,
                User   = userInfo
            };

            return(Ok(new ApiResult <NoticeDetails> {
                Result = result
            }));
        }
 public NoticeViewModel(INavigation navigation, INoticeRepository noticeRepository, Guid notice) : base(navigation)
 {
     Notice = noticeRepository.GetAsync(notice)
              .ConfigureAwait(false)
              .GetAwaiter()
              .GetResult();
 }
        public async Task <IActionResult> Delete([FromQuery] Guid id)
        {
            var notice = await _noticeRepository.GetAsync(id);

            await _noticeRepository.DeleteAsync(notice);

            return(Ok(new ApiResult <string> {
                Result = notice.NoticeId.ToString()
            }));
        }
        public async Task <IActionResult> GetAsync(string title, int index, int size)
        {
            if (index == 0)
            {
                index = 1;
            }

            var result = await _noticeRepository.GetAsync(title, index, size, HttpContext.RequestAborted);

            var mappedRegisters = _mapper.Map <List <NoticeDto> >(result.Registers);

            Response.Headers.Add("X-Total-Count", result.TotalRegisters.ToString());

            return(Ok(mappedRegisters));
        }
Exemple #5
0
        public HomeViewModel(INavigation navigation,
                             INoticeRepository noticeRepository,
                             ISessionService sessionService,
                             IUserRepository userRepository,
                             IPopupService popupService) : base(navigation, popupService)
        {
            _noticeRepository = noticeRepository;
            _sessionService   = sessionService;
            _userRepository   = userRepository;

            News = _noticeRepository.GetAsync()
                   .ConfigureAwait(false)
                   .GetAwaiter()
                   .GetResult();

            UpdateAndRefreshViewCommandAsync()
            .SafeFireAndForget(false);
        }
Exemple #6
0
    public async Task <IEnumerable <NoticeModel> > GetAsync()
    {
        var entities = await _noticeRepository.GetAsync();

        return(Finish(entities));
    }
Exemple #7
0
        private async Task UpdateAndRefreshViewCommandAsync()
        {
            try
            {
                IsRefreshing = true;

                var user = _sessionService.GetUser();

                var newsUpdated = await ConexaoHttpClient.GetByDateAsync(user.NoticeLastUpdate, _cancellationToken);

                user.SetNoticeUpdated();

                await _userRepository.UpdateAsync(user);

                var idDeletedNews = newsUpdated.Where((n) => n.State.Equals(UserNoticeState.Removed))
                                    .Select((n) => n.Id)
                                    .ToArray();

                await _noticeRepository.RemoveAsync(idDeletedNews)
                .ConfigureAwait(false);

                var idUpdatedNews = newsUpdated.Where((n) => n.State.Equals(UserNoticeState.Modified))
                                    .Select((n) => n.Id)
                                    .ToArray();

                var noticesToUpdated = await _noticeRepository.GetAsync(idUpdatedNews)
                                       .ConfigureAwait(false);

                //TODO: Por enquanto não vou implementar as atualizações de noticias, não vamos ter atualização de feeds.

                var newNotices = newsUpdated
                                 .Where((n) => !noticesToUpdated.Any((notice) => notice.Id == n.Id))
                                 .ToList();

                var noticesToInclude = newNotices.Union(newsUpdated.Where((n) => n.State == UserNoticeState.Included))
                                       .Select((n) => new Notice
                {
                    Id         = n.Id,
                    Posted     = n.Posted,
                    Image      = n.Image,
                    Message    = n.Message,
                    IdPostedBy = n.IdPostedBy,
                    PostedBy   = new Person(n.PostedBy.Id, n.PostedBy.Email, n.PostedBy.ProfileImage, n.PostedBy.Name)
                })
                                       .ToList();

                await _noticeRepository.InsertAsync(noticesToInclude)
                .ConfigureAwait(false);

                News = await _noticeRepository.GetAsync()
                       .ConfigureAwait(false);

                OnPropertyChanged(nameof(this.News));
            }
            catch (UnauthorizedException)
            {
                await _navigation.PushAsync(new AutenticationView());
            }
            catch (Exception ex)
            {
                Log.Warning(nameof(HomeViewModel), ex.Message);

                await _popupService.ShowErrorMessageAsync(ConexaoHttpClient.PrettyMessage);
            }

            IsRefreshing = false;
        }