public GetQuestionSetResponse GetQuestionSet(GetQuestionSetRequest request) { GetQuestionSetResponse response = new GetQuestionSetResponse(); AuthToken authToken = null; try { Common.Helpers.ValidationHelper.ValidateRequiredField(request.AuthToken, "Auth Token"); if (!UserController.ValidateSession(request.AuthToken, out authToken)) { throw new AuthenticationException("Authentication failed."); } DbContext context = DataController.CreateDbContext(); E::QuestionSet questionSet = context.QuestionSets .Where(q => q.ID == request.QuestionSetID) .FirstOrDefault(); response.Name = questionSet.Name; response.Questions = (from questionSetQuestion in context.QuestionSetQuestions where questionSetQuestion.QuestionSetID == request.QuestionSetID join question in context.Questions on questionSetQuestion.QuestionID equals question.ID select new QuestionSetQuestionItem { Name = question.Name, ID = question.ID }).ToArray(); response.LastUpdatedBy = questionSet.LastUpdatedBy; response.LastUpdatedDate = questionSet.LastUpdatedDate.ToShortDateString(); response.CreatedBy = questionSet.CreatedBy; response.CreatedDate = questionSet.CreatedDate.ToShortDateString(); } 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); }
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; }
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); } }
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); }