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);
            }
        }
Example #3
0
        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);
        }