public async Task <ActionResult <IEnumerable <IVMSBackUser> > > GetAsync(int page, int start, int limit) { ResponseDefaultDataList response = new ResponseDefaultDataList(); try { var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value; CurrentUser = await _userManager.FindByIdAsync(userId); var CurrentUserRole = await _userManager.GetRolesAsync(CurrentUser); List <Filter> filtros; var filters = HttpContext.Request.Query["filter"].ToString(); response.success = true; response.data = new List <IVMSBackUser>(); List <IVMSBackUser> records = new List <IVMSBackUser>(); foreach (var role in await _roleManager.Roles.Where(x => x.Name == "Conductor" && x.DateEnd == null).ToListAsync()) { List <IVMSBackUser> users = new List <IVMSBackUser>(); if (CurrentUserRole[0] == "Super Administrador") { users = ((List <IVMSBackUser>) await _userManager.GetUsersInRoleAsync(role.Name)).Where(x => x.DateEnd == null).ToList(); } else { var lines = await _context.IVMSBackUserLines .Include(x => x.Line) .Where(x => x.IVMSBackUserID.Contains(userId) && x.DateEnd == null && x.Line.DateEnd == null) .Select(x => x.Line).ToListAsync(); var usersFilter = await _context.IVMSBackUserLines .Include(x => x.IVMSBackUser) .Include(x => x.Line) .Where(x => x.DateEnd == null && lines.Contains(x.Line) && x.IVMSBackUser.DateEnd == null) .Select(x => x.IVMSBackUser).ToListAsync(); if (lines.Count > 0) { users = ((List <IVMSBackUser>) await _userManager.GetUsersInRoleAsync(role.Name)) .Where(x => x.DateEnd == null && usersFilter.Contains(x)) .ToList(); } } } if (!string.IsNullOrEmpty(filters)) { filtros = JsonConvert.DeserializeObject <List <Filter> >(filters); foreach (var filtro in filtros) { if (!string.IsNullOrEmpty(filtro.valor)) { if (filtro.propiedad == "name") { records = records.Where(x => x.Name.ToUpper().Contains(filtro.valor.ToUpper())).ToList(); } } } } response.total = records.Count(); response.data.AddRange(records.Skip((page - 1) * limit).Take(limit)); return(Ok(response)); } catch (Exception ex) { response.success = false; response.message = ex.Message; return(BadRequest(response)); } }
public async Task <ActionResult <IEnumerable <Vehicle> > > GetVehicle(int page, int start, int limit) { ResponseDefaultDataList response = new ResponseDefaultDataList(); try { CurrentUserId = User.FindFirst(ClaimTypes.NameIdentifier).Value; CurrentUser = await _userManager.FindByIdAsync(CurrentUserId); var CurrentUserRole = await _userManager.GetRolesAsync(CurrentUser); List <Filter> filtros; var filters = HttpContext.Request.Query["filter"].ToString(); response.success = true; response.data = new List <Vehicle>(); List <Vehicle> records = new List <Vehicle>(); if (CurrentUserRole[0] == "Super Administrador") { records = await _context.Vehicle.Where(x => x.DateEnd == null).ToListAsync(); } else { var lines = await _context.IVMSBackUserLines .Include(x => x.Line) .Where(x => x.IVMSBackUserID.Contains(CurrentUserId) && x.DateEnd == null && x.Line.DateEnd == null) .Select(x => x.Line).ToListAsync(); var vehicles = await _context.VehicleLines .Include(x => x.Vehicle) .Include(x => x.Line) .Where(x => x.DateEnd == null && lines.Contains(x.Line) && x.Vehicle.DateEnd == null && x.Line.DateEnd == null) .Select(x => x.Vehicle).ToListAsync(); if (lines.Count > 0) { records = await _context.Vehicle.Where(x => x.DateEnd == null && vehicles.Contains(x)).ToListAsync(); } } foreach (var vehicle in records) { var line = await _context.VehicleLines .Include(x => x.Line) .Where(x => x.DateEnd == null && x.VehicleID.Equals(vehicle.Id) && x.Line.DateEnd == null) .FirstOrDefaultAsync(); if (line != null) { vehicle.Line = line.Line.Name; } var status = await _context.VehicleStatusStore .Include(x => x.VehicleStatus) .Where(x => x.DateEnd == null && x.VehicleID.Equals(vehicle.Id) && x.VehicleStatus.DateEnd == null) .FirstOrDefaultAsync(); if (status != null) { vehicle.VehicleStatus = status.VehicleStatus.Name; } var user = await _context.IVMSBackUserVehicles .Include(x => x.IVMSBackUser) .Where(x => x.DateEnd == null && x.VehicleID.Equals(vehicle.Id)) .FirstOrDefaultAsync(); if (user != null) { vehicle.User = user.IVMSBackUser.Name + " - " + user.IVMSBackUser.Email; } } if (!string.IsNullOrEmpty(filters)) { filtros = JsonConvert.DeserializeObject <List <Filter> >(filters); foreach (var filtro in filtros) { if (!string.IsNullOrEmpty(filtro.valor)) { /*if (filtro.propiedad == "name") * { * records = records.Where(x => x.Name.ToUpper().Contains(filtro.valor.ToUpper())).ToList(); * } * * if (filtro.propiedad == "address") * { * records = records.Where(x => x.Address.ToUpper().Contains(filtro.valor.ToUpper())).ToList(); * } */ } } } response.total = records.Count(); response.data.AddRange(records.Skip((page - 1) * limit).Take(limit)); return(Ok(response)); } catch (Exception ex) { response.success = false; response.message = ex.Message; return(BadRequest(response)); } }