/// <summary> /// Save data for supplier RFQ /// </summary> /// <param name="postData"></param> /// <param name="sysMsg"></param> /// <returns></returns> /// Lance Chen 20150126 private int SupplierRfqSave(string postData, SystemMessages sysMsg, out bool isOutOfCapability) { isOutOfCapability = false; int id = 0; if (!string.IsNullOrEmpty(postData)) { System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer(); Dictionary<string, object> jsonData = jss.Deserialize<Dictionary<string, object>>(postData) as Dictionary<string, object>; string dataId = Convert.ToString(jsonData["dataId"]); string number = Convert.ToString(jsonData["number"]); string operation = Convert.ToString(jsonData["operation"]); Int32.TryParse(dataId, out id); Dictionary<string, object> data = jsonData["data"] as Dictionary<string, object>; List<FieldCategory> lfc = FieldCategory.GetCategorys(FieldCategory.Category_TYPE_SGPFORSUPPLIER); foreach (FieldCategory fc in lfc) { if (data.ContainsKey(fc.ID)) { fc.CheckDataType(data[fc.ID] as Dictionary<string, object>, sysMsg); } } if (sysMsg.isPass) { using (TScope ts = new TScope()) { try { SupplierRFQDetail dm = new SupplierRFQDetail(lfc, data); if (id > 0) { dm.UpdateSubDataForSupplierRfq(id, number, out isOutOfCapability); if (operation == "Submit") { dm.UpdateSupplierRfqStatus(id, number); dm.AddSupplierRFQHistory(id, number, "Submit", sysMsg); } else { dm.AddSupplierRFQHistory(id, number, "Save", sysMsg); } } else { sysMsg.isPass = false; sysMsg.Messages.Add("Error", "Please select a RFQ "); } } catch (Exception ex) { ts.Rollback(); sysMsg.isPass = false; sysMsg.Messages.Add("Error", ex.Message); } } } } return id; }
public ActionResult SupplierRFQLoadExcel() { DataTable dt = new DataTable(); string message = string.Empty; bool flag = SaveAndReadFile(out dt, out message); DataSet ds = dt.DataSet; List<string> numbers = new List<string>(); if (flag == true && dt != null) { DataTable mainTable = ds.Tables["Primary"]; FieldInfoCollecton fields = FieldCategory.GetAllFields(FieldCategory.Category_TYPE_SGPFORSUPPLIER); ModelHandler<object>.ColumnNameToFieldName(dt, fields); if (!dt.Columns.Contains("Message")) dt.Columns.Add("Message", typeof(string)); List<FieldCategory> categories = FieldCategory.GetCategorys(FieldCategory.Category_TYPE_SGPFORSUPPLIER); foreach (DataRow dr in mainTable.Rows) { try { SupplierRFQDetail sr = new SupplierRFQDetail(); SystemMessages sysMsg = WFHelper.CreateMessages(); int i = sr.UpdateSupplierRFQByExcel(dr, categories); if(i > 0) { string number = dr["NVARCHAR1"].ToString(); numbers.Add(number); int id = sr.GetSupplierRFQId(number); sr.AddSupplierRFQHistory(id, number, "Upload", sysMsg); if (!sysMsg.isPass) { throw new Exception(sysMsg.Messages[0].ToString()); } } } catch (Exception ex) { dr["Message"] = ex.Message; } } dt.Columns["Message"].SetOrdinal(0); ModelHandler<object>.ColumnNameToDisplayName(dt, fields); DataView dv = dt.DefaultView; dv.Sort = "Message Desc"; ViewData["ExcelData"] = dv.ToTable(); successdt = dt; message = string.Empty; } ViewData["MSG"] = message; ViewData["NUMBER"] = string.Join(",", numbers.ToArray()); return View("~/Views/VVI/SupplierRFQImportExcel.cshtml"); }