public async Task GetAllSolutions()
        {
            // Arrange

            // Act
            var result = await sut.GetAll();

            // Assert
            Assert.That(result.Success, Is.True);
            Assert.That(result.Objects.ConvertAll(s => (SudokuSolution)s), Is.InstanceOf <List <SudokuSolution> >());
        }
Ejemplo n.º 2
0
        public async Task <ISolutionsResult> GetSolutions(
            IBaseRequest request,
            bool fullRecord = true)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var result = new SolutionsResult();

            try
            {
                var response = await solutionsRepository.GetAll(fullRecord);

                if (response.Success)
                {
                    if (request.Paginator != null)
                    {
                        if (StaticDataHelpers.IsPageValid(request.Paginator, response.Objects))
                        {
                            if (request.Paginator.SortBy == SortValue.NULL)
                            {
                                result.Solutions = response.Objects.ConvertAll(s => (ISudokuSolution)s);
                            }
                            else if (request.Paginator.SortBy == SortValue.ID)
                            {
                                if (!request.Paginator.OrderByDescending)
                                {
                                    foreach (var obj in response.Objects)
                                    {
                                        result.Solutions.Add((ISudokuSolution)obj);
                                    }

                                    result.Solutions = result.Solutions
                                                       .OrderBy(s => s.Id)
                                                       .Skip((request.Paginator.Page - 1) * request.Paginator.ItemsPerPage)
                                                       .Take(request.Paginator.ItemsPerPage)
                                                       .ToList();
                                }
                                else
                                {
                                    foreach (var obj in response.Objects)
                                    {
                                        result.Solutions.Add((ISudokuSolution)obj);
                                    }

                                    result.Solutions = result.Solutions
                                                       .OrderByDescending(s => s.Id)
                                                       .Skip((request.Paginator.Page - 1) * request.Paginator.ItemsPerPage)
                                                       .Take(request.Paginator.ItemsPerPage)
                                                       .ToList();
                                }
                            }
                            else if (request.Paginator.SortBy == SortValue.DATECREATED)
                            {
                                if (!request.Paginator.OrderByDescending)
                                {
                                    foreach (var obj in response.Objects)
                                    {
                                        result.Solutions.Add((ISudokuSolution)obj);
                                    }

                                    result.Solutions = result.Solutions
                                                       .OrderBy(s => s.DateCreated)
                                                       .Skip((request.Paginator.Page - 1) * request.Paginator.ItemsPerPage)
                                                       .Take(request.Paginator.ItemsPerPage)
                                                       .ToList();
                                }
                                else
                                {
                                    foreach (var obj in response.Objects)
                                    {
                                        result.Solutions.Add((ISudokuSolution)obj);
                                    }

                                    result.Solutions = result.Solutions
                                                       .OrderByDescending(s => s.DateCreated)
                                                       .Skip((request.Paginator.Page - 1) * request.Paginator.ItemsPerPage)
                                                       .Take(request.Paginator.ItemsPerPage)
                                                       .ToList();
                                }
                            }
                            else if (request.Paginator.SortBy == SortValue.DATEUPDATED)
                            {
                                if (!request.Paginator.OrderByDescending)
                                {
                                    foreach (var obj in response.Objects)
                                    {
                                        result.Solutions.Add((ISudokuSolution)obj);
                                    }

                                    result.Solutions = result.Solutions
                                                       .OrderBy(s => s.DateSolved)
                                                       .Skip((request.Paginator.Page - 1) * request.Paginator.ItemsPerPage)
                                                       .Take(request.Paginator.ItemsPerPage)
                                                       .ToList();
                                }
                                else
                                {
                                    foreach (var obj in response.Objects)
                                    {
                                        result.Solutions.Add((ISudokuSolution)obj);
                                    }

                                    result.Solutions = result.Solutions
                                                       .OrderByDescending(g => g.DateSolved)
                                                       .Skip((request.Paginator.Page - 1) * request.Paginator.ItemsPerPage)
                                                       .Take(request.Paginator.ItemsPerPage)
                                                       .ToList();
                                }
                            }
                            else
                            {
                                result.Success = false;
                                result.Message = ServicesMesages.SortValueNotImplementedMessage;

                                return(result);
                            }
                        }
                        else
                        {
                            result.Success = false;
                            result.Message = ServicesMesages.PageNotFoundMessage;

                            return(result);
                        }
                    }
                    else
                    {
                        result.Solutions = response.Objects.ConvertAll(s => (ISudokuSolution)s);
                    }

                    if (fullRecord)
                    {
                        foreach (var solution in result.Solutions)
                        {
                            if (solution.Game != null)
                            {
                                solution.Game.SudokuMatrix.Difficulty.Matrices = null;
                            }
                        }
                    }

                    result.Success = response.Success;
                    result.Message = SolutionsMessages.SolutionsFoundMessage;

                    return(result);
                }
                else if (!response.Success && response.Exception != null)
                {
                    result.Success = response.Success;
                    result.Message = response.Exception.Message;

                    return(result);
                }
                else
                {
                    result.Success = false;
                    result.Message = SolutionsMessages.SolutionsNotFoundMessage;

                    return(result);
                }
            }
            catch (Exception exp)
            {
                result.Success = false;
                result.Message = exp.Message;

                return(result);
            }
        }
Ejemplo n.º 3
0
 public async Task <Solution[]> GetAllSolutionsAsync()
 {
     return(await _solutionsRepository.GetAll().ToArrayAsync());
 }