using Qdp.Pricing.Base.Implementations;
namespace YLWebAPI.ApiModule.ManagerApi
{
///
/// 工具类API
///
[ManagerAuth]
public class CalendarController : BaseApiController
{
///
/// 工作日天数计算
/// 单元测试:CalendarTest.TestGetWorkingDayCount
///
[HttpPost]
[Route("api/v1/calendar/get_workingdaycount")]
public ApiResponseModel GetWorkingDayCount([FromBody] GetWorkingDayCountRequest req)
{
if (req is null)
{
return JsonError("参数不能为空");
}
if (req.StartDate.Year < 2000)
{
return JsonError("StartDate需为2000年之后的日期");
}
var daycount = 0;
var calendar = CalendarImpl.Get(req.CalendarName.TrimToNull() ?? "chn");
DateTime? startDate = null, endDate = null;
for (var date = req.StartDate; date <= req.EndDate; date = date.AddDays(1))
{
if (!calendar.IsHoliday(date))
{
startDate = date;
break;
}
}
if (startDate.HasValue)
{
daycount = 1;
endDate = startDate;
for (var date = req.EndDate; date > startDate.Value; date = date.AddDays(-1))
{
if (!calendar.IsHoliday(date))
{
endDate = date;
break;
}
}
for (var date = startDate.Value; date < endDate.Value; date = date.AddDays(1))
{
if (!calendar.IsHoliday(date))
{
daycount++;
}
}
}
return JsonSuccess(new { DayCount = daycount, StartDate = startDate, EndDate = endDate });
}
}
}