Here, when a custom entity is created or updated, I am updating a varchar field in the related contact entity
public void Execute(IPluginExecutionContext context) { DynamicEntity entity=null; //Check if the input parameters contains a target of type Dynamic Entity if (context.InputParameters.Properties.Contains("Target") && context.InputParameters.Properties["Target"] is DynamicEntity) { //obtain the entity from the input parameters entity = (DynamicEntity)context.InputParameters.Properties["Target"]; //TextWriter log1 = TextWriter.Synchronized(File.AppendText(@"D:\Srihari Backup\Log.txt")); if (entity.Name == "new_testEntity") { try { //log1.WriteLine("inside try"); DynamicEntity testEntity= (DynamicEntity)context.InputParameters[ParameterName.Target]; string clinicName = String.Empty; string contactId= String.Empty; if (testEntity.Properties.Contains("new_clinicname")) { clinicName = (string)testEntity["new_clinicname"]; //log1.WriteLine(clinicName); } if (context.MessageName == MessageName.Create) { if (testEntity.Properties.Contains("new_contactid")) { //log1.WriteLine("contains patient id"); //Since the contact is a lookup, cast the object as a lookup. //log1.WriteLine("create message :-"); Lookup contactLookup = (Lookup)testEntity["new_contactid"]; contactLookup.type = EntityName.contact.ToString(); contactId= contactLookup.Value.ToString(); //get the guid of the lookup } } else if (context.MessageName == MessageName.Update) { //log1.WriteLine("update message :-"); //Since this is an update, only the values updated on the form will be available in the context. Hence I am getting the value from an Image that I have registered. DynamicEntity postTestEntity = (DynamicEntity)context.PostEntityImages["contactId"];//The name or 'entityalias' of the image //log1.WriteLine(postCCProvider); Lookup contactLookup = (Lookup)postTestEntity.Properties["new_contactid"]; //log1.WriteLine(patientLookup); contactId = contactLookup.Value.ToString(); //log1.WriteLine(patientId); //log1.Close(); } DynamicEntity contact = new DynamicEntity(); contact.Name = EntityName.contact.ToString(); Key contactKey = new Key(); contactKey.Value = new Guid(contactId); KeyProperty contactGuid = new KeyProperty(); contactGuid.Name = "contactid"; contactGuid.Value = contactKey; contact.Properties.Add(contactGuid); //set the field that needs to be updated in the contact entity. StringProperty ccProviderNameProperty = new StringProperty("new_communitycareprovider", clinicName); contact.Properties.Add(ccProviderNameProperty); ICrmService service = context.CreateCrmService(true); service.Update(contact); } catch (SoapException soapEx) { //log1.Close(); throw new InvalidPluginExecutionException("Soap error occured in the plugin", soapEx); } catch (Exception ex) { //log1.WriteLine(ex.Message); //log1.Close(); throw new InvalidPluginExecutionException("An error occured in the plugin", ex); } } } else { return; } }
No comments:
Post a Comment