public async Task <CourseDetailViewModel> GetCourseAsync(int id)
        {
            /* La query fornisce 2 tabelle: Corsi e lezioni. */
            FormattableString query = $@"SELECT Id, Title, Description, ImagePath, Author, Rating, FullPrice_Amount, FullPrice_Currency, CurrentPrice_Amount, CurrentPrice_Currency FROM Courses WHERE Id={id}
            ; SELECT Id, Title, Description, Duration FROM Lessons WHERE CourseId={id}";

            DataSet dataSet = await db.QueryAsync(query);

            // Course
            var courseTable = dataSet.Tables[0];

            if (courseTable.Rows.Count != 1)
            {
                throw new InvalidOperationException($"Did not return exactly 1 row for Course {id}");
            }

            // Prende la riga del corso
            var courseRow = courseTable.Rows[0];
            // crea l'oggetto principale della pagina: Dettaglio corso.
            var courseDetailViewModel = CourseDetailViewModel.FromDataRow(courseRow); // Prende dati del corso dal ViewModel

            // Course Lessons
            var lessonsDataTable = dataSet.Tables[1];

            foreach (DataRow lessonRow in lessonsDataTable.Rows)
            {
                CourseLessonViewModel lessonViewModel = CourseLessonViewModel.FromDataRow(lessonRow);
                courseDetailViewModel.Lessons.Add(lessonViewModel);
            }

            return(courseDetailViewModel);
        }
Beispiel #2
0
        public CourseDetailViewModel GetCourse(int id)
        {
            var rand  = new Random();
            var price = Convert.ToDecimal(rand.NextDouble() * 10 + 120);
            var corso = new CourseDetailViewModel()
            {
                Id           = id,
                Title        = $"Corso {id}",
                FullPrice    = new Money(Currency.EUR, price),
                CurrentPrice = new Money(Currency.EUR, rand.NextDouble() > 0.5 ? price : price - 110),
                Rating       = rand.Next(10, 50) / 10.0,
                Description  = $"Description {id}",
                Lezioni      = new List <CourseLessonViewModel>(),
                Author       = "Nome Cognome",
                ImagePath    = "~/img/bug.png",
            };

            for (var i = 1; i <= 5; i++)
            {
                var lezione = new CourseLessonViewModel()
                {
                    TitleLesson = $"Lezione {i}",
                    Duration    = TimeSpan.FromSeconds(rand.Next(40, 90))
                };
                corso.Lezioni.Add(lezione);
            }

            return(corso);
        }