Merge pull request 'Add physical delete' (#6) from feature/add-physical-delete into development

Reviewed-on: #6
Reviewed-by: efrain_marin <efrain.marin@agilewebs.com>
Reviewed-by: Sergio Matías <sergio.matias@agilewebs.com>
This commit is contained in:
2025-08-08 21:10:13 +00:00
7 changed files with 136 additions and 0 deletions

View File

@@ -2,6 +2,7 @@
using Core.Adapters.Lib; using Core.Adapters.Lib;
using Core.Inventory.External.Clients.Inventory; using Core.Inventory.External.Clients.Inventory;
using Core.Inventory.External.Clients.Inventory.Requests.Tag; using Core.Inventory.External.Clients.Inventory.Requests.Tag;
using Core.Inventory.External.Clients.Inventory.Requests.TagType;
using Lib.Architecture.BuildingBlocks; using Lib.Architecture.BuildingBlocks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@@ -257,5 +258,34 @@ namespace Core.Inventory.BFF.API.Controllers
throw; throw;
} }
} }
/// <summary>
/// Deletes a full Tag by identifier.
/// </summary>
[HttpDelete("Delete")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> DeleteTagService(DeleteTagRequest request, CancellationToken cancellationToken)
{
try
{
logger.LogInformation($"{nameof(DeleteTagService)} - Request received - Payload: {JsonSerializer.Serialize(request)}");
if (request == null) return BadRequest("Invalid Tag object");
if (string.IsNullOrEmpty(request.Id)) return BadRequest("Invalid Tag identifier");
return await Handle(() => inventoryServiceClient.DeleteTagService(request, cancellationToken)).ConfigureAwait(false);
}
catch (Exception ex)
{
logger.LogError($"{nameof(DeleteTagService)} - An Error Occurred- {ex.Message} - {ex.InnerException} - {ex.StackTrace} - with payload {JsonSerializer.Serialize(request)}");
throw;
}
}
} }
} }

View File

@@ -2,6 +2,7 @@
using Core.Adapters.Lib; using Core.Adapters.Lib;
using Core.Inventory.External.Clients.Inventory; using Core.Inventory.External.Clients.Inventory;
using Core.Inventory.External.Clients.Inventory.Requests.TagOverride; using Core.Inventory.External.Clients.Inventory.Requests.TagOverride;
using Core.Inventory.External.Clients.Inventory.Requests.TagType;
using Lib.Architecture.BuildingBlocks; using Lib.Architecture.BuildingBlocks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@@ -202,6 +203,33 @@ namespace Core.Inventory.BFF.API.Controllers
} }
} }
/// <summary>
/// Deletes a full TagOverride by identifier.
/// </summary>
[HttpDelete("Delete")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> DeleteTagOverrideService(DeleteTagOverrideRequest request, CancellationToken cancellationToken)
{
try
{
logger.LogInformation($"{nameof(DeleteTagOverrideService)} - Request received - Payload: {JsonSerializer.Serialize(request)}");
if (request == null) return BadRequest("Invalid TagOverride object");
if (string.IsNullOrEmpty(request.Id)) return BadRequest("Invalid TagOverride identifier");
return await Handle(() => inventoryServiceClient.DeleteTagOverrideService(request, cancellationToken)).ConfigureAwait(false);
}
catch (Exception ex)
{
logger.LogError($"{nameof(DeleteTagOverrideService)} - An Error Occurred- {ex.Message} - {ex.InnerException} - {ex.StackTrace} - with payload {JsonSerializer.Serialize(request)}");
throw;
}
}
} }
} }

View File

@@ -198,6 +198,33 @@ namespace Core.Inventory.BFF.API.Controllers
} }
} }
/// <summary>
/// Deletes a full TagType by identifier.
/// </summary>
[HttpDelete("Delete")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> DeleteTagTypeService(DeleteTagTypeRequest request, CancellationToken cancellationToken)
{
try
{
logger.LogInformation($"{nameof(DeleteTagTypeService)} - Request received - Payload: {JsonSerializer.Serialize(request)}");
if (request == null) return BadRequest("Invalid TagType object");
if (string.IsNullOrEmpty(request.Id)) return BadRequest("Invalid TagType identifier");
return await Handle(() => inventoryServiceClient.DeleteTagTypeService(request, cancellationToken)).ConfigureAwait(false);
}
catch (Exception ex)
{
logger.LogError($"{nameof(DeleteTagTypeService)} - An Error Occurred- {ex.Message} - {ex.InnerException} - {ex.StackTrace} - with payload {JsonSerializer.Serialize(request)}");
throw;
}
}
} }
} }

