public static ViewsRelationsObj getRelationObj(ViewExcelSheetsInfo sheetView, string entity, string fromAttribute) { ViewsRelationsObj obj = sheetView.relationsList.Where(x => x.relationFrom != null && x.entity.Equals(entity, StringComparison.InvariantCultureIgnoreCase) && x.relationFrom.Equals(fromAttribute, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (obj == null) { ViewsRelationsObj mainobj = sheetView.relationsList.Where(x => x.relationAlias == null).FirstOrDefault(); OneToManyRelationshipMetadata rel = mainobj.entityMetadata.ManyToOneRelationships .Where(x => x.ReferencedEntity.Equals(entity, StringComparison.InvariantCultureIgnoreCase) && x.ReferencingAttribute.Equals(fromAttribute, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (rel != null) { obj = new ViewsRelationsObj() { entity = entity.ToLower(), entityMetadata = GlobalOperations.Instance.CRMOpHelper.RetriveEntityAtrribute(entity), relationAlias = string.Concat("a_", Guid.NewGuid().ToString().Replace("-", "")).ToLower(), relationFrom = rel.ReferencedAttribute.ToLower(), relationTo = fromAttribute.ToLower() }; sheetView.relationsList.Add(obj); } } return(obj); }
private static void removeUnnecessaryLinksAttributes(savedqueryLayoutxmlGrid viewFeo, ViewExcelSheetsInfo excelData) { FetchEntityType currentEt = excelData.fetchObj.Items.Where(x => x is FetchEntityType).Select(x => (FetchEntityType)x).FirstOrDefault(); ViewsRelationsObj obj = excelData.relationsList.Where(x => x.relationAlias == null).FirstOrDefault(); if (currentEt != null && obj != null) { List <object> array = currentEt.Items.ToList(); for (int i = array.Count - 1; i > -1; i--) { object currentItem = array[i]; if (currentItem is FetchLinkEntityType) { FetchLinkEntityType link = currentItem as FetchLinkEntityType; removeUnnecessaryAttributesInner(link, viewFeo); if (link == null || link.visible == false) { if (link == null || link.Items.Count() == 0) { array.RemoveAt(i); } } } else if (currentItem is FetchAttributeType) { FetchAttributeType attr = currentItem as FetchAttributeType; if (!(viewFeo.row.cell.Where(x => x.name == attr.name).Count() > 0) && attr.name != obj.entityMetadata.PrimaryIdAttribute) { array.RemoveAt(i); } } } currentEt.Items = array.ToArray(); } }
public static void getFechAndLayouXml(ExcelMatrix dataMatrix, ViewExcelSheetsInfo sheetView, out string fetchXml, out string viewXml) { List <ViewFeo> viewFeoList = new List <ViewFeo>(); for (int i = 0; i < dataMatrix.numberofElements; i++) { string[] row = dataMatrix.getRow(i); string[] values = getEntityRelation(row[ExcelColumsDefinition.VIEWATTRIBUTEENTITY]); string attributeName = row[ExcelColumsDefinition.VIEWATTRIBUTENAME]; if (attributeName.LastIndexOf("-") >= 0) { attributeName = attributeName.Substring(attributeName.LastIndexOf("-") + 1, attributeName.Length - attributeName.LastIndexOf("-") - 1); attributeName = attributeName.Trim(); } string attributeEntity = string.Empty; string attributeRelationAttribute = string.Empty; if (values != null && values.Count() == 2) { attributeEntity = values[0]; attributeRelationAttribute = values[1]; } string attributewidth = row[ExcelColumsDefinition.VIEWATTRIBUTEWIDTH]; ViewsRelationsObj obj = null; if (!string.IsNullOrEmpty(attributeEntity)) { obj = sheetView.relationsList.Where(x => x.relationAlias != null && x.entity.Equals(attributeEntity, StringComparison.InvariantCultureIgnoreCase) && x.relationTo.Equals(attributeRelationAttribute, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); } else { obj = sheetView.relationsList.Where(x => x.relationAlias == null).FirstOrDefault(); attributeEntity = obj.entity; } ViewFeo viewFeo = new ViewFeo() { AttributeName = attributeName, AttributeEntity = attributeEntity, AttributeWidth = attributewidth, AttributeObj = obj, }; if (obj == null) { setAttributesObj(viewFeo, sheetView.relationsList); } viewFeoList.Add(viewFeo); } viewXml = getViewXmlString(viewFeoList, sheetView.viewObj); removeUnnecessaryLinksAttributes(sheetView.viewObj, sheetView); fetchXml = getFecthXmlString(viewFeoList, sheetView.fetchObj); }
private static void setAttributesObj(ViewFeo viewFeo, List <ViewsRelationsObj> relObj) { ViewsRelationsObj mainobj = relObj.Where(x => x.relationAlias == null).FirstOrDefault(); OneToManyRelationshipMetadata rel = mainobj.entityMetadata.ManyToOneRelationships.Where(x => x.ReferencedEntity.Equals(viewFeo.AttributeEntity, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (rel != null) { viewFeo.AttributeObj = new ViewsRelationsObj() { entity = viewFeo.AttributeEntity.ToLower(), entityMetadata = GlobalOperations.Instance.CRMOpHelper.RetriveEntityAtrribute(viewFeo.AttributeEntity), relationAlias = string.Concat("a_", Guid.NewGuid().ToString().Replace("-", "")).ToLower(), relationFrom = rel.ReferencedAttribute.ToLower(), relationTo = rel.ReferencingAttribute.ToLower() }; relObj.Add(viewFeo.AttributeObj); } }
private static void addNewAttributeToFech(FetchType fecthObj, string attributeName, ViewsRelationsObj currentEntity) { if (string.IsNullOrEmpty(currentEntity.relationAlias)) { FetchEntityType currentEt = fecthObj.Items.Where(x => x is FetchEntityType && ((FetchEntityType)x).name.Equals(currentEntity.entity, StringComparison.InvariantCultureIgnoreCase)).Select(x => (FetchEntityType)x).FirstOrDefault(); if (currentEt != null) { List <object> items = currentEt.Items.ToList(); FetchAttributeType attribute = items.Where(x => x is FetchAttributeType && ((FetchAttributeType)x).name.Equals(attributeName)).Select(x => (FetchAttributeType)x).FirstOrDefault(); if (attribute == null) { List <object> objectList = currentEt.Items.ToList(); objectList.Add(new FetchAttributeType() { name = attributeName }); currentEt.Items = objectList.ToArray(); } } } else { FetchEntityType currentEt = fecthObj.Items.Where(x => x is FetchEntityType).Select(x => (FetchEntityType)x).FirstOrDefault(); if (currentEt != null) { FetchLinkEntityType currentLink = currentEt.Items.Where(x => x is FetchLinkEntityType && ((FetchLinkEntityType)x).alias.Equals(currentEntity.relationAlias, StringComparison.InvariantCultureIgnoreCase)) .Select(x => (FetchLinkEntityType)x).FirstOrDefault(); if (currentLink != null) { List <object> items = currentLink.Items.ToList(); FetchAttributeType attribute = items.Where(x => x is FetchAttributeType && ((FetchAttributeType)x).name.Equals(attributeName)).Select(x => (FetchAttributeType)x).FirstOrDefault(); if (attribute == null) { List <object> objectList = currentLink.Items.ToList(); objectList.Add(new FetchAttributeType() { name = attributeName }); currentLink.Items = objectList.ToArray(); } } else { List <object> objectList = currentEt.Items.ToList(); objectList.Add(new FetchLinkEntityType() { Items = new object[] { (new FetchAttributeType() { name = attributeName }) }, name = currentEntity.entity, alias = currentEntity.relationAlias, linktype = "outer", from = currentEntity.relationFrom, to = currentEntity.relationTo, intersect = false, intersectSpecified = false, visible = false, visibleSpecified = false, }); currentEt.Items = objectList.ToArray(); } } } }