From acebb09e0b9b230c10da6cc3b6ba7158cc983fda Mon Sep 17 00:00:00 2001
From: esantangelo <enzo020895@gmail.com>
Date: Sat, 12 Dec 2020 17:18:36 -0300
Subject: [PATCH] add endpoint activity GetById

---
 .../Controllers/ActivityController.cs         | 14 ++++++++++++++
 .../Tsi1.BusinessLayer/Dtos/ActivityDto.cs    |  2 ++
 .../Interfaces/IActivityService.cs            |  3 ++-
 .../Services/ActivityService.cs               | 19 +++++++++++++++++++
 .../Services/EvaluationService.cs             |  2 +-
 5 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/Tsi1.Api/Tsi1.Api/Controllers/ActivityController.cs b/Tsi1.Api/Tsi1.Api/Controllers/ActivityController.cs
index 4dd5d23..23a333a 100644
--- a/Tsi1.Api/Tsi1.Api/Controllers/ActivityController.cs
+++ b/Tsi1.Api/Tsi1.Api/Controllers/ActivityController.cs
@@ -36,6 +36,20 @@ namespace Tsi1.Api.Controllers
             return Ok(result.Data);
         }
 
+        [Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.Professor + ", " + UserTypes.Student)]
+        [HttpGet("GetById/{activityId}")]
+        public async Task<IActionResult> GetById(int activityId)
+        {
+            var result = await _activityService.GetById(activityId);
+
+            if (result.HasError)
+            {
+                return BadRequest(result.Message);
+            }
+
+            return Ok(result.Data);
+        }
+
         [Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.Professor)]
         [HttpPost("Create")]
         public async Task<IActionResult> Create(ActivityCreateDto newActivity)
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Dtos/ActivityDto.cs b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/ActivityDto.cs
index 831e4f6..f7da8d1 100644
--- a/Tsi1.Api/Tsi1.BusinessLayer/Dtos/ActivityDto.cs
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Dtos/ActivityDto.cs
@@ -15,5 +15,7 @@ namespace Tsi1.BusinessLayer.Dtos
         public bool IsVideoConference { get; set; }
 
         public int EvaluationId { get; set; }
+
+        public EvaluationDetailDto Evaluation { get; set; }
     }
 }
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IActivityService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IActivityService.cs
index a8dfd19..754f968 100644
--- a/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IActivityService.cs
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Interfaces/IActivityService.cs
@@ -15,6 +15,7 @@ namespace Tsi1.BusinessLayer.Interfaces
         Task<ServiceResult<int>> Modify(int activityId, ActivityModifyDto activityDto, int userId);
         Task<ServiceResult<int>> Delete(int activityId, int userId);
 
-        Task<ServiceResult<int>> ActivityValidation(int activityId, int userId); 
+        Task<ServiceResult<int>> ActivityValidation(int activityId, int userId);
+        Task<ServiceResult<ActivityDto>> GetById(int activityId);
     }
 }
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/ActivityService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/ActivityService.cs
index 67c239f..cd22f21 100644
--- a/Tsi1.Api/Tsi1.BusinessLayer/Services/ActivityService.cs
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/ActivityService.cs
@@ -266,5 +266,24 @@ namespace Tsi1.BusinessLayer.Services
             return result;
         }
 
+        public async Task<ServiceResult<ActivityDto>> GetById(int activityId)
+        {
+            var result = new ServiceResult<ActivityDto>();
+
+            var activity = await _context.Activities
+                .AsNoTracking()
+                .Include(x => x.Evaluation)
+                .FirstOrDefaultAsync(x => x.Id == activityId);
+
+            if (activity == null)
+            {
+                result.HasError = true;
+                result.AddMessage(string.Format(ErrorMessages.ActivityDoesNotExist, activityId));
+                return result;
+            }
+
+            result.Data = _mapper.Map<ActivityDto>(activity);
+            return result;
+        }
     }
 }
diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/EvaluationService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/EvaluationService.cs
index 9d20685..a25f5c7 100644
--- a/Tsi1.Api/Tsi1.BusinessLayer/Services/EvaluationService.cs
+++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/EvaluationService.cs
@@ -337,7 +337,7 @@ namespace Tsi1.BusinessLayer.Services
                 return result;
             }
 
-            if (evaluation.IsCompleted)
+            if (evaluation.Activity.Date < DateTime.Now)
             {
                 result.HasError = true;
                 result.AddMessage(string.Format(ErrorMessages.EvaluationIsCompleted, evaluationId));
-- 
GitLab