public async Task <IHttpActionResult> PutNewEvidence() { if (!Request.Content.IsMimeMultipartContent()) { return(new System.Web.Http.Results.StatusCodeResult(HttpStatusCode.UnsupportedMediaType, Request)); } string savepath = WebApiApplication.SERVERPATH + "download/evidence"; string delpath = WebApiApplication.SERVERPATH; var result = new MultipartFormDataStreamProvider(savepath); try { await Request.Content.ReadAsMultipartAsync(result); //READ JSON DATA PART JObject datamodelreceive = JObject.Parse(result.FormData.GetValues(result.FormData.AllKeys[0])[0]); //New evidence PART JObject newevidencedata = (JObject)datamodelreceive["my_new_evidence"]; datacontext.aca_year = Convert.ToInt32(newevidencedata["aca_year"]); datacontext.curri_id = newevidencedata["curri_id"].ToString(); datacontext.evidence_real_code = Convert.ToInt32(newevidencedata["evidence_real_code"]); datacontext.evidence_name = newevidencedata["evidence_name"].ToString(); datacontext.indicator_num = Convert.ToInt32(newevidencedata["indicator_num"]); datacontext.secret = newevidencedata["secret"].ToString()[0]; datacontext.teacher_id = Convert.ToInt32(newevidencedata["teacher_id"]); //EXISTS Evidence PART JArray existsevidence = (JArray)datamodelreceive["all_evidences"]; List <oEvidence> existsevidencelist = new List <oEvidence>(); foreach (JObject eitem in existsevidence) { oEvidence obj = new oEvidence(); obj.evidence_code = Convert.ToInt32(eitem["evidence_code"]); obj.file_name = eitem["file_name"].ToString(); obj.evidence_name = eitem["evidence_name"].ToString(); obj.teacher_id = Convert.ToInt32(eitem["teacher_id"]); obj.secret = eitem["secret"].ToString()[0]; obj.curri_id = eitem["curri_id"].ToString(); obj.aca_year = Convert.ToInt32(eitem["aca_year"]); obj.evidence_real_code = Convert.ToInt32(eitem["evidence_real_code"]); obj.indicator_num = Convert.ToInt32(eitem["indicator_num"]); obj.primary_evidence_num = Convert.ToInt32(eitem["primary_evidence_num"]); existsevidencelist.Add(obj); } //evidence_real_code evidence_name secret teacher_id //GET FILENAME WITH CHANGE FILENAME TO HAVE ITS EXTENSION MultipartFileData file = result.FileData[0]; FileInfo fileInfo = new FileInfo(file.LocalFileName); string newfilename = string.Format("{0}.{1}", fileInfo.Name.Substring(9), file.Headers.ContentDisposition.FileName.Split('.').LastOrDefault().Split('\"').FirstOrDefault()); datacontext.file_name = "download/evidence/" + newfilename; File.Move(string.Format("{0}/{1}", savepath, fileInfo.Name), string.Format("{0}/{1}", savepath, newfilename)); object resultfromdb = await datacontext.InsertNewEvidenceWithSelect(existsevidencelist); if (resultfromdb.GetType().ToString() != "System.String") { BulkEvidenceTransactionResult bresult = (BulkEvidenceTransactionResult)resultfromdb; //Delete the file which belong to the deleted evidences foreach (string file_name_to_delete in bresult.filenametodellist) { if (File.Exists(string.Format("{0}{1}", delpath, file_name_to_delete))) { File.Delete(string.Format("{0}{1}", delpath, file_name_to_delete)); } } //Check whether insert result is success? If not => delete the uploaded file permanently and return error. if (bresult.message != null) { if (File.Exists(string.Format("{0}/{1}", savepath, newfilename))) { File.Delete(string.Format("{0}/{1}", savepath, newfilename)); } return(BadRequest(bresult.message)); } return(Ok(bresult.mainresult)); } else //ERROR case { if (File.Exists(string.Format("{0}/{1}", savepath, newfilename))) { File.Delete(string.Format("{0}/{1}", savepath, newfilename)); } return(BadRequest(resultfromdb.ToString())); } } catch (Exception e) { return(InternalServerError(e)); } }
public async Task <IHttpActionResult> PutNewEvidenceFromOthers(JObject datamodelreceive) { //New evidence PART JObject newevidenceimportdata = (JObject)datamodelreceive["evidence_import"]; datacontext.aca_year = Convert.ToInt32(newevidenceimportdata["aca_year"]); datacontext.curri_id = newevidenceimportdata["curri_id"].ToString(); datacontext.evidence_real_code = Convert.ToInt32(newevidenceimportdata["evidence_real_code"]); datacontext.evidence_name = newevidenceimportdata["evidence_name"].ToString(); datacontext.indicator_num = Convert.ToInt32(newevidenceimportdata["indicator_num"]); datacontext.secret = newevidenceimportdata["secret"].ToString()[0]; datacontext.teacher_id = Convert.ToInt32(newevidenceimportdata["teacher_id"]); datacontext.file_name = newevidenceimportdata["file_name"].ToString(); //EXISTS Evidence PART JArray existsevidence = (JArray)datamodelreceive["all_evidences"]; List <oEvidence> existsevidencelist = new List <oEvidence>(); foreach (JObject eitem in existsevidence) { oEvidence obj = new oEvidence(); obj.evidence_code = Convert.ToInt32(eitem["evidence_code"]); obj.file_name = eitem["file_name"].ToString(); obj.evidence_name = eitem["evidence_name"].ToString(); obj.teacher_id = Convert.ToInt32(eitem["teacher_id"]); obj.secret = eitem["secret"].ToString()[0]; obj.curri_id = eitem["curri_id"].ToString(); obj.aca_year = Convert.ToInt32(eitem["aca_year"]); obj.evidence_real_code = Convert.ToInt32(eitem["evidence_real_code"]); obj.indicator_num = Convert.ToInt32(eitem["indicator_num"]); obj.primary_evidence_num = Convert.ToInt32(eitem["primary_evidence_num"]); existsevidencelist.Add(obj); } object resultfromdb = await datacontext.InsertNewEvidenceWithSelect(existsevidencelist); if (resultfromdb.GetType().ToString() != "System.String") { BulkEvidenceTransactionResult bresult = (BulkEvidenceTransactionResult)resultfromdb; string delpath = WebApiApplication.SERVERPATH; //Delete the file which belong to the deleted evidences foreach (string file_name_to_delete in bresult.filenametodellist) { if (File.Exists(string.Format("{0}{1}", delpath, file_name_to_delete))) { File.Delete(string.Format("{0}{1}", delpath, file_name_to_delete)); } } //Check whether insert result is success? if (bresult.message != null) { return(BadRequest(bresult.message)); } return(Ok(bresult.mainresult)); } else //ERROR case { return(BadRequest(resultfromdb.ToString())); } }