5 changed files with 87 additions and 0 deletions
@ -0,0 +1,14 @@ |
|||
namespace Microsoft.eShopWeb.PublicApi.CatalogItemEndpoints |
|||
{ |
|||
public class UpdateCatalogItemRequest : BaseRequest |
|||
{ |
|||
public int Id { get; set; } |
|||
public int CatalogBrandId { get; set; } |
|||
public int CatalogTypeId { get; set; } |
|||
public string Description { get; set; } |
|||
public string Name { get; set; } |
|||
public string PictureUri { get; set; } |
|||
public decimal Price { get; set; } |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
using System; |
|||
|
|||
namespace Microsoft.eShopWeb.PublicApi.CatalogItemEndpoints |
|||
{ |
|||
public class UpdateCatalogItemResponse : BaseResponse |
|||
{ |
|||
public UpdateCatalogItemResponse(Guid correlationId) : base(correlationId) |
|||
{ |
|||
} |
|||
|
|||
public UpdateCatalogItemResponse() |
|||
{ |
|||
} |
|||
|
|||
public CatalogItemDto CatalogItem { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,54 @@ |
|||
using Ardalis.ApiEndpoints; |
|||
using Microsoft.AspNetCore.Authentication.JwtBearer; |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using Microsoft.eShopWeb.ApplicationCore.Constants; |
|||
using Microsoft.eShopWeb.ApplicationCore.Entities; |
|||
using Microsoft.eShopWeb.ApplicationCore.Interfaces; |
|||
using Swashbuckle.AspNetCore.Annotations; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Microsoft.eShopWeb.PublicApi.CatalogItemEndpoints |
|||
{ |
|||
[Authorize(Roles = AuthorizationConstants.Roles.ADMINISTRATORS, AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)] |
|||
public class Update : BaseAsyncEndpoint<UpdateCatalogItemRequest, UpdateCatalogItemResponse> |
|||
{ |
|||
private readonly IAsyncRepository<CatalogItem> _itemRepository; |
|||
|
|||
public Update(IAsyncRepository<CatalogItem> itemRepository) |
|||
{ |
|||
_itemRepository = itemRepository; |
|||
} |
|||
|
|||
[HttpPut("api/catalog-items")] |
|||
[SwaggerOperation( |
|||
Summary = "Updates a Catalog Item", |
|||
Description = "Updates a Catalog Item", |
|||
OperationId = "catalog-items.update", |
|||
Tags = new[] { "CatalogItemEndpoints" }) |
|||
] |
|||
public override async Task<ActionResult<UpdateCatalogItemResponse>> HandleAsync(UpdateCatalogItemRequest request) |
|||
{ |
|||
var response = new UpdateCatalogItemResponse(request.CorrelationId()); |
|||
|
|||
var existingItem = await _itemRepository.GetByIdAsync(request.Id); |
|||
|
|||
existingItem.Update(request.Name, request.Price); |
|||
|
|||
await _itemRepository.UpdateAsync(existingItem); |
|||
|
|||
var dto = new CatalogItemDto |
|||
{ |
|||
Id = existingItem.Id, |
|||
CatalogBrandId = existingItem.CatalogBrandId, |
|||
CatalogTypeId = existingItem.CatalogTypeId, |
|||
Description = existingItem.Description, |
|||
Name = existingItem.Name, |
|||
PictureUri = existingItem.PictureUri, |
|||
Price = existingItem.Price |
|||
}; |
|||
response.CatalogItem = dto; |
|||
return response; |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue