using System.Collections.Generic;
using System.Linq;

namespace UnivateProperties_API.Containers.Timeshare
{
    public class RegionDto : IDisplay
    {
        public RegionDto()
        {
            Resorts = new List<ResortDto>();
        }

        public RegionDto(string regionCode, string regionName)
        {
            RegionCode = regionCode;
            RegionName = regionName;
            Resorts = new List<ResortDto>();
        }

        public RegionDto(int id, string regionCode, string regionName)
        {
            Id = id;
            RegionCode = regionCode;
            RegionName = regionName;
            Resorts = new List<ResortDto>();
        }

        public int Id { get; set; }
        public string RegionName { get; set; }
        public string RegionCode { get; set; }
        public List<ResortDto> Resorts { get; set; }
        public int Available
        {
            get
            {
                return Resorts != null ? Resorts.Sum(x => x.Available) : 0;
            }
        }

        public string Display => RegionName;

        public void TryAddResort(string resortCode, string resortName)
        {
            if (!Resorts.Any(x => x.ResortCode == resortCode))
            {
                Resorts.Add(new ResortDto(resortCode, resortName));
            }
        }

        public void OrderResorts()
        {
            if(Resorts != null && Resorts.Count > 0)
            {
                Resorts = Resorts.OrderBy(x => x.ResortName).ToList();
            }            
        }
    }
}