public async Task <List <DailyJobsDto> > DailyJobs(DateTime dateRequest) { List <DailyJobsDto> dailyJobsDto = new List <DailyJobsDto>(); List <Jobs> jobs = await _jobsRepository.GetDailyJobs(dateRequest); // Return an empty list if no jobs are on the date requested if (jobs.Count == 0) { return(dailyJobsDto); } List <DailyJobEmployeeBuilder> employeeBuilder = new List <DailyJobEmployeeBuilder>(); List <Guid> employeeIds = new List <Guid>(); List <Employee> employees = new List <Employee>(); // Builder for the employee string and ids for front-end jobs table foreach (var job in jobs) { var jobBuilder = new DailyJobEmployeeBuilder.Builder(); var company = await _companyRepository.Get(job.CompanyId); jobBuilder = jobBuilder.WithCompany(company.Name); employeeIds = (job.JobsEmployees.Select(e => e.EmployeeId).ToList()); employees = await _employeeRepository.GetMultipleEmployeesByID(employeeIds); jobBuilder = jobBuilder.WithJobId(job.Id) .WithEmployees(employees) .WithTimeOfJob(job.DateOfJob); employeeBuilder.Add(jobBuilder.Build()); } // Combine the job entity with the employee builder to return a list of dailyJobsDto dailyJobsDto = jobs.Join(employeeBuilder, job => job.Id, empBldr => empBldr.Id, (job, emp) => new DailyJobsDto { Id = job.Id, DateOfJob = job.DateOfJob, TimeOfJob = emp.TimeOfJob, Address = job.Address, Contact = job.Contact, PhoneNumber = job.PhoneNumber, NumberOfPositions = job.NumberOfPositions, Positions = job.Positions, IsJobComplete = job.IsJobComplete, CompanyId = job.CompanyId, CompanyName = emp.CompanyName, EmployeesNameString = emp.EmployeesNameString, EmployeeIdList = emp.EmployeeIdList }).ToList(); return(dailyJobsDto); }