Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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()));
            }
        }