public IHttpActionResult Get() { try { // get expensegroupstatusses & map to DTO's var expenseGroupStatusses = _repository.GetAllAsQueryable().ToList() .Select(egs => _expenseMasterDataFactory.CreateExpenseGroupStatus(egs)); return(Ok(expenseGroupStatusses)); } catch (Exception) { return(InternalServerError()); } }
public IHttpActionResult Get(string sort = "id", string fields = null, string status = null, string userId = null, int pageSize = 5, int pageIndex = 1) { try { pageSize = Math.Min(pageSize, MaxPageSize); List <string> listOfFields = new List <string>(); var includeExpenses = false; if (fields != null) { listOfFields = fields.ToLower().Split(',').ToList(); includeExpenses = listOfFields.Any(f => f.Contains("expenses")); } IQueryable <Repository.Entities.ExpenseGroup> expenseGroups = null; expenseGroups = includeExpenses ? _repository.GetExpenseGroupsWithExpenses().ApplySort(sort) : _repository.GetAllAsQueryable().ApplySort(sort); if (status != null) { var expenseGroupStatus = _statusRepository.GetAllAsQueryable().FirstOrDefault(egs => string.Equals(egs.Description, status, StringComparison.CurrentCultureIgnoreCase)); if (expenseGroupStatus != null) { var statusId = expenseGroupStatus.Id; expenseGroups = expenseGroups.Where(eg => eg.ExpenseGroupStatusId == statusId); } else { return(BadRequest()); } } if (userId != null) { expenseGroups = expenseGroups.Where(eg => eg.UserId == userId); } if (expenseGroups == null || !expenseGroups.Any()) { return(NotFound()); } else { var numberOfResults = expenseGroups.Count(); var numberOfPages = CalculatePageNumbers(numberOfResults, pageSize); expenseGroups = expenseGroups.Skip((pageIndex - 1) * pageSize).Take(pageSize); var prevLink = pageIndex > 1 ? _urlHelper.Link("ExpenseGroupsList", new { pageIndex = pageIndex - 1, pageSize = pageSize, fields = fields, sort = sort, status = status, userId = userId }, Request) : ""; var nextLink = pageIndex < numberOfPages? _urlHelper.Link("ExpenseGroupsList", new { pageIndex = pageIndex + 1, fields = fields, pageSize = pageSize, sort = sort, status = status, userId = userId }, Request) : ""; var paginationHeader = new { currentPage = pageIndex, pageSize = pageSize, totalCount = numberOfResults, totalPages = numberOfPages, previousPageLink = prevLink, nextPageLink = nextLink }; HttpContext.Current.Response.AddHeader("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(paginationHeader)); return (Ok( expenseGroups.ToList() .Select(expGrp => _expenseGroupFactory.CreateDataShapedObject(expGrp, listOfFields)))); } } catch (Exception ex) { return(InternalServerError()); } }