Example #1
0
        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"));
        }
Example #2
0
        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);
            }
        }
Example #3
0
        public FilterBoardsViewModel()
        {
            Title = "Filter Boards";

            Filters = new BoardsFilters();
        }