private void SetOwnerPart(DR_Requester requester, LetterTemplateDTO result, LetterTemplate ownerDbItem, bool withDetails) { result.TableDrivedEntityID = ownerDbItem.TableDrivedEntityID; result.Name = ownerDbItem.Name; result.EntityListViewID = ownerDbItem.EntityListViewID; if (withDetails) { BizEntityListView bizEntityListView = new BizEntityListView(); result.EntityListView = bizEntityListView.GetEntityListView(requester, ownerDbItem.EntityListViewID); if (result.EntityListView == null) { throw new Exception("عدم دسترسی به لیست نمایش به شناسه" + " " + ownerDbItem.EntityListViewID); } BizFormula bizFormula = new BizFormula(); foreach (var item in ownerDbItem.LetterTemplatePlainField) { LetterTemplatePlainFieldDTO field = new LetterTemplatePlainFieldDTO(); field.FieldName = item.FieldName; field.EntityListViewColumnsID = (item.EntityListViewColumnsID == null) ? 0 : item.EntityListViewColumnsID.Value; if (field.EntityListViewColumnsID != 0) { field.EntityListViewColumns = result.EntityListView.EntityListViewAllColumns.First(x => x.ID == item.EntityListViewColumnsID); } field.FormulaID = (item.FormulaID == null) ? 0 : item.FormulaID.Value; field.ID = item.ID; //if (item.ColumnID != null) // field.Type = LetterTemplateFieldType.Column; //else if (item.ParameterID != null) // field.Type = LetterTemplateFieldType.Parameter; //if (item.RelationshipID != null) // field.Type = LetterTemplateFieldType.RangeRelationship; result.PlainFields.Add(field); } BizEntityRelationshipTail bizEntityRelationshipTail = new MyModelManager.BizEntityRelationshipTail(); foreach (var item in ownerDbItem.LetterTemplateRelationshipField) { LetterTemplateRelationshipFieldDTO field = new LetterTemplateRelationshipFieldDTO(); field.RelationshipTailID = item.EntityRelationshipTailID; //field.EntityPreDefinedSearchID = (item.EntityPreDefinedSearchID == null) ? 0 : item.EntityPreDefinedSearchID.Value; field.ID = item.ID; field.RelationshipTail = bizEntityRelationshipTail.ToEntityRelationshipTailDTO(item.EntityRelationshipTail); //field.NextLine = item.NextLine==true; field.IsRow = item.IsRow == true; field.FieldName = item.FieldName; field.PartialLetterTemplateID = item.PartialLetterTemplateID; field.PartialLetterTemplate = ToPartialLetterTemplateDTO(requester, item.PartialLetterTemplate, true); //field.PartialLetterTemplate = ToPartialLetterTemplate(item.PartialLetterTemplate, true); result.RelationshipFields.Add(field); } } }
private void SetRelatoinshipTree(LetterTemplateRelationshipFieldDTO parent, List <LetterTemplatePlainFieldDTO> plaintFields, List <LetterTemplateRelationshipFieldDTO> relationshipFields, List <Tuple <string, Field> > allFormFileds, string parentTail = "") { BizTableDrivedEntity bizTableDrivedEntity = new BizTableDrivedEntity(); int start; int end; if (parent == null) { start = 0; end = 1000000; } else { start = parent.tmpConsumedRange.Item1; end = parent.tmpConsumedRange.Item2; } //TableDrivedEntityDTO entity = null; //if (parent == null) // entity = defaultEntity; //else if (parent.InternalLetterTemplate.TableDrivedEntityID != 0) // entity = bizTableDrivedEntity.GetTableDrivedEntity(parent.InternalLetterTemplate.TableDrivedEntityID, EntityColumnInfoType.WithSimpleColumns, EntityRelationshipInfoType.WithoutRelationships); foreach (var field in allFormFileds.Where(x => x.Item1.StartsWith("rel_") && x.Item1.EndsWith("_start") && x.Item2.Result.Start > start)) { var splt = field.Item1.Split('_'); var fieldName = ""; if (splt.Count() > 2) { fieldName = splt[0] + "_" + splt[1] + "_" + splt[2]; } else { fieldName = splt[0] + "_" + splt[1]; } var endField = GetRelationshipFieldEnd(field.Item1, allFormFileds); if (endField != null) { if (ItemIsInRangeOf(endField, start, end)) { if (!ItemIsInRangeOfChilds(field.Item2, relationshipFields)) { var newField = new LetterTemplateRelationshipFieldDTO(); newField.FieldName = fieldName; newField.tmpConsumedRange = new Tuple <int, int>(field.Item2.Result.End, endField.Result.Start); newField.StartLetterField = field.Item2; newField.EndLetterField = endField; //////var relName = field.Name.Split('_')[1]; //////var relationship = entity.Relationships.FirstOrDefault(x => x.Entity2 == relName); //////if (relationship != null) //////{ ////// newField.RelationshipID = relationship.ID; ////// newField.InternalLetterTemplate.TableDrivedEntityID = relationship.EntityID2; ////// //SetLetterRelationshipTemplates(newField); ////// //SetRelationshipFiltered(newField); ////// var firstTemplate = newField.tmpInternalLetterTemplates.FirstOrDefault(); ////// if (firstTemplate != null) ////// newField.InternalLetterTemplate.ID = firstTemplate.ID; //////} var tail = (parentTail == "" ? "" : parentTail + ",") + fieldName; SetRelatoinshipTree(newField, newField.PartialLetterTemplate.PlainFields, newField.PartialLetterTemplate.RelationshipFields, allFormFileds, tail); relationshipFields.Add(newField); } } } } foreach (var field in allFormFileds.Where(x => !x.Item1.StartsWith("rel_")))// (x.Item1.StartsWith("col_") || x.Item1.StartsWith("prm_")) && x.Item2.Result.Start > start)) { var splt = field.Item1.Split('_'); var fieldName = field.Item1;// splt[0] + "_" + splt[1]; if (ItemIsInRangeOf(field.Item2, start, end)) { if (!ItemIsInRangeOfChilds(field.Item2, relationshipFields)) { var newField = new LetterTemplatePlainFieldDTO(); newField.FieldName = fieldName; newField.LetterField = field.Item2; newField.tmpParentTail = parentTail; //if (fieldName.ToLower().StartsWith("col_")) //{ // //اینجا جای ست گردن مقادیر پیش فرض نیست.باید در همان فرم انجام شود // //////if (entity != null) // //////{ // ////// var columnName = field.Name.Split('_')[1]; // ////// var column = entity.Columns.FirstOrDefault(x => x.Name == columnName); // ////// if (column != null) // ////// newField.ColumnID = column.ID; // //////} //} //else if (fieldName.ToLower().StartsWith("prm_")) //{ // //اینجا جای ست گردن مقادیر پیش فرض نیست.باید در همان فرم انجام شود // //////int entityID = 0; // //////if (parent == null) // ////// entityID = EntityID; // //////else // ////// entityID = parent.InternalLetterTemplate.TableDrivedEntityID; // //////if (entityID != 0) // //////{ // ////// var paramters = bizFormula.GetFormulaParameters(entityID); // ////// var parameterName = field.Name.Split('_')[1]; // ////// var parameter = paramters.FirstOrDefault(x => x.Name == parameterName); // ////// if (parameter != null) // ////// newField.ParameterID = parameter.ID; // //////} //} plaintFields.Add(newField); } } } }