public async Task <ServiceResult> GetAllBoards(BoardsFilters filters, string buildingId, bool forceCloud = false) { if (!forceCloud) { var boardsDb = await DbManager.BoardRowRepository.GetAll(); if (boardsDb.Any()) { return new SuccessServiceResult { ResultObject = new Tuple <IEnumerable <BoardRow>, int>(boardsDb, boardsDb.Count) } } ; } var url = GlobalSettings.BaseURL + "/boards"; var response = await _requestProvider.PostAsync <BoardsRequest, BoardsResponse>(url, new BoardsRequest { Token = Settings.AccessToken, BuildingId = buildingId, Limit = new List <int>() { 0, 60 }, Filters = filters }); if (response != null && response.Boards.Any()) { if (forceCloud) { await DbManager.BoardRowRepository.DeleteAll(); } await DbManager.BoardRowRepository.AddMany(response.Boards); return(new SuccessServiceResult { ResultObject = new Tuple <IEnumerable <BoardRow>, int, int>(response.Boards, response.BoardFound, response.BoardReturned) }); } return(new FalseServiceResult("Response is null")); }
private async Task GetBoards(BoardsFilters filters, bool forceCloud = false) { try { using (var dlg = this.Dialogs.Loading("Progress (No Cancel)")) { Boards.Clear(); var testedBoardsResult = await _boardsService.GetTestedBoards(CertificateId); if (!testedBoardsResult.Success) { Dialogs.Toast(testedBoardsResult.Message); return; } var relatedBoards = testedBoardsResult.ResultObject as List <BoardTest>; if (relatedBoards != null) { TestedBoards = relatedBoards; var allBoardsResult = await _boardsService.GetAllBoards(filters, BuildingId, forceCloud); if (!allBoardsResult.Success) { Dialogs.Toast(allBoardsResult.Message); return; } var boardsAndNumber = allBoardsResult.ResultObject as Tuple <IEnumerable <BoardRow>, int, int>; if (boardsAndNumber == null) { return; } Dialogs.Toast("Results; " + boardsAndNumber.Item3 + " records returned out of " + boardsAndNumber.Item2 + " found."); var boards = boardsAndNumber.Item1; if (boards != null && boards.Any()) { foreach (var board in boards) { var selectableBoard = new BoardSelect { Board = board, IsSelected = false }; if (relatedBoards.Any(x => x.BoardId == board.BoardId)) { selectableBoard.IsSelected = true; } Boards.Add(selectableBoard); } } } } } catch (ServiceAuthenticationException e) { var result = await TryToLogin(); if (!result) { await NavigationService.NavigateToAsync <LoginViewModel>(); } else { await GetBoards(filters, forceCloud); } } catch (Exception e) { await ShowErrorAlert(e.Message); } }
public FilterBoardsViewModel() { Title = "Filter Boards"; Filters = new BoardsFilters(); }