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")}"); } } }