Example #1
0
        public AllCourseListVM GetAll(object obj)
        {
            var courses = obj == null
                                ? CourseService.AllCoursesForList()
                                : CourseService.GetAllFor(obj);

            var track         = obj as Course;
            var isTrack       = track != null;
            var isTrackDiplom = track != null && courses.FirstOrDefault(x => x.Course_TC == track.Course_TC)
                                .GetOrDefault(x => x.IsDiplom);
            var trackList              = obj as TrackListVM;
            var siteTerm               = obj as SiteTerm;
            var isIntraExtraTerm       = siteTerm != null && siteTerm.SiteTerm_ID == Sections.Terms.IntraExtra;
            var isOpenClassesTerm      = siteTerm != null && siteTerm.SiteTerm_ID == Sections.Terms.OpenClasses;
            var isDiplomPage           = trackList != null && trackList.IsDiplomPage;
            var isTrainingProgramsPage = trackList != null && trackList.IsTrainingProgramsPage;

            if (isDiplomPage || isTrainingProgramsPage)
            {
                courses = courses.Where(x => trackList.Courses.Contains(x.Course_TC)).ToList();
            }
            var isIntraExtraTrackPage = (isTrack && CourseService.IntraExtraTracks().Contains(track.Course_TC)) ||
                                        isDiplomPage;
            var trackFullPrices = TrackService.TrackFullPrices();
            var items           =
                courses.Select(c => {
                var nearestGroupAndWebinar = GroupService.GetNearestGroupAndWebinar(c,
                                                                                    isIntraExtraTrackPage || isIntraExtraTerm, isOpenClassesTerm);
                var coefficient = isTrack
                                                ? null
                                                : GroupService.GetGroupsForCourse(c.Course_TC).Where(x => !x.IsIntraExtramural)
                                  .Select(x => PriceUtils.GetCoefficient(x)).Min();

                var prices      = PriceService.GetAllPricesForCourse(c.Course_TC, null);
                var trackPrices = c.IsTrackBool
                                ? trackFullPrices.GetValueOrDefault(c.Course_TC)
                                : null;
                return(new CommonCourseListItemVM
                {
                    Course = c,
                    IsIntraExtraTrackPage = isIntraExtraTrackPage,
                    IsTrackPage = isTrack,
                    TrackFullPrices = trackPrices,
                    NearestGroup = nearestGroupAndWebinar.Item1,
                    NearestWebinar = nearestGroupAndWebinar.Item2,
                    Prices = prices,
                    PriceCoefficent = coefficient
                });
            })
                .ToList();
            var commonCourseListVM = new CommonCourseListVM
            {
                Items                  = items,
                IsTrackPage            = isTrack,
                IsDiplomPage           = isDiplomPage,
                IsTrainingProgramsPage = isTrainingProgramsPage
            };

            return
                (new AllCourseListVM
            {
                MainList = courses,
                TrackCounts = CourseService.TrackCourseCounts(),
                TrackLastCourseDiscounts = TrackService.TrackLastCourseDiscounts(),
                Common = commonCourseListVM,
                IsTrack = isTrack,
                IsDiplomPage = isDiplomPage,
                IsTrainingProgramsPage = isTrainingProgramsPage,
                IsIntraExtra = isIntraExtraTrackPage,
                IsTrackDiplom = isTrackDiplom,
                HideIntraGroup = isIntraExtraTerm || isOpenClassesTerm,
                IsOpenClasses = isOpenClassesTerm,
                CourseWithUnlimit = PriceService.CourseWithUnlimite(),
            });
        }