internal VLLibraryQuestion CreateLibraryQuestion(VLLibraryQuestion question, short textsLanguage = /*DefaultLanguage*/ -2)
        {
            if (question == null)
            {
                throw new ArgumentNullException("question");
            }
            question.ValidateInstance();


            #region SecurityLayer
            if (this.PrincipalType == Core.PrincipalType.SystemUser)
            {
                CheckPermissions(VLPermissions.ManageSystem, VLPermissions.Developer, VLPermissions.SystemService, VLPermissions.ManageBuidingBlocks);
            }
            else
            {
                throw new VLAccessDeniedException();
            }
            #endregion


            /*Υπάρχει η κατηγορία?*/
            var category = LibrariesDal.GetLibraryQuestionCategoryById(this.AccessTokenId, question.Category);
            if (category == null)
            {
                throw new VLException(SR.GetString(SR.There_is_no_item_with_id, "LibraryQuestionCategory", question.Category));
            }

            return(LibrariesDal.CreateLibraryQuestion(this.AccessTokenId, question));
        }
 public VLLibraryColumn CreateLibraryQuestionColumn(VLLibraryQuestion question, string columnText)
 {
     if (question == null)
     {
         throw new ArgumentNullException("question");
     }
     return(CreateLibraryQuestionColumn(question.QuestionId, columnText, question.TextsLanguage));
 }
 public Collection <VLLibraryColumn> GetLibraryQuestionColumns(VLLibraryQuestion question)
 {
     if (question == null)
     {
         throw new ArgumentNullException("question");
     }
     return(GetLibraryQuestionColumns(question.QuestionId, question.TextsLanguage));
 }
 public VLLibraryOption CreateLibraryQuestionOption(VLLibraryQuestion question, string optionText, QuestionOptionType type = QuestionOptionType.Default)
 {
     if (question == null)
     {
         throw new ArgumentNullException("question");
     }
     return(CreateLibraryQuestionOption(question.QuestionId, optionText, type, question.TextsLanguage));
 }
        public VLLibraryQuestion CreateLibraryQuestion(Int16 categoryId, QuestionType type, string questionText, short textsLanguage = /*DefaultLanguage*/ -2)
        {
            VLLibraryQuestion question = new VLLibraryQuestion();

            question.Category     = categoryId;
            question.QuestionType = type;
            question.QuestionText = questionText;

            return(CreateLibraryQuestion(question, textsLanguage));
        }
