using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Edu.Common.API;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.System;
using Edu.Model.ViewModel.Grade;
using Edu.Module.System;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Edu.WebApi.Controllers.Public
{
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class HolidayController : BaseController
{
///
/// 节假日处理类对象
///
private readonly HolidayModule holidayModule = new HolidayModule();
///
/// 班级处理类对象
///
private readonly Module.Course.ClassModule classModule = new Module.Course.ClassModule();
#region 节假日管理
///
/// 新增修改广告基础信息
///
///
///
[HttpPost]
public ApiResult SetHoliday()
{
UserInfo userInfo = base.UserInfo;
var startDate = base.ParmJObj.GetStringValue("StartTime");
var endDate = base.ParmJObj.GetStringValue("EndTime");
if (string.IsNullOrEmpty(startDate))
{
return ApiResult.Failed("节假日开始时间不能为空");
}
if (string.IsNullOrEmpty(endDate))
{
return ApiResult.Failed("节假日结束时间不能为空");
}
RB_System_Holiday dmodel = new RB_System_Holiday
{
DayType = base.ParmJObj.GetInt("DayType", 0),
StartTime = Convert.ToDateTime(startDate),
EndTime = Convert.ToDateTime(endDate)
};
if (dmodel.StartTime > dmodel.EndTime)
{
return ApiResult.Failed("节假日开始时间不能大于结束时间");
}
//先判断日期是否已存在
var oldList = holidayModule.GetExistHoliday(startDate, endDate);
if (oldList != null && oldList.Any(x => x.HolidayId != dmodel.HolidayId))
{
return ApiResult.Failed("节假日时间范围重合");
}
if (dmodel.HolidayId == 0)
{
dmodel.CreateDate = System.DateTime.Now;
dmodel.Status = 0;
dmodel.Group_Id = userInfo.Group_Id;
dmodel.School_Id = userInfo.School_Id;
}
bool flag = holidayModule.SetHoliday(dmodel);
if (flag)
{
if (dmodel.DayType == 1)//判断节假日是否有排课计划
{
var planList = classModule.GetClassPlanList_V3(new RB_Class_Plan_ViewModel
{
Group_Id = userInfo.Group_Id,
StartTime = dmodel.StartTime.HasValue ? dmodel.StartTime.Value.ToString("yyyy-MM-dd 00:00:00") : "",
EndTime = dmodel.EndTime.HasValue ? dmodel.EndTime.Value.ToString("yyyy-MM-dd 00:00:00") : ""
});
if (planList != null && planList.Any())
{
return ApiResult.Success("班级:" + string.Join(",", planList.Select(x => x.ClassName)) + "存在排课");
}
}
return ApiResult.Success();
}
else
{
return ApiResult.Failed();
}
}
///
/// 删除节假日
///
///
///
[HttpPost]
public ApiResult DelHoliday()
{
var HolidayId = base.ParmJObj.GetInt("HolidayId");
if (HolidayId <= 0)
{
return ApiResult.ParamIsNull();
}
var flag = holidayModule.DelHoliday(HolidayId);
if (flag)
{
return ApiResult.Success();
}
else
{
return ApiResult.Failed();
}
}
///
/// 获取节假日列表
///
///
///
[HttpPost]
public ApiResult GetHolidayList()
{
UserInfo userInfo = base.UserInfo;
ResultPageModel pmodel = JsonConvert.DeserializeObject(RequestParm.Msg.ToString());
var startDate = base.ParmJObj.GetStringValue("StartTime");
var endDate = base.ParmJObj.GetStringValue("EndTime");
RB_System_Holiday dmodel = new RB_System_Holiday
{
DayType = base.ParmJObj.GetInt("DayType", 0)
};
try
{
if (!string.IsNullOrWhiteSpace(startDate))
{
dmodel.StartTime = Convert.ToDateTime(startDate);
}
if (!string.IsNullOrWhiteSpace(endDate))
{
dmodel.EndTime = Convert.ToDateTime(endDate);
}
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "GetHolidayList");
}
List list = holidayModule.GetPageList(pmodel.PageIndex, pmodel.PageSize, dmodel, out long count);
pmodel.Count = Convert.ToInt32(count.ToString());
pmodel.PageData = list.Select(x => new
{
x.HolidayId,
StartTime = x.StartTime.HasValue ? x.StartTime.Value.ToString("yyyy-MM-dd") : "",
EndTime = x.EndTime.HasValue ? x.EndTime.Value.ToString("yyyy-MM-dd") : "",
x.DayType
});
return ApiResult.Success("", pmodel);
}
///
/// 获取节假日详情
///
///
///
[HttpPost]
public ApiResult GetHolidayInfo()
{
int HolidayId = base.ParmJObj.GetInt("HolidayId", 0);
if (HolidayId <= 0)
{
return ApiResult.ParamIsNull();
}
var model = holidayModule.GetEntity(HolidayId);
if (model != null)
{
var obj = new
{
model.HolidayId,
StartTime = model.StartTime.HasValue ? model.StartTime.Value.ToString("yyyy-MM-dd") : "",
EndTime = model.EndTime.HasValue ? model.EndTime.Value.ToString("yyyy-MM-dd") : "",
model.DayType
};
return ApiResult.Success("请求成功!", obj);
}
else
{
return ApiResult.Failed("请求失败,数据不存在!");
}
}
///
/// 批量新增节假日
///
///
public ApiResult InsertHoliday()
{
string apiResult = Common.Plugin.HttpHelper.HttpGet("http://timor.tech/api/holiday/year/2021/");
JObject parmsJob = JObject.Parse(apiResult);
string resultCode = parmsJob.GetStringValue("code");
string holidayList = parmsJob.GetStringValue("holiday");
return ApiResult.Success("");
}
#endregion
}
}