using AyCode.Entities.Profiles;
using AyCode.Interfaces.Users.Dtos;
using AyCode.Models.Users;
using TIAM.Entities.Addresses;
using TIAM.Entities.Products;
using TIAM.Entities.Profiles;
using TIAM.Entities.ServiceProviders;
using TIAM.Entities.Users;
using TIAM.Models.Dtos.Profiles;

namespace TIAM.Models.Dtos.Users;

public class UserModelDto : AcUserModelDtoBase<UserDto, Profile, ProfileDto, TiamServiceProvider, UserToServiceProvider, Address>, IProductsRelation
{
    public List<UserProductMapping> UserProductMappings { get; set; }
    public List<Product> Products { get; set; }

    public UserModelDto(){}
    public UserModelDto(User user) : base(user)
    {
        if (user.Products.Count == 0) return;
        
        //így proxy error lesz... - J.
        //Products = new List<Product>(user.Products);
        //UserProductMappings = new List<UserProductMapping>(user.UserProductMappings);

        Products = new List<Product>(user.Products.Count);
        UserProductMappings = new List<UserProductMapping>(user.UserProductMappings.Count);

        foreach (var product in user.Products)
        {
            Products.Add(new Product(product.Id, product.ServiceProviderId, product.ProductType, product.Name, product.Description, product.Price, product.JsonDetails));
        }

        foreach (var userProduct in user.UserProductMappings)
        {
            UserProductMappings.Add(new UserProductMapping(userProduct.Id, userProduct.UserId, userProduct.ProductId));
        }
    }
}