コード例 #1
0
        public void EditQuestionSet(EditQuestionSetRequest request)
        {
            AuthToken authToken = null;

            try
            {
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.AuthToken, "Auth Token");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.AntiForgeryToken, "Anti Forgery Token");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.Name, "Name");

                Common.Helpers.ValidationHelper.ValidateStringLength(request.Name, "Name", Constants.MaxNameLength);
                Common.Helpers.ValidationHelper.Assert(request.QuestionIDs.Any(), "No questions selected.");

                if (!UserController.ValidateSession(request.AuthToken, out authToken))
                {
                    throw new AuthenticationException("Authentication failed.");
                }

                UserController.ValidateAntiForgeryToken(request.AntiForgeryToken, authToken);

                DbContext context =  DataController.CreateDbContext();

                if (string.IsNullOrEmpty(request.Name))
                {
                    throw new Common.Exceptions.ValidationException("Please fill in the name field.");
                }

                E::QuestionSet questionSet = context.QuestionSets.FirstOrDefault(q => q.ID == request.QuestionSetID);

                E::QuestionSetQuestion[] questionSetQuestions = context.QuestionSetQuestions.Where(iq => iq.QuestionSetID == request.QuestionSetID).ToArray();

                foreach (E::QuestionSetQuestion questionSetQuestion in questionSetQuestions)
                {
                    if (!request.QuestionIDs.Contains(questionSetQuestion.QuestionID))
                    {
                        context.QuestionSetQuestions.Remove(questionSetQuestion);
                    }
                }

                foreach (Guid questionId in request.QuestionIDs.Except(questionSetQuestions.Select(iq => iq.QuestionID)))
                {
                    E::QuestionSetQuestion newQuestionSetQuestion = new E.QuestionSetQuestion();
                    newQuestionSetQuestion.QuestionSetID = request.QuestionSetID;
                    newQuestionSetQuestion.QuestionID = questionId;

                    context.QuestionSetQuestions.Add(newQuestionSetQuestion);
                }

                questionSet.Name = request.Name;
                questionSet.LastUpdatedBy = authToken.Username;
                questionSet.LastUpdatedDate = DateTime.UtcNow;

                context.SaveChanges();
            }
            catch (AuthenticationException ex)
            {
                throw new WebFaultException<string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Common.Exceptions.ValidationException ex)
            {
                throw new WebFaultException<string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Exception ex)
            {
                ExceptionHelper.Log(ex, authToken == null ? null : authToken.Username);
                throw new WebFaultException<string>("An unknown error has occurred.", System.Net.HttpStatusCode.InternalServerError);
            }
        }
コード例 #2
0
        public void EditQuestionSet(EditQuestionSetRequest request)
        {
            AuthToken authToken = null;

            try
            {
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.AuthToken, "Auth Token");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.AntiForgeryToken, "Anti Forgery Token");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.Name, "Name");

                Common.Helpers.ValidationHelper.ValidateStringLength(request.Name, "Name", Constants.MaxNameLength);
                Common.Helpers.ValidationHelper.Assert(request.QuestionIDs.Any(), "No questions selected.");

                if (!UserController.ValidateSession(request.AuthToken, out authToken))
                {
                    throw new AuthenticationException("Authentication failed.");
                }

                UserController.ValidateAntiForgeryToken(request.AntiForgeryToken, authToken);

                DbContext context = DataController.CreateDbContext();

                if (string.IsNullOrEmpty(request.Name))
                {
                    throw new Common.Exceptions.ValidationException("Please fill in the name field.");
                }

                E::QuestionSet questionSet = context.QuestionSets.FirstOrDefault(q => q.ID == request.QuestionSetID);

                E::QuestionSetQuestion[] questionSetQuestions = context.QuestionSetQuestions.Where(iq => iq.QuestionSetID == request.QuestionSetID).ToArray();

                foreach (E::QuestionSetQuestion questionSetQuestion in questionSetQuestions)
                {
                    if (!request.QuestionIDs.Contains(questionSetQuestion.QuestionID))
                    {
                        context.QuestionSetQuestions.Remove(questionSetQuestion);
                    }
                }

                foreach (Guid questionId in request.QuestionIDs.Except(questionSetQuestions.Select(iq => iq.QuestionID)))
                {
                    E::QuestionSetQuestion newQuestionSetQuestion = new E.QuestionSetQuestion();
                    newQuestionSetQuestion.QuestionSetID = request.QuestionSetID;
                    newQuestionSetQuestion.QuestionID    = questionId;

                    context.QuestionSetQuestions.Add(newQuestionSetQuestion);
                }

                questionSet.Name            = request.Name;
                questionSet.LastUpdatedBy   = authToken.Username;
                questionSet.LastUpdatedDate = DateTime.UtcNow;

                context.SaveChanges();
            }
            catch (AuthenticationException ex)
            {
                throw new WebFaultException <string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Common.Exceptions.ValidationException ex)
            {
                throw new WebFaultException <string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Exception ex)
            {
                ExceptionHelper.Log(ex, authToken == null ? null : authToken.Username);
                throw new WebFaultException <string>("An unknown error has occurred.", System.Net.HttpStatusCode.InternalServerError);
            }
        }
