using System;
using System.Collections.Generic;
using HaaSMiddleware.BusinessLogicTier.Factory;
using HaaSMiddleware.DataAccessTier.UnitOfWork;
using HaaSMiddleware.DomainObjects.JobManagement.JobInformation;
using HaaSMiddleware.ServiceTier.JobManagement;

namespace HaaSMiddleware.BackgroundThread.Tasks {
	/// <summary>
	///   Get all unfinished jobs from db and load their status from cluster
	///   and updates their status in DB
	/// </summary>
	internal class GetAllJobsInfo : AbstractTask, IBackgroundTask {
		public GetAllJobsInfo(TimeSpan interval) : base(interval) {}

		protected override void RunTask() {
			using (IUnitOfWork unitOfWork = new DatabaseUnitOfWork()) {
				List<SubmittedJobInfo> updatedJobs =
					(List<SubmittedJobInfo>) LogicFactory.GetLogicFactory().CreateJobManagementLogic(unitOfWork).UpdateCurrentStateOfUnfinishedJobs();
				JobManagementService jobMgmtService = new JobManagementService();
				jobMgmtService.SendSubmittedJobInfosToClient(updatedJobs);
			}
		}
	}
}