public Assignment CreateAssignment(string label, string description, int congregationId, int? amountPerMeeting, int? schedulePosition, int creatorId) { Assignment assignment = new Assignment(); assignment.Label = label; assignment.Description = description; assignment.CongregationId = congregationId; assignment.AmountPerMeeting = amountPerMeeting; assignment.PositionOnSchedule = schedulePosition; assignment.CreatorId = creatorId; assignment.CreateDate = DateTime.Now; repository.Assignments.Add(assignment); repository.SaveChanges(); return assignment; }
public Assignment UpdateAssignment(Assignment updatedAssignment) { Assignment ua = AssignmentByAssignmentId(updatedAssignment.Id); ua.Label = updatedAssignment.Label; ua.Description = updatedAssignment.Description; ua.AmountPerMeeting = updatedAssignment.AmountPerMeeting; ua.PositionOnSchedule = updatedAssignment.PositionOnSchedule; ua.UpdateDate = DateTime.Now; repository.SaveChanges(); return ua; }
public Member NextMemberToAssign(List<Member> membersAvailable, Meeting currentMeeting, Assignment currentAssignment) { List<Member> newMembers = (from mem in membersAvailable where mem.MeetingAssignments.Count == 0 select mem).ToList(); if (newMembers.Count != 0) { newMembers = newMembers.OrderBy(z => z.FirstName).ToList(); return newMembers[0]; } int meetingCountToBeat = new int(); int meetingCounter = 0; Member currentlySelected = new Member(); MeetingAssignment mLastMeetingAssignment = new MeetingAssignment(); List<Member> alreadyAssigned = (from l in currentMeeting.MeetingAssignments select l.Member).ToList(); List<Meeting> allMeeting = (from v in repository.Meetings where v.CongregationId == currentMeeting.CongregationId select v).ToList(); allMeeting = allMeeting.OrderByDescending(o => o.MeetingDate).ToList(); int index = allMeeting.IndexOf(currentMeeting); List<Member> go = (from goat in allMeeting[index + 1].MeetingAssignments select goat.Member).ToList(); foreach (Member m in membersAvailable) { List<MeetingAssignment> selectedMAssignments = (from d in repository.MeetingAssignments where d.MemberId == m.Id select d).ToList(); selectedMAssignments = selectedMAssignments.OrderByDescending(o => o.Meeting.MeetingDate).ToList(); if (alreadyAssigned.Any(p => p.Id == m.Id))//skips if they are already assigned or previous assignment was same assignment. { continue; } if (selectedMAssignments[0].AssignmentId == currentAssignment.Id && m.MemberAssignments.Count > 2) { continue; } foreach (DateTime d in EachDayLoop(selectedMAssignments[0].Meeting.MeetingDate.AddDays(1), currentMeeting.MeetingDate.AddDays(-1))) { if (Convert.ToString(d.DayOfWeek) == m.Congregation.PublicMeetingDay || Convert.ToString(d.DayOfWeek) == m.Congregation.WeekMeetingDay) { meetingCounter++; } } if (currentlySelected.Id == 0) { meetingCountToBeat = meetingCounter; currentlySelected = m; mLastMeetingAssignment = selectedMAssignments[0]; meetingCounter = 0; continue; } if (meetingCounter > meetingCountToBeat) { meetingCountToBeat = meetingCounter; currentlySelected = m; mLastMeetingAssignment = selectedMAssignments[0]; meetingCounter = 0; } if (meetingCounter == meetingCountToBeat) { if (selectedMAssignments[0].Assignment.Label != currentAssignment.Label && mLastMeetingAssignment.Assignment.Label == currentAssignment.Label) { currentlySelected = m; mLastMeetingAssignment = selectedMAssignments[0]; } } meetingCounter = 0; continue; } return currentlySelected; }