コード例 #3
0
        public CreateQuestionSetResponse CreateQuestionSet(CreateQuestionSetRequest request)
        {
            CreateQuestionSetResponse response = new CreateQuestionSetResponse();

            AuthToken authToken = null;

            try
            {
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.AuthToken, "Auth Token");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.AntiForgeryToken, "Anti Forgery Token");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.Name, "Name");

                Common.Helpers.ValidationHelper.ValidateStringLength(request.Name, "Name", Constants.MaxNameLength);
                Common.Helpers.ValidationHelper.Assert(request.QuestionIDs.Any(), "No questions selected.");

                if (!UserController.ValidateSession(request.AuthToken, out authToken))
                {
                    throw new AuthenticationException("Authentication failed.");
                }

                UserController.ValidateAntiForgeryToken(request.AntiForgeryToken, authToken);

                DbContext context =  DataController.CreateDbContext();

                E::QuestionSet newQuestionSet = new E::QuestionSet();

                newQuestionSet.ID = Guid.NewGuid();
                newQuestionSet.Name = request.Name;
                newQuestionSet.CreatedBy = authToken.Username;
                newQuestionSet.CreatedDate = DateTime.UtcNow;
                newQuestionSet.LastUpdatedBy = authToken.Username;
                newQuestionSet.LastUpdatedDate = DateTime.UtcNow;

                context.QuestionSets.Add(newQuestionSet);

                foreach (Guid questionId in request.QuestionIDs)
                {
                    E::QuestionSetQuestion newQuestionSetQuestion = new E.QuestionSetQuestion();
                    newQuestionSetQuestion.QuestionSetID = newQuestionSet.ID;
                    newQuestionSetQuestion.QuestionID = questionId;

                    context.QuestionSetQuestions.Add(newQuestionSetQuestion);
                }

                context.SaveChanges();

                response.QuestionSetID = newQuestionSet.ID;
            }
            catch (AuthenticationException ex)
            {
                throw new WebFaultException<string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Common.Exceptions.ValidationException ex)
            {
                throw new WebFaultException<string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Exception ex)
            {
                ExceptionHelper.Log(ex, authToken == null ? null : authToken.Username);
                throw new WebFaultException<string>("An unknown error has occurred.", System.Net.HttpStatusCode.InternalServerError);
            }

            return response;
        }
コード例 #4
0
        public CreateQuestionSetResponse CreateQuestionSet(CreateQuestionSetRequest request)
        {
            CreateQuestionSetResponse response = new CreateQuestionSetResponse();

            AuthToken authToken = null;

            try
            {
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.AuthToken, "Auth Token");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.AntiForgeryToken, "Anti Forgery Token");
                Common.Helpers.ValidationHelper.ValidateRequiredField(request.Name, "Name");

                Common.Helpers.ValidationHelper.ValidateStringLength(request.Name, "Name", Constants.MaxNameLength);
                Common.Helpers.ValidationHelper.Assert(request.QuestionIDs.Any(), "No questions selected.");

                if (!UserController.ValidateSession(request.AuthToken, out authToken))
                {
                    throw new AuthenticationException("Authentication failed.");
                }

                UserController.ValidateAntiForgeryToken(request.AntiForgeryToken, authToken);

                DbContext context = DataController.CreateDbContext();

                E::QuestionSet newQuestionSet = new E::QuestionSet();

                newQuestionSet.ID              = Guid.NewGuid();
                newQuestionSet.Name            = request.Name;
                newQuestionSet.CreatedBy       = authToken.Username;
                newQuestionSet.CreatedDate     = DateTime.UtcNow;
                newQuestionSet.LastUpdatedBy   = authToken.Username;
                newQuestionSet.LastUpdatedDate = DateTime.UtcNow;

                context.QuestionSets.Add(newQuestionSet);

                foreach (Guid questionId in request.QuestionIDs)
                {
                    E::QuestionSetQuestion newQuestionSetQuestion = new E.QuestionSetQuestion();
                    newQuestionSetQuestion.QuestionSetID = newQuestionSet.ID;
                    newQuestionSetQuestion.QuestionID    = questionId;

                    context.QuestionSetQuestions.Add(newQuestionSetQuestion);
                }

                context.SaveChanges();

                response.QuestionSetID = newQuestionSet.ID;
            }
            catch (AuthenticationException ex)
            {
                throw new WebFaultException <string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Common.Exceptions.ValidationException ex)
            {
                throw new WebFaultException <string>(ex.Message, System.Net.HttpStatusCode.BadRequest);
            }
            catch (Exception ex)
            {
                ExceptionHelper.Log(ex, authToken == null ? null : authToken.Username);
                throw new WebFaultException <string>("An unknown error has occurred.", System.Net.HttpStatusCode.InternalServerError);
            }

            return(response);
        }