public ShiftDayResult GetShiftDay(int id) { var result = new ShiftDayResult(); var shiftDay = _shiftsService.GetShiftDayById(id); result.ShiftDayId = id; result.ShiftId = shiftDay.ShiftId; result.ShiftName = shiftDay.Shift.Name; result.ShitDay = shiftDay.Day; result.Start = shiftDay.Start; result.End = shiftDay.End; result.ShiftType = shiftDay.Shift.AssignmentType; var needs = _shiftsService.GetShiftDayNeeds(id); var personnelRoles = _personnelRolesService.GetAllRolesForUsersInDepartment(DepartmentId); var signups = _shiftsService.GetShiftSignpsForShiftDay(id); result.SignedUp = _shiftsService.IsUserSignedUpForShiftDay(shiftDay, UserId); result.Signups = new List <ShiftDaySignupResult>(); foreach (var signup in signups) { if (!signup.Denied) { var signupResult = new ShiftDaySignupResult(); signupResult.UserId = signup.UserId; signupResult.Roles = personnelRoles[signup.UserId].Select(x => x.PersonnelRoleId).ToList(); result.Signups.Add(signupResult); } } if (needs != null && needs.Any()) { result.Needs = new List <ShiftDayGroupNeedsResult>(); foreach (var need in needs.Keys) { var dayNeed = new ShiftDayGroupNeedsResult(); dayNeed.GroupId = need; dayNeed.GroupNeeds = new List <ShiftDayGroupRoleNeedsResult>(); foreach (var dNeed in needs[need]) { var groupNeed = new ShiftDayGroupRoleNeedsResult(); groupNeed.RoleId = dNeed.Key; groupNeed.Needed = dNeed.Value; dayNeed.GroupNeeds.Add(groupNeed); } result.Needs.Add(dayNeed); } } return(result); }