Comments and attributes for actions
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
using Domains.LocationDomain;
|
using Domains.VisaApplicationDomain;
|
||||||
using Domains.VisaApplicationDomain;
|
|
||||||
|
|
||||||
namespace ApplicationLayer.Services.VisaApplications.Models
|
namespace ApplicationLayer.Services.VisaApplications.Models
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
using Domains.ApplicantDomain;
|
using Domains.VisaApplicationDomain;
|
||||||
using Domains.LocationDomain;
|
|
||||||
using Domains.VisaApplicationDomain;
|
|
||||||
|
|
||||||
namespace ApplicationLayer.Services.VisaApplications.Models
|
namespace ApplicationLayer.Services.VisaApplications.Models
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using Swashbuckle.AspNetCore.SwaggerGen;
|
|||||||
|
|
||||||
namespace SchengenVisaApi.Common
|
namespace SchengenVisaApi.Common
|
||||||
{
|
{
|
||||||
|
/// Adds auth for swagger
|
||||||
public class ConfigureSwaggerOptions : IConfigureOptions<SwaggerGenOptions>
|
public class ConfigureSwaggerOptions : IConfigureOptions<SwaggerGenOptions>
|
||||||
{
|
{
|
||||||
void IConfigureOptions<SwaggerGenOptions>.Configure(SwaggerGenOptions options)
|
void IConfigureOptions<SwaggerGenOptions>.Configure(SwaggerGenOptions options)
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
namespace SchengenVisaApi.Common
|
namespace SchengenVisaApi.Common
|
||||||
{
|
{
|
||||||
#pragma warning enable CS1591
|
#pragma warning disable CS1591
|
||||||
public static class PolicyConstants
|
public static class PolicyConstants
|
||||||
{
|
{
|
||||||
public const string AdminPolicy = "AdminPolicy";
|
public const string AdminPolicy = "AdminPolicy";
|
||||||
public const string ApplicantPolicy = "ApplicantPolicy";
|
public const string ApplicantPolicy = "ApplicantPolicy";
|
||||||
public const string ApprovingAuthorityPolicy = "ApprovingAuthorityPolicy";
|
public const string ApprovingAuthorityPolicy = "ApprovingAuthorityPolicy";
|
||||||
}
|
}
|
||||||
#pragma warning disable CS1591
|
#pragma warning enable CS1591
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,39 @@
|
|||||||
using ApplicationLayer.Services.Locations.RequestHandlers;
|
using ApplicationLayer.Services.Locations.RequestHandlers;
|
||||||
using ApplicationLayer.Services.Locations.Requests;
|
using ApplicationLayer.Services.Locations.Requests;
|
||||||
|
using Domains.LocationDomain;
|
||||||
|
using Domains.Users;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using SchengenVisaApi.Common;
|
using SchengenVisaApi.Common;
|
||||||
|
|
||||||
namespace SchengenVisaApi.Controllers
|
namespace SchengenVisaApi.Controllers
|
||||||
{
|
{
|
||||||
|
/// Controller for <see cref="Domains.LocationDomain"/>
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[Route("countries")]
|
[Route("countries")]
|
||||||
public class LocationsController(ILocationRequestsHandler requestsHandler) : ControllerBase
|
public class LocationsController(ILocationRequestsHandler requestsHandler) : ControllerBase
|
||||||
{
|
{
|
||||||
|
/// Return countries with cities from DB
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
[ProducesResponseType<List<Country>>(StatusCodes.Status200OK)]
|
||||||
public async Task<IActionResult> GetAvailableLocations(CancellationToken cancellationToken)
|
public async Task<IActionResult> GetAvailableLocations(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
return Ok(await requestsHandler.HandleGetRequestAsync(cancellationToken));
|
return Ok(await requestsHandler.HandleGetRequestAsync(cancellationToken));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Adds country with cities to DB
|
||||||
|
/// <remarks>Accessible only for <see cref="Role.Admin"/></remarks>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status403Forbidden)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
[Route("country")]
|
[Route("country")]
|
||||||
[Authorize(policy: PolicyConstants.AdminPolicy)]
|
[Authorize(policy: PolicyConstants.AdminPolicy)]
|
||||||
public async Task<IActionResult> AddCountry(AddCountryRequest request, CancellationToken cancellationToken)
|
public async Task<IActionResult> AddCountry(AddCountryRequest request, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
await requestsHandler.AddCountryAsync(request, cancellationToken);
|
await requestsHandler.AddCountryAsync(request, cancellationToken);
|
||||||
return Ok();
|
return Created();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,22 @@
|
|||||||
using ApplicationLayer.Services.AuthServices.LoginService;
|
using ApplicationLayer.Services.AuthServices.LoginService;
|
||||||
using ApplicationLayer.Services.AuthServices.RegisterService;
|
using ApplicationLayer.Services.AuthServices.RegisterService;
|
||||||
using ApplicationLayer.Services.AuthServices.Requests;
|
using ApplicationLayer.Services.AuthServices.Requests;
|
||||||
|
using Domains.Users;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using SchengenVisaApi.Common;
|
using SchengenVisaApi.Common;
|
||||||
|
|
||||||
namespace SchengenVisaApi.Controllers
|
namespace SchengenVisaApi.Controllers
|
||||||
{
|
{
|
||||||
|
/// Controller for <see cref="Domains.Users"/>
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[Route("auth")]
|
[Route("auth")]
|
||||||
public class UsersController(IRegisterService registerService, ILoginService loginService) : ControllerBase
|
public class UsersController(IRegisterService registerService, ILoginService loginService) : ControllerBase
|
||||||
{
|
{
|
||||||
|
/// Adds applicant with user account to DB
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status409Conflict)]
|
||||||
[Route("applicant")]
|
[Route("applicant")]
|
||||||
public async Task<IActionResult> Register(RegisterApplicantRequest request, CancellationToken cancellationToken)
|
public async Task<IActionResult> Register(RegisterApplicantRequest request, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
@@ -19,16 +24,25 @@ namespace SchengenVisaApi.Controllers
|
|||||||
return Created();
|
return Created();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Adds approving authority with user account to DB
|
||||||
|
/// <remarks>Accessible only for <see cref="Role.Admin"/></remarks>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Authorize(policy: PolicyConstants.AdminPolicy)]
|
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status409Conflict)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status403Forbidden)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
[Route("authority")]
|
[Route("authority")]
|
||||||
|
[Authorize(policy: PolicyConstants.AdminPolicy)]
|
||||||
public async Task<IActionResult> RegisterAuthority(RegisterRequest request, CancellationToken cancellationToken)
|
public async Task<IActionResult> RegisterAuthority(RegisterRequest request, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
await registerService.RegisterAuthority(request, cancellationToken);
|
await registerService.RegisterAuthority(request, cancellationToken);
|
||||||
return Created();
|
return Created();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns JWT-token for authentication
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
[ProducesResponseType<string>(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status403Forbidden)]
|
||||||
public async Task<IActionResult> Login(string email, string password, CancellationToken cancellationToken)
|
public async Task<IActionResult> Login(string email, string password, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var result = await loginService.LoginAsync(new UserLoginRequest(email, password), cancellationToken);
|
var result = await loginService.LoginAsync(new UserLoginRequest(email, password), cancellationToken);
|
||||||
|
|||||||
@@ -1,17 +1,27 @@
|
|||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
using ApplicationLayer.Services.VisaApplications.Handlers;
|
using ApplicationLayer.Services.VisaApplications.Handlers;
|
||||||
|
using ApplicationLayer.Services.VisaApplications.Models;
|
||||||
using ApplicationLayer.Services.VisaApplications.Requests;
|
using ApplicationLayer.Services.VisaApplications.Requests;
|
||||||
|
using Domains.Users;
|
||||||
|
using Domains.VisaApplicationDomain;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using SchengenVisaApi.Common;
|
using SchengenVisaApi.Common;
|
||||||
|
|
||||||
namespace SchengenVisaApi.Controllers;
|
namespace SchengenVisaApi.Controllers;
|
||||||
|
|
||||||
|
/// Controller for <see cref="Domains.VisaApplicationDomain"/>
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[Route("[controller]")]
|
[Route("[controller]")]
|
||||||
public class VisaApplicationController(IVisaApplicationRequestsHandler visaApplicationRequestsHandler) : ControllerBase
|
public class VisaApplicationController(IVisaApplicationRequestsHandler visaApplicationRequestsHandler) : ControllerBase
|
||||||
{
|
{
|
||||||
|
//todo should return only pending applications
|
||||||
|
/// Returns all <see cref="Domains.VisaApplicationDomain.VisaApplication"/> from DB
|
||||||
|
/// <remarks>Accessible only for <see cref="Role.ApprovingAuthority"/></remarks>
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
[ProducesResponseType<List<VisaApplication>>(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status403Forbidden)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
[Authorize(policy: PolicyConstants.ApprovingAuthorityPolicy)]
|
[Authorize(policy: PolicyConstants.ApprovingAuthorityPolicy)]
|
||||||
public async Task<IActionResult> Get(CancellationToken cancellationToken)
|
public async Task<IActionResult> Get(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
@@ -19,7 +29,13 @@ public class VisaApplicationController(IVisaApplicationRequestsHandler visaAppli
|
|||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns all <see cref="VisaApplication"/> of one applicant
|
||||||
|
/// <remarks>Returns applications for authorized applicant</remarks>
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
[ProducesResponseType<List<VisaApplicationModelForApplicant>>(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status403Forbidden)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
[Authorize(policy: PolicyConstants.ApplicantPolicy)]
|
[Authorize(policy: PolicyConstants.ApplicantPolicy)]
|
||||||
[Route("OfApplicant")]
|
[Route("OfApplicant")]
|
||||||
public async Task<IActionResult> GetForApplicant(CancellationToken cancellationToken)
|
public async Task<IActionResult> GetForApplicant(CancellationToken cancellationToken)
|
||||||
@@ -29,7 +45,13 @@ public class VisaApplicationController(IVisaApplicationRequestsHandler visaAppli
|
|||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Adds new <see cref="VisaApplication"/> to DB
|
||||||
|
/// <remarks>Adds application for authorized applicant</remarks>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status403Forbidden)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
[Authorize(policy: PolicyConstants.ApplicantPolicy)]
|
[Authorize(policy: PolicyConstants.ApplicantPolicy)]
|
||||||
public async Task<IActionResult> Create(VisaApplicationCreateRequest request, CancellationToken cancellationToken)
|
public async Task<IActionResult> Create(VisaApplicationCreateRequest request, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user