public static Subject ToSubjectAggregate(this SubjectDataModel dataModel)
        {
            if (dataModel == null)
            {
                return(null);
            }

            var lectures = dataModel.Lectures.Select(l =>
            {
                var theatreLink      = l.LectureTheatreLink;
                var lectureSchedules = new LectureSchedule(
                    new TheatreReference(
                        theatreLink.TheatreId,
                        theatreLink.Theatre.Name,
                        theatreLink.Theatre.Capacity),
                    theatreLink.DayOfWeek,
                    theatreLink.StartHour,
                    theatreLink.EndHour);

                return(new Lecture(l.Id, l.Name, lectureSchedules));
            }).ToList();

            var studentEnrolments =
                dataModel.StudentLinks.Select(x => new StudentEnrolment(x.Student.Id, x.Student.Name)).ToList();

            var subject = new Subject(dataModel.Id, dataModel.Name, lectures, studentEnrolments);

            return(subject);
        }
        public ActionResult ScheduleLecture([Bind(Include = "LectureDate,LectureTime,OfferedCourseID")] LectureSchedule model)
        {
            var name = Session["username"];

            if (name != null)
            {
                var course = _db.OfferedCourses.Where(x => x.OfferedCourseID == model.OfferedCourseID).FirstOrDefault();

                var      code = course.Course.CourseCode;
                var      date = model.LectureDate.ToString("yyyyMMdd");
                DateTime dt   = new DateTime(2012, 01, 01);
                dt = dt + model.LectureTime;
                var time = dt.ToString("HHmmss");
                var xx   = new LectureSchedule
                {
                    LectureTime     = model.LectureTime,
                    OfferedCourseID = model.OfferedCourseID,
                    StreamName      = code + date + time,
                    LectureDate     = model.LectureDate,
                    OfferedCourse   = course
                };
                _db.LectureSchedules.Add(xx);
                _db.SaveChanges();
                return(RedirectToAction("ScheduledLectures"));
            }
            //write something in temp message "please login first."
            return(RedirectToAction("Index", "Default"));
        }
 public static LectureScheduleDto ToLectureScheduleDto(this LectureSchedule lectureSchedule)
 {
     return(new LectureScheduleDto()
     {
         DayOfWeek = lectureSchedule.DayOfWeek,
         StartHour = lectureSchedule.StartHour,
         EndHour = lectureSchedule.EndHour,
         Theatre = new TheatreDto()
         {
             Id = lectureSchedule.Theatre.TheatreId,
             Name = lectureSchedule.Theatre.Name,
             Capacity = lectureSchedule.Theatre.Capacity
         }
     });
 }
        public async Task CreateLectureForSubject(string subjectId, LectureRequestDto requestDto)
        {
            var subject = await GetSubject(subjectId);

            var theatreReference = await GetTheatreReference(requestDto.LectureSchedule.TheatreId);

            var lectureSchedule = new LectureSchedule(
                theatreReference,
                requestDto.LectureSchedule.DayOfWeek,
                requestDto.LectureSchedule.StartHour,
                requestDto.LectureSchedule.EndHour
                );

            var lecture = new Lecture(null, requestDto.Name, lectureSchedule);

            subject.AddLecture(lecture);
            await _subjectRepository.Save(subject);
        }