View File

@@ -76,6 +76,9 @@ namespace Core.Inventory.External.Clients.Inventory
[Patch("/api/v1/TagType/ChangeStatus")] [Patch("/api/v1/TagType/ChangeStatus")]
Task<ApiResponse<TagTypeAdapter>> ChangeTagTypeStatusService([Header("TrackingId")][Body] ChangeTagTypeStatusRequest request, CancellationToken cancellationToken = default); Task<ApiResponse<TagTypeAdapter>> ChangeTagTypeStatusService([Header("TrackingId")][Body] ChangeTagTypeStatusRequest request, CancellationToken cancellationToken = default);
[Delete("/api/v1/TagType/Delete")]
Task<ApiResponse<TagTypeAdapter>> DeleteTagTypeService([Header("TrackingId")][Body] DeleteTagTypeRequest request, CancellationToken cancellationToken = default);
#endregion #endregion
#region Tag #region Tag
@@ -104,6 +107,9 @@ namespace Core.Inventory.External.Clients.Inventory
[Delete("/api/v1/Tag/RemoveParentTag")] [Delete("/api/v1/Tag/RemoveParentTag")]
Task<ApiResponse<TagAdapter>> RemoveParentTagAsync([Header("TrackingId")][Body] RemoveParentTagFromTag request, CancellationToken cancellationToken = default); Task<ApiResponse<TagAdapter>> RemoveParentTagAsync([Header("TrackingId")][Body] RemoveParentTagFromTag request, CancellationToken cancellationToken = default);
[Delete("/api/v1/Tag/Delete")]
Task<ApiResponse<TagAdapter>> DeleteTagService([Header("TrackingId")][Body] DeleteTagRequest request, CancellationToken cancellationToken = default);
#endregion #endregion
#region TagOverride #region TagOverride
@@ -126,6 +132,9 @@ namespace Core.Inventory.External.Clients.Inventory
[Patch("/api/v1/TagOverride/ChangeStatus")] [Patch("/api/v1/TagOverride/ChangeStatus")]
Task<ApiResponse<TagOverrideAdapter>> ChangeTagOverrideStatusService([Header("TrackingId")][Body] ChangeTagOverrideStatusRequest request, CancellationToken cancellationToken = default); Task<ApiResponse<TagOverrideAdapter>> ChangeTagOverrideStatusService([Header("TrackingId")][Body] ChangeTagOverrideStatusRequest request, CancellationToken cancellationToken = default);
[Delete("/api/v1/TagOverride/Delete")]
Task<ApiResponse<TagOverrideAdapter>> DeleteTagOverrideService([Header("TrackingId")][Body] DeleteTagOverrideRequest request, CancellationToken cancellationToken = default);
#endregion #endregion
#region Product #region Product

View File

@@ -0,0 +1,14 @@
using Lib.Architecture.BuildingBlocks;
namespace Core.Inventory.External.Clients.Inventory.Requests.Tag
{
public class DeleteTagRequest : Notificator, ICommand
{
public string Id { get; set; } = null!;
public bool Validate()
{
return Id != null;
}
}
}

View File

@@ -0,0 +1,14 @@
using Lib.Architecture.BuildingBlocks;
namespace Core.Inventory.External.Clients.Inventory.Requests.TagOverride
{
public class DeleteTagOverrideRequest : Notificator, ICommand
{
public string Id { get; set; } = null!;
public bool Validate()
{
return Id != null;
}
}
}

View File

@@ -0,0 +1,14 @@
using Lib.Architecture.BuildingBlocks;
namespace Core.Inventory.External.Clients.Inventory.Requests.TagType
{
public class DeleteTagTypeRequest : Notificator, ICommand
{
public string Id { get; set; } = null!;
public bool Validate()
{
return Id != null;
}
}
}