public Collection <VLLibraryQuestion> GetLibraryQuestions(Int16 categoryId, int pageIndex, int pageSize, ref int totalRows, string whereClause = null, string orderByClause = null, short textsLanguage = /*DefaultLanguage*/ -2)
        {
            #region SecurityLayer
            #endregion

            return(LibrariesDal.GetLibraryQuestions(this.AccessTokenId, categoryId, pageIndex, pageSize, ref totalRows, whereClause, orderByClause, textsLanguage));
        }
        public VLLibraryQuestionCategory GetLibraryQuestionCategoryById(Int16 categoryId, short textsLanguage = -2)
        {
            #region SecurityLayer
            #endregion

            return(LibrariesDal.GetLibraryQuestionCategoryById(this.AccessTokenId, categoryId, textsLanguage));
        }
        public void DeleteLibraryQuestion(Int32 questionId)
        {
            var existingItem = LibrariesDal.GetLibraryQuestionById(this.AccessTokenId, questionId);

            if (existingItem == null)
            {
                throw new VLException(SR.GetString(SR.There_is_no_item_with_id, "LibraryQuestion", questionId));
            }


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

            //Δεν μπορούμε να διαγράψουμε την συγκεκριμένη ερώτηση εάν έχει ήδη χρησιμοποιηθεί:
            if (SurveysDal.GetQuestionsForLibraryQuestionCount(this.AccessTokenId, existingItem.QuestionId) > 0)
            {
                throw new VLException("You cannot delete this LibraryQuestion! It is been used by Survey Questions!");
            }



            LibrariesDal.DeleteLibraryQuestion(this.AccessTokenId, questionId);
        }
        public Collection <VLLibraryQuestionCategory> GetLibraryQuestionCategories(int pageIndex, int pageSize, ref int totalRows, string whereClause = null, string orderByClause = "order by Name", short textsLanguage = -2)
        {
            #region SecurityLayer
            #endregion

            return(LibrariesDal.GetLibraryQuestionCategories(this.AccessTokenId, pageIndex, pageSize, ref totalRows, whereClause, orderByClause, textsLanguage));
        }
        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 VLLibraryQuestion GetLibraryQuestionById(Int32 questionId, short textsLanguage = /*DefaultLanguage*/ -2)
        {
            #region SecurityLayer
            #endregion

            return(LibrariesDal.GetLibraryQuestionById(this.AccessTokenId, questionId, textsLanguage));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <param name="textsLanguage"></param>
        /// <returns></returns>
        public VLLibraryQuestionCategory CreateLibraryQuestionCategory(string name, short textsLanguage = -2)
        {
            Utility.CheckParameter(ref name, true, true, false, 128, "Name");

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


            /*
             * Ελέγχουμε εάν υπάρχει ήδη στην βάση αυτό το name, σε οποιαδήποτε γλώσσα:
             */
            var existingItem = LibrariesDal.GetLibraryQuestionCategoryByName(this.AccessTokenId, name, textsLanguage);
            if (existingItem != null)
            {
                throw new VLException(SR.GetString(SR.Value_is_already_in_use, "Name", name));
            }

            var category = new VLLibraryQuestionCategory();
            category.Name = name;
            return(LibrariesDal.CreateLibraryQuestionCategory(this.AccessTokenId, category, textsLanguage));
        }
        public void DeleteLibraryQuestionCategory(Int16 categoryId)
        {
            var existingItem = LibrariesDal.GetLibraryQuestionCategoryById(this.AccessTokenId, categoryId);

            if (existingItem == null)
            {
                throw new VLException(SR.GetString(SR.There_is_no_item_with_id, "LibraryQuestionCategory", categoryId));
            }

            //Can we delete the LibraryQuestinCategory?
            if (existingItem.IsBuiltIn)
            {
                throw new VLException(SR.GetString(SR.You_cannot_delete_builtin, "LibraryQuestionCategory"));
            }

            var _total = LibrariesDal.GetLibraryQuestionsCount(this.AccessTokenId, categoryId);

            if (_total == 1)
            {
                throw new VLException(string.Format("You cannot delete library category '{0}'. There is one question depending on it!", existingItem.Name));
            }
            else if (_total > 1)
            {
                throw new VLException(string.Format("You cannot delete library category '{0}'. There are questions depending on it!", existingItem.Name));
            }


            LibrariesDal.DeleteLibraryQuestionCategory(this.AccessTokenId, existingItem.CategoryId);
        }
        public VLLibraryOption CreateLibraryQuestionOption(Int32 question, string optionText, QuestionOptionType type = QuestionOptionType.Default, short textsLanguage = /*DefaultLanguage*/ -2)
        {
            VLLibraryOption option = new VLLibraryOption();

            option.Question   = question;
            option.OptionText = optionText;
            option.OptionType = type;
            return(LibrariesDal.CreateLibraryOption(this.AccessTokenId, option, textsLanguage));
        }
        public VLLibraryColumn CreateLibraryQuestionColumn(Int32 question, string columnText, short textsLanguage = /*DefaultLanguage*/ -2)
        {
            VLLibraryColumn column = new VLLibraryColumn();

            column.Question   = question;
            column.ColumnText = columnText;

            return(LibrariesDal.CreateLibraryColumn(this.AccessTokenId, column, textsLanguage));
        }
        public VLLibraryOption UpdateLibraryQuestionOption(VLLibraryOption option)
        {
            if (option == null)
            {
                throw new ArgumentNullException("option");
            }
            option.ValidateInstance();

            //διαβάζουμε το option απο την βάση μας:
            var existingItem = LibrariesDal.GetLibraryOptionById(AccessTokenId, option.Question, option.OptionId, option.TextsLanguage);

            if (existingItem == null)
            {
                throw new VLException(SR.GetString(SR.There_is_no_item_with_id, "Option", option.OptionId));
            }


            existingItem.OptionText = option.OptionText;

            return(LibrariesDal.UpdateLibraryOption(AccessTokenId, existingItem));
        }
        public VLLibraryColumn UpdateLibraryQuestionColumn(VLLibraryColumn column)
        {
            if (column == null)
            {
                throw new ArgumentNullException("column");
            }
            column.ValidateInstance();

            //διαβάζουμε το option απο την βάση μας:
            var existingItem = LibrariesDal.GetLibraryColumnById(AccessTokenId, column.Question, column.ColumnId, column.TextsLanguage);

            if (existingItem == null)
            {
                throw new VLException(SR.GetString(SR.There_is_no_item_with_id, "Column", column.ColumnId));
            }


            existingItem.ColumnText = column.ColumnText;

            return(LibrariesDal.UpdateLibraryColumn(AccessTokenId, existingItem));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="category"></param>
        /// <returns></returns>
        public VLLibraryQuestionCategory UpdateLibraryQuestionCategory(VLLibraryQuestionCategory category)
        {
            if (category == null)
            {
                throw new ArgumentNullException("category");
            }
            category.ValidateInstance();

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

            /*Το name κάθε κατηγορίας πρέπει να είναι μοναδικό*/
            var existingItem = LibrariesDal.GetLibraryQuestionCategoryByName(this.AccessTokenId, category.Name, category.TextsLanguage);
            if (existingItem != null && existingItem.CategoryId != category.CategoryId)
            {
                throw new VLException(SR.GetString(SR.Value_is_already_in_use, "Name", category.Name));
            }
            if (existingItem == null)
            {
                existingItem = LibrariesDal.GetLibraryQuestionCategoryById(AccessTokenId, category.CategoryId, category.TextsLanguage);
            }
            if (existingItem == null)
            {
                throw new VLException(SR.GetString(SR.There_is_no_item_with_id, "LibraryQuestionCategory", category.CategoryId));
            }

            existingItem.AttributeFlags = category.AttributeFlags;
            existingItem.Name           = category.Name;

            return(LibrariesDal.UpdateLibraryQuestionCategory(this.AccessTokenId, existingItem));
        }
 public void DeleteLibraryQuestionOption(Int32 question, byte option)
 {
     LibrariesDal.DeleteLibraryOption(this.AccessTokenId, question, option);
 }
        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));
        }
 public VLLibraryOption GetLibraryQuestionOptionById(Int32 question, Byte option, short textsLanguage = /*DefaultLanguage*/ -2)
 {
     return(LibrariesDal.GetLibraryOptionById(AccessTokenId, question, option, textsLanguage));
 }
 public Collection <VLLibraryColumn> GetLibraryQuestionColumns(Int32 question, short textsLanguage = /*DefaultLanguage*/ -2)
 {
     return(LibrariesDal.GetLibraryColumns(this.AccessTokenId, question, textsLanguage));
 }
 public void DeleteLibraryQuestionColumn(Int32 question, byte columnId)
 {
     LibrariesDal.DeleteLibraryColumn(this.AccessTokenId, question, columnId);
 }
 public VLLibraryColumn GetLibraryQuestionColumnById(Int32 question, byte columnId, short textsLanguage = /*DefaultLanguage*/ -2)
 {
     return(LibrariesDal.GetLibraryColumnById(AccessTokenId, question, columnId, textsLanguage));
 }