Example #1
0
        /// <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);
        }