public async Task <IActionResult> ImportQuestionPartOptions(int surveyId, int questionPartId)
        {
            try {
                var file = Request.Form.Files[0];
                if (Request.Form.ContainsKey("parameters"))
                {
                    QuestionOptionValueViewModel optionParameters = JsonConvert.DeserializeObject <QuestionOptionValueViewModel> (Request.Form["parameters"]);

                    QuestionOptionValueViewModelValidator parameterValidator = new QuestionOptionValueViewModelValidator();
                    ValidationResult validParameters = parameterValidator.Validate(optionParameters);
                    if (validParameters.IsValid)
                    {
                        var questionPart = await this._unitOfWork.QuestionParts.GetQuestionPartWithOptionsAsync(questionPartId);

                        var errorCodes = this._surveyBuilderService.ImportQuestionOptions(questionPart, optionParameters.Name, optionParameters.OptionLabel.Language, file);
                        await this._unitOfWork.SaveChangesAsync();

                        if (errorCodes.Count == 0)
                        {
                            return(Ok("success"));
                        }
                        else
                        {
                            string code = this._fileDownloader.GenerateFileCode();
                            this._fileDownloader.WriteErrorCodes(code, this.User.Identity.Name, errorCodes);
                            return(Ok(code));
                        }
                    }
                    else
                    {
                        AddErrors(validParameters.Errors.Select(e => e.ErrorMessage));
                        return(BadRequest(ModelState));
                    }
                }
                else
                {
                    return(BadRequest("Missing Import Parameters"));
                }
            } catch (System.Exception ex) {
                return(BadRequest("Upload Failed: " + ex.Message));
            }
        }
        public async Task <IActionResult> SetQuestionPartOption(int surveyId, int questionPartId, [FromBody] QuestionOptionValueViewModel newOption)
        {
            if (ModelState.IsValid)
            {
                var survey = await this._unitOfWork.Surveys.GetAsync(surveyId);

                if (survey.Owner == this.User.Identity.Name || await HasModifySurveyPermissions(surveyId))
                {
                    try {
                        var questionPart = await this._unitOfWork.QuestionParts.GetQuestionPartWithOptionsAsync(questionPartId);

                        var option = this._surveyBuilderService.SetQuestionOptionLabel(questionPart, newOption.Id, newOption.Code, newOption.Name, newOption.OptionLabel.Value, newOption.OptionLabel.Language);
                        await this._unitOfWork.SaveChangesAsync();

                        return(Ok(option.ToLocalizedModel <QuestionOptionValueViewModel> (newOption.OptionLabel.Language)));
                    } catch (Exception ex) {
                        return(BadRequest(ex.Message));
                    }
                }
                else
                {
                    return(BadRequest("Insufficient privileges."));
                }
            }
            return(BadRequest(ModelState));
        }