using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using Quartz;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using VOL.Business.IServices;
using VOL.Business.IServices.School;
using VOL.Business.Services;
using VOL.Business.Services.Norm;
using VOL.Business.Services.School;
using VOL.Core.Filters;
using VOL.Core.ManageUser;
using VOL.Core.Utilities;
using VOL.Model;
using VOL.Model.Norm.Request;
using VOL.Model.Norm.Response;
using VOL.WebApi.HostedService;
namespace VOL.WebApi.Controllers.Business
{
///
/// 赛事管理
///
[Route("api/[controller]")]
[ApiController]
[ApiExplorerSettings(GroupName = "v3")]
//[TypeFilter(typeof(CustomApiResponseFilter))]
public class ActivitiesController : ControllerBase
{
#region 初始化
private readonly IG_ActivitiesService _activitiesService;
private readonly IServiceProvider _serviceProvider;
public ActivitiesController(IG_ActivitiesService activitiesService, IServiceProvider serviceProvider)
{
_activitiesService = activitiesService;
_serviceProvider = serviceProvider;
}
#endregion
///
/// 赛事列表
///
///
[HttpGet(nameof(GetActivitiesPageList))]
public async Task> GetActivitiesPageList(ActivitiesPageListParam paramDto)
{
return await _activitiesService.GetActivitiesPageList(paramDto);
}
///
/// 详情
///
///
///
[HttpPost(nameof(GetActivitiesDetails))]
public async Task GetActivitiesDetails(int id)
{
return await _activitiesService.GetActivitiesDetails(id);
}
///
/// 获取项目类型
///
///
[HttpGet(nameof(GetActivitiesCategoryList))]
public List GetActivitiesCategoryList()
{
return _activitiesService.GetActivitiesCategoryList();
}
///
/// 学生详情
///
///
///
[HttpPost(nameof(GetActivitiesStudentDetails))]
public async Task> GetActivitiesStudentDetails(int classId, int activitiesId)
{
return await _activitiesService.GetActivitiesStudentDetails(classId, activitiesId);
}
///
/// 赛事统计列表
///
///
[HttpGet(nameof(GetActivitiesStatisticsPageList))]
public async Task> GetActivitiesStatisticsPageList(ActivitiesStatisticsPageListParam paramDto)
{
return await _activitiesService.GetActivitiesStatisticsPageList(paramDto);
}
///
/// 赛事统计详情
///
///
[HttpGet(nameof(GetActivitiesStatisticsDetails))]
public async Task> GetActivitiesStatisticsDetails(ActivitiesStatisticsDetailsParam paramDto)
{
return await _activitiesService.GetActivitiesStatisticsDetails(paramDto);
}
///
/// 赛事统计详情导出
///
///
///
[HttpGet(nameof(ActivitiesStatisticsDetailsExport))]
public async Task ActivitiesStatisticsDetailsExport(ActivitiesStatisticsDetailsParam paramDto)
{
var rseList = await _activitiesService.GetActivitiesStatisticsDetails(paramDto);
var disList = new Dictionary>();
disList.Add("赛事统计详情列表", rseList);
var exportColumns = Tool.GetPropertyNames();
var excelBytes = Tool.ExportToExcel(disList, exportColumns);
Response.Headers.Add("Content-Disposition", "attachment; filename=ExportedData.xlsx");
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
return File(excelBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"赛事统计详情列表{DateTime.Now.ToString("yyyyMMddHHmmss")}");
}
///
/// 新增
///
///
///
[HttpPost(nameof(Add))]
public async Task Add([FromBody] ActivitiesDetailsParam paramDto)
{
var activitiesId = await _activitiesService.AddActivities(paramDto);
var quartzStartup = _serviceProvider.GetRequiredService();
await quartzStartup.ScheduleActivityJobs(activitiesId.ToString(), paramDto.StartDate, paramDto.EndDate);
return Ok("新增成功");
}
///
/// 更新
///
///
///
[HttpPost(nameof(Modify))]
public async Task Modify([FromBody] ActivitiesDetailsParam paramDto)
{
await _activitiesService.ModifyActivities(paramDto);
var quartzStartup = _serviceProvider.GetRequiredService();
await quartzStartup.UpdateActivityJobs(paramDto.Id.ToString(), paramDto.StartDate, paramDto.EndDate);
await quartzStartup.ScheduleActivityJobs(paramDto.Id.ToString(), paramDto.StartDate, paramDto.EndDate);
return Ok("更新成功");
}
///
/// 上传活动照片
///
///
///
[HttpPost(nameof(UploadActivitiesImage))]
public string UploadActivitiesImage(IFormFile file)
{
var url = _activitiesService.UploadActivitiesImage(file);
return url;
}
///
/// 批量删除
///
///
///
[HttpPost(nameof(BatchDelete))]
public async Task BatchDelete([FromBody] List Ids)
{
await _activitiesService.DeleteActivities(Ids);
return Ok("删除成功");
}
///
/// 导出
///
///
///
[HttpGet(nameof(Export))]
public async Task Export(ActivitiesExportParam paramDto)
{
var rseList = await _activitiesService.GetActivitiesList(paramDto);
var disList = new Dictionary>
{
{ "赛事列表", rseList }
};
var exportColumns = Tool.GetPropertyNames();
var excelBytes = Tool.ExportToExcel(disList, exportColumns);
Response.Headers.Add("Content-Disposition", "attachment; filename=ExportedData.xlsx");
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
return File(excelBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"赛事列表{DateTime.Now.ToString("yyyyMMddHHmmss")}");
}
}
}