예제 #1
0
        public OperationResult <PaginationList <Author> > GetAuthors(AuthorsQueryParamters queryParamters)
        {
            bool hasOrderBy     = queryParamters.OrderBy != null;
            bool hasSearchQuery = queryParamters.SearchQuery != null;

            try
            {
                using (CourseLibraryContext context = new CourseLibraryContext(options))
                {
                    var collection = context.Authors as IQueryable <Author>;
                    if (hasSearchQuery)
                    {
                        collection = collection.Where(a => a.FirstName.Contains(queryParamters.SearchQuery) ||
                                                      a.LastName.Contains(queryParamters.SearchQuery) ||
                                                      a.MainCategory.Contains(queryParamters.SearchQuery));
                    }
                    if (hasOrderBy)
                    {
                        string orderstring = filterationService.GetFiltrationString <AuthorDto, Author>(queryParamters.OrderBy);

                        collection = collection.OrderBy(orderstring);
                    }
                    logger.Info($"Request authors with query paramters : {queryParamters}");
                    //TODO add pagination here
                    PaginationList <Author> result = PaginationList <Author> .CreatePagination(collection, queryParamters.PageSize, queryParamters.PageNumber);

                    return(new SuccessOperationResult <PaginationList <Author> >
                    {
                        Result = result,
                        Code = ConstOperationCodes.SUCCESS_OPERATION
                    });
                }
            }
            catch (Exception e)
            {
                logger.Error($"Error in Course library Service GetAuthors : {e}");
                return(new FailedOperationResult <PaginationList <Author> >
                {
                    Code = ConstOperationCodes.FAILED_OPERATION
                });
            }
        }
예제 #2
0
 public ActionResult <IEnumerable <AuthorDto> > GetAuthors([FromQuery] AuthorsQueryParamters queryParamters)
 {
     try
     {
         OperationResult <PaginationList <Author> > result = courseLibraryService.GetAuthors(queryParamters);
         if (result.Success)
         {
             var successOperation = result as SuccessOperationResult <PaginationList <Author> >;
             IEnumerable <AuthorDto> mappingResult = mapper.Map <IEnumerable <AuthorDto> >(successOperation.Result.ListData);
             var paginationMetaData = new
             {
                 totalCount  = successOperation.Result.TotalCount,
                 totalPages  = successOperation.Result.TotalPages,
                 currentPage = successOperation.Result.CurrentPage,
                 pageSize    = successOperation.Result.PageSize
             };
             Response.Headers.Add("paginationMetaData", JsonConvert.SerializeObject(paginationMetaData));
             var operationReturn = new SuccessOperationResult <IEnumerable <AuthorDto> >
             {
                 Result = mappingResult,
                 Code   = successOperation.Code,
             };
             return(Ok(operationReturn));
         }
         else
         {
             var failedOperation = result as FailedOperationResult <PaginationList <Author> >;
             return(Ok(failedOperation));
         }
     }
     catch (Exception ex)
     {
         loggerService.Error($"Error in Authors Controller GetAuthors {ex}");
         return(StatusCode(StatusCodes.Status500InternalServerError));
     }
 }