Exemplo n.º 1
0
        public async Task <HttpResponseMessage> UploadToBlob()
        {
            string squestion_id = "questionId";
            string sanswerId    = "answerId";
            string stitle       = "title";
            string bmaturity    = "maturity";


            int    assessmentId = Auth.AssessmentForUser();
            string fileHash;

            try
            {
                FileUploadStream            fileUploader = new FileUploadStream();
                Dictionary <string, string> formValues   = new Dictionary <string, string>();
                formValues.Add(squestion_id, null);
                formValues.Add(sanswerId, null);
                formValues.Add(stitle, null);
                formValues.Add(bmaturity, null);


                FileUploadStreamResult streamResult = await fileUploader.ProcessUploadStream(this.Request, formValues);


                // Find or create the Answer for the document to be associated with.
                // If they are attaching a document to a question that has not yet been answered,
                // the answerId will not be sent in the request.
                int    questionId = int.Parse(streamResult.FormNameValues[squestion_id]);
                int    answerId;
                bool   isAnswerIdProvided = int.TryParse(streamResult.FormNameValues[sanswerId], out answerId);
                string title      = streamResult.FormNameValues[stitle];
                bool   isMaturity = false;
                bool.TryParse(streamResult.FormNameValues[bmaturity], out isMaturity);

                if (!isAnswerIdProvided)
                {
                    QuestionsManager qm     = new QuestionsManager(assessmentId);
                    Answer           answer = new Answer();
                    answer.QuestionId   = questionId;
                    answer.AnswerText   = "U";
                    answer.QuestionType = isMaturity ? "Maturity" : "";
                    answerId            = qm.StoreAnswer(answer);
                }
                var dm = new DocumentManager(assessmentId);
                using (CSET_Context db = new CSET_Context())
                {
                    dm.AddDocument(title, answerId, streamResult);
                }

                // Return a current picture of this answer's documents
                return(Request.CreateResponse(dm.GetDocumentsForAnswer(answerId)));
            }
            catch (System.Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e));
            }
        }
Exemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="tmpFilename"></param>
        /// <param name="fileHash"></param>
        /// <param name="answerId"></param>
        /// <param name="File_Upload_Id"></param>
        /// <param name="stream_id">only used if moving away from the blob process</param>
        public void AddDocument(string title, int answerId, FileUploadStreamResult result)
        {
            if (string.IsNullOrWhiteSpace(title))
            {
                title = "click to edit title";
            }

            foreach (var file in result.FileResultList)
            {
                // first see if the document already exists on any question in this Assessment, based on the filename and hash
                var doc = db.DOCUMENT_FILE.Where(f => f.FileMd5 == file.FileHash &&
                                                 f.Name == file.FileName &&
                                                 f.Assessment_Id == this.assessmentId).FirstOrDefault();
                if (doc == null)
                {
                    doc = new DOCUMENT_FILE()
                    {
                        Assessment_Id = this.assessmentId,
                        Title         = title,
                        Path          = file.FileName, // this may end up being some other reference
                        Name          = file.FileName,
                        FileMd5       = file.FileHash,
                        ContentType   = file.ContentType,
                        Data          = file.FileBytes
                    };
                }
                else
                {
                    doc.Title = title;
                    doc.Name  = file.FileName;
                }

                var answer = db.ANSWER.Where(a => a.Answer_Id == answerId).FirstOrDefault();
                db.DOCUMENT_FILE.AddOrUpdate(doc, x => x.Document_Id);
                db.SaveChanges();

                DOCUMENT_ANSWERS temp = new DOCUMENT_ANSWERS()
                {
                    Answer_Id = answer.Answer_Id, Document_Id = doc.Document_Id
                };
                if (db.DOCUMENT_ANSWERS.Find(temp.Document_Id, temp.Answer_Id) == null)
                {
                    db.DOCUMENT_ANSWERS.Add(temp);
                }
                else
                {
                    db.DOCUMENT_ANSWERS.Update(temp);
                }
                db.SaveChanges();

                CSETWeb_Api.BusinessLogic.Helpers.AssessmentUtil.TouchAssessment(doc.Assessment_Id);
            }
        }
Exemplo n.º 3
0
        public async Task <int> UploadReferenceDoc()
        {
            try
            {
                FileUploadStream            fileUploader = new FileUploadStream();
                Dictionary <string, string> formValues   = new Dictionary <string, string>();
                formValues.Add("title", null);
                formValues.Add("setName", null);

                FileUploadStreamResult streamResult = await fileUploader.ProcessUploadStream(this.Request, formValues);

                // Create a GEN_FILE entry, and a SET_FILES entry.
                ModuleBuilderManager m = new ModuleBuilderManager();
                return(m.RecordDocInDB(streamResult));
            }
            catch (System.Exception e)
            {
                throw e;
                // throw Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
            }
        }