using System.Collections.Generic;
using EventsAppQuest.Application.Services;
using EventsAppQuest.Domain.Enums;
using EventsAppQuest.Domain.Models;

namespace EventsAppQuest.Infrastructure.Services
{
    /// <summary>
    /// Implementacao mock do servico de fornecedores para desenvolvimento local.
    /// </summary>
    public class MockSupplierService : ISupplierService
    {
        private readonly List<Supplier> _suppliers = new List<Supplier>
        {
            new Supplier
            {
                Id = "supplier-1",
                Name = "Eventos & Cia",
                Description = "Decoração e buffet.",
                Status = SupplierStatus.Active,
                Contact = "contato@eventosecia.com",
                SupportedItemTypes = new List<ShowroomItemType> { ShowroomItemType.Decoration, ShowroomItemType.Furniture },
                SupportsEarlySetup = true,
                SupportsOnSiteExecution = true,
                SupplierPriorityLevel = 6,
                CapacityTier = "Standard"
            },
            new Supplier
            {
                Id = "supplier-2",
                Name = "Som e Luz",
                Description = "Sonorização e iluminação.",
                Status = SupplierStatus.Active,
                Contact = "contato@someluz.com",
                SupportedItemTypes = new List<ShowroomItemType> { ShowroomItemType.Lighting, ShowroomItemType.Stage, ShowroomItemType.Other },
                SupportsEarlySetup = true,
                SupportsOnSiteExecution = true,
                SupplierPriorityLevel = 8,
                CapacityTier = "Premium"
            },
            new Supplier
            {
                Id = "supplier-3",
                Name = "Buffet Sabor",
                Description = "Serviço completo de buffet e coquetel.",
                Status = SupplierStatus.Active,
                Contact = "contato@buffetsabor.com",
                SupportedItemTypes = new List<ShowroomItemType> { ShowroomItemType.Buffet },
                SupportsEarlySetup = false,
                SupportsOnSiteExecution = true,
                SupplierPriorityLevel = 7,
                CapacityTier = "Standard"
            },
            new Supplier
            {
                Id = "supplier-4",
                Name = "Flores & Arte",
                Description = "Decoração floral e cenografia.",
                Status = SupplierStatus.Active,
                Contact = "contato@floresearte.com",
                SupportedItemTypes = new List<ShowroomItemType> { ShowroomItemType.Decoration },
                SupportsEarlySetup = true,
                SupportsOnSiteExecution = true,
                SupplierPriorityLevel = 5,
                CapacityTier = "Basic"
            }
        };

        public IReadOnlyList<Supplier> GetAll() => _suppliers;

        public Supplier GetById(string id) => _suppliers.Find(s => s.Id == id);
    }
}
