public async Task <IHttpActionResult> GetAllActiveTasksThatAreUnassignedByIdForBuildingAreaOrMachine([FromBody] TasksForMachineSearch search) { //check if model is valid if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (search.SearchTerm == "Building" || search.SearchTerm == "Area" || search.SearchTerm == "Machine") { //instantiate service TasksForMachineService service = CreateTasksForMachineService(); List <TasksForMachineByMachineIdLookup> tasksForMachine = await service.GetAllActiveTasksThatAreUnassignedByIdForBuildingAreaOrMachine(search); return(Ok(tasksForMachine)); //200 } return(BadRequest()); //400 }
//[ActionName("GetAllActiveTasksThatAreUnassignedByIdForBuildingAreaOrMachine")] public async Task <List <TasksForMachineByMachineIdLookup> > GetAllActiveTasksThatAreUnassignedByIdForBuildingAreaOrMachine([FromBody] TasksForMachineSearch search) { List <int> machineList = new List <int>(); switch (search.SearchTerm) { case "Building": List <int> areaInBuildingList = _context .Areas .Where(a => a.BuildingId == search.SearchId) .Select( a => a.AreaId).ToList(); foreach (int areaId in areaInBuildingList) { List <int> machineInBuildingListStep = _context .Machines .Where(m => m.AreaId == areaId) .Select( m => m.MachineId).ToList(); foreach (int machineId in machineInBuildingListStep) { machineList.Add(machineId); } } break; case "Area": List <int> machineInAreaListStep = _context .Machines .Where(m => m.AreaId == search.SearchId) .Select( m => m.MachineId).ToList(); foreach (int machineId in machineInAreaListStep) { machineList.Add(machineId); } break; case "Machine": machineList.Add(search.SearchId); break; default: break; } List <TasksForMachineByMachineIdLookup> finalList = new List <TasksForMachineByMachineIdLookup>(); foreach (int machineId in machineList) { var queryMidStep = await _context. Machines. Where(m => m.MachineId == machineId). Select(m => new TasksForMachineByMachineIdLookup { MachineId = m.MachineId, MachineName = m.MachineName, TasksForMachineListItem = _context. TasksForMachines. Where(tm => tm.MachineId == m.MachineId && tm.Maintained == DateTimeOffset.MinValue && tm.ApplicationUserId == null). Select(tm => new TasksForMachineListItem { Id = tm.MaintenanceTaskId, MachineId = tm.MachineId, Maintained = tm.Maintained, NeedToBeMaintainedBy = tm.NeedToBeMaintainedBy, MaintenanceTaskId = tm.MaintenanceTaskId, ApplicationUserId = tm.ApplicationUserId }).ToList() }).ToListAsync(); TasksForMachineByMachineIdLookup queryListItem = queryMidStep[0]; finalList.Add(queryListItem); } return(finalList); }