-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathRegistrationRequestsController.cs
More file actions
73 lines (67 loc) · 2.8 KB
/
RegistrationRequestsController.cs
File metadata and controls
73 lines (67 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System.Net;
using System.Threading.Tasks;
using HwProj.AuthService.Client;
using HwProj.CoursesService.Client;
using HwProj.Models.CoursesService.DTO;
using HwProj.Models.CoursesService.ViewModels;
using HwProj.Models.Result;
using HwProj.Models.Roles;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace HwProj.APIGateway.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class RegistrationRequestsController(
ICoursesServiceClient coursesClient,
IAuthServiceClient authServiceClient)
: AggregationController(authServiceClient)
{
[HttpPost("init")]
[ProducesResponseType(typeof(Result), (int)HttpStatusCode.OK)]
public async Task<IActionResult> Init([FromBody] InitRegistrationRequestViewModel model)
{
var result = await coursesClient.InitRegistrationRequest(model);
return Ok(result);
}
[HttpPost("confirm")]
[ProducesResponseType(typeof(Result<long>), (int)HttpStatusCode.OK)]
public async Task<IActionResult> Confirm([FromBody] ConfirmRegistrationRequestViewModel model)
{
var result = await coursesClient.ConfirmRegistrationRequest(model);
return Ok(result);
}
[HttpGet("course/{courseId}")]
[Authorize(Roles = Roles.LecturerRole)]
[ProducesResponseType(typeof(Result<RegistrationRequestDto[]>), (int)HttpStatusCode.OK)]
public async Task<IActionResult> GetCourseRequests(long courseId)
{
var result = await coursesClient.GetCourseRegistrationRequests(courseId);
return Ok(result);
}
[HttpGet("general")]
[Authorize(Roles = Roles.LecturerRole)]
[ProducesResponseType(typeof(Result<RegistrationRequestDto[]>), (int)HttpStatusCode.OK)]
public async Task<IActionResult> GetGeneralRequests()
{
var result = await coursesClient.GetGeneralRegistrationRequests();
return Ok(result);
}
[HttpPost("{requestId}/approve")]
[Authorize(Roles = Roles.LecturerRole)]
[ProducesResponseType(typeof(Result<string>), (int)HttpStatusCode.OK)]
public async Task<IActionResult> Approve(long requestId)
{
var result = await coursesClient.ApproveRegistrationRequest(requestId);
return Ok(result);
}
[HttpPost("{requestId}/reject")]
[Authorize(Roles = Roles.LecturerRole)]
[ProducesResponseType(typeof(Result), (int)HttpStatusCode.OK)]
public async Task<IActionResult> Reject(long requestId, [FromBody] ReviewRegistrationRequestViewModel model)
{
var result = await coursesClient.RejectRegistrationRequest(requestId, model);
return Ok(result);
}
}
}