private async Task <List <JobModel> > GetJobsAsync(ConnectionModel connection, List <string> jobIds) { var tasks = jobIds.Select(jobId => _scheduleSourceService.GetJobAsync(connection.TeamId, connection.StoreId, jobId)); var jobs = await Task.WhenAll(tasks); return(jobs.ToList()); }
private async Task SetJobAndDepartmentName(IEnumerable <ShiftModel> shifts, IDictionary <string, JobModel> jobLookup, WeekModel weekModel, ILogger log) { var activities = shifts .SelectMany(s => s.Jobs) .Where(a => !string.IsNullOrEmpty(a.JdaJobId)); foreach (var activity in activities) { if (!jobLookup.TryGetValue(activity.JdaJobId, out var job)) { try { job = await _scheduleSourceService.GetJobAsync(weekModel.TeamId, weekModel.StoreId, activity.JdaJobId) ?? throw new KeyNotFoundException(); jobLookup[activity.JdaJobId] = job; } catch (Exception) { log.LogJobNotFound(weekModel, activity); continue; } } activity.Code = job.Name; activity.DepartmentName = job.DepartmentName; activity.ThemeCode = job.ThemeCode; } foreach (var shift in shifts) { var firstJob = shift.Jobs .OrderBy(j => j.StartDate) .FirstOrDefault(); shift.DepartmentName = firstJob?.DepartmentName; shift.ThemeCode = firstJob?.ThemeCode; } }