diff --git a/AsbCloudWebApi/Controllers/CrudController.cs b/AsbCloudWebApi/Controllers/CrudController.cs index 42d5c405..69ecdb5c 100644 --- a/AsbCloudWebApi/Controllers/CrudController.cs +++ b/AsbCloudWebApi/Controllers/CrudController.cs @@ -88,10 +88,11 @@ namespace AsbCloudWebApi.Controllers /// id [HttpPost("range")] [Permission] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public virtual async Task> InsertRangeAsync([FromBody] IEnumerable values, CancellationToken token) { if (!values.Any()) - return BadRequest("there is no values to add"); + return this.ValidationBadRequest(nameof(values), "there is no values to add"); if (InsertForbidAsync is not null) foreach (var value in values) @@ -110,6 +111,7 @@ namespace AsbCloudWebApi.Controllers /// 1 - успешно отредактировано, 0 - нет [HttpPut] [Permission] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public virtual async Task> UpdateAsync([FromBody] T value, CancellationToken token) { if (UpdateForbidAsync is not null && await UpdateForbidAsync(value, token)) @@ -117,7 +119,7 @@ namespace AsbCloudWebApi.Controllers var result = await service.UpdateAsync(value, token).ConfigureAwait(false); if (result == ICrudRepository.ErrorIdNotFound) - return BadRequest($"id:{value.Id} does not exist in the db"); + return this.ValidationBadRequest(nameof(value.Id), $"id:{value.Id} does not exist"); return Ok(result); } diff --git a/AsbCloudWebApi/Controllers/PlannedTrajectoryController.cs b/AsbCloudWebApi/Controllers/PlannedTrajectoryController.cs index 54797cca..389f301c 100644 --- a/AsbCloudWebApi/Controllers/PlannedTrajectoryController.cs +++ b/AsbCloudWebApi/Controllers/PlannedTrajectoryController.cs @@ -81,6 +81,7 @@ namespace AsbCloudWebApi.Controllers /// количество успешно записанных строк в БД [HttpPost("import/{deleteBeforeImport}")] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public async Task ImportAsync(int idWell, [FromForm] IFormFileCollection files, bool deleteBeforeImport, @@ -93,10 +94,10 @@ namespace AsbCloudWebApi.Controllers token).ConfigureAwait(false)) return Forbid(); if (files.Count < 1) - return BadRequest("нет файла"); + return this.ValidationBadRequest(nameof(files), "нет файла"); var file = files[0]; if (Path.GetExtension(file.FileName).ToLower() != ".xlsx") - return BadRequest("Требуется xlsx файл."); + return this.ValidationBadRequest(nameof(files), "Требуется xlsx файл."); using Stream stream = file.OpenReadStream(); try @@ -106,7 +107,7 @@ namespace AsbCloudWebApi.Controllers } catch (FileFormatException ex) { - return BadRequest(ex.Message); + return this.ValidationBadRequest(nameof(files), ex.Message); } } diff --git a/AsbCloudWebApi/Controllers/ProcessMapController.cs b/AsbCloudWebApi/Controllers/ProcessMapController.cs index 5cb5db64..9b749340 100644 --- a/AsbCloudWebApi/Controllers/ProcessMapController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMapController.cs @@ -64,11 +64,12 @@ namespace AsbCloudWebApi.Controllers [Obsolete("use GetByUidAsync(..) instead")] [AllowAnonymous] [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public IActionResult GetByTelemetry(string uid, DateTime updateFrom, CancellationToken token) { var idWell = telemetryService.GetIdWellByTelemetryUid(uid); if (idWell is null) - return BadRequest($"Wrong uid {uid}"); + return this.ValidationBadRequest(nameof(uid), $"Wrong uid {uid}"); return Ok(Enumerable.Empty()); } @@ -82,11 +83,12 @@ namespace AsbCloudWebApi.Controllers [HttpGet("/api/telemetry/{uid}/processMap")] [AllowAnonymous] [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public async Task GetByUidAsync(string uid, DateTime updateFrom, CancellationToken token) { var idWell = telemetryService.GetIdWellByTelemetryUid(uid); if (idWell is null) - return BadRequest($"Wrong uid {uid}"); + return this.ValidationBadRequest(nameof(uid), $"Wrong uid {uid}"); var dto = await service.GetAllAsync((int)idWell, updateFrom, token); @@ -191,6 +193,7 @@ namespace AsbCloudWebApi.Controllers /// /// [HttpPost("import/{idWell}/{options}")] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public async Task ImportAsync(int idWell, int options, [Required] IFormFile file, @@ -205,7 +208,7 @@ namespace AsbCloudWebApi.Controllers return Forbid(); if (Path.GetExtension(file.FileName).ToLower() != ".xlsx") - return BadRequest("Требуется xlsx файл."); + return this.ValidationBadRequest(nameof(file), "Требуется xlsx файл."); using Stream stream = file.OpenReadStream(); @@ -219,7 +222,7 @@ namespace AsbCloudWebApi.Controllers } catch (FileFormatException ex) { - return BadRequest(ex.Message); + return this.ValidationBadRequest(nameof(file), ex.Message); } return Ok(); diff --git a/AsbCloudWebApi/Controllers/ProtobufController.cs b/AsbCloudWebApi/Controllers/ProtobufController.cs index cc60fa14..1476db25 100644 --- a/AsbCloudWebApi/Controllers/ProtobufController.cs +++ b/AsbCloudWebApi/Controllers/ProtobufController.cs @@ -59,10 +59,11 @@ namespace AsbCloudWebApi.Controllers /// [HttpGet("schema/{typeName}")] [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public IActionResult GetSchema(string typeName) { if (string.IsNullOrEmpty(typeName)) - return BadRequest("require typeName"); + return this.ValidationBadRequest(nameof(typeName), "require typeName"); var type = RuntimeTypeModel.Default .GetTypes() diff --git a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs index 2f644988..58950cba 100644 --- a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs @@ -125,6 +125,7 @@ namespace AsbCloudWebApi.Controllers.SAUB [Permission] [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")] [ProducesResponseType(StatusCodes.Status204NoContent)] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public async Task ExportAsync(int? idWell, int? idCluster, CancellationToken token) { if (idCluster is null && idWell is null) diff --git a/AsbCloudWebApi/Controllers/SAUB/MessageController.cs b/AsbCloudWebApi/Controllers/SAUB/MessageController.cs index cdac923d..81e710b3 100644 --- a/AsbCloudWebApi/Controllers/SAUB/MessageController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/MessageController.cs @@ -33,6 +33,7 @@ namespace AsbCloudWebApi.Controllers.SAUB [HttpGet] [Permission] [ProducesResponseType(typeof(PaginationContainer), (int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public async Task GetMessagesAsync( [FromRoute] int idWell, [FromQuery] MessageRequestBase request, @@ -43,7 +44,7 @@ namespace AsbCloudWebApi.Controllers.SAUB return Forbid(); if (request.Take > 1024) - return BadRequest("limit mast be less then 1024"); + return this.ValidationBadRequest(nameof(request.Take), "limit mast be less then 1024"); var requestToService = new MessageRequest(request, idWell); diff --git a/AsbCloudWebApi/Controllers/SAUB/SetpointsController.cs b/AsbCloudWebApi/Controllers/SAUB/SetpointsController.cs index a9ec26a5..996c8298 100644 --- a/AsbCloudWebApi/Controllers/SAUB/SetpointsController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/SetpointsController.cs @@ -51,6 +51,7 @@ namespace AsbCloudWebApi.Controllers.SAUB [HttpPost("api/well/{idWell}/setpoints")] [Permission] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(ValidationProblemDetails), (int)System.Net.HttpStatusCode.BadRequest)] public async Task InsertAsync(int idWell, SetpointsRequestDto setpoints, CancellationToken token) { int? idCompany = User.GetCompanyId(); @@ -70,10 +71,10 @@ namespace AsbCloudWebApi.Controllers.SAUB if (setpoints is null || setpoints.ObsolescenceSec > ObsolescenceSecMax || setpoints.ObsolescenceSec < ObsolescenceSecMin) - return BadRequest("Wrong ObsolescenceSec"); + return this.ValidationBadRequest(nameof(setpoints.ObsolescenceSec), "Wrong ObsolescenceSec"); if (!setpoints.Setpoints.Any()) - return BadRequest("Wrong setpoints count"); + return this.ValidationBadRequest(nameof(setpoints.Setpoints), "Wrong setpoints count"); var result = await setpointsService.InsertAsync(setpoints, token) .ConfigureAwait(false); diff --git a/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs b/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs index b936edd5..ba11dd9d 100644 --- a/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs +++ b/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs @@ -8,6 +8,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using System.Threading; using AsbCloudApp.Repositories; +using System.ComponentModel.DataAnnotations; namespace AsbCloudWebApi.Controllers.SAUB { @@ -47,11 +48,8 @@ namespace AsbCloudWebApi.Controllers.SAUB /// [HttpPost("{uid}")] [AllowAnonymous] - public async Task PostDataAsync(string uid, [FromBody] TelemetryWirelineRunOutBaseDto dto, CancellationToken token) + public async Task PostDataAsync(string uid, [FromBody, Required] TelemetryWirelineRunOutBaseDto dto, CancellationToken token) { - if (dto is null) - return BadRequest("Dto shouldn't be null"); - var data = await repository.AddOrUpdateAsync(uid, dto, token); var idWell = telemetryService.GetIdWellByTelemetryUid(uid); diff --git a/AsbCloudWebApi/Controllers/WellOperationController.cs b/AsbCloudWebApi/Controllers/WellOperationController.cs index f07ac92c..189b9747 100644 --- a/AsbCloudWebApi/Controllers/WellOperationController.cs +++ b/AsbCloudWebApi/Controllers/WellOperationController.cs @@ -328,11 +328,11 @@ namespace AsbCloudWebApi.Controllers return Forbid(); if (files.Count < 1) - return BadRequest("Нет файла"); + return this.ValidationBadRequest(nameof(files), "Нет файла"); var file = files[0]; if (Path.GetExtension(file.FileName).ToLower() != ".xlsx") - return BadRequest("Требуется xlsx файл."); + return this.ValidationBadRequest(nameof(files), "Требуется xlsx файл."); using Stream stream = file.OpenReadStream(); @@ -348,7 +348,7 @@ namespace AsbCloudWebApi.Controllers } catch (FileFormatException ex) { - return BadRequest(ex.Message); + return this.ValidationBadRequest(nameof(files), ex.Message); } return Ok();