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