示例#1
0
        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;
        }
示例#2
0
        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);
                        }
                    });
                }
            }
        }
示例#3
0
        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;
        }