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"));
        }
Example #2
0
        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());
        }
Example #3
0
        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));
        }