Skip to content
Snippets Groups Projects

Feature/survey

Merged Enzo Santangelo Dodera requested to merge feature/survey into develop
13 files
+ 916
33
Compare changes
  • Side-by-side
  • Inline
Files
13
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;
using Tsi1.DataLayer.Entities;
namespace Tsi1.Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class SurveyController : ControllerBase
{
private readonly ISurveyService _surveyService;
public SurveyController(ISurveyService surveyService)
{
_surveyService = surveyService;
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin)]
[HttpPost("Create")]
public async Task<IActionResult> Create(SurveyCreateDto newSurvey, 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);
}
newSurvey.IsGlobal = true;
var result = await _surveyService.CreateGlobalSurvey(newSurvey, tenantId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin)]
[HttpDelete("Delete/{surveyId}")]
public async Task<IActionResult> Delete(int surveyId)
{
var userType = HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role).Value;
var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
var result = await _surveyService.DeleteGlobalSurvey(surveyId, userType, tenantId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin)]
[HttpGet("GetAllGlobalSurveys")]
public async Task<IActionResult> GetAllGlobalSurveys(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);
}
var result = await _surveyService.GetAllGlobalSurveys(tenantId, userType);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok(result.Data);
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin + ", " + UserTypes.Professor + ", " + UserTypes.Student)]
[HttpGet("GetMySurvey/{surveyId}")]
public async Task<IActionResult> GetMySurvey(int surveyId)
{
var userId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "Id").Value);
var result = await _surveyService.GetMySurvey(surveyId, userId);
if (result.HasError)
{
return NotFound(result.Message);
}
return Ok(result.Data);
}
[Authorize(Roles = UserTypes.Student)]
[HttpPost("Complete")]
public async Task<IActionResult> Complete(SurveyResponseCreateDto surveyResponse)
{
var userId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "Id").Value);
surveyResponse.UserId = userId;
var result = await _surveyService.Complete(surveyResponse);
if (result.HasError)
{
return NotFound(result.Message);
}
return Ok(result.Data);
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin + ", " + UserTypes.Professor)]
[HttpGet("GetAllResponses/{surveyId}")]
public async Task<IActionResult> GetAllResponses(int surveyId)
{
var userType = HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role).Value;
var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
var result = await _surveyService.GetAllResponses(surveyId, userType, tenantId);
if (result.HasError)
{
return NotFound(result.Message);
}
return Ok(result.Data);
}
}
}
Loading