using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using HaaSMiddleware.ServiceTier.JobManagement;
using org.apache.etch.EtchServiceTier.types.EtchServiceTier;

namespace HaaSMiddleware.WebServices {
	[WebService(Namespace = "http://hpcaas.it4i.cz/")]
	[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
	[System.ComponentModel.ToolboxItem(false)]
	[System.Web.Script.Services.ScriptService]
	public class JobManagementWs : System.Web.Services.WebService {
		private IJobManagementService service = new JobManagementService();
		
		[WebMethod]
		public SubmittedJobInfoExt CreateJob(JobSpecificationExt specification, string sessionCode) {
			return service.CreateJob(specification, sessionCode);
		}

		[WebMethod]
		public SubmittedJobInfoExt SubmitJob(long createdJobInfoId, string sessionCode) {
			return service.SubmitJob(createdJobInfoId, sessionCode);
		}

		[WebMethod]
		public SubmittedJobInfoExt CancelJob(long submittedJobInfoId, string sessionCode) {
			return service.CancelJob(submittedJobInfoId, sessionCode);
		}

        [WebMethod]
        public void DeleteJob(long submittedJobInfoId, string sessionCode)
        {
            service.DeleteJob(submittedJobInfoId, sessionCode);
        }

		[WebMethod]
		public SubmittedJobInfoExt[] ListJobsForCurrentUser(string sessionCode) {
			return service.ListJobsForCurrentUser(sessionCode);
		}

		[WebMethod]
		public SubmittedJobInfoExt GetCurrentInfoForJob(long submittedJobInfoId, string sessionCode) {
			return service.GetCurrentInfoForJob(submittedJobInfoId, sessionCode);
		}

        [WebMethod]
        public void CopyJobDataToTemp(long submittedJobInfoId, string sessionCode, string path)
        {
            service.CopyJobDataToTemp(submittedJobInfoId, sessionCode, path);
        }

        [WebMethod]
        public void CopyJobDataFromTemp(long createdJobInfoId, string sessionCode, string tempSessionCode)
        {
            service.CopyJobDataFromTemp(createdJobInfoId, sessionCode, tempSessionCode);
        }

        [WebMethod]
        public string[] GetAllocatedNodesIPs(long submittedJobInfoId, string sessionCode)
        {
            return service.GetAllocatedNodesIPs(submittedJobInfoId, sessionCode);
        }
    }
}