public async Task <IActionResult> Get([FromBody] PaginationContract contract) { try { var usr = await _userManager.FindByEmailAsync(HttpContext.User.Identity.Name); var quotas = _quotaRepository .GetWithInclude(q => q.ClientId == usr.Id, q => q.AdditionalContributions, q => q.City); var pagination = contract.Pagination; switch (pagination.SortBy) { case "city": quotas = pagination.Descending ? quotas.OrderByDescending(q => q.City.Name) : quotas.OrderBy(q => q.City.Name); break; case "refinancingAmount": quotas = pagination.Descending ? quotas.OrderByDescending(q => q.RefinancingAmount) : quotas.OrderBy(q => q.RefinancingAmount); break; case "interestRate": quotas = pagination.Descending ? quotas.OrderByDescending(q => q.InterestRate) : quotas.OrderBy(q => q.InterestRate); break; default: quotas = pagination.Descending ? quotas.OrderByDescending(q => q.CreatedAt) : quotas.OrderBy(q => q.CreatedAt); break; } if (pagination.RowsPerPage > 0) { quotas = quotas.Skip((pagination.Page - 1) * pagination.RowsPerPage).Take(pagination.RowsPerPage); } quotas = quotas.ToList(); foreach (var quota in quotas) { quota.City = null; quota.AdditionalContributions?.ForEach(ac => { ac.Quota = null; ac.Contribution = null; }); } return(Ok(quotas)); } catch (Exception exception) { return(BadRequest(exception.Message)); } }
public async Task <IActionResult> GetFilePDFAsync(Guid id, [FromQuery] PaginationContract pCon) { var listStudent = await _studentService.ListStudentInClassAsync(id, pCon); var pdf = await _generatePdf.GetByteArray("HTML/Demo.cshtml", listStudent.Sources); var pdfStream = new MemoryStream(); pdfStream.Write(pdf, 0, pdf.Length); pdfStream.Position = 0; return(new FileStreamResult(pdfStream, "application/pdf")); }
public void GetElementsReturnsValidList() { string username = "******"; string userId = "dddc9f1e-63c5-4715-b60f-1cf2f7fe93f2"; _fakeUserManager.Setup(x => x.FindByEmailAsync(username)).ReturnsAsync(_fakeUserManager.Object.Users.FirstOrDefault(u => u.Id == userId)); _quotaRepository.Setup(repo => repo.GetWithInclude(It.IsAny <Func <Quota, bool> >(), It.IsAny <Expression <Func <Quota, object> >[]>())).Returns(GetTestQuotas().Where(q => q.ClientId == userId)); var controller = new QuotaController(_fakeUserManager.Object, _quotaRepository.Object, null, null); controller.ControllerContext = MockContext(username); var pagination = new PaginationContract() { Pagination = new Pagination() { Descending = true, Page = 1, RowsPerPage = 2, SortBy = "interestRate" } }; var result = controller.Get(pagination).GetAwaiter().GetResult() as OkObjectResult; var lastOnPage = (result?.Value as List <Quota>)?.LastOrDefault(); Assert.Equal(new decimal(12.6), lastOnPage?.InterestRate); }
public async Task <IActionResult> Get([FromBody] PaginationContract contract) { try { var usr = await _userManager.FindByEmailAsync(HttpContext.User.Identity.Name); var pagination = contract.Pagination; if (usr == null) { return(BadRequest("User not found")); } var notes = _noteRepository .GetWithInclude(n => n.UserId == usr.Id); if (notes == null) { return(null); } switch (pagination.SortBy) { case "name": notes = pagination.Descending ? notes.OrderByDescending(n => n.Name) : notes.OrderBy(n => n.Name); break; case "createdAt": notes = pagination.Descending ? notes.OrderByDescending(n => n.CreatedAt) : notes.OrderBy(n => n.CreatedAt); break; case "modifiedAt": notes = pagination.Descending ? notes.OrderByDescending(n => n.ModifiedAt) : notes.OrderBy(n => n.ModifiedAt); break; case "position": notes = pagination.Descending ? notes.OrderByDescending(n => n.Position) : notes.OrderBy(n => n.Position); break; default: notes = pagination.Descending ? notes.OrderByDescending(n => n.Position) : notes.OrderBy(n => n.Position); break; } if (pagination.RowsPerPage > 0) { notes = notes.Skip((pagination.Page - 1) * pagination.RowsPerPage).Take(pagination.RowsPerPage); } notes = notes.ToList(); return(Ok(notes)); } catch (Exception exception) { return(BadRequest(exception.Message)); } }
public async Task <IActionResult> ListStudentInClass(Guid id, [FromQuery] PaginationContract pCon) { return(Ok(await _studentService.ListStudentInClassAsync(id, pCon))); }
public async Task <PageListContract <StudentResponse> > ListStudentInClassAsync(Guid clsId, PaginationContract pCon) { var listStudent = _studentRepository.Filter(s => s.ClassId == clsId, c => c.Include(x => x.Class)); var data = listStudent.ProjectTo <StudentResponse>(); return(await data.Paginate(pCon.PageIndex, pCon.PageSize)); }