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); }
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); }