private bool Save() { Contract contract = new Contract(); string[] subitemIds = Request.Form.GetValues("subitem-id"); JavaScriptSerializer serializer = new JavaScriptSerializer(); int i = -1; try { contract.Start = Convert.ToDateTime(txtDateStart.Text, Thread.CurrentThread.CurrentCulture); contract.End = Convert.ToDateTime(txtDateEnd.Text, Thread.CurrentThread.CurrentCulture); contract.ExchangeRate = Convert.ToDecimal(txtCurrencyRate.Text, CultureInfo.InvariantCulture); contract.ContractorId = Convert.ToInt32(ddlContractor.SelectedValue, CultureInfo.InvariantCulture); } catch(Exception) { return false; } contract.Description = edtDescription.Text; contract.Currency = ddlCurrency.SelectedValue; contract.CreatedBy = SiteUtils.GetCurrentSiteUser().Name; foreach(string inputPrice in Request.Form.GetValues("subitem-price")) { decimal price = 0; string jsonIds = null; Dictionary<string, object> ids = null; ContractDetail detail = null; i++; if(!decimal.TryParse(inputPrice, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out price)) continue; try { jsonIds =Server.UrlDecode(subitemIds[i]); ids = (Dictionary<string, object>)serializer.DeserializeObject(jsonIds); detail = new ContractDetail(); detail.ProjectId = (int)ids["pId"]; detail.BlockId = (int)ids["bId"]; detail.WorkId = (int)ids["wId"]; detail.GroupId = (int)ids["gId"]; detail.ItemId = (int)ids["iId"]; detail.SubItemId = (int)ids["sId"]; detail.Price = price; } catch(Exception) { continue; } contract.Detail.Add(detail); } return contract.Save() > 0; }
private void LoadParams() { _pageId = WebUtils.ParseInt32FromQueryString("pageid", _pageId); _moduleId = WebUtils.ParseInt32FromQueryString("mid", _moduleId); if (!IsPostBack) return; JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); string[] rows = Request.Form.GetValues("subitem-data"); string[] totals = Request.Form.GetValues("subitem-price-total"); if (rows != null && totals != null) { for (int i = 0; i < rows.Length; i++) { ListDictionary dataRow = null; ContractDetail detail = new ContractDetail(); try { dataRow = jsSerializer.Deserialize<ListDictionary>(rows[i]); detail.ProjectId = Convert.ToInt32(dataRow["pId"]); detail.BlockId = Convert.ToInt32(dataRow["bId"]); detail.WorkId = Convert.ToInt32(dataRow["wId"]); detail.GroupId = Convert.ToInt32(dataRow["gId"]); detail.ItemId = Convert.ToInt32(dataRow["iId"]); detail.SubItemId = Convert.ToInt32(dataRow["sId"]); detail.InitialProgress = Convert.ToInt32(dataRow["progress"]); detail.Price = decimal.Parse(totals[i], CultureInfo.InvariantCulture); } catch (Exception) { continue; } _contractDetails.Add(detail); } } }
public static Contract Create(int contractId, bool fillDetail) { Contract contract = Create(contractId); if (!fillDetail) return contract; using (IDataReader reader = DBContract.GetDetail(contractId)) { while (reader.Read()) { ContractDetail detail = new ContractDetail(); detail.ProjectId = Convert.ToInt32(reader["ProjectId"]); detail.BlockId = Convert.ToInt32(reader["BlockId"]); detail.WorkId = Convert.ToInt32(reader["WorkId"]); detail.GroupId = Convert.ToInt32(reader["GroupId"]); detail.ItemId = Convert.ToInt32(reader["ItemId"]); detail.SubItemId = Convert.ToInt32(reader["SubItemId"]); detail.Price = Convert.ToDecimal(reader["Price"]); detail.Name = reader["Name"].ToString(); detail.Quantity = Convert.ToDecimal(reader["Quantity"]); detail.Unit = reader["Unit"].ToString(); detail.InitialProgress = Convert.ToInt32(reader["Progress"]); contract.Detail.Add(detail); } } return contract; }
internal static DBContractDetail ToDBContractDetail(ContractDetail cd) { return new DBContractDetail(cd.ProjectId, cd.BlockId, cd.WorkId, cd.GroupId, cd.ItemId, cd.SubItemId, cd.InitialProgress, cd.Price); }