Exemplo n.º 1
0
        /// <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;
        }
Exemplo n.º 2
0
        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");
        }