public async Task <PagedList <Owner> > IndexRequest <T>(IndexRequestModel request) where T : class { var pagedList = new PagedList <Owner>(); var list = new List <Owner>(); int count = await _service.Count <Owner>();; var data = Enumerable.Empty <Owner>(); var query = Enumerable.Empty <Owner>(); var searched = false; // Search if (!string.IsNullOrEmpty(request.SearchString)) { query = await OwnerDataFormatting.Search(_service.GetAll <Owner>(), request.SearchString); searched = true; } // Sort if (!string.IsNullOrEmpty(request.SortVariable)) { if (searched) { data = OwnerDataFormatting.Sort <Owner>(query, request.SortVariable); } else { data = OwnerDataFormatting.Sort <Owner>(_service.GetAll <Owner>(), request.SortVariable); } foreach (var item in data) { list.Add(item); } pagedList.Initialize(list.Skip(request.Page * request.PageSize).Take(request.PageSize), request, count); } // Index request without modifiers else { data = OwnerDataFormatting.Sort <Owner>(_service.GetAll <Owner>(), "Date_desc"); foreach (var item in data) { list.Add(item); } pagedList.Initialize(list.Skip(request.Page * request.PageSize).Take(request.PageSize), request, count); } return(pagedList); }
public async Task <FileStreamResult> Export(string searchString, string selection, ExportType exportType) { ExportFile file; var data = Enumerable.Empty <Owner>(); if (string.IsNullOrEmpty(selection)) { if (searchString == "Find model/date/owner...") { data = await _service.GetAll <Owner>().ToListAsync(); } else { data = await OwnerDataFormatting.Search(_service.GetAll <Owner>(), searchString); } } else { var names = selection.Trim().Replace(" ", " ").Split(" "); //names = names.Where(s => !string.IsNullOrWhiteSpace(s) && s.Length > 2).Distinct().ToArray(); List <Owner> temp = new List <Owner>(); for (int i = 0; i < names.Count(); i++) { temp.Add(await _service.FirstOrDefault <Owner>(x => x.FullName == names[i]).FirstAsync()); } data = temp; } file = await new ExportService <Owner>().Export(data, exportType); return(new FileStreamResult(new MemoryStream(file.Data), file.ContentType) { FileDownloadName = file.FileName }); }