From 0e038cdb3d3ccd5347cab455067cbdf6b4e55175 Mon Sep 17 00:00:00 2001
From: esantangelo <enzo020895@gmail.com>
Date: Sun, 29 Nov 2020 20:52:43 -0300
Subject: [PATCH] AddProfessorToCourse user professor

---
 .../Tsi1.Api/Controllers/CourseController.cs  |  2 +-
 .../Services/CourseService.cs                 | 27 ++++++++++++++++++-
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/Tsi1.Api/Tsi1.Api/Controllers/CourseController.cs b/Tsi1.Api/Tsi1.Api/Controllers/CourseController.cs
index dd4de59..90c4e05 100644
--- a/Tsi1.Api/Tsi1.Api/Controllers/CourseController.cs
+++ b/Tsi1.Api/Tsi1.Api/Controllers/CourseController.cs
@@ -106,7 +106,7 @@ namespace Tsi1.Api.Controllers
             return Ok();
         }
 
-        [Authorize(Roles = UserTypes.FacultyAdmin)]
+        [Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.Professor)]
         [HttpPost("AddProfessorToCourse")]
         public async Task<IActionResult> AddProfessorToCourse(ProfessorCourseDto professorCourseDto)
         {
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/CourseService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/CourseService.cs
index bc1eeb8..b06b5c4 100644
--- a/Tsi1.Api/Tsi1.BusinessLayer/Services/CourseService.cs
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/CourseService.cs
@@ -149,7 +149,7 @@ namespace Tsi1.BusinessLayer.Services
             return result;
         }
 
-        public async Task<ServiceResult<bool>> AddProfessorToCourse(ProfessorCourseDto professorCourseDto)
+        public async Task<ServiceResult<bool>> AddProfessorToCourse(ProfessorCourseDto professorCourseDto, int userId, string userType)
         {
             var result = new ServiceResult<bool>();
 
@@ -181,6 +181,31 @@ namespace Tsi1.BusinessLayer.Services
                 return result;
             }
 
+            var myUser = await _context.Users
+                .AsNoTracking()
+                .FirstOrDefaultAsync(x => x.Id == userId);
+
+            if (myUser.TenantId != user.TenantId)
+            {
+                result.HasError = true;
+                result.AddMessage(string.Format(ErrorMessages.InvalidTenant, myUser.TenantId));
+                return result;
+            }
+
+            if (userType == UserTypes.Professor)
+            {
+                var isProfessorCourse = await _context.ProfessorCourses
+                    .AsNoTracking()
+                    .AnyAsync(x => x.ProfessorId == myUser.ProfessorId);
+
+                if (!isProfessorCourse)
+                {
+                    result.HasError = true;
+                    result.AddMessage(string.Format(ErrorMessages.ProfessorCourseDoesNotExists, myUser.FirstName + " " + myUser.LastName, course.Name));
+                    return result;
+                }
+            }
+            
             var existingProfessorCourse = await _context.ProfessorCourses
                 .FirstOrDefaultAsync(x => x.ProfessorId == user.ProfessorId && x.CourseId == course.Id);
 
-- 
GitLab