Exemple #1
0
        public List <Pet> GetPetsByOwnerId(int ownerId)
        {
            var request = new PetsSearchByOwnerRequest {
                OwnerId = ownerId
            };
            var response = _findMyPetClient.JsonClient().Post(request);

            return(response.Result);
        }
Exemple #2
0
        public async Task <PagedResponse <Pet> > Post(PetsSearchByOwnerRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            return(await _petProvider.PetsByOwnerPagedAsync(request)
                   .ConfigureAwait(false));
        }
Exemple #3
0
        public PagedResponseViewModel <Pet> GetPetsPagedByOwnerId(int ownerId, int pageSize, int pageNumber)
        {
            var request = new PetsSearchByOwnerRequest {
                OwnerId = ownerId, PageSize = pageSize, PageNumber = pageNumber
            };
            var response = _findMyPetClient.JsonClient().Post(request);

            return(new PagedResponseViewModel <Pet>
            {
                Result = response.Result,
                TotalPages = response.TotalPages,
                TotalRecords = response.TotalRecords
            });
        }
Exemple #4
0
        public async Task <PagedResponse <Pet> > PetsByOwnerPagedAsync(PetsSearchByOwnerRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var pagedResult = await _petDataAccess.GetPetsByOwnerPagedAsync(request)
                              .ConfigureAwait(false);

            return(new PagedResponse <Pet>
            {
                TotalRecords = pagedResult.TotalRecords,
                TotalPages = pagedResult.TotalPages,
                Result = pagedResult.Result.ConvertAll(p => _petMapper.MapPetTableToPet(p, false))
            });
        }
Exemple #5
0
        public async Task <PagedResponse <PetTableModel> > GetPetsByOwnerPagedAsync(PetsSearchByOwnerRequest request)
        {
            var response     = new PagedResponse <PetTableModel>();
            var records      = new List <PetTableModel>();
            int totalRecords = 0;
            int totalPages   = 0;

            using (var dbConnection = _dbConnectionFactory.Open())
            {
                var q = dbConnection.From <PetTableModel>()
                        .Join <PetTableModel, OwnerPetTableModel>((p, po) => p.Id == po.PetTableModelId && po.OwnerTableModelId == request.OwnerId)
                        .Select().OrderBy(x => x.Name);

                //Micky: Place this logic into a helper to be available to all clases
                totalRecords = await dbConnection.SqlScalarAsync <int>(q.ToCountStatement());

                if (
                    (request.PageSize.HasValue && request.PageNumber.HasValue) &&
                    totalRecords > request.PageSize
                    )
                {
                    totalPages = (int)((totalRecords + (request.PageSize - 1)) / request.PageSize);

                    if (request.PageNumber <= 1)
                    {
                        request.PageNumber = 1;
                        q = q.Take(request.PageSize);
                    }
                    else
                    {
                        if (request.PageNumber > totalPages)
                        {
                            request.PageNumber = totalPages;
                        }

                        q = q.Skip((request.PageNumber - 1) * request.PageSize).Take(request.PageSize);
                    }

                    records = await dbConnection.SelectAsync <PetTableModel>(q)
                              .ConfigureAwait(false);
                }
                else
                {
                    totalPages = 1;
                    records    = await dbConnection.SelectAsync <PetTableModel>(q)
                                 .ConfigureAwait(false);
                }

                if (records.Any())
                {
                    foreach (var item in records)
                    {
                        await dbConnection.LoadReferencesAsync(item);
                    }
                }
            }

            response.TotalRecords = totalRecords;
            response.TotalPages   = totalPages;
            response.Result       = records;

            return(response);
        }