/// <summary> /// 判断预约日期是否在可预约范围内以及所要预约的日期是否被禁用 /// </summary> /// <param name="dt">预约日期</param> /// <param name="isAdmin">isAdmin</param> /// <param name="msg">errMsg</param> /// <returns></returns> public bool IsReservationForDateAvailable(DateTime dt, bool isAdmin, out string msg) { // 不可以预约之前的日期 var daysDiff = dt.Subtract(DateTime.UtcNow.AddHours(8).Date).Days; if (daysDiff < 0) { msg = "预约日期不可预约"; return(false); } // 最大预约天数(后面可以改成根据活动室去配置 if (!isAdmin && daysDiff > MaxReservationDiffDays) { msg = $"预约日期需要在{MaxReservationDiffDays}天内"; return(false); } if (!_bllDisabledPeriod.Any(builder => builder.WithPredict(p => p.IsActive && EF.Functions.DateDiffDay(p.StartDate, dt) >= 0 && EF.Functions.DateDiffDay(dt, p.EndDate) >= 0))) { msg = string.Empty; return(true); } msg = "预约日期被禁用,如要预约请联系网站管理员"; return(false); }