public async Task <IActionResult> ExportExcel(long?townId, long?groupId) { ISpecification <DriverItem> canFetch = await Driver4UserSpecification.CreateAsync(HttpContext.User, _userManager); if (townId != null) { var inTown = new DriverInTownSpecification(townId.Value); canFetch = canFetch.And(inTown); } if (groupId != null) { var inGroup = new Specification <DriverItem>(t => t.GroupId == groupId); canFetch = canFetch.And(inGroup); } canFetch.Includes.Add(t => t.Vehicles); canFetch.Includes.Add(t => t.Town); canFetch.Includes.Add(t => t.Group); var items = await _driverPepository.ListAsync(canFetch); items = items.OrderBy(t => t.IsValid()).ThenBy(t => t.LicenseIssueDate).ToList(); if (!items.Any()) { return(NoContent()); } var sigStr = $"::{HttpContext.User.Identity.Name}::socona.imvehicle.driver.export?town={townId}&group={groupId}::{DateTime.Now.ToString("yyyyMMdd.HHmmss")}"; var stream = ExcelHelper.ExportDrivers(items, sigStr); return(File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"exported{DateTime.Now.ToString("yyyyMMdd.HHmmss")}.xlsx")); }
public async Task <IActionResult> OnPostAsync(string queryString) { ViewData["QueryString"] = queryString; Towns = (await _townService.GetAvailableTownsEagerAsync(HttpContext.User)); Groups = (await _groupService.ListAwailableGroupEagerAsync(HttpContext.User)); ViewData["TownList"] = new SelectList(Towns, "Id", "Name"); ViewData["GroupList"] = new SelectList(Groups, "Id", "Name"); ISpecification <DriverItem> canFetch = await Driver4UserSpecification.CreateAsync(HttpContext.User, _userManager); canFetch = canFetch.And(FilterModel.ToExpression()); canFetch.Includes.Add(t => t.Vehicles); canFetch.Includes.Add(t => t.Town); canFetch.Includes.Add(t => t.Group); var items = (await _driverRepository.ListAsync(canFetch)).OrderBy(t => t.IsValid()); if (FilterModel.ExportExcel == true) { var sigStr = $"::{HttpContext.User.Identity.Name}::socona.imvehicle.driver.export?search::{DateTime.Now.ToString("yyyyMMdd.HHmmss")}"; var stream = ExcelHelper.ExportDrivers(items.ToList(), sigStr); return(File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"exported{DateTime.Now.ToString("yyyyMMdd.HHmmss")}.xlsx")); } Drivers = items.Select(t => new DriverListViewModel(t)).ToList(); return(Page()); }
public async Task OnGetAsync(string queryString) { ViewData["QueryString"] = queryString; Towns = (await _townService.GetAvailableTownsEagerAsync(HttpContext.User)); Groups = (await _groupService.ListAwailableGroupEagerAsync(HttpContext.User)); ViewData["TownList"] = new SelectList(Towns, "Id", "Name"); ViewData["GroupList"] = new SelectList(Groups, "Id", "Name"); ISpecification <DriverItem> canFetch = await Driver4UserSpecification.CreateAsync(HttpContext.User, _userManager); canFetch.Includes.Add(t => t.Vehicles); canFetch.Includes.Add(t => t.Town); canFetch.Includes.Add(t => t.Group); var items = (await _driverRepository.ListAsync(canFetch)).OrderBy(t => t.IsValid());; Drivers = items.Select(t => new DriverListViewModel(t)).Where(new DriverListVmQueryStringSpecification(queryString).Criteria.Compile()).ToList(); }
public async Task <IActionResult> LoadData(int?townId, int?page = 0, int?pageSize = 20) { ISpecification <DriverItem> canFetch = await Driver4UserSpecification.CreateAsync(HttpContext.User, _userManager); if (townId != null) { var inGroup = new DriverInTownSpecification(townId.Value); canFetch = canFetch.And(inGroup); } canFetch.Includes.Add(t => t.Vehicles); canFetch.Includes.Add(t => t.Town); canFetch.Includes.Add(t => t.Group); var startIdx = (page) * pageSize ?? 0; startIdx = Math.Max(0, startIdx); var groups = await _driverPepository.ListRangeAsync(canFetch, startIdx, pageSize ?? 0); var list = groups.Select(t => new DriverListViewModel(t)); return(new JsonResult(list)); }