Exemple #1
0
        public async Task <IHttpActionResult> CreateProblem()
        {
            if (!user_service.IsAuthorizedToCreateProblem())
            {
                return(Unauthorized());
            }

            // request contain must be of type multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            string root     = HttpContext.Current.Server.MapPath("~/App_Data");
            var    provider = new MultipartFormDataStreamProvider(root);

            try{
                // Read the form data.
                await Request.Content.ReadAsMultipartAsync(provider);
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }

            var problem_form = new ProblemCreationForm(provider.FormData, provider.FileData);

            FormDataValidationResult result = problem_form.Validate();

            if (result.IsValid)
            {
                problem_repository.CreateProblem(problem_form);
                return(Ok());
            }
            else
            {
                return(new BadHttpRequest(result.ErrorMessages));
            }
        }