diff --git a/OneBus-Db.pdf b/OneBus-Db.pdf index b38697c..26447ec 100644 Binary files a/OneBus-Db.pdf and b/OneBus-Db.pdf differ diff --git a/OneBus.API/Controllers/LineAddressController.cs b/OneBus.API/Controllers/LineAddressController.cs index fab0eac..de8593a 100644 --- a/OneBus.API/Controllers/LineAddressController.cs +++ b/OneBus.API/Controllers/LineAddressController.cs @@ -1,10 +1,15 @@ -using OneBus.Application.DTOs.LineAddress; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.LineAddress; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Endereços da Linha")] public class LineAddressController : BaseController { public LineAddressController( @@ -12,5 +17,116 @@ public LineAddressController( : base(baseService) { } + + /// + /// Cadastrar novo endereço de linha + /// + /// + /// POST de Endereço Linha + /// + /// Campos para cadastrar endereço de linha + /// + /// Endereço de Linha cadastrado + /// Endereço de Linha cadastrado com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateLineAddressDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar endereço de linha + /// + /// + /// PUT de Endereço Linha + /// + /// Id de endereço de linha + /// Campos para atualizar endereço de linha + /// + /// Endereço de Linha atualizado + /// Endereço de Linha atualizado com sucesso + /// Validação encontrou erros + /// Endereço de Linha não encontrado + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateLineAddressDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar endereço de linha + /// + /// + /// PUT para habilitar endereço de linha + /// + /// Id de endereço de linha + /// + /// Endereço de Linha habilitado + /// Endereço de Linha habilitado com sucesso + /// Endereço de Linha não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar endereço de linha + /// + /// + /// DELETE de Endereço Linha + /// + /// Id de endereço de linha + /// + /// Endereço de Linha deletado + /// Endereço de Linha deletado com sucesso + /// Endereço de Linha não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter endereços de linha paginados e filtrados + /// + /// + /// GET de Endereços Linha + /// + /// Filtros para aplicar + /// + /// Endereços de Linha paginados e filtrados + /// Endereços de Linha paginados e filtrados com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter endereço de linha por id + /// + /// + /// GET pelo id de endereço de linha + /// + /// Id de endereço de linha + /// + /// Endereço de Linha encontrado + /// Endereço de Linha encontrado com sucesso + /// Endereço de Linha não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/LineController.cs b/OneBus.API/Controllers/LineController.cs index be2828d..dac4dcb 100644 --- a/OneBus.API/Controllers/LineController.cs +++ b/OneBus.API/Controllers/LineController.cs @@ -1,16 +1,132 @@ -using OneBus.Application.DTOs.Line; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.Line; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Linhas")] public class LineController : BaseController { public LineController( - IBaseService baseService) + IBaseService baseService) : base(baseService) { } + + /// + /// Cadastrar nova linha + /// + /// + /// POST de Linha + /// + /// Campos para cadastrar linha + /// + /// Linha cadastrada + /// Linha cadastrada com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateLineDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar linha + /// + /// + /// PUT de Linha + /// + /// Id da linha + /// Campos para atualizar linha + /// + /// Linha atualizada + /// Linha atualizada com sucesso + /// Validação encontrou erros + /// Linha não encontrada + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateLineDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar linha + /// + /// + /// PUT para habilitar linha + /// + /// Id da linha + /// + /// Linha habilitada + /// Linha habilitada com sucesso + /// Linha não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar linha + /// + /// + /// DELETE de Linha + /// + /// Id da linha + /// + /// Linha deletada + /// Linha deletada com sucesso + /// Linha não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter linhas paginadas e filtradas + /// + /// + /// GET de Linhas + /// + /// Filtros para aplicar + /// + /// Linhas paginadas e filtradas + /// Linhas paginadas e filtradas com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter linha por id + /// + /// + /// GET pelo id da linha + /// + /// Id da linha + /// + /// Linha encontrada + /// Linha encontrada com sucesso + /// Linha não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/LineTariffAuditController.cs b/OneBus.API/Controllers/LineTariffAuditController.cs index d5a047c..c5419dd 100644 --- a/OneBus.API/Controllers/LineTariffAuditController.cs +++ b/OneBus.API/Controllers/LineTariffAuditController.cs @@ -1,10 +1,15 @@ -using OneBus.Application.DTOs.LineTariffAudit; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.LineTariffAudit; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Auditoria de Tarifas da Linha")] public class LineTariffAuditController : BaseController { public LineTariffAuditController( @@ -12,5 +17,116 @@ public LineTariffAuditController( : base(baseService) { } + + /// + /// Cadastrar nova auditoria de tarifa de linha + /// + /// + /// POST de Auditoria de Tarifa de Linha + /// + /// Campos para cadastrar auditoria de tarifa de linha + /// + /// Auditoria de Tarifa de Linha cadastrada + /// Auditoria de Tarifa de Linha cadastrada com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateLineTariffAuditDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar auditoria de tarifa de linha + /// + /// + /// PUT de Auditoria de Tarifa de Linha + /// + /// Id da auditoria de tarifa de linha + /// Campos para atualizar auditoria de tarifa de linha + /// + /// Auditoria de Tarifa de Linha atualizada + /// Auditoria de Tarifa de Linha atualizada com sucesso + /// Validação encontrou erros + /// Auditoria de Tarifa de Linha não encontrada + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateLineTariffAuditDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar auditoria de tarifa de linha + /// + /// + /// PUT para habilitar auditoria de tarifa de linha + /// + /// Id da auditoria de tarifa de linha + /// + /// Auditoria de Tarifa de Linha habilitada + /// Auditoria de Tarifa de Linha habilitada com sucesso + /// Auditoria de Tarifa de Linha não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar auditoria de tarifa de linha + /// + /// + /// DELETE de Auditoria de Tarifa de Linha + /// + /// Id da auditoria de tarifa de linha + /// + /// Auditoria de Tarifa de Linha deletada + /// Auditoria de Tarifa de Linha deletada com sucesso + /// Auditoria de Tarifa de Linha não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter auditoria de tarifas de linha paginadas e filtradas + /// + /// + /// GET de Auditoria de Tarifas de Linha + /// + /// Filtros para aplicar + /// + /// Auditoria de Tarifas de Linha paginadas e filtradas + /// Auditoria de Tarifas de Linha paginadas e filtradas com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter auditoria de tarifa de linha por id + /// + /// + /// GET pelo id da auditoria de tarifa de linha + /// + /// Id da auditoria de tarifa de linha + /// + /// Auditoria de Tarifa de Linha encontrada + /// Auditoria de Tarifa de Linha encontrada com sucesso + /// Auditoria de Tarifa de Linha não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/LineTariffController.cs b/OneBus.API/Controllers/LineTariffController.cs index be05c36..e9e094e 100644 --- a/OneBus.API/Controllers/LineTariffController.cs +++ b/OneBus.API/Controllers/LineTariffController.cs @@ -1,10 +1,15 @@ -using OneBus.Application.DTOs.LineTariff; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.LineTariff; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Tarifas da Linha")] public class LineTariffController : BaseController { public LineTariffController( @@ -12,5 +17,116 @@ public LineTariffController( : base(baseService) { } + + /// + /// Cadastrar nova tarifa de linha + /// + /// + /// POST de Tarifa de Linha + /// + /// Campos para cadastrar tarifa de linha + /// + /// Tarifa de Linha cadastrada + /// Tarifa de Linha cadastrada com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateLineTariffDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar tarifa de linha + /// + /// + /// PUT de Tarifa de Linha + /// + /// Id da tarifa de linha + /// Campos para atualizar tarifa de linha + /// + /// Tarifa de Linha atualizada + /// Tarifa de Linha atualizada com sucesso + /// Validação encontrou erros + /// Tarifa de Linha não encontrada + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateLineTariffDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar tarifa de linha + /// + /// + /// PUT para habilitar tarifa de linha + /// + /// Id da tarifa de linha + /// + /// Tarifa de Linha habilitada + /// Tarifa de Linha habilitada com sucesso + /// Tarifa de Linha não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar tarifa de linha + /// + /// + /// DELETE de Tarifa de Linha + /// + /// Id da tarifa de linha + /// + /// Tarifa de Linha deletada + /// Tarifa de Linha deletada com sucesso + /// Tarifa de Linha não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter tarifas de linha paginadas e filtradas + /// + /// + /// GET de Tarifas de Linha + /// + /// Filtros para aplicar + /// + /// Tarifas de Linha paginadas e filtradas + /// Tarifas de Linha paginadas e filtradas com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter tarifa de linha por id + /// + /// + /// GET pelo id da tarifa de linha + /// + /// Id da tarifa de linha + /// + /// Tarifa de Linha encontrada + /// Tarifa de Linha encontrada com sucesso + /// Tarifa de Linha não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/LineTimeController.cs b/OneBus.API/Controllers/LineTimeController.cs index 550773e..1f38ae1 100644 --- a/OneBus.API/Controllers/LineTimeController.cs +++ b/OneBus.API/Controllers/LineTimeController.cs @@ -1,10 +1,15 @@ -using OneBus.Application.DTOs.LineTime; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.LineTime; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Horários da Linha")] public class LineTimeController : BaseController { public LineTimeController( @@ -12,5 +17,116 @@ public LineTimeController( : base(baseService) { } + + /// + /// Cadastrar novo horário de linha + /// + /// + /// POST de Horário de Linha + /// + /// Campos para cadastrar horário de linha + /// + /// Horário de Linha cadastrado + /// Horário de Linha cadastrado com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateLineTimeDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar horário de linha + /// + /// + /// PUT de Horário de Linha + /// + /// Id do horário de linha + /// Campos para atualizar horário de linha + /// + /// Horário de Linha atualizado + /// Horário de Linha atualizado com sucesso + /// Validação encontrou erros + /// Horário de Linha não encontrado + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateLineTimeDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar horário de linha + /// + /// + /// PUT para habilitar horário de linha + /// + /// Id do horário de linha + /// + /// Horário de Linha habilitado + /// Horário de Linha habilitado com sucesso + /// Horário de Linha não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar horário de linha + /// + /// + /// DELETE de Horário de Linha + /// + /// Id do horário de linha + /// + /// Horário de Linha deletado + /// Horário de Linha deletado com sucesso + /// Horário de Linha não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter horários de linha paginados e filtrados + /// + /// + /// GET de Horários de Linha + /// + /// Filtros para aplicar + /// + /// Horários de Linha paginados e filtrados + /// Horários de Linha paginados e filtrados com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter horário de linha por id + /// + /// + /// GET pelo id do horário de linha + /// + /// Id do horário de linha + /// + /// Horário de Linha encontrado + /// Horário de Linha encontrado com sucesso + /// Horário de Linha não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/MaintenanceController.cs b/OneBus.API/Controllers/MaintenanceController.cs index 0c35d8c..eac1847 100644 --- a/OneBus.API/Controllers/MaintenanceController.cs +++ b/OneBus.API/Controllers/MaintenanceController.cs @@ -1,10 +1,15 @@ -using OneBus.Application.DTOs.Maintenance; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.Maintenance; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Manutenções")] public class MaintenanceController : BaseController { public MaintenanceController( @@ -12,5 +17,116 @@ public MaintenanceController( : base(baseService) { } + + /// + /// Cadastrar nova manutenção + /// + /// + /// POST de Manutenção + /// + /// Campos para cadastrar manutenção + /// + /// Manutenção cadastrada + /// Manutenção cadastrada com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateMaintenanceDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar manutenção + /// + /// + /// PUT de Manutenção + /// + /// Id da manutenção + /// Campos para atualizar manutenção + /// + /// Manutenção atualizada + /// Manutenção atualizada com sucesso + /// Validação encontrou erros + /// Manutenção não encontrada + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateMaintenanceDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar manutenção + /// + /// + /// PUT para habilitar manutenção + /// + /// Id da manutenção + /// + /// Manutenção habilitada + /// Manutenção habilitada com sucesso + /// Manutenção não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar manutenção + /// + /// + /// DELETE de Manutenção + /// + /// Id da manutenção + /// + /// Manutenção deletada + /// Manutenção deletada com sucesso + /// Manutenção não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter manutenções paginadas e filtradas + /// + /// + /// GET de Manutenções + /// + /// Filtros para aplicar + /// + /// Manutenções paginadas e filtradas + /// Manutenções paginadas e filtradas com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter manutenção por id + /// + /// + /// GET pelo id da manutenção + /// + /// Id da manutenção + /// + /// Manutenção encontrada + /// Manutenção encontrada com sucesso + /// Manutenção não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/StopController.cs b/OneBus.API/Controllers/StopController.cs index 0b30911..f5395fb 100644 --- a/OneBus.API/Controllers/StopController.cs +++ b/OneBus.API/Controllers/StopController.cs @@ -1,10 +1,15 @@ -using OneBus.Application.DTOs.Stop; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.Stop; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Paradas")] public class StopController : BaseController { public StopController( @@ -12,5 +17,116 @@ public StopController( : base(baseService) { } + + /// + /// Cadastrar nova parada + /// + /// + /// POST de Parada + /// + /// Campos para cadastrar parada + /// + /// Parada cadastrada + /// Parada cadastrada com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateStopDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar parada + /// + /// + /// PUT de Parada + /// + /// Id da parada + /// Campos para atualizar parada + /// + /// Parada atualizada + /// Parada atualizada com sucesso + /// Validação encontrou erros + /// Parada não encontrada + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateStopDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar parada + /// + /// + /// PUT para habilitar parada + /// + /// Id da parada + /// + /// Parada habilitada + /// Parada habilitada com sucesso + /// Parada não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar parada + /// + /// + /// DELETE de Parada + /// + /// Id da parada + /// + /// Parada deletada + /// Parada deletada com sucesso + /// Parada não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter paradas paginadas e filtradas + /// + /// + /// GET de Paradas + /// + /// Filtros para aplicar + /// + /// Paradas paginadas e filtradas + /// Paradas paginadas e filtradas com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter parada por id + /// + /// + /// GET pelo id da parada + /// + /// Id da parada + /// + /// Parada encontrada + /// Parada encontrada com sucesso + /// Parada não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/StopTimeController.cs b/OneBus.API/Controllers/StopTimeController.cs index efa3cc1..bd06f9b 100644 --- a/OneBus.API/Controllers/StopTimeController.cs +++ b/OneBus.API/Controllers/StopTimeController.cs @@ -1,10 +1,15 @@ -using OneBus.Application.DTOs.StopTime; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.StopTime; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Horários da Parada")] public class StopTimeController : BaseController { public StopTimeController( @@ -12,5 +17,116 @@ public StopTimeController( : base(baseService) { } + + /// + /// Cadastrar novo horário de parada + /// + /// + /// POST de Horário de Parada + /// + /// Campos para cadastrar horário de parada + /// + /// Horário de Parada cadastrado + /// Horário de Parada cadastrado com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateStopTimeDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar horário de parada + /// + /// + /// PUT de Horário de Parada + /// + /// Id do horário de parada + /// Campos para atualizar horário de parada + /// + /// Horário de Parada atualizado + /// Horário de Parada atualizado com sucesso + /// Validação encontrou erros + /// Horário de Parada não encontrado + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateStopTimeDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar horário de parada + /// + /// + /// PUT para habilitar horário de parada + /// + /// Id do horário de parada + /// + /// Horário de Parada habilitado + /// Horário de Parada habilitado com sucesso + /// Horário de Parada não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar horário de parada + /// + /// + /// DELETE de Horário de Parada + /// + /// Id do horário de parada + /// + /// Horário de Parada deletado + /// Horário de Parada deletado com sucesso + /// Horário de Parada não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter horários de parada paginados e filtrados + /// + /// + /// GET de Horários de Parada + /// + /// Filtros para aplicar + /// + /// Horários de Parada paginados e filtrados + /// Horários de Parada paginados e filtrados com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter horário de parada por id + /// + /// + /// GET pelo id do horário de parada + /// + /// Id do horário de parada + /// + /// Horário de Parada encontrado + /// Horário de Parada encontrado com sucesso + /// Horário de Parada não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/UserController.cs b/OneBus.API/Controllers/UserController.cs index db17e83..5022cbf 100644 --- a/OneBus.API/Controllers/UserController.cs +++ b/OneBus.API/Controllers/UserController.cs @@ -4,11 +4,15 @@ using OneBus.Application.DTOs.Login; using OneBus.Application.DTOs.User; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Usuários")] public class UserController : BaseController { public UserController( @@ -18,17 +22,131 @@ public UserController( } /// - /// + /// Efetuar login /// + /// + /// POST de Login + /// /// /// - /// - [HttpPost("login")] - [AllowAnonymous] + /// Usuário autenticado [EnableRateLimiting("login")] - public async Task LoginAsync([FromBody] LoginDTO login, CancellationToken cancellationToken = default) + [AllowAnonymous] + [HttpPost("login")] + public Task LoginAsync([FromBody] LoginDTO login, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } + + /// + /// Cadastrar novo usuário + /// + /// + /// POST de Usuário + /// + /// Campos para cadastrar usuário + /// + /// Usuário cadastrado + /// Usuário cadastrado com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateUserDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar usuário + /// + /// + /// PUT de Usuário + /// + /// Id do usuário + /// Campos para atualizar usuário + /// + /// Usuário atualizado + /// Usuário atualizado com sucesso + /// Validação encontrou erros + /// Usuário não encontrado + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateUserDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar usuário + /// + /// + /// PUT para habilitar usuário + /// + /// Id do usuário + /// + /// Usuário habilitado + /// Usuário habilitado com sucesso + /// Usuário não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar usuário + /// + /// + /// DELETE de Usuário + /// + /// Id do usuário + /// + /// Usuário deletado + /// Usuário deletado com sucesso + /// Usuário não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter usuários paginados e filtrados + /// + /// + /// GET de Usuários + /// + /// Filtros para aplicar + /// + /// Usuários paginados e filtrados + /// Usuários paginados e filtrados com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter usuário por id + /// + /// + /// GET pelo id de usuário + /// + /// Id do usuário + /// + /// Usuário encontrado + /// Usuário encontrado com sucesso + /// Usuário não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/VehicleController.cs b/OneBus.API/Controllers/VehicleController.cs index f81ab5c..a561f49 100644 --- a/OneBus.API/Controllers/VehicleController.cs +++ b/OneBus.API/Controllers/VehicleController.cs @@ -1,10 +1,15 @@ -using OneBus.Application.DTOs.Vehicle; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.Vehicle; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Veículos")] public class VehicleController : BaseController { public VehicleController( @@ -12,5 +17,116 @@ public VehicleController( : base(baseService) { } + + /// + /// Cadastrar novo veículo + /// + /// + /// POST de Veículo + /// + /// Campos para cadastrar veículo + /// + /// Veículo cadastrado + /// Veículo cadastrado com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateVehicleDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar veículo + /// + /// + /// PUT de Veículo + /// + /// Id do veículo + /// Campos para atualizar veículo + /// + /// Veículo atualizado + /// Veículo atualizado com sucesso + /// Validação encontrou erros + /// Veículo não encontrado + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateVehicleDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar veículo + /// + /// + /// PUT para habilitar veículo + /// + /// Id do veículo + /// + /// Veículo habilitado + /// Veículo habilitado com sucesso + /// Veículo não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar veículo + /// + /// + /// DELETE de Veículo + /// + /// Id do veículo + /// + /// Veículo deletado + /// Veículo deletado com sucesso + /// Veículo não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter veículos paginados e filtrados + /// + /// + /// GET de Veículos + /// + /// Filtros para aplicar + /// + /// Veículos paginados e filtrados + /// Veículos paginados e filtrados com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter veículo por id + /// + /// + /// GET pelo id de veículo + /// + /// Id do veículo + /// + /// Veículo encontrado + /// Veículo encontrado com sucesso + /// Veículo não encontrado + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/VehicleGarageController.cs b/OneBus.API/Controllers/VehicleGarageController.cs index 2c6a6b8..363504e 100644 --- a/OneBus.API/Controllers/VehicleGarageController.cs +++ b/OneBus.API/Controllers/VehicleGarageController.cs @@ -1,10 +1,15 @@ -using OneBus.Application.DTOs.VehicleGarage; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.VehicleGarage; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Garagem de Veículos")] public class VehicleGarageController : BaseController { public VehicleGarageController( @@ -12,5 +17,116 @@ public VehicleGarageController( : base(baseService) { } + + /// + /// Cadastrar nova garagem de veículo + /// + /// + /// POST de Garagem de Veículo + /// + /// Campos para cadastrar garagem de veículo + /// + /// Garagem de Veículo cadastrada + /// Garagem de Veículo cadastrada com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateVehicleGarageDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar garagem de veículo + /// + /// + /// PUT de Garagem de Veículo + /// + /// Id da garagem de veículo + /// Campos para atualizar garagem de veículo + /// + /// Garagem de Veículo atualizada + /// Garagem de Veículo atualizada com sucesso + /// Validação encontrou erros + /// Garagem de Veículo não encontrada + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateVehicleGarageDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar garagem de veículo + /// + /// + /// PUT para habilitar garagem de veículo + /// + /// Id da garagem de veículo + /// + /// Garagem de Veículo habilitada + /// Garagem de Veículo habilitada com sucesso + /// Garagem de Veículo não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar garagem de veículo + /// + /// + /// DELETE de Garagem de Veículo + /// + /// Id da garagem de veículo + /// + /// Garagem de Veículo deletada + /// Garagem de Veículo deletada com sucesso + /// Garagem de Veículo não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter garagem de veículos paginadas e filtradas + /// + /// + /// GET de Garagem de Veículos + /// + /// Filtros para aplicar + /// + /// Garagem de Veículos paginadas e filtradas + /// Garagem de Veículos paginadas e filtradas com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter garagem de veículo por id + /// + /// + /// GET pelo id da garagem de veículo + /// + /// Id da garagem de veículo + /// + /// Garagem de Veículo encontrada + /// Garagem de Veículo encontrada com sucesso + /// Garagem de Veículo não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } } diff --git a/OneBus.API/Controllers/VehicleOperationController.cs b/OneBus.API/Controllers/VehicleOperationController.cs index d492a54..8bab7c5 100644 --- a/OneBus.API/Controllers/VehicleOperationController.cs +++ b/OneBus.API/Controllers/VehicleOperationController.cs @@ -1,10 +1,15 @@ -using OneBus.Application.DTOs.VehicleOperation; +using Microsoft.AspNetCore.Mvc; +using OneBus.Application.DTOs.VehicleOperation; using OneBus.Application.Interfaces.Services; +using OneBus.Domain.Commons; +using OneBus.Domain.Commons.Result; using OneBus.Domain.Entities; using OneBus.Domain.Filters; +using Swashbuckle.AspNetCore.Annotations; namespace OneBus.API.Controllers { + [SwaggerTag("Controlador responsável por gerenciar Operações de Veículos")] public class VehicleOperationController : BaseController { public VehicleOperationController( @@ -12,5 +17,116 @@ public VehicleOperationController( : base(baseService) { } + + /// + /// Cadastrar nova operação de veículo + /// + /// + /// POST de Operação de Veículo + /// + /// Campos para cadastrar operação de veículo + /// + /// Operação de Veículo cadastrada + /// Operação de Veículo cadastrada com sucesso + /// Validação encontrou erros + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + public override Task CreateAsync([FromBody] CreateVehicleOperationDTO createDTO, CancellationToken cancellationToken = default) + { + return base.CreateAsync(createDTO, cancellationToken); + } + + /// + /// Atualizar operação de veículo + /// + /// + /// PUT de Operação de Veículo + /// + /// Id da operação de veículo + /// Campos para atualizar operação de veículo + /// + /// Operação de Veículo atualizada + /// Operação de Veículo atualizada com sucesso + /// Validação encontrou erros + /// Operação de Veículo não encontrada + /// Conflito entre ids + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(InvalidResult), StatusCodes.Status422UnprocessableEntity)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + [ProducesResponseType(typeof(ConflictResult), StatusCodes.Status409Conflict)] + public override Task UpdateAsync([FromRoute] ulong id, [FromBody] UpdateVehicleOperationDTO updateDTO, CancellationToken cancellationToken = default) + { + return base.UpdateAsync(id, updateDTO, cancellationToken); + } + + /// + /// Habilitar operação de veículo + /// + /// + /// PUT para habilitar operação de veículo + /// + /// Id da operação de veículo + /// + /// Operação de Veículo habilitada + /// Operação de Veículo habilitada com sucesso + /// Operação de Veículo não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task EnableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.EnableAsync(id, cancellationToken); + } + + /// + /// Desabilitar operação de veículo + /// + /// + /// DELETE de Operação de Veículo + /// + /// Id da operação de veículo + /// + /// Operação de Veículo deletada + /// Operação de Veículo deletada com sucesso + /// Operação de Veículo não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task DisableAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.DisableAsync(id, cancellationToken); + } + + /// + /// Obter operações de veículos paginadas e filtradas + /// + /// + /// GET de Operações de Veículos + /// + /// Filtros para aplicar + /// + /// Operações de Veículos paginadas e filtradas + /// Operações de Veículos paginadas e filtradas com sucesso + [ProducesResponseType(typeof(SuccessResult>), StatusCodes.Status200OK)] + public override Task GetPaginedAsync([FromQuery] BaseFilter filter, CancellationToken cancellationToken = default) + { + return base.GetPaginedAsync(filter, cancellationToken); + } + + /// + /// Obter operação de veículo por id + /// + /// + /// GET pelo id da operação de veículo + /// + /// Id da operação de veículo + /// + /// Operação de Veículo encontrada + /// Operação de Veículo encontrada com sucesso + /// Operação de Veículo não encontrada + [ProducesResponseType(typeof(SuccessResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(NotFoundResult), StatusCodes.Status404NotFound)] + public override Task GetByIdAsync([FromRoute] ulong id, CancellationToken cancellationToken = default) + { + return base.GetByIdAsync(id, cancellationToken); + } } }