Esempio n. 1
0
        public bool ValidateDateFormat(string day, out string errorMessage)
        {
            errorMessage = "";
            // 날짜는 1-31사이 검증
            if (!DateService.DateBetween(day))
            {
                errorMessage = "비정상적인 날짜입니다. 다시 한번 확인해주세요.";
                return(false);
            }

            // 오늘 날짜보다 적은 날짜이면 다음달로 본다.
            new DateTime();
            DateService service   = new DateService();
            var         today     = DateTime.Today;
            var         thisYear  = today.ToString("yyyy");
            var         thisMonth = today.ToString("MM");
            var         input     = service.GetConvertDate(day); //00~31 << 형태로 변환.

            var dayoff_str = thisYear + thisMonth + input;

            DateTime dayoff;

            if (!DateTime.TryParseExact(dayoff_str, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dayoff))
            {
                //잘못된 날짜 입력시.ex) 4월 31일.
                var printDay   = DateService.GetConvertPrintDate(input);
                var printMonth = DateService.GetConvertPrintMonth(thisMonth);
                errorMessage = printMonth + " " + printDay + "은 뭔가 잘못된 입력된것 같은데요? 날짜 다시 한번 확인해주세요.";
                return(false);
            }

            var result = DateTime.Compare(today, dayoff);

            if (result > 0)
            {
                //다음달로 리턴.
                var nextMonth = DateTime.Today.AddMonths(1).ToString("yyyyMM") + input;
                // 다음달이 유효하지않다면 ex)2월 31일 같은 것
                if (!DateTime.TryParseExact(nextMonth, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dayoff))
                {
                    var month    = DateService.GetConvertPrintMonth(dayoff.ToString("MM"));
                    var inputDay = dayoff.ToString("dd");
                    errorMessage = month + " " + day + "이 맞나요? 그런 날짜는 존재하지 않아요. 다시 확인해보세요.";
                    return(false);
                }
            }

            // TODO: 요일 검증. (토요일, 일요일은 휴가를 사용할 필요가 없다.)
            if ((int)dayoff.DayOfWeek == 0 || (int)dayoff.DayOfWeek == 6) //0~6 일요일 - 토요일
            {
                var month = DateService.GetConvertPrintMonth(dayoff.ToString("MM"));
                errorMessage = month + " " + day + "은 주말입니다. 그냥 쉬시고 다른날짜를 입력해 주세요~";
                return(false);
            }
            // TODO: 공휴일 검증. (설날, 추석, 어린이날 등), DB로 공휴일 관리를 해야할듯 싶습니다. 이건 일단 PASS

            return(true);
        }