Skip to content
Snippets Groups Projects

Develop

Merged Lucca Santangelo Dodera requested to merge develop into master
111 files
+ 9622
242
Compare changes
  • Side-by-side
  • Inline
Files
111
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Tsi1.BusinessLayer.Dtos;
using Tsi1.BusinessLayer.Helpers;
using Tsi1.BusinessLayer.Interfaces;
namespace Tsi1.Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class CommunicationController : ControllerBase
{
private readonly ICommunicationService _communicationService;
public CommunicationController(ICommunicationService communicationService)
{
_communicationService = communicationService;
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin)]
[HttpPost("CreateCourseCommunication/{courseId}")]
public async Task<IActionResult> CreateCourseCommunication(CommunicationCreateDto newCommunication, int courseId)
{
var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
var validationResult = await _communicationService.TenantValidation(tenantId, courseId);
if (validationResult.HasError)
{
return BadRequest(validationResult.Message);
}
var result = await _communicationService.Create(newCommunication, courseId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin)]
[HttpPost("CreateTenantCommunication")]
public async Task<IActionResult> CreateTenantCommunication(CommunicationCreateDto newCommunication, int tenantId)
{
var userType = HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role).Value;
if (userType == UserTypes.FacultyAdmin)
{
tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
}
newCommunication.IsGlobal = true;
var result = await _communicationService.Create(newCommunication, tenantId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.Student)]
[HttpGet("GetMyCommunications")]
public async Task<IActionResult> GetMyCommunications()
{
var userId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "Id").Value);
var result = await _communicationService.GetMyCommunications(userId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok(result.Data);
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin)]
[HttpDelete("Delete/{communicationId}")]
public async Task<IActionResult> Delete(int communicationId)
{
var result = await _communicationService.Delete(communicationId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok();
}
}
}
Loading