void Apply(SavedDraftLessonEvent @event) { Title = @event.Title; Discipline = @event.Discipline; School = @event.School; Classroom = @event.Classroom; AuthorId = @event.AuthorId; Content = @event.Content; Conclusion = @event.Conclusion; LastModifDate = @event.ModificationDate; //FeedBacks.Concat(@event.FeedBacks[EntityState.New]); // Update FeedBacks Collection if (@event.FeedBacks.ContainsKey(EntityStatus.A)) { @event.FeedBacks[EntityStatus.A].ToList() .ForEach(feedback => FeedBacks.Add(feedback)); } if (@event.FeedBacks.ContainsKey(EntityStatus.M)) { @event.FeedBacks[EntityStatus.M].ToList() .ForEach(feedback => { var item = FeedBacks.Single(f => f.Id.Equals(feedback.Id)); item.Feedback = feedback.Feedback; }); } if (@event.FeedBacks.ContainsKey(EntityStatus.C)) { @event.FeedBacks[EntityStatus.C].ToList() .ForEach(feedback => { var item = FeedBacks.Single(f => f.Id.Equals(feedback.Id)); FeedBacks.Remove(item); }); } // Update Tags Collection if (@event.Tags.ContainsKey(EntityStatus.A)) { @event.Tags[EntityStatus.A].ToList() .ForEach(tag => Tags.Add(tag)); } if (@event.Tags.ContainsKey(EntityStatus.C)) { @event.Tags[EntityStatus.C].ToList() .ForEach(tag => { var item = Tags.Single(f => f.LessonTagName.Equals(tag.LessonTagName)); Tags.Remove(item); }); } RecordState = Constants.RECORD_STATE_ACTIVE; }
public void Handle(SavedDraftLessonEvent @event) { using (var db = new DisciturContext()) { int lessonId = _identityMapper.GetModelId <Lesson>(@event.Id); Lesson lesson = db.Lessons.Where(l => l.LessonId.Equals(lessonId) && //l.Vers.Equals(@event.Version) && l.RecordState.Equals(Constants.RECORD_STATE_ACTIVE)) .First(); if (lesson.Title != @event.Title) { lesson.Title = @event.Title; } if (lesson.Discipline != @event.Discipline) { lesson.Discipline = @event.Discipline; } lesson.School = @event.School; lesson.Classroom = @event.Classroom; lesson.Discipline = @event.Discipline; lesson.Content = @event.Content; lesson.Conclusion = @event.Conclusion; lesson.PublishDate = @event.ModificationDate; // Update FeedBacks Collection if (@event.FeedBacks.ContainsKey(EntityStatus.A)) { @event.FeedBacks[EntityStatus.A].ToList() .ForEach(feedback => { LessonFeedback fb = new LessonFeedback() { Feedback = feedback.Feedback, Nature = feedback.Nature, LessonFeedbackGuid = feedback.Id }; lesson.FeedBacks.Add(fb); }); } if (@event.FeedBacks.ContainsKey(EntityStatus.M)) { @event.FeedBacks[EntityStatus.M].ToList() .ForEach(feedback => { var item = lesson.FeedBacks.Single(f => f.LessonFeedbackId.Equals(_identityMapper.GetModelId <LessonFeedback>(feedback.Id))); item.Feedback = feedback.Feedback; }); } if (@event.FeedBacks.ContainsKey(EntityStatus.C)) { @event.FeedBacks[EntityStatus.C].ToList() .ForEach(feedback => { var item = lesson.FeedBacks.Single(f => f.LessonFeedbackId.Equals(_identityMapper.GetModelId <LessonFeedback>(feedback.Id))); lesson.FeedBacks.Remove(item); db.LessonFeedbacks.Remove(item); }); } // Update Tags Collection if (@event.Tags.ContainsKey(EntityStatus.A)) { @event.Tags[EntityStatus.A].ToList() .ForEach(tag => { LessonTag t = new LessonTag() { LessonTagName = tag.LessonTagName }; lesson.Tags.Add(t); }); } if (@event.Tags.ContainsKey(EntityStatus.C)) { @event.Tags[EntityStatus.C].ToList() .ForEach(tag => { var item = lesson.Tags.Single(t => t.LessonTagName.Equals(tag.LessonTagName)); lesson.Tags.Remove(item); db.LessonTags.Remove(item); }); } UpdateLessonArchFields(lesson, lesson.LastModifUser, @event.ModificationDate, @event.Version); db.Entry(lesson).State = EntityState.Modified; db.SaveChanges(); if (lesson.FeedBacks.Count > 0) { lesson.FeedBacks.ToList() .ForEach(feedback => { if (@event.FeedBacks.ContainsKey(EntityStatus.A) && @event.FeedBacks[EntityStatus.A].Any(f => f.Id.Equals(feedback.LessonFeedbackGuid))) { _identityMapper.Map <LessonFeedback>(feedback.LessonFeedbackId, feedback.LessonFeedbackGuid); } }); } } }
void Apply(SavedDraftLessonEvent @event) { Title = @event.Title; Discipline = @event.Discipline; School = @event.School; Classroom = @event.Classroom; AuthorId = @event.AuthorId; Content = @event.Content; Conclusion = @event.Conclusion; LastModifDate = @event.ModificationDate; //FeedBacks.Concat(@event.FeedBacks[EntityState.New]); // Update FeedBacks Collection if (@event.FeedBacks.ContainsKey(EntityStatus.A)) @event.FeedBacks[EntityStatus.A].ToList() .ForEach(feedback => FeedBacks.Add(feedback)); if (@event.FeedBacks.ContainsKey(EntityStatus.M)) @event.FeedBacks[EntityStatus.M].ToList() .ForEach(feedback => { var item = FeedBacks.Single(f => f.Id.Equals(feedback.Id)); item.Feedback = feedback.Feedback; }); if (@event.FeedBacks.ContainsKey(EntityStatus.C)) @event.FeedBacks[EntityStatus.C].ToList() .ForEach(feedback => { var item = FeedBacks.Single(f => f.Id.Equals(feedback.Id)); FeedBacks.Remove(item); }); // Update Tags Collection if (@event.Tags.ContainsKey(EntityStatus.A)) @event.Tags[EntityStatus.A].ToList() .ForEach(tag => Tags.Add(tag)); if (@event.Tags.ContainsKey(EntityStatus.C)) @event.Tags[EntityStatus.C].ToList() .ForEach(tag => { var item = Tags.Single(f => f.LessonTagName.Equals(tag.LessonTagName)); Tags.Remove(item); }); RecordState = Constants.RECORD_STATE_ACTIVE; }