12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- using System;
- using System.Linq;
- using Comal.Classes;
- using InABox.Core;
- namespace Comal.Stores
- {
- internal class MeetingStore : BaseStore<Meeting>
- {
- private void UpdateAssignments(Meeting meeting)
- {
- bool needsupdate =
- meeting.HasOriginalValue(x => x.Date)
- || meeting.HasOriginalValue(x => x.Time.Start)
- || meeting.HasOriginalValue(x => x.Time.Duration)
- || meeting.HasOriginalValue(x => x.Time.Finish)
- || meeting.HasOriginalValue(x => x.Title)
- || meeting.HasOriginalValue(x => x.Description)
- || meeting.HasOriginalValue(x => x.Activity.ID);
- if (!needsupdate)
- return;
-
- var assignments = Provider.Query<Assignment>(
- new Filter<Assignment>(x=>x.Meeting.Link.ID).IsEqualTo(meeting.ID),
- new Columns<Assignment>(x=>x.ID)
- .Add(x=>x.Title)
- .Add(x=>x.Description)
- .Add(x=>x.Date)
- .Add(x=>x.Booked.Start)
- .Add(x=>x.Booked.Finish)
- .Add(x=>x.Booked.Duration)
- .Add(x=>x.ActivityLink.ID)
- ).Rows.Select(x=>x.ToObject<Assignment>()).ToArray();
- foreach (var assignment in assignments)
- {
- assignment.Date = meeting.Date;
- assignment.Booked.Start = meeting.Time.Start;
- assignment.Booked.Finish = meeting.Time.Duration;
- assignment.Booked.Finish = meeting.Time.Finish;
- assignment.ActivityLink.ID = meeting.Activity.ID;
- assignment.Title = meeting.Title;
- assignment.Description = meeting.Description;
- }
- var updates = assignments.Where(x => x.IsChanged()).ToArray();
- if (updates.Any())
- Provider.Save(updates);
- }
-
- protected override void AfterSave(Meeting entity)
- {
- base.AfterSave(entity);
- UpdateAssignments(entity);
- }
-
- }
- }
|