using System;
using System.Linq.Expressions;
using System.Threading.Tasks;
using New_College.IServices;
using New_College.Model;
using New_College.Model.Models;
using New_College.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace New_College.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
[Authorize(Permissions.Name)]
public class TasksQzController : ControllerBase
{
private readonly ITasksQzServices _tasksQzServices;
private readonly ISchedulerCenter _schedulerCenter;
public TasksQzController(ITasksQzServices tasksQzServices, ISchedulerCenter schedulerCenter)
{
_tasksQzServices = tasksQzServices;
_schedulerCenter = schedulerCenter;
}
///
/// 分页获取
///
///
///
///
// GET: api/Buttons/5
[HttpGet]
public async Task>> Get(int page = 1, string key = "")
{
if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key))
{
key = "";
}
int intPageSize = 50;
Expression> whereExpression = a => a.IsDelete != true && (a.Name != null && a.Name.Contains(key));
var data = await _tasksQzServices.QueryPage(whereExpression, page, intPageSize, " Id desc ");
return new MessageModel>()
{
msg = "获取成功",
success = data.dataCount >= 0,
response = data
};
}
///
/// 添加计划任务
///
///
///
[HttpPost]
public async Task> Post([FromBody] TasksQz tasksQz)
{
var data = new MessageModel();
var id = (await _tasksQzServices.Add(tasksQz));
data.success = id > 0;
if (data.success)
{
data.response = id.ObjToString();
data.msg = "添加成功";
}
return data;
}
///
/// 修改计划任务
///
///
///
[HttpPut]
public async Task> Put([FromBody] TasksQz tasksQz)
{
var data = new MessageModel();
if (tasksQz != null && tasksQz.Id > 0)
{
data.success = await _tasksQzServices.Update(tasksQz);
if (data.success)
{
data.msg = "更新成功";
data.response = tasksQz?.Id.ObjToString();
}
}
return data;
}
///
/// 启动计划任务
///
///
///
[HttpGet]
public async Task> StartJob(int jobId)
{
var data = new MessageModel();
var model = await _tasksQzServices.QueryById(jobId);
if (model != null)
{
var ResuleModel = await _schedulerCenter.AddScheduleJobAsync(model);
if (ResuleModel.success)
{
model.IsStart = true;
data.success = await _tasksQzServices.Update(model);
}
if (data.success)
{
data.msg = "启动成功";
data.response = jobId.ObjToString();
}
}
return data;
}
///
/// 停止一个计划任务
///
///
///
[HttpGet]
public async Task> StopJob(int jobId)
{
var data = new MessageModel();
var model = await _tasksQzServices.QueryById(jobId);
if (model != null)
{
var ResuleModel = await _schedulerCenter.StopScheduleJobAsync(model);
if (ResuleModel.success)
{
model.IsStart = false;
data.success = await _tasksQzServices.Update(model);
}
if (data.success)
{
data.msg = "暂停成功";
data.response = jobId.ObjToString();
}
}
return data;
}
///
/// 重启一个计划任务
///
///
///
[HttpGet]
public async Task> ReCovery(int jobId)
{
var data = new MessageModel();
var model = await _tasksQzServices.QueryById(jobId);
if (model != null)
{
var ResuleModel = await _schedulerCenter.ResumeJob(model);
if (ResuleModel.success)
{
model.IsStart = true;
data.success = await _tasksQzServices.Update(model);
}
if (data.success)
{
data.msg = "重启成功";
data.response = jobId.ObjToString();
}
}
return data;
}
}
}