Newer
Older
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)
}
public async Task<ServiceResult<Course>> Create(CourseCreateDto newCourse)
{
var result = new ServiceResult<Course>();
var existingCourse = await _context.Courses
.FirstOrDefaultAsync(x => x.Name == newCourse.Name && x.TenantId == newCourse.TenantId);
if (existingCourse != null)
{
result.HasError = true;
result.Message = string.Format(ErrorMessages.DuplicateCourseName, newCourse.Name);
return result;
}
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(int userId, string userType)
{
var result = new ServiceResult<List<CoursePreviewDto>>();
var courses = new List<Course>();
var user = await _context.Users.FirstOrDefaultAsync(x => x.Id == userId);
if (user == null)
{
result.HasError = true;
result.Message = string.Format(ErrorMessages.UserDoesNotExist, userId);
return result;
}
if (userType == UserTypes.Student)
{
courses = await _context.StudentCourses
.Include(x => x.Course)
.Select(x => x.Course)
.ToListAsync();
}
else if (userType == UserTypes.Professor)
{
courses = await _context.ProfessorCourses
.Include(x => x.Course)
.Select(x => x.Course)
.ToListAsync();
}
public async Task<ServiceResult<bool>> Matriculate(int userId, int courseId)
{
var result = new ServiceResult<bool>();
var user = await _context.Users
.Include(x => x.Student)
.FirstOrDefaultAsync(x => x.Id == userId);
if (user == null || user.Student == null)
{
result.HasError = true;
result.Message = string.Format(ErrorMessages.UserDoesNotExist, userId);
return result;
}
var course = await _context.Courses.FirstOrDefaultAsync(x => x.Id == courseId);
if (course == null)
{
result.HasError = true;
result.Message = string.Format(ErrorMessages.CourseDoesNotExist, courseId);
return result;
}
var existingStudentCourse = await _context.StudentCourses
.FirstOrDefaultAsync(x => x.StudentId == user.StudentId && x.CourseId == course.Id);
{
result.HasError = true;
result.Message = string.Format(ErrorMessages.StudentCourseAlreadyExists, user.Username, course.Name);
return result;
}
var studentCourse = new StudentCourse
{
Course = course,
Student = user.Student
};
_context.StudentCourses.Add(studentCourse);
await _context.SaveChangesAsync();
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
return result;
}
public async Task<ServiceResult<bool>> AddProfessorToCourse(ProfessorCourseDto professorCourseDto)
{
var result = new ServiceResult<bool>();
var user = await _context.Users
.Include(x => x.Professor)
.FirstOrDefaultAsync(x => x.Id == professorCourseDto.UserId);
if (user == null || user.Professor == null)
{
result.HasError = true;
result.Message = string.Format(ErrorMessages.UserDoesNotExist, user.Username);
return result;
}
var course = await _context.Courses
.FirstOrDefaultAsync(x => x.Id == professorCourseDto.CourseId);
if (course == null)
{
result.HasError = true;
result.Message = string.Format(ErrorMessages.CourseDoesNotExist, professorCourseDto.CourseId);
return result;
}
var existingProfessorCourse = await _context.ProfessorCourses
.FirstOrDefaultAsync(x => x.ProfessorId == user.ProfessorId && x.CourseId == course.Id);
if (existingProfessorCourse != null)
{
result.HasError = true;
result.Message = string.Format(ErrorMessages.ProfessorCourseAlreadyExists, user.Username, course.Name);
return result;
}
var professorCourse = new ProfessorCourse
{
Course = course,
Professor = user.Professor
};
_context.ProfessorCourses.Add(professorCourse);