private IList <EcoD.EconomicTable> EcoTableFromSubmission(CpDomain.UserSubmission submission, ref EcoD.EconomicEvaluation eval) { List <EcoD.EconomicTable> tables = new List <EcoD.EconomicTable>(); long idSubmitterType = (submission.Type != null) ? submission.Type.Id : 0; long revId = (submission.Revisions != null && submission.Revisions.Any()) ? submission.Revisions.FirstOrDefault().Id : 0; List <CpDomain.dtoCallSection <CpDomain.dtoSubmissionValueField> > sections = GetSubmissionFields(submission.Call, idSubmitterType, submission.Id, revId); IList <CpDomain.FieldDefinition> fielddefinitions = Manager.GetAll <CpDomain.FieldDefinition>(fd => fd.Call != null && fd.Call.Id == submission.Call.Id && fd.Type == CpDomain.FieldType.TableReport && fd.Deleted == BaseStatusDeleted.None); //sf.Fields.FirstOrDefault().Value //sf.Fields.FirstOrDefault().Field.Type == CpDomain.FieldType.TableReport foreach (var sect in sections) { foreach (var field in sect.Fields) { if (field.Field != null && field.Field.Type == CpDomain.FieldType.TableReport) { //bool isFirst = true; //string Table = field.Value.Text; EcoD.EconomicTable table = new EcoD.EconomicTable(); table.CreateMetaInfo(GetCurrentPerson(), UC.IpAddress, UC.ProxyIpAddress); table.Items = new List <EcoD.EconomicItem>(); CpDomain.FieldDefinition fDef = fielddefinitions.FirstOrDefault(f => f.Id == field.IdField); //String[] Cold = fDef.TableCols.Split('|'); table.FieldDefinition = fDef; table.HeaderValue = fDef.TableCols; table.AdmitMax = field.Field.TableFieldSetting.MaxTotal; int AddcolNum = table.HeaderValues.Count(); string contentXml = String.Format("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>{0}{1}", System.Environment.NewLine, field.Value.Text); XmlDocument doc = new XmlDocument(); doc.LoadXml(contentXml); foreach (XmlNode trXml in doc.GetElementsByTagName("tr")) { EcoD.EconomicItem itm = new EcoD.EconomicItem(); itm.CreateMetaInfo(GetCurrentPerson(), UC.IpAddress, UC.ProxyIpAddress); double unitycost = 0; double quantity = 0; double total = 0; int curCol = 0; bool hasValue = false; foreach (XmlNode tdXml in trXml.ChildNodes) { curCol++; string cssclass = ""; try { cssclass = tdXml.Attributes["class"].Value; } catch (Exception ex) { } if (!String.IsNullOrEmpty(cssclass) && cssclass == "quantity") { Double.TryParse(tdXml.InnerText.ToString(), out quantity); if (quantity > 0) { hasValue = true; } } else if (!String.IsNullOrEmpty(cssclass) && cssclass == "unitycost") { Double.TryParse(tdXml.InnerText.ToString(), out unitycost); if (unitycost > 0) { hasValue = true; } } else if (!String.IsNullOrEmpty(cssclass) && cssclass == "total") { Double.TryParse(tdXml.InnerText.ToString(), out total); if (total > 0) { hasValue = true; } } else { bool infoHasvalue = CheckInfoValues(tdXml.InnerText.ToString()); if (infoHasvalue) { hasValue = true; } if (String.IsNullOrEmpty(itm.InfoValue)) { itm.InfoValue = String.IsNullOrEmpty(tdXml.InnerText.ToString())? " " : tdXml.InnerText.ToString(); } else { itm.InfoValue = string.Format("{0}|{1}", itm.InfoValue, tdXml.InnerText.ToString()); } } } itm.IsAdmit = false; itm.RequestQuantity = quantity; itm.RequestUnitPrice = unitycost; itm.Table = table; itm.IsEmpty = !hasValue; //if(hasValue) table.Items.Add(itm); } table.EcoEvaluation = eval; tables.Add(table); } } } return(tables); }