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

namespace Scheduler.Backgrounding
{
    public class BGTaskStartEvent : EventArgs
    {
        public Guid BGTaskGuid { get; }
        public int IntervalID { get; }
        public DateTime At { get; }

        public BGTaskStartEvent(Guid bgTaskGuid, int intervalID, DateTime at)
        {
            At = at;
            BGTaskGuid = bgTaskGuid;
            IntervalID = intervalID;
        }
    }

    public class BGTaskEndEvent : EventArgs
    {
        public Guid BGTaskGuid { get; }
        public int IntervalID { get; }
        public DateTime At { get; }

        public BGTaskEndEvent(Guid bgTaskGuid, int intervalID, DateTime at)
        {
            BGTaskGuid = bgTaskGuid;
            IntervalID = intervalID;
            At = at;
        }
    }

    public class BGTaskEndEvent<TResult> : EventArgs
    {
        public Guid BGTaskGuid { get; }
        public int IntervalID { get; }
        public DateTime At { get; }
        public TResult Result { get; }

        public BGTaskEndEvent(Guid bgTaskGuid, int intervalID, DateTime at, TResult result)
        {
            BGTaskGuid = bgTaskGuid;
            IntervalID = intervalID;
            At = at;
            Result = result;
        }
    }
}
