using AutoMapper; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tsi1.BusinessLayer.Dtos; using Tsi1.BusinessLayer.Helpers; using Tsi1.BusinessLayer.Interfaces; using Tsi1.DataLayer; using Tsi1.DataLayer.Entities; namespace Tsi1.BusinessLayer.Services { public class CourseService : ICourseService { private readonly Tsi1Context _context; private readonly IMapper _mapper; public CourseService(Tsi1Context context, IMapper mapper) { _context = context; _mapper = mapper; } public async Task<ServiceResult<Course>> Create(CourseCreateDto newCourse) { var result = new ServiceResult<Course>(); var course = _mapper.Map<Course>(newCourse); _context.Courses.Add(course); await _context.SaveChangesAsync(); result.Data = course; return result; } public async Task<ServiceResult<List<CoursePreviewDto>>> GetCoursePreviews(string userType, int tenantId) { var result = new ServiceResult<List<CoursePreviewDto>>(); var courses = new List<Course>(); if (userType == UserTypes.Student) { courses = await _context.StudentCourses .Include(x => x.Course) .Where(x => x.Course.TenantId == tenantId) .Select(x => x.Course) .ToListAsync(); } else if (userType == UserTypes.Professor) { courses = await _context.ProfessorCourses .Include(x => x.Course) .Where(x => x.Course.TenantId == tenantId) .Select(x => x.Course) .ToListAsync(); } result.Data = _mapper.Map<List<CoursePreviewDto>>(courses); return result; } } }