Это мой запрос:
Код: Выделить всё
public async Task GetProductsForUsers(int? pageNumber)
{
var productsRepository = _unitOfWork.Repository();
var upcomingProducts = productsRepository
.GetSimpleQueryable();
var takePaginatedProducts = await upcomingProducts
.Skip(pageNumber ?? 0 * PageSize)
.Take(PageSize)
.Select(product => new ProductsListingForUsers
{
CodProdusDto = product.CodProdus,
NumeProdusDto = product.NumeProdus!,
TipulProdusuluiDto = product.TipulProdusului,
PretBazaDto = product.PretDeBaza,
PretBazaRedusDto = product.PretDeBazaRedus,
DimensiuniProduseDto = product.PProduseCuDimensiuni!
.Select(dimensiune => _mapper.Map(dimensiune.PdDimensiune ,
opt => opt.Items.Add("Product" , product))
).ToList(),
CuloriProdusDto = product.PProduseCuCulori!
.Select(culori => new CuloriDto
{
NumeCuloareDto = culori.Culoare.NumeCuloare,
CodCuloareDto = culori.Culoare.CodCuloare.CodCuloare!,
JustAdded = false,
ImaginiProdusDto = culori.ImagProduseCuCulori!
.Select(image => new ImagesDto
{
CaleImagineDto = image.CaleImagine!,
FisierInBucketDto = image.FisierInBucket,
PresignedUrl = null,
JustAdded = false,
IdProdusCuCuloareDto = 0
}).ToList()
})
.ToList()
}).ToListAsync();
foreach (var product in takePaginatedProducts)
{
foreach (var color in product.CuloriProdusDto)
{
if (color.ImaginiProdusDto.IsNullOrEmpty()) continue;
foreach (var image in color.ImaginiProdusDto!)
{
image.PresignedUrl = await _bucketAcces.GenerateUrl(image.CaleImagineDto, image.FisierInBucketDto);
}
}
}
return takePaginatedProducts;
}
Код: Выделить всё
using AutoMapper;
using E_Commerce_BackEnd.Models.DTO.ProduseDtos.ProductOptionsDto;
using E_Commerce_BackEnd.Models.ProductRelatedModels;
using E_Commerce_BackEnd.UnitOfWork;
namespace E_Commerce_BackEnd.Services.Helpers.Resolvers;
public class DimensionPriceResolver : IValueResolver
{
private readonly IUnitOfWork _unitOfWork;
public DimensionPriceResolver(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
public decimal Resolve(Dimensiuni source, DimensiuniDto destination, decimal destMember, ResolutionContext context)
{
var dimensionOnProductRepository = _unitOfWork.Repository();
if (context.Items["Product"] is not Produse product)
{
// Handle case when the product is not available
return 0;
}
// Find the price for the dimension and product combination
var findPriceForTheDimension = dimensionOnProductRepository
.FindQueryable(pd => pd.IdDimensiune == source.IdDimensiune && pd.IdProdus == product.IdProdus)
.FirstOrDefault();
// Return the price if found, or default to 0
return findPriceForTheDimension?.Pret ?? 0;
}
}
Код: Выделить всё
CreateMap()
.ForMember(dest => dest.RecomandarePat, opt => opt.MapFrom(src => src.RecomandarePat))
.ForMember(dest => dest.LungimeDto, opt => opt.MapFrom(src => src.Lungime))
.ForMember(dest => dest.LatimeDto, opt => opt.MapFrom(src => src.Latime))
.ForMember(dest => dest.PretDto, opt =>
opt.MapFrom())
.ForMember(dest => dest.PretRedusDto, opt =>
opt.MapFrom());
Код: Выделить всё
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace E_Commerce_BackEnd.Models.ProductRelatedModels;
public class ProduseCuDimensiuni
{
public int IdProdusCuDimensiune { get; init; }
// Foreign Keys
public decimal Pret { get; set; }
public decimal PretRedus { get; set; }
public int? IdDimensiune { get; set; }
public Dimensiuni? PdDimensiune { get; set; }
public int IdProdus { get; set; }
public Produse PdProduse { get; set; } = null!;
}
Код: Выделить всё
using E_Commerce_BackEnd.Models.DTO.ProduseDtos.ProductOptionsDto;
namespace E_Commerce_BackEnd.Models.DTO.ProduseDtos.ProductsListingForUsers;
public class ProductsListingForUsers
{
public string CodProdusDto { get; init; } = null!;
public string NumeProdusDto { get; init; } = null!;
public string TipulProdusuluiDto { get; init; } = null!;
public decimal PretBazaDto { get; init; }
public decimal PretBazaRedusDto { get; init; }
public IList? DimensiuniProduseDto { get; init; } = [];
public IList CuloriProdusDto { get; init; } = [];
}
Код: Выделить всё
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using E_Commerce_BackEnd.Models.OrderRelatedModels;
namespace E_Commerce_BackEnd.Models.ProductRelatedModels;
public class Dimensiuni
{
public int IdDimensiune { get; init; }
[StringLength(4)]
public string Lungime { get; init; } = null!;
[StringLength(4)]
public string Latime { get; init; } = null!;
public bool? PerdeaEstePereche { get; set; }
[StringLength(15)]
public string? RecomandarePat { get; set; }
public ICollection? DProduseCuDimensiuni { get; }
public ICollection? DAsociereSeturi { get; }
public ICollection? DProduseCuComenzi { get; }
public Dimensiuni()
{
}
public Dimensiuni(string lungime, string latime,string? recomandarePat ,ICollection? dProduseCuDimensiuni)
{
Lungime = lungime;
Latime = latime;
RecomandarePat = recomandarePat;
DProduseCuDimensiuni = dProduseCuDimensiuni == null ? [] : new HashSet(dProduseCuDimensiuni);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... automapper