private XmlDocument GetPreparedXml(SingleRequest request) { XmlDocument xml = new XmlDocument(); XmlElement elementRows = xml.CreateElement("rows"); List <RequestCommunication> communicationsList = request.Communication ?? new List <RequestCommunication>(); foreach (RequestCommunication communication in communicationsList) { XmlElement elementRow = xml.CreateElement("row"); XmlElement elementCommunicationTypeId = xml.CreateElement("CommunicationTypeId"); elementCommunicationTypeId.InnerText = communication.CommunicationTypeId.ToString(); XmlElement elementNumber = xml.CreateElement("Number"); elementNumber.InnerText = communication.Number; elementRow.AppendChild(elementCommunicationTypeId); elementRow.AppendChild(elementNumber); AddElementsToRow(xml, elementRow, request); elementRows.AppendChild(elementRow); } if (communicationsList.Count < 1) { XmlElement elementRow = xml.CreateElement("row"); AddElementsToRow(xml, elementRow, request); elementRows.AppendChild(elementRow); } xml.AppendChild(elementRows); return(xml); }
private void AddElementsToRow(XmlDocument xml, XmlElement elementRow, SingleRequest request) { XmlElement elementName = xml.CreateElement("Name"); elementName.InnerText = request.Name; elementRow.AppendChild(elementName); if (request.Id != Guid.Empty) { XmlElement elementId = xml.CreateElement("Id"); elementId.InnerText = request.Id.ToString(); elementRow.AppendChild(elementId); } }
private bool SetLocalDuplicate(string entitySchemaName, List <Guid> notDuplicateList, SingleRequest request) { List <Guid> duplicates = getDuplicates(entitySchemaName, request); if (duplicates.Count == 0) { return(true); } if (notDuplicateList == null) { notDuplicateList = new List <Guid>(); } List <Guid> checkeds = new List <Guid>(); if (request.Id != Guid.Empty && duplicates.Count > 0) { var esqChecked = new EntitySchemaQuery(UserConnection.EntitySchemaManager, string.Format("Vw{0}Duplicate", entitySchemaName)); var entityColumn = esqChecked.AddColumn("Entity2"); esqChecked.Filters.Add(esqChecked.CreateFilterWithParameters(FilterComparisonType.Equal, "Entity1", request.Id)); esqChecked.Filters.Add(esqChecked.CreateFilterWithParameters(FilterComparisonType.Equal, "Entity2", duplicates.Cast <object>())); var checkedEntities = esqChecked.GetEntityCollection(UserConnection); if (checkedEntities.Count > 0) { foreach (Entity entity in checkedEntities) { var entityIdColumn = entity.Schema.Columns.GetByName(entityColumn.Name); Guid entityId = entity.GetTypedColumnValue <Guid>(entityIdColumn.ColumnValueName); checkeds.Add(entityId); } } } foreach (Guid objectId in duplicates) { Guid status = new Guid("F19D417E-F36B-1410-918D-20CF308CCED1"); if (notDuplicateList.Contains(objectId)) { status = new Guid("00401284-F36B-1410-918D-20CF308CCED1"); } string entityDuplicateName = string.Format("{0}Duplicate", entitySchemaName); if (checkeds.Contains(objectId)) { if (notDuplicateList.Contains(objectId)) { var updateFront = new Update(UserConnection, entityDuplicateName) .Set("StatusOfDuplicateId", Column.Parameter(status)) .Where("Entity1Id").IsEqual(Column.Parameter(request.Id)) .And("Entity2Id").IsEqual(Column.Parameter(objectId)); updateFront.Execute(); var updateBack = new Update(UserConnection, entityDuplicateName) .Set("StatusOfDuplicateId", Column.Parameter(status)) .Where("Entity2Id").IsEqual(Column.Parameter(request.Id)) .And("Entity1Id").IsEqual(Column.Parameter(objectId)); updateFront.Execute(); } } else { EntitySchema duplicateSchema = UserConnection.EntitySchemaManager.GetInstanceByName(entityDuplicateName); Entity duplicateEntityFirst = duplicateSchema.CreateEntity(UserConnection); duplicateEntityFirst.SetDefColumnValues(); duplicateEntityFirst.SetColumnValue("CreatedOn", DateTime.Now); duplicateEntityFirst.SetColumnValue("Entity1Id", request.Id); duplicateEntityFirst.SetColumnValue("Entity2Id", objectId); duplicateEntityFirst.SetColumnValue("StatusOfDuplicateId", status); duplicateEntityFirst.Save(); /*Entity duplicateEntitySecond = duplicateSchema.CreateEntity(userConnection); * duplicateEntitySecond.SetDefColumnValues(); * duplicateEntitySecond.SetColumnValue("CreatedOn", DateTime.Now); * duplicateEntitySecond.SetColumnValue("Entity1Id", objectId); * duplicateEntitySecond.SetColumnValue("Entity2Id", request.Id); * duplicateEntitySecond.SetColumnValue("StatusOfDuplicateId", status); * duplicateEntitySecond.Save();*/ } } return(true); }
private List <Guid> getDuplicates(string entitySchemaName, SingleRequest request) { List <Guid> responce = new List <Guid>(); List <Guid> checkeds = new List <Guid>(); bool searchByModifiedOnly = (bool)getSettingsParameter(entitySchemaName, "SearchByModifiedOnly"); if (request.Id != Guid.Empty) { var esqChecked = new EntitySchemaQuery(UserConnection.EntitySchemaManager, string.Format("Vw{0}Duplicate", entitySchemaName)); var entityColumn = esqChecked.AddColumn("Entity2"); esqChecked.Filters.Add(esqChecked.CreateFilterWithParameters(FilterComparisonType.Equal, "Entity1", request.Id)); esqChecked.Filters.Add(esqChecked.CreateFilterWithParameters(FilterComparisonType.Equal, "StatusOfDuplicate", "00401284-F36B-1410-918D-20CF308CCED1")); var checkedEntities = esqChecked.GetEntityCollection(UserConnection); if (checkedEntities.Count > 0) { foreach (Entity entity in checkedEntities) { var entityIdColumn = entity.Schema.Columns.GetByName(entityColumn.Name); Guid entityId = entity.GetTypedColumnValue <Guid>(entityIdColumn.ColumnValueName); checkeds.Add(entityId); } } } var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, entitySchemaName); var idColumn = esq.AddColumn(esq.RootSchema.GetPrimaryColumnName()); var filtersGroup = new EntitySchemaQueryFilterCollection(esq, LogicalOperationStrict.Or); var nameFilter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Name", request.Name); filtersGroup.Add(nameFilter); if (entitySchemaName == "Account" && request.AlternativeName != null && request.AlternativeName.Length > 0) { filtersGroup.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "AlternativeName", request.AlternativeName)); } esq.Filters.Add(filtersGroup); if (request.Id != Guid.Empty) { esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.NotEqual, esq.RootSchema.GetPrimaryColumnName(), request.Id)); } var entities = esq.GetEntityCollection(UserConnection); if (entities.Count > 0) { foreach (Entity entity in entities) { Guid entityId = entity.GetTypedColumnValue <Guid>(idColumn.Name); if (!checkeds.Contains(entityId)) { responce.Add(entityId); } } } if (request.Communication != null && request.Communication.Count > 0) { List <string> numbers = new List <string>(); foreach (RequestCommunication item in request.Communication) { numbers.Add(item.Number); } var esqCom = new EntitySchemaQuery(UserConnection.EntitySchemaManager, string.Format("{0}Communication", entitySchemaName)); var objectIdColumn = esqCom.AddColumn(esqCom.RootSchema.GetPrimaryColumnName()); var objectColumn = esqCom.AddColumn(entitySchemaName); if (entitySchemaName == "Contact") { esqCom.Filters.Add(esqCom.CreateFilterWithParameters(FilterComparisonType.NotEqual, "CommunicationType", new object[] { "3DDDB3CC-53EE-49C4-A71F-E9E257F59E49", "9A7AB41B-67CC-DF11-9B2A-001D60E938C6" })); } esqCom.Filters.Add(esqCom.CreateFilterWithParameters(FilterComparisonType.Equal, "Number", numbers)); esqCom.Filters.Add(esqCom.CreateFilterWithParameters(FilterComparisonType.NotEqual, entitySchemaName, request.Id)); var entitiesCom = esqCom.GetEntityCollection(UserConnection); if (entitiesCom.Count > 0) { foreach (Entity entity in entitiesCom) { var objectEsqColumn = entity.Schema.Columns.GetByName(objectColumn.Name); Guid entityId = entity.GetTypedColumnValue <Guid>(objectEsqColumn.ColumnValueName); if (!responce.Contains(entityId) && !checkeds.Contains(entityId) && entityId != Guid.Empty) { responce.Add(entityId); } } } } return(responce); }
public bool SetContactDuplicates(bool isNotDuplicate, List <Guid> notDuplicateList, SingleRequest request) { return(SetLocalDuplicate("Contact", notDuplicateList, request)); }
public List <Guid> FindContactDuplicates(SingleRequest request) { return(getDuplicates("Contact", request)); }
public List <Guid> FindAccountDuplicates(SingleRequest request) { return(getDuplicates("Account", request)); }