diff --git a/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Models/PastVisitModel.cs b/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Models/PastVisitModel.cs index 55d7010..c492e57 100644 --- a/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Models/PastVisitModel.cs +++ b/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Models/PastVisitModel.cs @@ -1,5 +1,4 @@ -using Domains.LocationDomain; -using Domains.VisaApplicationDomain; +using Domains.VisaApplicationDomain; namespace ApplicationLayer.Services.VisaApplications.Models { diff --git a/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Models/VisaApplicationModelForApplicant.cs b/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Models/VisaApplicationModelForApplicant.cs index f1f85e2..c347147 100644 --- a/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Models/VisaApplicationModelForApplicant.cs +++ b/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Models/VisaApplicationModelForApplicant.cs @@ -1,6 +1,4 @@ -using Domains.ApplicantDomain; -using Domains.LocationDomain; -using Domains.VisaApplicationDomain; +using Domains.VisaApplicationDomain; namespace ApplicationLayer.Services.VisaApplications.Models { diff --git a/SchengenVisaApi/SchengenVisaApi/Common/ConfigureSwaggerOptions.cs b/SchengenVisaApi/SchengenVisaApi/Common/ConfigureSwaggerOptions.cs index 51aa125..fbfefec 100644 --- a/SchengenVisaApi/SchengenVisaApi/Common/ConfigureSwaggerOptions.cs +++ b/SchengenVisaApi/SchengenVisaApi/Common/ConfigureSwaggerOptions.cs @@ -4,6 +4,7 @@ using Swashbuckle.AspNetCore.SwaggerGen; namespace SchengenVisaApi.Common { + /// Adds auth for swagger public class ConfigureSwaggerOptions : IConfigureOptions { void IConfigureOptions.Configure(SwaggerGenOptions options) diff --git a/SchengenVisaApi/SchengenVisaApi/Common/PolicyConstants.cs b/SchengenVisaApi/SchengenVisaApi/Common/PolicyConstants.cs index 073a2ed..111b5bc 100644 --- a/SchengenVisaApi/SchengenVisaApi/Common/PolicyConstants.cs +++ b/SchengenVisaApi/SchengenVisaApi/Common/PolicyConstants.cs @@ -1,12 +1,12 @@ namespace SchengenVisaApi.Common { -#pragma warning enable CS1591 +#pragma warning disable CS1591 public static class PolicyConstants { public const string AdminPolicy = "AdminPolicy"; public const string ApplicantPolicy = "ApplicantPolicy"; public const string ApprovingAuthorityPolicy = "ApprovingAuthorityPolicy"; } -#pragma warning disable CS1591 +#pragma warning enable CS1591 } diff --git a/SchengenVisaApi/SchengenVisaApi/Controllers/LocationsController.cs b/SchengenVisaApi/SchengenVisaApi/Controllers/LocationsController.cs index 494faa4..da54637 100644 --- a/SchengenVisaApi/SchengenVisaApi/Controllers/LocationsController.cs +++ b/SchengenVisaApi/SchengenVisaApi/Controllers/LocationsController.cs @@ -1,28 +1,39 @@ using ApplicationLayer.Services.Locations.RequestHandlers; using ApplicationLayer.Services.Locations.Requests; +using Domains.LocationDomain; +using Domains.Users; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SchengenVisaApi.Common; namespace SchengenVisaApi.Controllers { + /// Controller for [ApiController] [Route("countries")] public class LocationsController(ILocationRequestsHandler requestsHandler) : ControllerBase { + /// Return countries with cities from DB [HttpGet] + [ProducesResponseType>(StatusCodes.Status200OK)] public async Task GetAvailableLocations(CancellationToken cancellationToken) { return Ok(await requestsHandler.HandleGetRequestAsync(cancellationToken)); } + /// Adds country with cities to DB + /// Accessible only for [HttpPost] + [ProducesResponseType(StatusCodes.Status201Created)] + [ProducesResponseType(StatusCodes.Status400BadRequest)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] [Route("country")] [Authorize(policy: PolicyConstants.AdminPolicy)] public async Task AddCountry(AddCountryRequest request, CancellationToken cancellationToken) { await requestsHandler.AddCountryAsync(request, cancellationToken); - return Ok(); + return Created(); } } } diff --git a/SchengenVisaApi/SchengenVisaApi/Controllers/UsersController.cs b/SchengenVisaApi/SchengenVisaApi/Controllers/UsersController.cs index e3395e4..217ea54 100644 --- a/SchengenVisaApi/SchengenVisaApi/Controllers/UsersController.cs +++ b/SchengenVisaApi/SchengenVisaApi/Controllers/UsersController.cs @@ -1,17 +1,22 @@ using ApplicationLayer.Services.AuthServices.LoginService; using ApplicationLayer.Services.AuthServices.RegisterService; using ApplicationLayer.Services.AuthServices.Requests; +using Domains.Users; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SchengenVisaApi.Common; namespace SchengenVisaApi.Controllers { + /// Controller for [ApiController] [Route("auth")] public class UsersController(IRegisterService registerService, ILoginService loginService) : ControllerBase { + /// Adds applicant with user account to DB [HttpPost] + [ProducesResponseType(StatusCodes.Status201Created)] + [ProducesResponseType(StatusCodes.Status409Conflict)] [Route("applicant")] public async Task Register(RegisterApplicantRequest request, CancellationToken cancellationToken) { @@ -19,16 +24,25 @@ namespace SchengenVisaApi.Controllers return Created(); } + /// Adds approving authority with user account to DB + /// Accessible only for [HttpPost] - [Authorize(policy: PolicyConstants.AdminPolicy)] + [ProducesResponseType(StatusCodes.Status201Created)] + [ProducesResponseType(StatusCodes.Status409Conflict)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] [Route("authority")] + [Authorize(policy: PolicyConstants.AdminPolicy)] public async Task RegisterAuthority(RegisterRequest request, CancellationToken cancellationToken) { await registerService.RegisterAuthority(request, cancellationToken); return Created(); } + /// Returns JWT-token for authentication [HttpGet] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] public async Task Login(string email, string password, CancellationToken cancellationToken) { var result = await loginService.LoginAsync(new UserLoginRequest(email, password), cancellationToken); diff --git a/SchengenVisaApi/SchengenVisaApi/Controllers/VisaApplicationController.cs b/SchengenVisaApi/SchengenVisaApi/Controllers/VisaApplicationController.cs index 1bab610..31ac32a 100644 --- a/SchengenVisaApi/SchengenVisaApi/Controllers/VisaApplicationController.cs +++ b/SchengenVisaApi/SchengenVisaApi/Controllers/VisaApplicationController.cs @@ -1,17 +1,27 @@ using System.Security.Claims; using ApplicationLayer.Services.VisaApplications.Handlers; +using ApplicationLayer.Services.VisaApplications.Models; using ApplicationLayer.Services.VisaApplications.Requests; +using Domains.Users; +using Domains.VisaApplicationDomain; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SchengenVisaApi.Common; namespace SchengenVisaApi.Controllers; +/// Controller for [ApiController] [Route("[controller]")] public class VisaApplicationController(IVisaApplicationRequestsHandler visaApplicationRequestsHandler) : ControllerBase { + //todo should return only pending applications + /// Returns all from DB + /// Accessible only for [HttpGet] + [ProducesResponseType>(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] [Authorize(policy: PolicyConstants.ApprovingAuthorityPolicy)] public async Task Get(CancellationToken cancellationToken) { @@ -19,7 +29,13 @@ public class VisaApplicationController(IVisaApplicationRequestsHandler visaAppli return Ok(result); } + /// Returns all of one applicant + /// Returns applications for authorized applicant [HttpGet] + [ProducesResponseType>(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status404NotFound)] [Authorize(policy: PolicyConstants.ApplicantPolicy)] [Route("OfApplicant")] public async Task GetForApplicant(CancellationToken cancellationToken) @@ -29,7 +45,13 @@ public class VisaApplicationController(IVisaApplicationRequestsHandler visaAppli return Ok(result); } + /// Adds new to DB + /// Adds application for authorized applicant [HttpPost] + [ProducesResponseType(StatusCodes.Status201Created)] + [ProducesResponseType(StatusCodes.Status403Forbidden)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status404NotFound)] [Authorize(policy: PolicyConstants.ApplicantPolicy)] public async Task Create(VisaApplicationCreateRequest request, CancellationToken cancellationToken) {