using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using TIAM.Entities.Products;
using TIAM.Entities.ServiceProviders;
using TIAM.Entities.Users;
using TIAMWebApp.Shared.Application.Models;
using SkiaSharp;

namespace TIAMWebApp.Shared.Application.Interfaces
{
    public interface IServiceProviderDataService
    {
        //17. (IServiceProviderDataService) get service providers by ownerId
        public Task<Dictionary<Guid, string>?> GetPropertiesByOwnerIdAsync(Guid id);

        //13. delete service provider
        public Task DeleteServiceProviderAsync(Guid serviceProviderId);

        //14 Update service provider
        public Task<bool> UpdateServiceProviderAsync(TiamServiceProvider serviceProvider);

        //15. Create service provider
        public Task<bool> CreateServiceProviderAsync(TiamServiceProvider serviceProvider);

        //16. (IServiceProviderDataService) get all service providers
        public Task<List<TiamServiceProvider>> GetServiceProvidersAsync();

        //18. (IServiceProviderDataService) get serviceProvider by Id
        public Task<TiamServiceProvider?> GetServiceProviderByIdAsync(Guid id);

        //19. (IServiceProviderDataService) Create product
        public Task<bool> CreateProductAsync(Product product);

        //20. (IServiceProviderDataService) Update product
        public Task<bool> UpdateProductAsync(Product product);

        //21. (IServiceProviderDataService) Delete product
        public Task DeleteProductAsync(Guid productId);

        //22. (IServiceProviderDataService) Create userProductMapping
        public Task<bool> CreateUserProductMappingAsync(UserProductMapping userProductMapping);

        //23. (IServiceProviderDataService) Get Assigned Users By ProductId
        public Task<List<UserProductMapping>> GetUserProductMappingsByProductIdAsync(Guid productId);

        //24. (IServiceProviderDataService) Remove Assigned Users from Product
        public Task RemoveUserProductMappingsByContextIdAsync(Guid productId);

        //25. (IServiceProviderDataService) Get QRCode by ProductId
        public Task<string> GetQRCodeByProductIdAsync(Guid productId);

        public Task<IEnumerable<Product>> GetProductsForServiceProviderAsync(Guid serviceProviderId);

    }
}
