public async Task <IHttpActionResult> Put() { if (!Request.Content.IsMimeMultipartContent()) { return(new System.Web.Http.Results.StatusCodeResult(HttpStatusCode.UnsupportedMediaType, Request)); } string savepath = WebApiApplication.SERVERPATH + "download/othersevaluation"; var result = new MultipartFormDataStreamProvider(savepath); try { await Request.Content.ReadAsMultipartAsync(result); //READ JSON DATA PART JObject datareceive = JObject.Parse(result.FormData.GetValues(result.FormData.AllKeys[0])[0]); Others_evaluation_s_indic_name_list_with_file_name listdata = new Others_evaluation_s_indic_name_list_with_file_name(); JArray olist = (JArray)datareceive["evaluation_detail"]; DateTime d = DateTime.Now; foreach (JObject obj in olist) { Others_evaluation_sub_indicator_name o = new Others_evaluation_sub_indicator_name(); o.aca_year = Convert.ToInt32(obj["aca_year"]); o.curri_id = obj["curri_id"].ToString(); o.others_evaluation_id = Convert.ToInt32(obj["others_evaluation_id"]); o.assessor_id = Convert.ToInt32(obj["assessor_id"]); o.date = d.GetDateTimeFormats(new System.Globalization.CultureInfo("en-US"))[5]; o.time = d.GetDateTimeFormats()[101]; if (obj["strength"] != null) { o.strength = obj["strength"].ToString(); } else { o.strength = ""; } if (obj["improve"] != null) { o.improve = obj["improve"].ToString(); } else { o.improve = ""; } o.indicator_num = Convert.ToInt32(obj["indicator_num"]); o.sub_indicator_num = Convert.ToInt32(obj["sub_indicator_num"]); o.evaluation_score = Convert.ToInt32(obj["evaluation_score"]); listdata.evaluation_detail.Add(o); } if (result.FileData.Count > 0) { 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()); listdata.file_name = "download/othersevaluation/" + newfilename; File.Move(string.Format("{0}/{1}", savepath, fileInfo.Name), string.Format("{0}/{1}", savepath, newfilename)); } else { listdata.file_name = ""; } object resultfromdb = await datacontext.InsertOrUpdate(listdata); if (resultfromdb == null) { if (result.FileData.Count > 0) { string delpath = WebApiApplication.SERVERPATH; //delete file that targeted (it has set via datacontext's [suggestion] property if (datacontext.strength != "") { if (File.Exists(string.Format("{0}{1}", delpath, datacontext.strength))) { File.Delete(string.Format("{0}{1}", delpath, datacontext.strength)); } } } return(Ok()); } else { return(InternalServerError(new Exception(resultfromdb.ToString()))); } } catch (Exception e) { return(InternalServerError(e)); } }
public async Task<IHttpActionResult> Put() { if (!Request.Content.IsMimeMultipartContent()) { return new System.Web.Http.Results.StatusCodeResult(HttpStatusCode.UnsupportedMediaType, Request); } string savepath = WebApiApplication.SERVERPATH + "download/othersevaluation"; var result = new MultipartFormDataStreamProvider(savepath); try { await Request.Content.ReadAsMultipartAsync(result); //READ JSON DATA PART JObject datareceive = JObject.Parse(result.FormData.GetValues(result.FormData.AllKeys[0])[0]); Others_evaluation_s_indic_name_list_with_file_name listdata = new Others_evaluation_s_indic_name_list_with_file_name(); JArray olist = (JArray)datareceive["evaluation_detail"]; DateTime d = DateTime.Now; foreach (JObject obj in olist) { Others_evaluation_sub_indicator_name o = new Others_evaluation_sub_indicator_name(); o.aca_year = Convert.ToInt32(obj["aca_year"]); o.curri_id = obj["curri_id"].ToString(); o.others_evaluation_id = Convert.ToInt32(obj["others_evaluation_id"]); o.assessor_id = Convert.ToInt32(obj["assessor_id"]); o.date = d.GetDateTimeFormats(new System.Globalization.CultureInfo("en-US"))[5]; o.time = d.GetDateTimeFormats()[101]; if (obj["strength"] != null) o.strength = obj["strength"].ToString(); else o.strength = ""; if (obj["improve"] != null) o.improve = obj["improve"].ToString(); else o.improve = ""; o.indicator_num = Convert.ToInt32(obj["indicator_num"]); o.sub_indicator_num = Convert.ToInt32(obj["sub_indicator_num"]); o.evaluation_score = Convert.ToInt32(obj["evaluation_score"]); listdata.evaluation_detail.Add(o); } if (result.FileData.Count > 0) { 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()); listdata.file_name = "download/othersevaluation/" + newfilename; File.Move(string.Format("{0}/{1}", savepath, fileInfo.Name), string.Format("{0}/{1}", savepath, newfilename)); } else { listdata.file_name = ""; } object resultfromdb = await datacontext.InsertOrUpdate(listdata); if (resultfromdb == null) { if (result.FileData.Count > 0) { string delpath = WebApiApplication.SERVERPATH; //delete file that targeted (it has set via datacontext's [suggestion] property if (datacontext.strength != "") if (File.Exists(string.Format("{0}{1}", delpath, datacontext.strength))) File.Delete(string.Format("{0}{1}", delpath, datacontext.strength)); } return Ok(); } else return InternalServerError(new Exception(resultfromdb.ToString())); } catch (Exception e) { return InternalServerError(e); } }
public async Task <object> InsertOrUpdate(Others_evaluation_s_indic_name_list_with_file_name odata) { DBConnector d = new DBConnector(); if (!d.SQLConnect()) { return(WebApiApplication.CONNECTDBERRSTRING); } //Others_evaluation_s_indic_name_list_with_file_name result = new Others_evaluation_s_indic_name_list_with_file_name(); string temp5tablename = "#temp5"; string createtabletemp5 = string.Format("CREATE TABLE {0}(" + "[row_num] INT IDENTITY(1, 1) NOT NULL," + "[{1}] {2} NULL," + "PRIMARY KEY([row_num])) " + "ALTER TABLE {0} " + "ALTER COLUMN [{1}] {2} collate DATABASE_DEFAULT ", temp5tablename, Evidence.FieldName.FILE_NAME, DBFieldDataType.FILE_NAME_TYPE); string updatecmd = ""; if (odata.file_name == "") { foreach (Others_evaluation_sub_indicator_name o in odata.evaluation_detail) { updatecmd += string.Format("if not exists (select * from {0} where {1} = '{2}' and {3} = {4} and {5} = {6} and {7} = {8}) " + "BEGIN " + "INSERT INTO {0} values ({6},{8},'{9}',{10},'{11}','{12}','{13}','{14}',null,'{2}',{4}) " + "END " + "ELSE " + "BEGIN " + "UPDATE {0} set {15} = '{9}',{16} = {10},{17} = '{11}',{18} = '{12}',{19} = '{13}',{20} = '{14}' where {1} = '{2}' and {3} = {4} and {5} = {6} and {7} = {8} " + "END ", FieldName.TABLE_NAME, FieldName.CURRI_ID, o.curri_id, FieldName.ACA_YEAR, o.aca_year, FieldName.INDICATOR_NUM, o.indicator_num, FieldName.SUB_INDICATOR_NUM, o.sub_indicator_num, o.assessor_id, o.evaluation_score > 0 ? "'" + o.evaluation_score.ToString() + "'" : "null", /*11*/ o.strength, /*12*/ o.improve , o.date, o.time, FieldName.ASSESSOR_ID, FieldName.EVALUATION_SCORE, FieldName.STRENGTH, FieldName.IMPROVE, FieldName.DATE, FieldName.TIME); } } else { Others_evaluation_sub_indicator_name minobj = odata.evaluation_detail.Min(); updatecmd += string.Format("if not exists (select * from {0} where {1} = '{2}' and {3} = {4} and {5} = {6} and {7} = {8}) " + "BEGIN " + "INSERT INTO {0} values ({6},{8},'{9}',{10},'{11}','{12}','{13}','{14}','{22}','{2}',{4}) " + "END " + "ELSE " + "BEGIN " + "INSERT INTO #TEMP5 " + "select * from " + "(UPDATE {0} set {15} = '{9}',{16} = {10},{17} = '{11}',{18} = '{12}',{19} = '{13}',{20} = '{14}',{21} = '{22}' " + "output deleted.{21} " + "where {1} = '{2}' and {3} = {4} and {5} = {6} and {7} = {8}) as outputupdate " + "END ", FieldName.TABLE_NAME, FieldName.CURRI_ID, minobj.curri_id, FieldName.ACA_YEAR, minobj.aca_year, FieldName.INDICATOR_NUM, minobj.indicator_num, FieldName.SUB_INDICATOR_NUM, minobj.sub_indicator_num, minobj.assessor_id, minobj.evaluation_score > 0 ? "'" + minobj.evaluation_score.ToString() + "'" : "null", /*11*/ minobj.strength, /*12*/ minobj.improve, minobj.date, minobj.time, FieldName.ASSESSOR_ID, FieldName.EVALUATION_SCORE, FieldName.STRENGTH, FieldName.IMPROVE, FieldName.DATE, FieldName.TIME, Evidence.FieldName.FILE_NAME, odata.file_name); foreach (Others_evaluation_sub_indicator_name o in odata.evaluation_detail) { if (o != minobj) { updatecmd += string.Format("if not exists (select * from {0} where {1} = '{2}' and {3} = {4} and {5} = {6} and {7} = {8}) " + "BEGIN " + "INSERT INTO {0} values ({6},{8},'{9}',{10},'{11}','{12}','{13}','{14}',null,'{2}',{4}) " + "END " + "ELSE " + "BEGIN " + "UPDATE {0} set {15} = '{9}',{16} = {10},{17} = '{11}',{18} = '{12}',{19} = '{13}',{20} = '{14}' where {1} = '{2}' and {3} = {4} and {5} = {6} and {7} = {8} " + "END ", FieldName.TABLE_NAME, FieldName.CURRI_ID, o.curri_id, FieldName.ACA_YEAR, o.aca_year, FieldName.INDICATOR_NUM, o.indicator_num, FieldName.SUB_INDICATOR_NUM, o.sub_indicator_num, o.assessor_id, o.evaluation_score > 0 ? "'" + o.evaluation_score.ToString() + "'" : "null", /*11*/ o.strength, /*12*/ o.improve , o.date, o.time, FieldName.ASSESSOR_ID, FieldName.EVALUATION_SCORE, FieldName.STRENGTH, FieldName.IMPROVE, FieldName.DATE, FieldName.TIME); } } } string selectcmd = string.Format("select {1} from {0} ", temp5tablename, Evidence.FieldName.FILE_NAME); d.iCommand.CommandText = string.Format("BEGIN {0} {1} {2} END", createtabletemp5, updatecmd, selectcmd); try { object result = await d.iCommand.ExecuteScalarAsync(); if (result != null) { //File name to delete from #temp5 table strength = result.ToString(); } else { strength = ""; } } catch (Exception ex) { //Handle error from sql execution return(ex.Message); } finally { //Whether it success or not it must close connection in order to end block d.SQLDisconnect(); } return(null); }