Skip to content
Snippets Groups Projects

merge from develop

Merged Lucca Santangelo Dodera requested to merge develop into master
4 files
+ 146
6
Compare changes
  • Side-by-side
  • Inline
Files
4
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
@@ -13,15 +14,19 @@ using Tsi1.BusinessLayer.Interfaces;
namespace Tsi1.Api.Controllers
{
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class CourseController : ControllerBase
{
private readonly ICourseService _courseService;
public CourseController(ICourseService courseService)
private readonly IFileService _fileService;
public CourseController(ICourseService courseService, IFileService fileService)
{
_courseService = courseService;
_fileService = fileService;
}
[Authorize(Roles = UserTypes.Student + ", " + UserTypes.Professor)]
@@ -54,6 +59,10 @@ namespace Tsi1.Api.Controllers
return BadRequest(result.Message);
}
var path = Path.Combine(tenantId.ToString(), result.Data.Id.ToString());
_fileService.CreateFolder(path);
return Ok();
}
@@ -65,11 +74,38 @@ namespace Tsi1.Api.Controllers
var userId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "Id").Value);
var result = await _courseService.Matriculate(userId, courseId);
if (result.HasError)
{
return BadRequest(result.Message);
}
if (result.Data == false)
{
return NotFound(result.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.Student)]
[HttpPost("DropOutFromCourse/{courseId}")]
public async Task<IActionResult> DropOutFromCourse(int courseId)
{
var userId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "Id").Value);
var result = await _courseService.DropOutFromCourse(userId, courseId);
if (result.HasError)
{
return BadRequest(result.Message);
}
if (result.Data == false)
{
return NotFound(result.Message);
}
return Ok();
}
@@ -78,12 +114,125 @@ namespace Tsi1.Api.Controllers
public async Task<IActionResult> AddProfessorToCourse(ProfessorCourseDto professorCourseDto)
{
var result = await _courseService.AddProfessorToCourse(professorCourseDto);
if (result.HasError)
{
return BadRequest(result.Message);
}
if (result.Data == false)
{
return NotFound(result.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.FacultyAdmin)]
[HttpPost("RemoveProfessorToCourse")]
public async Task<IActionResult> RemoveProfessorFromCourse(ProfessorCourseDto professorCourseDto)
{
var result = await _courseService.RemoveProfessorToCourse(professorCourseDto);
if (result.HasError)
{
return BadRequest(result.Message);
}
if (result.Data == false)
{
return NotFound(result.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.Student + ", " + UserTypes.Professor + ", " + UserTypes.FacultyAdmin)]
[HttpGet("GetAll")]
public async Task<IActionResult> GetAll()
{
var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
var result = await _courseService.GetAll(tenantId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok(result.Data);
}
[Authorize(Roles = UserTypes.UdelarAdmin)]
[HttpGet("GetAll/{tenantId}")]
public async Task<IActionResult> GetAll(int tenantId)
{
var result = await _courseService.GetAll(tenantId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok(result.Data);
}
[Authorize(Roles = UserTypes.Professor + ", " + UserTypes.FacultyAdmin)]
[HttpPut("Modify/{courseId}")]
public async Task<IActionResult> Modify(int courseId, CourseCreateDto courseDto)
{
var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
courseDto.TenantId = tenantId;
var result = await _courseService.Modify(courseId, courseDto);
if (result.HasError)
{
return BadRequest(result.Message);
}
if (result.Data == false)
{
return NotFound(result.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.FacultyAdmin)]
[HttpDelete("Delete/{courseId}")]
public async Task<IActionResult> Delete(int courseId)
{
var result = await _courseService.Delete(courseId);
if (result.HasError)
{
return BadRequest(result.Message);
}
if (result.Data == null)
{
return NotFound(result.Message);
}
var path = Path.Combine(result.Data.TenantId.ToString(), result.Data.Id.ToString());
_fileService.DeleteFolder(path);
return Ok();
}
[HttpGet("GetProfessors/{courseId}")]
public async Task<IActionResult> GetProfessors(int courseId)
{
var result = await _courseService.GetProfessors(courseId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok(result.Data);
}
}
}
Loading