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