﻿using System;

namespace AsmodeeDigital.Common.Plugin.Utils.Extensions
{
    public static class TimeSpanExtension
    {
        public static string ToStringExtended(this TimeSpan timeSpan, string format)
        {
            TimeSpan remainingTime = TimeSpan.FromSeconds(timeSpan.TotalSeconds);

            string value = string.Empty;

            if (remainingTime.TotalDays >= 7)
            {
                int weeks = (int)remainingTime.TotalDays / 7;
                value = (int)weeks + " week" + (weeks >= 2 ? "s" : "");
                remainingTime = remainingTime.Subtract(TimeSpan.FromDays(weeks * 7));
            }

            if (remainingTime.TotalDays >= 1)
            {
                value = (int)remainingTime.TotalDays + " day" + (remainingTime.TotalDays >= 2 ? "s" : "");
                remainingTime = remainingTime.Subtract(TimeSpan.FromDays((int)remainingTime.TotalDays));
            }

            if (remainingTime.TotalHours >= 1)
            {
                value = (int)remainingTime.TotalHours + " hour" + (remainingTime.TotalHours >= 2 ? "s" : "");
                remainingTime = remainingTime.Subtract(TimeSpan.FromHours((int)remainingTime.TotalHours));
            }

            if (remainingTime.TotalMinutes >= 1)
            {
                value = (int)remainingTime.TotalMinutes + " minute" + (remainingTime.TotalMinutes >= 2 ? "s" : "");
                remainingTime = remainingTime.Subtract(TimeSpan.FromMinutes((int)remainingTime.TotalMinutes));
            }

            if (remainingTime.TotalSeconds >= 1)
            {
                value = (int)remainingTime.TotalSeconds + " second" + (remainingTime.TotalSeconds >= 2 ? "s" : "");
                //remainingTime = remainingTime.Subtract(TimeSpan.FromMinutes((int)remainingTime.TotalMinutes));
            }

            //if (timeSpan.TotalSeconds < 60)
            //    value = timeSpan.TotalSeconds + " second" + (timeSpan.TotalSeconds > 1 ? "s" : "");
            //else if (timeSpan.TotalMinutes < 60)
            //    value = timeSpan.TotalMinutes + " minute" + (timeSpan.TotalMinutes > 1 ? "s" : "");
            //else if (timeSpan.TotalHours < 24)
            //    value = timeSpan.TotalHours + " hour" + (timeSpan.TotalHours > 1 ? "s" : "");
            //else if (timeSpan.TotalDays < 60)
            //    value = timeSpan.TotalDays + " day" + (timeSpan.TotalDays > 1 ? "s" : "");
            //else if (timeSpan.TotalDays > 7)
            //    value = timeSpan.TotalDays / 7 + " week" + (timeSpan.TotalDays > 7 ? "s" : "");

            return value;
        }
    }
}