예제 #6
0
 internal static string GetString(string p1, string p2, VLLibraryQuestion libraryQuestion)
 {
     throw new NotImplementedException();
 }
        private void _Validatequestion(VLLibraryQuestion question)
        {
            if (question.IsRequired == false)
            {
                question.RequiredBehavior = null;
                question.RequiredMinLimit = null;
                question.RequiredMaxLimit = null;
                question.RequiredMessage  = null;
            }
            else
            {
                if (string.IsNullOrWhiteSpace(question.RequiredMessage))
                {
                    throw new VLException("RequiredMessage cannot be null or an empty string!");
                }
            }
            if (question.OptionalInputBox == false)
            {
                question.OtherFieldType  = null;
                question.OtherFieldRows  = null;
                question.OtherFieldChars = null;
                question.OtherFieldLabel = null;
            }
            else
            {
                if (string.IsNullOrWhiteSpace(question.OtherFieldLabel))
                {
                    throw new VLException("You must give a label for the OtherField!");
                }
                if (question.OtherFieldType != OtherFieldType.SingleLine && question.OtherFieldType != OtherFieldType.MultipleLines)
                {
                    throw new VLException("You must give a type for the OtherField!");
                }
            }
            if (question.ValidationBehavior == ValidationMode.DoNotValidate)
            {
                question.ValidationField1  = null;
                question.ValidationField2  = null;
                question.ValidationField3  = null;
                question.RegularExpression = null;
                question.ValidationMessage = null;
            }
            else
            {
                if (question.ValidationBehavior == ValidationMode.TextOfSpecificLength || question.ValidationBehavior == ValidationMode.WholeNumber)
                {
                    Int32 _between = 0, _and = 0;

                    //Είναι απαραίτητο να υπάρχει ValidationMessage:
                    if (string.IsNullOrWhiteSpace(question.ValidationMessage))
                    {
                        throw new VLException("ValidationMessage cannot be null or an empty string!");
                    }

                    //Πρέπει το ValidationField1 & ValidationField2 να είναι ακέραιοι αριθμοί και ValidationField1 <= ValidationField2:
                    if (string.IsNullOrWhiteSpace(question.ValidationField1))
                    {
                        throw new VLException("Validation setup error. First range value is wrong!");
                    }
                    if (string.IsNullOrWhiteSpace(question.ValidationField2))
                    {
                        throw new VLException("Validation setup error. Second range value is wrong!");
                    }
                    try
                    {
                        _between = Convert.ToInt32(question.ValidationField1, CultureInfo.InvariantCulture);
                        _and     = Convert.ToInt32(question.ValidationField2, CultureInfo.InvariantCulture);
                    }
                    catch
                    {
                        throw new VLException("Validation setup error. Range values have wrong types!");
                    }

                    if (_between > _and)
                    {
                        throw new VLException("Validation setup error. Range values are wrong!");
                    }
                }
                else if (question.ValidationBehavior == ValidationMode.DecimalNumber)
                {
                    Double _between = 0, _and = 0;

                    //Είναι απαραίτητο να υπάρχει ValidationMessage:
                    if (string.IsNullOrWhiteSpace(question.ValidationMessage))
                    {
                        throw new VLException("ValidationMessage cannot be null or an empty string!");
                    }

                    //Πρέπει το ValidationField1 & ValidationField2 να είναι ακέραιοι αριθμοί και ValidationField1 <= ValidationField2:
                    if (string.IsNullOrWhiteSpace(question.ValidationField1))
                    {
                        throw new VLException("Validation setup error. First range value is wrong!");
                    }
                    if (string.IsNullOrWhiteSpace(question.ValidationField2))
                    {
                        throw new VLException("Validation setup error. Second range value is wrong!");
                    }
                    try
                    {
                        _between = Convert.ToDouble(question.ValidationField1, CultureInfo.InvariantCulture);
                        _and     = Convert.ToDouble(question.ValidationField2, CultureInfo.InvariantCulture);
                    }
                    catch
                    {
                        throw new VLException("Validation setup error. Range values have wrong types!");
                    }

                    if (_between > _and)
                    {
                        throw new VLException("Validation setup error. Range values are wrong!");
                    }
                }
                else if (question.ValidationBehavior == ValidationMode.Date1)
                {
                    //Είναι απαραίτητο να υπάρχει ValidationMessage:
                    if (string.IsNullOrWhiteSpace(question.ValidationMessage))
                    {
                        question.ValidationMessage = "The specified date is invalid";
                    }
                }
                else if (question.ValidationBehavior == ValidationMode.Date2)
                {
                    //Είναι απαραίτητο να υπάρχει ValidationMessage:
                    if (string.IsNullOrWhiteSpace(question.ValidationMessage))
                    {
                        question.ValidationMessage = "The specified date is invalid";
                    }
                }
                else if (question.ValidationBehavior == ValidationMode.Email)
                {
                    //Είναι απαραίτητο να υπάρχει ValidationMessage:
                    if (string.IsNullOrWhiteSpace(question.ValidationMessage))
                    {
                        question.ValidationMessage = "Email address is invalid";
                    }
                }
                else if (question.ValidationBehavior == ValidationMode.RegularExpression)
                {
                    //ΔΕΝ Είναι απαραίτητο να υπάρχει ValidationMessage:
                }
            }
        }
        public VLLibraryQuestion UpdateLibraryQuestion(VLLibraryQuestion question)
        {
            #region input parameters validation
            if (question == null)
            {
                throw new ArgumentNullException("question");
            }
            question.ValidateInstance();
            #endregion


            #region SecurityLayer
            if (this.PrincipalType == Core.PrincipalType.SystemUser)
            {
                CheckPermissions(VLPermissions.ManageSystem, VLPermissions.Developer, VLPermissions.SystemService, VLPermissions.ManageBuidingBlocks);
            }
            else
            {
                throw new VLAccessDeniedException();
            }
            #endregion


            //Υπάρχει η ερώτησή στο σύστημα:
            var existingItem = LibrariesDal.GetLibraryQuestionById(AccessTokenId, question.QuestionId, question.TextsLanguage);
            if (existingItem == null)
            {
                throw new VLException(SR.GetString(SR.There_is_no_item_with_id, "Question", question.QuestionId));
            }
            //Δεν μπορούμε να αλλάξουμε τον τύπο της ερώτησης στο update:
            if (existingItem.QuestionType != question.QuestionType)
            {
                throw new VLException(string.Format("You cannot change the questionType of an existing question from {0} to {1}!", existingItem.QuestionType.ToString(), question.QuestionType.ToString()));
            }

            /*Ελέγχουμε την εγκυρότητα της αλλαγμένης ερώτησης, που πάμε να αποθηκεύσουμε:*/
            _Validatequestion(question);



            //existingItem.Category = question.Category;
            //existingItem.QuestionType = question.QuestionType;
            existingItem.IsRequired       = question.IsRequired;
            existingItem.RequiredBehavior = question.RequiredBehavior;
            existingItem.RequiredMinLimit = question.RequiredMinLimit;
            existingItem.RequiredMaxLimit = question.RequiredMaxLimit;

            //AttributeFlags
            existingItem.OptionalInputBox         = question.OptionalInputBox;
            existingItem.RandomizeOptionsSequence = question.RandomizeOptionsSequence;
            existingItem.DoNotRandomizeLastOption = question.DoNotRandomizeLastOption;
            existingItem.RandomizeColumnSequence  = question.RandomizeColumnSequence;
            existingItem.OneResponsePerColumn     = question.OneResponsePerColumn;
            existingItem.AddResetLink             = question.AddResetLink;
            existingItem.UseDateTimeControls      = question.UseDateTimeControls;

            existingItem.ValidationBehavior = question.ValidationBehavior;
            existingItem.ValidationField1   = question.ValidationField1;
            existingItem.ValidationField2   = question.ValidationField2;
            existingItem.ValidationField3   = question.ValidationField3;
            existingItem.RegularExpression  = question.RegularExpression;
            existingItem.RandomBehavior     = question.RandomBehavior;
            existingItem.OtherFieldType     = question.OtherFieldType;
            existingItem.OtherFieldRows     = question.OtherFieldRows;
            existingItem.OtherFieldChars    = question.OtherFieldChars;
            //OptionsSequence
            //ColumnsSequence
            existingItem.RangeStart = question.RangeStart;
            existingItem.RangeEnd   = question.RangeEnd;
            //TextsLanguage
            existingItem.QuestionText      = question.QuestionText;
            existingItem.Description       = question.Description;
            existingItem.HelpText          = question.HelpText;
            existingItem.FrontLabelText    = question.FrontLabelText;
            existingItem.AfterLabelText    = question.AfterLabelText;
            existingItem.InsideText        = question.InsideText;
            existingItem.RequiredMessage   = question.RequiredMessage;
            existingItem.ValidationMessage = question.ValidationMessage;
            existingItem.OtherFieldLabel   = question.OtherFieldLabel;



            return(LibrariesDal.UpdateLibraryQuestion(AccessTokenId, existingItem));
        }