using ProjectTourAgency.Enities.Enums;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ProjectTourAgency.Enities;

public class Tour
{

    [DisplayName("Id Тура")]
    public int Id { get; private set; }

    [Browsable(false)]
    public int EmployeeId { get; private set; }

    [Browsable(false)]
    public int RouteId { get; private set; }

    [DisplayName("Сотрудник")]

    public string EmployeeName { get; private set; } = string.Empty;

    [DisplayName("Маршрут")]

    public string RouteName { get; private set; } = string.Empty;

    [DisplayName("Дата начала тура")]
    public DateTime DepartureDate { get; private set; }

    [Browsable(false)]
    public IEnumerable<ClientTour> ClientTours { get; private set; } = [];

    [DisplayName("Клиенты")]
    public string Clients => ClientTours != null ?
        string.Join(",", ClientTours.Select(x => $"{x.CLientName} {x.Cost}")) : string.Empty;

    public static Tour CreateEntity(int id, int employeeId, int routeId,
       DateTime date,IEnumerable<ClientTour> clientTours)
    {
        return new Tour
        {
            Id = id,
            EmployeeId = employeeId,
            RouteId = routeId,
            DepartureDate = date,
            ClientTours = clientTours
        };
    }

    public static Tour CreateEntity(TempClientTour tempClientTour, IEnumerable<ClientTour> clientTours)
    {
        return new Tour
        {
            Id = tempClientTour.Id,
            EmployeeId = tempClientTour.EmployeeId,
            RouteId = tempClientTour.RouteId,
            DepartureDate = tempClientTour.DepartureDate,
            ClientTours = clientTours
        };
    }

    public void SetClientTours(IEnumerable<ClientTour> clientTours)
    {
        if(clientTours != null && clientTours.Any())
        {
            ClientTours = clientTours;
        }
    }
}