Beispiel #1
0
        public virtual IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            var validationResults = new List <ValidationResult>();

            if (Files[0] == null)
            {
                validationResults.Add(new SitkaValidationResult <NewProjectDocumentViewModel, List <HttpPostedFileBase> >($"You must select at least one file to upload.", m => m.Files));
            }

            if (DisplayNames.Distinct().Count() < DisplayNames.Count())
            {
                validationResults.Add(new SitkaValidationResult <NewProjectDocumentViewModel, List <string> >($"Cannot submit multiple files with the same Display Name for a {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} Document", m => m.DisplayNames));
            }

            for (int key = 0; key < Files.Count; key++)
            {
                if (DisplayNames[key].IsNullOrWhiteSpace())
                {
                    validationResults.Add(new SitkaValidationResult <NewProjectDocumentViewModel, List <string> >($"Display Name is a required field.", m => m.DisplayNames));
                }


                if (Descriptions[key].Length > Models.ProjectDocument.FieldLengths.Description)
                {
                    validationResults.Add(new SitkaValidationResult <NewProjectDocumentViewModel, List <string> >($"Display Name \"{Descriptions[key]}\" is longer than the allowed {Models.ProjectDocument.FieldLengths.Description} character maximum.", m => m.Descriptions));
                }

                if (DisplayNames[key].Length > Models.ProjectDocument.FieldLengths.DisplayName)
                {
                    validationResults.Add(new SitkaValidationResult <NewProjectDocumentViewModel, List <string> >($"Display Name \"{DisplayNames[key]}\" is longer than the allowed {Models.ProjectDocument.FieldLengths.DisplayName} character maximum.", m => m.DisplayNames));
                }

                FileResource.ValidateFileSize(Files[key], validationResults, "Files");

                var displayNameToLower = DisplayNames[key].ToLower();

                if (HttpRequestStorage.DatabaseEntities.ProjectDocuments.Where(x => x.ProjectID == ParentID)
                    .Any(x => x.DisplayName.ToLower() == displayNameToLower))
                {
                    validationResults.Add(new SitkaValidationResult <NewProjectDocumentViewModel, List <string> >($"There is already a document with the Display Name \"{DisplayNames[key]}\" attached to this {Models.FieldDefinition.Project.GetFieldDefinitionLabel()}. Display Name must be unique for each Document attached to a {Models.FieldDefinition.Project.GetFieldDefinitionLabel()}", m => m.DisplayNames));
                }
            }

            return(validationResults);
        }
Beispiel #2
0
 /// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (Child == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "Child");
     }
     if (DisplayNames != null)
     {
         if (DisplayNames.Count > 6)
         {
             throw new ValidationException(ValidationRules.MaxItems, "DisplayNames", 6);
         }
         if (DisplayNames.Count < 0)
         {
             throw new ValidationException(ValidationRules.MinItems, "DisplayNames", 0);
         }
         if (DisplayNames.Count != DisplayNames.Distinct().Count())
         {
             throw new ValidationException(ValidationRules.UniqueItems, "DisplayNames");
         }
     }
     if (Capacity >= 100)
     {
         throw new ValidationException(ValidationRules.ExclusiveMaximum, "Capacity", 100);
     }
     if (Capacity <= 0)
     {
         throw new ValidationException(ValidationRules.ExclusiveMinimum, "Capacity", 0);
     }
     if (Image != null)
     {
         if (!System.Text.RegularExpressions.Regex.IsMatch(Image, "http://\\w+"))
         {
             throw new ValidationException(ValidationRules.Pattern, "Image", "http://\\w+");
         }
     }
 }