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