using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Web.Http;
using XdCxRhDW.Dto;
using XdCxRhDW.WebApi;
using X2D1NoRefTaskServer54.Service;
using System.Threading.Tasks;
namespace X2D1NoRefTaskServer54.Controllers
{
    /// 
    ///高轨两星一地任务处理接口
    /// 
    public class X2D1NoRefTaskProcessingController : BaseController
    {
        /*******************
         * !!!不要在Controller中放业务逻辑的全局变量(每次调用Http接口Controller都可能是一个新的对象)
         * Controller主要就是调用Service层的东西。Service层执行业务逻辑和调用Repository层操作数据库
         * ********************/
        private readonly TaskService _service;
        public X2D1NoRefTaskProcessingController(TaskService service)
        {
            _service = service;
        }
        /// 
        /// 执行任务
        /// 
        /// 任务信息
        /// 
        [HttpPost]
        public async Task Run(X2D1NoRefTaskHandleDto dto)
        {
            try
            {
                await LogHelper.Info($"接收到任务编号:{dto.ID}");
                _service.StartAsync(dto);
                return Success();
            }
            catch (Exception ex)
            {
                await LogHelper.Error($"【任务{dto.ID}】任务执行出错!", ex);
                return Error($"【任务{dto.ID}】任务执行出错!");
            }
        }
        /// 
        /// 任务停止
        /// 
        /// 
        /// 
        [HttpPost]
        public async Task Stop(TaskStopHandleDto dto)
        {
            try
            {
                await LogHelper.Warning($"用户停止了任务,ID={dto.ID}");
                _service.Stop();
                return Success();
            }
            catch (Exception ex)
            {
                await LogHelper.Error($"【任务{dto.ID}】停止执行异常!", ex);
                return Error($"【任务{dto.ID}】停止执行异常!");
            }
        }
    }
}