Example #1
0
        public async Task <IHttpActionResult> Upload(int id)
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                return(BadRequest("File improperly formatted."));
            }

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

            try
            {
                await Request.Content.ReadAsMultipartAsync(provider);

                var    file     = provider.FileData[0];
                string fileName = file.LocalFileName;

                string hasHeaderFormValue = provider.FormData.GetValues("hasHeader")[0];
                bool   hasHeader          = hasHeaderFormValue.Contains("yes") ? true : false;

                FileUploadHelper helper           = new FileUploadHelper();
                List <string>    accessionNumbers = helper.ParseFileToList(fileName, hasHeader);

                List <RejectedAccessionDto> rejectedAccessions = new List <RejectedAccessionDto>();

                using (var context = new CCFDataEntities())
                {
                    var researchProjectInDb = context.ResearchProjects.Single(p => p.ProjectID == id);

                    if (researchProjectInDb == null)
                    {
                        return(BadRequest("The selected research project does not exist."));
                    }

                    rejectedAccessions = ValidateUploadedAccessions(accessionNumbers, context, researchProjectInDb);
                }

                return(Ok(rejectedAccessions));
            }
            catch (InvalidCastException e)
            {
                return(InternalServerError(e));
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }