Esempio n. 1
0
        private IEnumerable <ValidationError> ValidateShow(ShowVm model, EventMetadataVm eventVm, string prefix = "")
        {
            var result = new List <ValidationError>();

            var titleProperty = model.GetPropertyName(p => p.Title);

            if (string.IsNullOrEmpty(model.Title))
            {
                result.Add(new ValidationError(
                               prefix + titleProperty,
                               T("Title can not be empty!").Text));
            }
            else if (model.Title.Length > 255)
            {
                result.Add(new ValidationError(
                               prefix + titleProperty,
                               T("Title can not be larger than 255 characters!").Text));
            }

            var pictureProperty = model.GetPropertyName(p => p.Picture);

            if (!string.IsNullOrEmpty(model.Picture))
            {
                if (model.Picture.Length > 255)
                {
                    result.Add(new ValidationError(
                                   prefix + pictureProperty,
                                   T("Picture url can not be larger than 255 characters!").Text));
                }
                else if (!model.Picture.IsUrlValid())
                {
                    result.Add(new ValidationError(
                                   prefix + pictureProperty,
                                   T("Picture url is in bad format!").Text));
                }
            }

            var detailsUrlProperty = model.GetPropertyName(p => p.DetailsUrl);

            if (!string.IsNullOrEmpty(model.DetailsUrl))
            {
                if (model.DetailsUrl.Length > 255)
                {
                    result.Add(new ValidationError(
                                   prefix + detailsUrlProperty,
                                   T("Details url can not be larger than 255 characters!").Text));
                }
                else if (!model.DetailsUrl.IsUrlValid())
                {
                    result.Add(new ValidationError(
                                   prefix + detailsUrlProperty,
                                   T("Details url is in bad format!").Text));
                }
            }

            var startTimeProperty = model.GetPropertyName(p => p.StartTime);

            if (model.StartTime.HasValue && model.EndTime.HasValue &&
                model.StartTime.Value > model.EndTime.Value)
            {
                result.Add(new ValidationError(
                               prefix + startTimeProperty,
                               T("Show start time has to be less than or equal to the end time.").Text));
            }

            var eventStartDate = eventVm.StartDate;
            var eventEndDate   = eventVm.EndDate ?? eventVm.StartDate;

            if (model.StartTime.HasValue && eventStartDate.HasValue &&
                (model.StartTime.Value < eventStartDate.Value.AddDays(-1) ||
                 (eventEndDate.HasValue && model.StartTime.Value > eventEndDate.Value.AddDays(1))))
            {
                result.Add(new ValidationError(
                               prefix + startTimeProperty,
                               T("Show start time has to be between event start and end dates.").Text));
            }

            var endTimeProperty = model.GetPropertyName(p => p.EndTime);

            if (model.EndTime.HasValue && eventStartDate.HasValue &&
                (model.EndTime.Value < eventStartDate.Value.AddDays(-1) ||
                 (eventEndDate.HasValue && model.EndTime.Value > eventEndDate.Value.AddDays(2))))
            {
                result.Add(new ValidationError(
                               prefix + endTimeProperty,
                               T("Show end time has to be between event start and end dates.").Text));
            }

            return(result);
        }