using EVCB_OCPP.TaskScheduler.Services;
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EVCB_OCPP.TaskScheduler.Jobs
{
    [DisallowConcurrentExecution]
    public class StartTransacionReportJob : IJob
    {
        private NLog.ILogger logger = NLog.LogManager.GetCurrentClassLogger();
     

        public StartTransacionReportJob()
        {
          
        }
      

        public async Task Execute(IJobExecutionContext context)
        {
            await Console.Out.WriteLineAsync(this.ToString() + " :Starting........");

            List<Task> tList = new List<Task>();

            ICustomerService cs = new CommonCustomerService();
            var cList = cs.GetCallPartnerCustomers();

            foreach (var customerId in cList)
            {
                ICustomerService s = CustomerBackendFactory.Create(customerId);
              

               tList.Add(Task.Run(() => DoMainTask(customerId)));
            }

            Task.WaitAll(tList.ToArray());

            await Console.Out.WriteLineAsync(this.ToString() + " :Finished........");
        }

        private void DoMainTask(Guid customerId)
        {
            if (customerId == new Guid("009E603C-79CD-4620-A2B8-D9349C0E8AD8")) return;


            ICustomerService _service = CustomerBackendFactory.Create(customerId);
            _service.ReportStartTransaction().Wait();
        }
    }
}