using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Disco.Services.Tasks
{
    public interface IScheduledTaskStatus
    {
        byte Progress { get; }
        string CurrentProcess { get; }
        string CurrentDescription { get; }

        bool IgnoreCurrentProcessChanges { get; set; }
        bool IgnoreCurrentDescription { get; set; }
        double ProgressMultiplier { get; set; }
        byte ProgressOffset { get; set; }
        
        string FinishedMessage { get; }
        string FinishedUrl { get; }
        
        Exception TaskException { get;  }

        void UpdateStatus(byte Progress);
        void UpdateStatus(double Progress);
        void UpdateStatus(string CurrentDescription);
        void UpdateStatus(byte Progress, string CurrentDescription);
        void UpdateStatus(double Progress, string CurrentDescription);
        void UpdateStatus(byte Progress, string CurrentProcess, string CurrentDescription);
        void UpdateStatus(double Progress, string CurrentProcess, string CurrentDescription);

        void SetFinishedUrl(string FinishedUrl);
        void SetFinishedMessage(string FinishedMessage);
        void Finished();
        void Finished(string FinishedMessage);
        void Finished(string FinishedMessage, string FinishedUrl);

        void SetTaskException(Exception TaskException);
    }
}
