| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | using System;
using System.Collections.Generic;
using System.Linq;
using UnivateProperties_API.Helpers;
using UnivateProperties_API.Model.Timeshare;
namespace UnivateProperties_API.Containers.Timeshare
{
    public class WeekDto : IDisplay
    {
        public WeekDto()
        {
        }
        public WeekDto(int id,string line)
        {
            Id = id;
            List<string> split = line.Split(",").ToList();
            AgentAsRep = false;
            Resort = new ResortDto(split[0].Trim(), TenderWeeksHelper.GetResortName(split[0].Trim()));
            UnitNumber = split[1].Trim();
            WeekNumber = split[2].Trim();
            switch (split[8].Trim())
            {
                case "R":
                    Season = "Red";
                    break;
                case "W":
                    Season = "White";
                    break;
                case "B":
                    Season = "Blue";
                    break;
                case "1":
                    Season = "Peak 1";
                    break;
                case "2":
                    Season = "Peak 2";
                    break;
                case "3":
                    Season = "Peak 3";
                    break;
                case "4":
                    Season = "Peak 4";
                    break;
                case "5":
                    Season = "Peak 5";
                    break;
                default:
                    Season = split[8].Trim();
                    break;
            }            
            var size = split[3].Trim();
            if(size.Length == 3 && !size.ToLower().StartsWith('s'))
            {
                int.TryParse(size.Substring(0, 1), out int temp);
                Bedrooms = temp;
                int.TryParse(size.Substring(2, 1), out temp);
                MaxSleep = temp;
            }
            bool currentYear = split[9].Trim() == "Y";
            LevyAmount = Convert.ToDouble(split[5].Trim());
            DateTime tempDate = MyCommon.GetDateFromString(currentYear ? split[6].Trim() : split[13].Trim());
            if(tempDate != DateTime.MinValue)
            {
                ArrivalDate = tempDate;
            }
            tempDate = MyCommon.GetDateFromString(currentYear ? split[7].Trim() : split[14].Trim());
            if(tempDate != DateTime.MinValue)
            {
                DepartureDate = tempDate;
            }
            Region = new RegionDto() { RegionCode = split[24].Trim() };
            IsTender = true;
            ReferedByAgent = false;
            // F-Fixed T-Timeshare (Fixed Timeshare Week) 
            //PML - Peak / Medium / Low Felxi
            switch (split[25].Trim())
            {
                case "T":
                case "F":
                    WeekType = "Fixed";
                    break;
                case "P":
                case "M":
                case "L":
                    WeekType = "Peak Flexi";
                    break;
                default:
                    WeekType = "";
                    break;
            }
        }
        public WeekDto(TimeshareWeek week)
        {
            Id = week.Id;
            AgentAsRep = week.AgentAsRep;
            OtherResort = week.OtherResort;
            Agency = week.Agency?.AgencyName;
            Agent = $"{week.Agent?.Name} {week.Agent?.Surname}";
            Owner = $"{week.Owner?.Name} {week.Owner?.Surname}";
            Resort = new ResortDto(week.ResortCode, week.ResortName);
            Region = new RegionDto(week.Region != null ? week.Region.Id : 0, week.Region?.Code, week.Region?.Description);
            Season = week.Season;
            if(week.Status != null)
            {
                Status = new StatusDto(week.Status.Id, week.Status.Code, week.Status.Description);
            }            
            Bedrooms = week.Bedrooms;
            MaxSleep = week.MaxSleep;
            UnitNumber = week.UnitNumber;
            WeekNumber = week.WeekNumber;
            LevyAmount = week.LevyAmount;
            CurrentYearBanked = week.CurrentYearBanked;
            ArrivalDate = week.ArrivalDate;
            DepartureDate = week.DepartureDate;
            SellPrice = week.SellPrice;
            IsTender = false;
            ReferedByAgent = week.ReferedByAgent;
            WeekType = week.WeekType.ToString();
        }
        public int Id { get; set; }
        public ResortDto Resort { get; set; }
        public RegionDto Region { get; set; }
        public StatusDto Status { get; set; }
        public string UnitNumber { get; set; }
        public string WeekNumber { get; set; }
        public string Season { get; set; }
        public string Agency { get; set; }
        public string Agent { get; set; }
        public string Owner { get; set; }
        public bool AgentAsRep { get; set; }
        public bool OtherResort { get; set; }
        public int Bedrooms { get; set; }
        public int MaxSleep { get; set; }
        public double LevyAmount { get; set; }
        public bool CurrentYearBanked { get; set; }
        public string BankedWith { get; set; }
        public DateTime ArrivalDate { get; set; }
        public DateTime DepartureDate { get; set; }
        public double SellPrice { get; set; }
        public bool IsTender { get; set; }
        public bool ReferedByAgent { get; set; }
        public string WeekType { get; set; }
        public string Display => $"{Resort.Display}  ({ArrivalDate.ToShortDateString()} - {DepartureDate.ToShortDateString()})";
        public string WeekUni => $"{Resort.ResortCode}-{UnitNumber}-{WeekNumber}";
    }    
}
 |