Example #1
0
        protected override void Handle(NewsfeedUserRegistrationDTO request)
        {
            var newsfeed = _db.Newsfeeds
                           .Include(n => n.Items)
                           .FirstOrDefault(n => n.TrainingCourseId == request.TrainingCourseId);

            if (newsfeed == null)
            {
                newsfeed = new Entities.Newsfeed()
                {
                    TrainingCourseId = request.TrainingCourseId
                };
                _db.SaveChanges();
            }

            // add item to newsfeed along with user info
            newsfeed.Items.Add(new Entities.NewsfeedItem()
            {
                Title    = $"Student {request.StudentName} registered for course {request.TrainingCourseName}",
                UserInfo = request.UserDetails + " (from MediatR)"
            });
            _db.SaveChanges();
        }
        /// <summary>
        /// This method is responsible for translating from the domain event (NewStudentRegistrationEvent) to an
        /// integration event which may be denormalized. In this example the integration event is represented by
        /// the NewsfeedItem entity, but this method could as easily be creating a DTO or some JSON to be sent to 
        /// a queue or external API endpoint.
        /// </summary>
        /// <param name="args"></param>
        public void Handle(NewStudentRegistrationEvent args)
        {
            var cookieString = _currentContext.Request.Cookies["UserCookie"].Value;
            //string user = cookieString.Split(':')[0];
            //DateTime dateLoggedIn = DateTime.Parse(cookieString.Split(':')[1]);

            // get or create newsfeed
            var newsfeed = _db.Newsfeeds
                .Include(n => n.Items)
                .FirstOrDefault(n => n.TrainingCourseId == args.Course.Id);
            if(newsfeed == null)
            {
                newsfeed = new Entities.Newsfeed() { TrainingCourseId = args.Course.Id };
                _db.SaveChanges();
            }

            // add item to newsfeed along with user info
            newsfeed.Items.Add(new Entities.NewsfeedItem()
            {
                Title = $"Student {args.Student.Name} registered for course {args.Course.Name}",
                UserInfo = cookieString
            });
            _db.SaveChanges();
        }