public SaveRelationshipResponse SaveRelationshipMap(SaveRelationshipRequest request) { if (request.RelationshipViewModel.SelectAll == true) { var distinctRelationTypes = request.RelationshipViewModel.Relationshipentry.Select(c => c.RelationshipType).ToList(); foreach (var relationType in distinctRelationTypes) { var firstRelation = request.RelationshipViewModel.Relationshipentry.Where(c => c.RelationshipType == relationType).First(); BulkOperations operationData = new BulkOperations() { OperationID = (int)firstRelation.RelatedContactID, OperationType = (int)BulkOperationTypes.Relationship, SearchCriteria = request.SelectAllSearchCriteria, AdvancedSearchCriteria = request.AdvancedSearchCritieria, SearchDefinitionID = null, AccountID = request.AccountId, UserID = (int)request.RequestedBy, RoleID = request.RoleId, RelationType = relationType }; InsertBulkOperationRequest bulkOperationRequest = new InsertBulkOperationRequest() { OperationData = operationData, AccountId = request.AccountId, RequestedBy = (int)request.RequestedBy, CreatedOn = DateTime.Now.ToUniversalTime().AddMinutes(1), RoleId = request.RoleId, DrillDownContactIds = request.DrillDownContactIds }; accountService.InsertBulkOperation(bulkOperationRequest); } } else { foreach (var entry in request.RelationshipViewModel.Relationshipentry) { ContactRelationship contactRelationShip = Mapper.Map <RelationshipEntry, ContactRelationship>(entry); if (request.RelationshipViewModel.SelectAll == false) { bool IsDuplicate = contactRelationshipRepository.IsDuplicateContactRelationship(contactRelationShip); if (IsDuplicate) { throw new UnsupportedOperationException("[|ContactRelationship already exists with|]" + " --" + entry.RelatedContact); } } if (contactRelationShip.Id == 0) { contactRelationShip.CreatedBy = request.UserId; contactRelationShip.CreatedOn = DateTime.Now.ToUniversalTime(); contactRelationshipRepository.Insert(contactRelationShip); } else { contactRelationshipRepository.Update(contactRelationShip); } } } unitOfWork.Commit(); return(new SaveRelationshipResponse()); }