Skip to content

Commit

Permalink
[Products management][Duy] Fix bugs when updating products
Browse files Browse the repository at this point in the history
  • Loading branch information
duykasama committed Feb 20, 2024
1 parent 3ab4f82 commit 268d329
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 4 deletions.
2 changes: 2 additions & 0 deletions Domus.Domain/Dtos/Products/DtoProductPrice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ namespace Domus.Domain.Dtos.Products;

public class DtoProductPrice
{
public Guid Id { get; set; }

public double Price { get; set; }

public string MonetaryUnit { get; set; } = null!;
Expand Down
46 changes: 44 additions & 2 deletions Domus.Service/Implementations/ProductService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,51 @@ public async Task<ServiceActionResult> UpdateProduct(UpdateProductRequest reques
{
if (!product.ProductDetails.Any(pd => !pd.IsDeleted && pd.Id == productDetail.Id)) continue;

var detail = product.ProductDetails.First(pd => !pd.IsDeleted && pd.Id == productDetail.Id);
var detail = product.ProductDetails.FirstOrDefault(pd => !pd.IsDeleted && pd.Id == productDetail.Id);

if (detail == null) continue;

product.ProductDetails.Remove(detail);
product.ProductDetails.Add(_mapper.Map<ProductDetail>(productDetail));
foreach (var attributeValue in productDetail.ProductAttributeValues)
{
if (attributeValue.AttributeId == default)
{
detail.ProductAttributeValues.Add(_mapper.Map<ProductAttributeValue>(attributeValue));
}
else
{
var attr = detail.ProductAttributeValues.FirstOrDefault(pav =>
pav.ProductAttributeId == attributeValue.AttributeId);

if (attr == null) continue;

detail.ProductAttributeValues.Remove(attr);
var updatedAttr = _mapper.Map<ProductAttributeValue>(attributeValue);
detail.ProductAttributeValues.Add(updatedAttr);
}
}

foreach (var productPrice in productDetail.ProductPrices)
{
if (productPrice.Id == default)
{
detail.ProductPrices.Add(_mapper.Map<ProductPrice>(productPrice));
}
else
{
var price = detail.ProductPrices.FirstOrDefault(p =>
p.Id == productPrice.Id);

if (price == null) continue;

detail.ProductPrices.Remove(price);
var updatedPrice = _mapper.Map<ProductPrice>(productPrice);
detail.ProductPrices.Add(updatedPrice);
}
}

// _mapper.Map(productDetail, detail);
product.ProductDetails.Add(detail);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace Domus.Service.Models.Requests.ProductDetails;

public class UpdateProductAttributeValueRequest
{
public Guid AttributeId { get; set; }
public Guid? AttributeId { get; set; }

[Required]
public string Name { get; set; } = null!;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

public class UpdateProductPriceRequest
{
public Guid Id { get; set; }
public Guid? Id { get; set; }

public double Price { get; set; }

Expand Down

0 comments on commit 268d329

Please sign in to comment.