public ScheduleDate ScheduleDatesByScheduleDateId(int scheduleDateId) { ScheduleDate sd = (from s in repository.ScheduleDates where s.Id == scheduleDateId select s).Single(); return(sd); }
public ScheduleDate CurrentScheduleDate() { ScheduleDate sd = (from s in repository.ScheduleDates where s.StartDate <DateTime.Now && s.EndDate> DateTime.Now select s).SingleOrDefault(); return(sd); }
public List <MeetingAssignment> MeetingAssignmentsForSchedule(ScheduleDate scheduleDates, int congregationId) { Congregation congo = CongregationByCongregationId(congregationId); List <Assignment> congoAssignments = AssignmentsByCongregationId(congo.Id); List <Meeting> meetings = new List <Meeting>(); List <MeetingAssignment> meetingAssignments = new List <MeetingAssignment>(); Meeting meeting; string dayOfWeekMeeting = congo.WeekMeetingDay; string publicMeeting = congo.PublicMeetingDay; foreach (DateTime day in EachDayLoop(scheduleDates.StartDate, scheduleDates.EndDate)) { if (Convert.ToString(day.DayOfWeek) == dayOfWeekMeeting || Convert.ToString(day.DayOfWeek) == publicMeeting) { if (Convert.ToString(day.DayOfWeek) == publicMeeting) { meeting = CreateMeeting(2, day.Date, congo.Id); } else { meeting = CreateMeeting(1, day.Date, congo.Id); } meetings.Add(meeting); } } List <UnavailableDate> cancelled = UnavailableDateByCongregationId(congregationId); foreach (Meeting m in meetings) { if (cancelled.Any(p => p.DateUnavailable == m.MeetingDate)) { continue; } congoAssignments = congoAssignments.OrderBy(o => o.PositionOnSchedule).ToList(); foreach (Assignment a in congoAssignments) { if (a.AmountPerMeeting == 0) { continue; } List <Member> membersAvailable = MembersAvailable(a.Id, m.MeetingDate); int counter = 1; while (counter <= a.AmountPerMeeting) { Member nextMember = NextMemberToAssign(membersAvailable, m, a); MeetingAssignment ma = CreateMeetingAssignment(m.Id, nextMember.Id, a.Id, nextMember.CongregationId, scheduleDates.Id); meetingAssignments.Add(ma); counter++; } } } return(meetingAssignments); }
public ScheduleDate UpdateScheduleDates(int scheduleDateId, DateTime startDate, DateTime endDate, int congregationId, int creatorId) { ScheduleDate sd = ScheduleDatesByScheduleDateId(scheduleDateId); sd.StartDate = startDate; sd.EndDate = endDate; sd.CongregationId = congregationId; sd.CreatorId = creatorId; sd.UpdateDate = DateTime.Now; repository.SaveChanges(); return(sd); }
public ScheduleDate CreateScheduleDates(DateTime startDate, DateTime endDate, int congregationId, int creatorId) { ScheduleDate sd = new ScheduleDate(); sd.StartDate = startDate; sd.EndDate = endDate; sd.CongregationId = congregationId; sd.CreatorId = creatorId; sd.CreateDate = DateTime.Now; repository.ScheduleDates.Add(sd); repository.SaveChanges(); return(sd); }
public void DeleteScheduleMeetingAssignments(ScheduleDate sd) { ScheduleDate sdate = (from d in repository.ScheduleDates where d.Id == sd.Id select d).Single(); List <MeetingAssignment> ma = (from m in repository.MeetingAssignments where m.ScheduleDateId == sd.Id select m).ToList(); List <Meeting> meetings = (from meet in repository.Meetings where meet.MeetingDate >= sd.StartDate && meet.MeetingDate <= sd.EndDate select meet).ToList(); List <UnavailableDate> undate = (from ud in repository.UnavailableDates where ud.DateUnavailable >= sdate.StartDate && ud.DateUnavailable <= sdate.EndDate && sd.CongregationId == ud.CongregationId select ud).ToList(); repository.ScheduleDates.Remove(sdate); foreach (UnavailableDate date in undate) { repository.UnavailableDates.Remove(date); } foreach (MeetingAssignment l in ma) { repository.MeetingAssignments.Remove(l); } foreach (Meeting moo in meetings) { repository.Meetings.Remove(moo); } repository.SaveChanges(); List <Member> deletedMembers = (from e in repository.Members where e.IsDeleted == true && e.MeetingAssignments.Count == 0 select e).ToList(); foreach (Member del in deletedMembers) { DeleteMemberHard(del.Id); } }
private void ScheduleGridBox_CellContentClick(object sender, DataGridViewCellEventArgs e) { selected = manager.ScheduleDatesByScheduleDateId(Convert.ToInt32(ScheduleGridBox.Rows[e.RowIndex].Cells[0].Value)); SelectedScheduleLabel.Text = "Schedule selected: " + selected.StartDate.ToShortDateString() + "-" + selected.EndDate.ToShortDateString(); }
public List<MeetingAssignment> MeetingAssignmentsForSchedule(ScheduleDate scheduleDates, int congregationId) { Congregation congo = CongregationByCongregationId(congregationId); List<Assignment> congoAssignments = AssignmentsByCongregationId(congo.Id); List<Meeting> meetings = new List<Meeting>(); List<MeetingAssignment> meetingAssignments = new List<MeetingAssignment>(); Meeting meeting; string dayOfWeekMeeting = congo.WeekMeetingDay; string publicMeeting = congo.PublicMeetingDay; foreach (DateTime day in EachDayLoop(scheduleDates.StartDate, scheduleDates.EndDate)) { if (Convert.ToString(day.DayOfWeek) == dayOfWeekMeeting || Convert.ToString(day.DayOfWeek) == publicMeeting) { if (Convert.ToString(day.DayOfWeek) == publicMeeting) { meeting = CreateMeeting(2, day.Date, congo.Id); } else { meeting = CreateMeeting(1, day.Date, congo.Id); } meetings.Add(meeting); } } List<UnavailableDate> cancelled = UnavailableDateByCongregationId(congregationId); foreach (Meeting m in meetings) { if (cancelled.Any(p => p.DateUnavailable == m.MeetingDate)) { continue; } congoAssignments = congoAssignments.OrderBy(o => o.PositionOnSchedule).ToList(); foreach (Assignment a in congoAssignments) { if (a.AmountPerMeeting == 0) { continue; } List<Member> membersAvailable = MembersAvailable(a.Id, m.MeetingDate); int counter = 1; while (counter <= a.AmountPerMeeting) { Member nextMember = NextMemberToAssign(membersAvailable, m, a); MeetingAssignment ma = CreateMeetingAssignment(m.Id, nextMember.Id, a.Id, nextMember.CongregationId, scheduleDates.Id); meetingAssignments.Add(ma); counter++; } } } return meetingAssignments; }
public void DeleteScheduleMeetingAssignments(ScheduleDate sd) { ScheduleDate sdate = (from d in repository.ScheduleDates where d.Id == sd.Id select d).Single(); List<MeetingAssignment> ma = (from m in repository.MeetingAssignments where m.ScheduleDateId == sd.Id select m).ToList(); List<Meeting> meetings = (from meet in repository.Meetings where meet.MeetingDate >= sd.StartDate && meet.MeetingDate <= sd.EndDate select meet).ToList(); List<UnavailableDate> undate = (from ud in repository.UnavailableDates where ud.DateUnavailable >= sdate.StartDate && ud.DateUnavailable <= sdate.EndDate && sd.CongregationId == ud.CongregationId select ud).ToList(); repository.ScheduleDates.Remove(sdate); foreach(UnavailableDate date in undate) { repository.UnavailableDates.Remove(date); } foreach (MeetingAssignment l in ma) { repository.MeetingAssignments.Remove(l); } foreach (Meeting moo in meetings) { repository.Meetings.Remove(moo); } repository.SaveChanges(); List<Member> deletedMembers = (from e in repository.Members where e.IsDeleted == true && e.MeetingAssignments.Count == 0 select e).ToList(); foreach (Member del in deletedMembers) { DeleteMemberHard(del.Id); } }
public ScheduleDate CreateScheduleDates(DateTime startDate, DateTime endDate, int congregationId, int creatorId) { ScheduleDate sd = new ScheduleDate(); sd.StartDate = startDate; sd.EndDate = endDate; sd.CongregationId = congregationId; sd.CreatorId = creatorId; sd.CreateDate = DateTime.Now; repository.ScheduleDates.Add(sd); repository.SaveChanges(); return sd; }
public DataGridView Schedule(DataGridView data, ScheduleDate sd) { data.Rows.Clear(); data.Refresh(); List<MeetingAssignment> ma = new List<MeetingAssignment>(); if (sd == null) { return null; } else if(manager.MeetingAssignmentsForExistingSchedule(sd.Id).Count!=0) { ma = manager.MeetingAssignmentsForExistingSchedule(sd.Id); } else { ma = manager.MeetingAssignmentsForSchedule(sd, sd.CongregationId); } ma = ma.OrderBy(o => o.Meeting.MeetingDate).ThenBy(y => y.Assignment.PositionOnSchedule).ToList(); data.ColumnCount = ma[0].Meeting.MeetingAssignments.Count + 2; data.RowHeadersVisible = false; data.Columns[0].Name = "MeetingId"; data.Columns[0].Visible = false; data.Columns[1].Name = "MeetingDate"; data.Columns[1].HeaderText = "Meeting Date"; data.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable; List<MeetingAssignment> test = ma[0].Meeting.MeetingAssignments.ToList(); test = test.OrderBy(o => o.Assignment.PositionOnSchedule).ToList(); int columnCounter = test.Count + 1; int assignmentcounter = test.Count - 1; while (assignmentcounter >= 0) { data.Columns[columnCounter].Name = test[assignmentcounter].Assignment.Label; data.Columns[columnCounter].HeaderText = data.Columns[columnCounter].Name; data.Columns[columnCounter].SortMode = DataGridViewColumnSortMode.NotSortable; if(columnCounter == test.Count + 1) { data.Columns[columnCounter].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } columnCounter--; assignmentcounter--; } List<Meeting> meetings = (from meet in ma select meet.Meeting).ToList(); meetings = meetings.Select(z => z).Distinct().ToList(); List<UnavailableDate> cancelled = manager.UnavailableDateByCongregationId(sd.CongregationId); cancelled = cancelled.Where(z => z.DateUnavailable > sd.StartDate && z.DateUnavailable < sd.EndDate).ToList(); if(cancelled.Count!=0) { foreach(UnavailableDate u in cancelled) { Meeting nm = new Meeting(); nm.MeetingDate = u.DateUnavailable; meetings.Add(nm); } } meetings = meetings.OrderBy(o => o.MeetingDate).ToList(); int rowCounter = 0; foreach (Meeting meet in meetings) { data.Rows.Add(); data.Rows[rowCounter].Cells[0].Value = meet.Id; data.Rows[rowCounter].Cells[1].Value = meet.MeetingDate.DayOfWeek + " " + meet.MeetingDate.ToString("MMM") + " " + meet.MeetingDate.Day; List<MeetingAssignment> cahi = manager.MeetingAssignmentsByMeetingId(meet.Id); if(cahi.Count==0) { rowCounter++; continue; } cahi.OrderBy(o => o.Assignment.PositionOnSchedule).ToList(); int CellCounter = 2; foreach (MeetingAssignment am in cahi) { data.Rows[rowCounter].Cells[CellCounter].Value = ((am.Member.PreferredName) ?? am.Member.FirstName + " " + am.Member.LastName); CellCounter++; } rowCounter++; } return data; }