private void Invoke(MethodInfo entityAction, LocalPluginContext localContext) { var listParamValues = new List<object>(); foreach (var param in entityAction.GetParameters()) { if (typeof(IPluginContext).IsAssignableFrom(param.ParameterType)) { listParamValues.Add(localContext); } else if (typeof(IService).IsAssignableFrom(param.ParameterType)) { var obj = localContext.GetService(param.ParameterType); listParamValues.Add(obj); } } entityAction.Invoke(this, listParamValues.ToArray()); }
protected override void ExecuteCrmPlugin(LocalPluginContext localContext) { if (localContext == null) { throw new ArgumentNullException("localContext"); } localContext.TracingService.Trace("---------Triggered EventTicketCreate.cs---------"); IPluginExecutionContext pluginExecutionContext = localContext.PluginExecutionContext; IOrganizationService organizationService = localContext.OrganizationService; OrganizationServiceContext orgSvcContext = new OrganizationServiceContext(organizationService); Entity queriedEntityRecord = null; string messageName = pluginExecutionContext.MessageName; Entity entity = null; Guid initiatingUserId = pluginExecutionContext.InitiatingUserId; Entity entity2 = organizationService.Retrieve("systemuser", initiatingUserId, new ColumnSet("msnfp_configurationid")); if (entity2 == null) { throw new Exception("No user id found. Please ensure the user is valid. Exiting plugin."); } entity = Utilities.GetConfigurationRecordByUser(pluginExecutionContext, organizationService, localContext.TracingService); if (!pluginExecutionContext.InputParameters.Contains("Target")) { return; } if (pluginExecutionContext.InputParameters["Target"] is Entity) { localContext.TracingService.Trace("---------Entering EventTicketCreate.cs Main Function---------"); Entity entity3 = (Entity)pluginExecutionContext.InputParameters["Target"]; if (messageName == "Update") { queriedEntityRecord = organizationService.Retrieve("msnfp_eventticket", entity3.Id, GetColumnSet()); } if (entity3 != null) { if (messageName == "Create") { if (entity3.Contains("msnfp_tableticket") && (bool)entity3["msnfp_tableticket"]) { CreateEventTableRecords(entity3, localContext, organizationService, pluginExecutionContext); } if (entity3.Contains("msnfp_quantity") && entity3["msnfp_quantity"] != null) { entity3["msnfp_sum_available"] = (int)entity3["msnfp_quantity"]; organizationService.Update(entity3); } AddOrUpdateThisRecordWithAzure(entity3, entity, localContext, organizationService, pluginExecutionContext); } else if (messageName == "Update") { if (entity3.Contains("msnfp_quantity") && entity3["msnfp_quantity"] != null) { UpdateEventTicketsAvailable(queriedEntityRecord, orgSvcContext, organizationService, localContext); } UpdateEventTotals(queriedEntityRecord, orgSvcContext, organizationService, localContext); AddOrUpdateThisRecordWithAzure(queriedEntityRecord, entity, localContext, organizationService, pluginExecutionContext); } } else { localContext.TracingService.Trace("Target record not found. Exiting plugin."); } } if (messageName == "Delete") { queriedEntityRecord = organizationService.Retrieve("msnfp_eventticket", ((EntityReference)pluginExecutionContext.InputParameters["Target"]).Id, GetColumnSet()); AddOrUpdateThisRecordWithAzure(queriedEntityRecord, entity, localContext, organizationService, pluginExecutionContext); } localContext.TracingService.Trace("---------Exiting EventTicketCreate.cs---------"); }
private void AddOrUpdateThisRecordWithAzure(Entity queriedEntityRecord, Entity configurationRecord, LocalPluginContext localContext, IOrganizationService service, IPluginExecutionContext context) { localContext.TracingService.Trace("---------Send the Record to Azure---------"); string messageName = context.MessageName; string text = "BankRun"; string text2 = Utilities.GetAzureWebAPIURL(service, context); if (text2 != string.Empty) { localContext.TracingService.Trace("Getting Latest Info for Record: " + queriedEntityRecord["msnfp_bankrunid"].ToString()); MSNFP_BankRun mSNFP_BankRun = new MSNFP_BankRun(); mSNFP_BankRun.BankRunId = (Guid)queriedEntityRecord["msnfp_bankrunid"]; mSNFP_BankRun.Identifier = (queriedEntityRecord.Contains("msnfp_identifier") ? ((string)queriedEntityRecord["msnfp_identifier"]) : string.Empty); localContext.TracingService.Trace("Identifier: " + mSNFP_BankRun.Identifier); if (queriedEntityRecord.Contains("msnfp_startdate") && queriedEntityRecord["msnfp_startdate"] != null) { mSNFP_BankRun.StartDate = (DateTime)queriedEntityRecord["msnfp_startdate"]; localContext.TracingService.Trace("Got msnfp_startdate."); } else { mSNFP_BankRun.StartDate = null; localContext.TracingService.Trace("Did NOT find msnfp_startdate."); } if (queriedEntityRecord.Contains("msnfp_enddate") && queriedEntityRecord["msnfp_enddate"] != null) { mSNFP_BankRun.EndDate = (DateTime)queriedEntityRecord["msnfp_enddate"]; localContext.TracingService.Trace("Got msnfp_enddate."); } else { mSNFP_BankRun.EndDate = null; localContext.TracingService.Trace("Did NOT find msnfp_enddate."); } if (queriedEntityRecord.Contains("msnfp_datetobeprocessed") && queriedEntityRecord["msnfp_datetobeprocessed"] != null) { mSNFP_BankRun.DateToBeProcessed = (DateTime)queriedEntityRecord["msnfp_datetobeprocessed"]; localContext.TracingService.Trace("Got msnfp_datetobeprocessed."); } else { mSNFP_BankRun.DateToBeProcessed = null; localContext.TracingService.Trace("Did NOT find msnfp_datetobeprocessed."); } if (queriedEntityRecord.Contains("msnfp_bankrunstatus") && queriedEntityRecord["msnfp_bankrunstatus"] != null) { mSNFP_BankRun.BankRunStatus = ((OptionSetValue)queriedEntityRecord["msnfp_bankrunstatus"]).Value; localContext.TracingService.Trace("Got msnfp_bankrunstatus."); } else { mSNFP_BankRun.BankRunStatus = null; localContext.TracingService.Trace("Did NOT find msnfp_bankrunstatus."); } if (queriedEntityRecord.Contains("msnfp_accounttocreditid") && queriedEntityRecord["msnfp_accounttocreditid"] != null) { mSNFP_BankRun.AccountToCreditId = ((EntityReference)queriedEntityRecord["msnfp_accounttocreditid"]).Id; localContext.TracingService.Trace("Got msnfp_accounttocreditid"); } else { mSNFP_BankRun.AccountToCreditId = null; localContext.TracingService.Trace("Did NOT find msnfp_accounttocreditid"); } if (queriedEntityRecord.Contains("msnfp_paymentprocessorid") && queriedEntityRecord["msnfp_paymentprocessorid"] != null) { mSNFP_BankRun.PaymentProcessorId = ((EntityReference)queriedEntityRecord["msnfp_paymentprocessorid"]).Id; localContext.TracingService.Trace("Got msnfp_paymentprocessorid"); } else { mSNFP_BankRun.PaymentProcessorId = null; localContext.TracingService.Trace("Did NOT find msnfp_paymentprocessorid"); } if (queriedEntityRecord.Contains("msnfp_filecreationnumber") && queriedEntityRecord["msnfp_filecreationnumber"] != null) { mSNFP_BankRun.FileCreationNumber = (int)queriedEntityRecord["msnfp_filecreationnumber"]; localContext.TracingService.Trace("Got msnfp_filecreationnumber"); } else { mSNFP_BankRun.FileCreationNumber = null; localContext.TracingService.Trace("Did NOT find msnfp_filecreationnumber"); } if (messageName == "Create") { mSNFP_BankRun.CreatedOn = DateTime.UtcNow; } else if (queriedEntityRecord.Contains("createdon") && queriedEntityRecord["createdon"] != null) { mSNFP_BankRun.CreatedOn = (DateTime)queriedEntityRecord["createdon"]; } else { mSNFP_BankRun.CreatedOn = null; } if (messageName == "Delete") { mSNFP_BankRun.Deleted = true; mSNFP_BankRun.DeletedDate = DateTime.UtcNow; } else { mSNFP_BankRun.Deleted = false; mSNFP_BankRun.DeletedDate = null; } mSNFP_BankRun.StatusCode = ((OptionSetValue)queriedEntityRecord["statuscode"]).Value; mSNFP_BankRun.StateCode = ((OptionSetValue)queriedEntityRecord["statecode"]).Value; localContext.TracingService.Trace("JSON object created"); if (messageName == "Create") { text2 = text2 + text + "/Create" + text; } else if (messageName == "Update" || messageName == "Delete") { text2 = text2 + text + "/Update" + text; } MemoryStream memoryStream = new MemoryStream(); DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(MSNFP_BankRun)); dataContractJsonSerializer.WriteObject(memoryStream, mSNFP_BankRun); byte[] array = memoryStream.ToArray(); memoryStream.Close(); string @string = Encoding.UTF8.GetString(array, 0, array.Length); WebAPIClient webAPIClient = new WebAPIClient(); webAPIClient.Headers[HttpRequestHeader.ContentType] = "application/json"; webAPIClient.Headers["Padlock"] = (string)configurationRecord["msnfp_apipadlocktoken"]; webAPIClient.Encoding = Encoding.UTF8; localContext.TracingService.Trace("---------Preparing JSON---------"); localContext.TracingService.Trace("Converted to json API URL : " + text2); localContext.TracingService.Trace("JSON: " + @string); localContext.TracingService.Trace("---------End of Preparing JSON---------"); localContext.TracingService.Trace("Sending data to Azure."); string text3 = webAPIClient.UploadString(text2, @string); localContext.TracingService.Trace("Got response."); localContext.TracingService.Trace("Response: " + text3); Utilities utilities = new Utilities(); utilities.CheckAPIReturnJSONForErrors(text3, configurationRecord.GetAttributeValue <OptionSetValue>("msnfp_showapierrorresponses"), localContext.TracingService); } else { localContext.TracingService.Trace("No API URL or Enable Portal Pages. Exiting workflow."); } }
protected override void ExecuteCrmPlugin(LocalPluginContext localContext) { if (localContext == null) { throw new ArgumentNullException("localContext"); } localContext.TracingService.Trace("---------Triggered EventPreferenceCreate.cs---------"); IPluginExecutionContext pluginExecutionContext = localContext.PluginExecutionContext; IOrganizationService organizationService = localContext.OrganizationService; if (pluginExecutionContext.Depth > 2) { localContext.TracingService.Trace("Context.depth > 2. Exiting Plugin."); return; } Entity queriedEntityRecord = null; string messageName = pluginExecutionContext.MessageName; Entity entity = null; Guid initiatingUserId = pluginExecutionContext.InitiatingUserId; Entity entity2 = organizationService.Retrieve("systemuser", initiatingUserId, new ColumnSet("msnfp_configurationid")); if (entity2 == null) { throw new Exception("No user id found. Please ensure the user is valid. Exiting plugin."); } entity = Utilities.GetConfigurationRecordByUser(pluginExecutionContext, organizationService, localContext.TracingService); if (!pluginExecutionContext.InputParameters.Contains("Target")) { return; } if (pluginExecutionContext.InputParameters["Target"] is Entity) { localContext.TracingService.Trace("---------Entering EventPreferenceCreate.cs Main Function---------"); localContext.TracingService.Trace("Message Name: " + messageName); Entity entity3 = (Entity)pluginExecutionContext.InputParameters["Target"]; if (messageName == "Update") { queriedEntityRecord = organizationService.Retrieve("msnfp_eventpreference", entity3.Id, GetColumnSet()); } if (entity3 != null) { if (messageName == "Create") { AddOrUpdateThisRecordWithAzure(entity3, entity, localContext, organizationService, pluginExecutionContext); } else if (messageName == "Update") { AddOrUpdateThisRecordWithAzure(queriedEntityRecord, entity, localContext, organizationService, pluginExecutionContext); } } else { localContext.TracingService.Trace("Target record not found. Exiting workflow."); } } if (messageName == "Delete") { queriedEntityRecord = organizationService.Retrieve("msnfp_eventpreference", ((EntityReference)pluginExecutionContext.InputParameters["Target"]).Id, GetColumnSet()); AddOrUpdateThisRecordWithAzure(queriedEntityRecord, entity, localContext, organizationService, pluginExecutionContext); } localContext.TracingService.Trace("---------Exiting EventPreferenceCreate.cs---------"); }
private void UpdateEventTotals(Entity queriedEntityRecord, OrganizationServiceContext orgSvcContext, IOrganizationService service, LocalPluginContext localContext) { localContext.TracingService.Trace("---------UpdateEventTotals---------"); int num = 0; decimal value = default(decimal); Entity entity = service.Retrieve("msnfp_event", ((EntityReference)queriedEntityRecord["msnfp_eventid"]).Id, new ColumnSet("msnfp_eventid", "msnfp_sum_tickets", "msnfp_count_tickets")); List <Entity> list = (from a in orgSvcContext.CreateQuery("msnfp_eventticket") where ((EntityReference)a["msnfp_eventid"]).Id == ((EntityReference)queriedEntityRecord["msnfp_eventid"]).Id && ((OptionSetValue)a["statecode"]).Value == 0 && ((OptionSetValue)a["statuscode"]).Value != 844060000 select a).ToList(); if (list.Count > 0) { foreach (Entity item in list) { if (item.Contains("msnfp_sum_sold")) { num += (int)item["msnfp_sum_sold"]; } if (item.Contains("msnfp_val_sold")) { value += ((Money)item["msnfp_val_sold"]).Value; } } } entity["msnfp_count_tickets"] = num; entity["msnfp_sum_tickets"] = new Money(value); decimal value2 = Utilities.CalculateEventTotalRevenue(entity, service, orgSvcContext, localContext.TracingService); entity["msnfp_sum_total"] = new Money(value2); service.Update(entity); localContext.TracingService.Trace("Event Record Updated"); }
protected override void ExecuteCrmPlugin(LocalPluginContext localContext) { if (localContext == null) { throw new ArgumentNullException("localContext"); } localContext.TracingService.Trace("---------Triggered PaymentMethodUpdate.cs---------"); IPluginExecutionContext pluginExecutionContext = localContext.PluginExecutionContext; IOrganizationService organizationService = localContext.OrganizationService; OrganizationServiceContext organizationServiceContext = new OrganizationServiceContext(organizationService); string empty = string.Empty; Guid empty2 = Guid.Empty; if (!pluginExecutionContext.InputParameters.Contains("Target") || !(pluginExecutionContext.InputParameters["Target"] is Entity)) { return; } localContext.TracingService.Trace("---------Entering PaymentMethodUpdate.cs Main Function---------"); Entity entity = (Entity)pluginExecutionContext.InputParameters["Target"]; Guid initiatingUserId = pluginExecutionContext.InitiatingUserId; Entity entity2 = organizationService.Retrieve("systemuser", initiatingUserId, new ColumnSet("msnfp_configurationid")); Entity entity3 = organizationService.Retrieve("msnfp_paymentmethod", entity.Id, GetColumnSet()); if (entity3 == null) { throw new ArgumentNullException("msnfp_paymentmethodid"); } if (entity2 == null) { throw new Exception("No user id found. Please ensure the user is valid. Exiting plugin."); } if (entity3.Contains("msnfp_isreusable") && entity3.Contains("msnfp_type") && entity3.Contains("msnfp_billing_line1") && entity3.Contains("msnfp_paymentprocessorid") && entity3.Contains("msnfp_customerid") && entity3.Contains("msnfp_authtoken") && entity3.Contains("msnfp_cclast4")) { if (!(bool)entity3["msnfp_isreusable"] || ((OptionSetValue)entity3["msnfp_type"]).Value != 844060000 || (string)entity3["msnfp_billing_line1"] == null) { localContext.TracingService.Trace("Payment Method is not reusable, has no street 1 or is not a credit card. Exiting plugin."); return; } Entity paymentProcessorForPaymentMethod = getPaymentProcessorForPaymentMethod(entity3, localContext, organizationService); if (paymentProcessorForPaymentMethod != null) { localContext.TracingService.Trace("Payment Processor retrieved."); if (paymentProcessorForPaymentMethod.Contains("msnfp_paymentgatewaytype")) { if (((OptionSetValue)paymentProcessorForPaymentMethod["msnfp_paymentgatewaytype"]).Value == 844060000) { } if (((OptionSetValue)paymentProcessorForPaymentMethod["msnfp_paymentgatewaytype"]).Value == 844060001) { } if (((OptionSetValue)paymentProcessorForPaymentMethod["msnfp_paymentgatewaytype"]).Value != 844060002) { } } } localContext.TracingService.Trace("---------Exiting PaymentMethodUpdate.cs---------"); } else { localContext.TracingService.Trace("Payment Method is not reusable, has no street 1, is not a credit card or has no payment processor. Exiting plugin."); } }
private void SetReceiptIdentifier(Guid receiptID, LocalPluginContext localContext, IOrganizationService service, string messageName) { localContext.TracingService.Trace("Entering SetReceiptIdentifier()."); Entity entity = null; Guid? guid = null; string text = string.Empty; string empty = string.Empty; double num = 0.0; int num2 = 0; ColumnSet columnSet = new ColumnSet("msnfp_receiptid", "msnfp_identifier", "msnfp_receiptstackid", "msnfp_receiptstatus"); Entity entity2 = service.Retrieve("msnfp_receipt", receiptID, columnSet); localContext.TracingService.Trace("Found receipt with id: " + receiptID.ToString()); if (entity2.Contains("msnfp_identifier") && messageName != "Create") { localContext.TracingService.Trace("Found receipt identifier: " + (string)entity2["msnfp_identifier"]); if (entity2["msnfp_identifier"] != null || ((string)entity2["msnfp_identifier"]).Length > 0) { localContext.TracingService.Trace("Receipt already has identfier. Exiting SetReceiptIdentifier()."); return; } } if (entity2.Contains("msnfp_receiptstackid")) { guid = entity2.GetAttributeValue <EntityReference>("msnfp_receiptstackid").Id; localContext.TracingService.Trace("Found receipt stack."); } else { localContext.TracingService.Trace("No receipt stack found."); } if (guid.HasValue) { ITracingService tracingService = localContext.TracingService; Guid? guid2 = guid; tracingService.Trace("Locking Receipt Stack record Id:" + guid2.ToString()); Entity entity3 = new Entity("msnfp_receiptstack", guid.Value); entity3["msnfp_locked"] = true; service.Update(entity3); localContext.TracingService.Trace("Receipt Stack record locked"); entity = service.Retrieve("msnfp_receiptstack", ((EntityReference)entity2["msnfp_receiptstackid"]).Id, new ColumnSet("msnfp_receiptstackid", "msnfp_prefix", "msnfp_currentrange", "msnfp_numberrange")); localContext.TracingService.Trace("Obtaining prefix, current range and number range."); empty = (entity.Contains("msnfp_prefix") ? ((string)entity["msnfp_prefix"]) : string.Empty); num = (entity.Contains("msnfp_currentrange") ? ((double)entity["msnfp_currentrange"]) : 0.0); num2 = (entity.Contains("msnfp_numberrange") ? ((OptionSetValue)entity["msnfp_numberrange"]).Value : 0); switch (num2) { case 844060000: localContext.TracingService.Trace("Number range : 6 digit"); text = empty + (num + 1.0).ToString().PadLeft(6, '0'); break; case 844060001: localContext.TracingService.Trace("Number range : 8 digit"); text = empty + (num + 1.0).ToString().PadLeft(8, '0'); break; case 844060002: localContext.TracingService.Trace("Number range : 10 digit"); text = empty + (num + 1.0).ToString().PadLeft(10, '0'); break; default: localContext.TracingService.Trace("Receipt number range unknown. msnfp_numberrange: " + num2); break; } localContext.TracingService.Trace("Receipt Number: " + text); Entity entity4 = new Entity(entity2.LogicalName, entity2.Id); entity4["msnfp_receiptnumber"] = text; entity4["msnfp_identifier"] = text; if (messageName == "Create" && !entity2.Contains("msnfp_receiptstatus")) { entity4["msnfp_receiptstatus"] = "Issued"; } localContext.TracingService.Trace("Updating Receipt."); service.Update(entity4); localContext.TracingService.Trace("Receipt Updated"); localContext.TracingService.Trace("Now update the receipt stacks current number by 1."); Entity entity5 = new Entity("msnfp_receiptstack", guid.Value); entity5["msnfp_currentrange"] = num + 1.0; entity5["msnfp_locked"] = false; service.Update(entity5); localContext.TracingService.Trace("Updated Receipt Stack current range to: " + (num + 1.0)); } else { localContext.TracingService.Trace("No receipt stack found."); } localContext.TracingService.Trace("Exiting SetReceiptIdentifier()."); }
protected override void ExecuteCrmPlugin(LocalPluginContext localContext) { if (localContext == null) { throw new ArgumentNullException("localContext"); } localContext.TracingService.Trace("---------Triggered PaymentScheduleCreate.cs---------"); IPluginExecutionContext pluginExecutionContext = localContext.PluginExecutionContext; IOrganizationService organizationService = localContext.OrganizationService; Entity queriedEntityRecord = null; string messageName = pluginExecutionContext.MessageName; Entity configurationRecordByMessageName = Utilities.GetConfigurationRecordByMessageName(pluginExecutionContext, organizationService, localContext.TracingService); Guid initiatingUserId = pluginExecutionContext.InitiatingUserId; Entity entity = organizationService.Retrieve("systemuser", initiatingUserId, new ColumnSet("msnfp_configurationid")); if (entity == null) { throw new Exception("No user id found. Please ensure the user is valid. Exiting plugin."); } if (!pluginExecutionContext.InputParameters.Contains("Target")) { return; } if (pluginExecutionContext.InputParameters["Target"] is Entity) { localContext.TracingService.Trace("---------Entering PaymentScheduleCreate.cs Main Function---------"); Entity entity2 = (Entity)pluginExecutionContext.InputParameters["Target"]; if (messageName == "Update") { queriedEntityRecord = organizationService.Retrieve("msnfp_paymentschedule", entity2.Id, GetPaymentScheduleColumns()); } if (entity2 != null) { try { if (messageName == "Create") { if (!entity2.Contains("msnfp_customerid")) { localContext.TracingService.Trace("Validating donor - start."); queriedEntityRecord = organizationService.Retrieve("msnfp_paymentschedule", entity2.Id, GetPaymentScheduleColumns()); AddOrUpdateThisRecordWithAzure(queriedEntityRecord, configurationRecordByMessageName, localContext, organizationService, pluginExecutionContext); } else { AddOrUpdateThisRecordWithAzure(entity2, configurationRecordByMessageName, localContext, organizationService, pluginExecutionContext); } } else if (messageName == "Update") { AddOrUpdateThisRecordWithAzure(queriedEntityRecord, configurationRecordByMessageName, localContext, organizationService, pluginExecutionContext); } } catch (Exception ex) { localContext.TracingService.Trace("An error has occured: " + ex.ToString()); } } else { localContext.TracingService.Trace("Target record not found. Exiting workflow."); } } if (messageName == "Delete") { queriedEntityRecord = organizationService.Retrieve("msnfp_paymentschedule", ((EntityReference)pluginExecutionContext.InputParameters["Target"]).Id, GetPaymentScheduleColumns()); AddOrUpdateThisRecordWithAzure(queriedEntityRecord, configurationRecordByMessageName, localContext, organizationService, pluginExecutionContext); } localContext.TracingService.Trace("---------Exiting PaymentScheduleCreate.cs---------"); }
private void AddOrUpdateThisRecordWithAzure(Entity queriedEntityRecord, Entity configurationRecord, LocalPluginContext localContext, IOrganizationService service, IPluginExecutionContext context) { localContext.TracingService.Trace("---------Send the Record to Azure---------"); string messageName = context.MessageName; string text = "PaymentSchedule"; string text2 = Utilities.GetAzureWebAPIURL(service, context); localContext.TracingService.Trace("Got API URL: " + text2); if (text2 != string.Empty) { localContext.TracingService.Trace("Getting Latest Info for Record: " + queriedEntityRecord["msnfp_paymentscheduleid"].ToString()); MSNFP_PaymentSchedule mSNFP_PaymentSchedule = new MSNFP_PaymentSchedule(); mSNFP_PaymentSchedule.PaymentScheduleId = (Guid)queriedEntityRecord["msnfp_paymentscheduleid"]; mSNFP_PaymentSchedule.Name = (queriedEntityRecord.Contains("msnfp_name") ? ((string)queriedEntityRecord["msnfp_name"]) : string.Empty); localContext.TracingService.Trace("Title: " + mSNFP_PaymentSchedule.Name); if (queriedEntityRecord.Contains("msnfp_amount_receipted") && queriedEntityRecord["msnfp_amount_receipted"] != null) { mSNFP_PaymentSchedule.AmountReceipted = ((Money)queriedEntityRecord["msnfp_amount_receipted"]).Value; localContext.TracingService.Trace("Got msnfp_amount_receipted."); } else { mSNFP_PaymentSchedule.AmountReceipted = default(decimal); localContext.TracingService.Trace("Did NOT find msnfp_amount_receipted."); } if (queriedEntityRecord.Contains("msnfp_amount_membership") && queriedEntityRecord["msnfp_amount_membership"] != null) { mSNFP_PaymentSchedule.AmountMembership = ((Money)queriedEntityRecord["msnfp_amount_membership"]).Value; localContext.TracingService.Trace("Got msnfp_amount_membership."); } else { mSNFP_PaymentSchedule.AmountMembership = default(decimal); localContext.TracingService.Trace("Did NOT find msnfp_amount_membership."); } if (queriedEntityRecord.Contains("msnfp_amount_nonreceiptable") && queriedEntityRecord["msnfp_amount_nonreceiptable"] != null) { mSNFP_PaymentSchedule.AmountNonReceiptable = ((Money)queriedEntityRecord["msnfp_amount_nonreceiptable"]).Value; localContext.TracingService.Trace("Got msnfp_amount_nonreceiptable."); } else { mSNFP_PaymentSchedule.AmountNonReceiptable = default(decimal); localContext.TracingService.Trace("Did NOT find msnfp_amount_nonreceiptable."); } if (queriedEntityRecord.Contains("msnfp_amount_tax") && queriedEntityRecord["msnfp_amount_tax"] != null) { mSNFP_PaymentSchedule.AmountTax = ((Money)queriedEntityRecord["msnfp_amount_tax"]).Value; localContext.TracingService.Trace("Got msnfp_amount_tax."); } else { mSNFP_PaymentSchedule.AmountTax = default(decimal); localContext.TracingService.Trace("Did NOT find msnfp_amount_tax."); } if (queriedEntityRecord.Contains("msnfp_recurringamount") && queriedEntityRecord["msnfp_recurringamount"] != null) { mSNFP_PaymentSchedule.RecurringAmount = ((Money)queriedEntityRecord["msnfp_recurringamount"]).Value; localContext.TracingService.Trace("Got msnfp_recurringamount."); } else { mSNFP_PaymentSchedule.RecurringAmount = null; localContext.TracingService.Trace("Did NOT find msnfp_recurringamount."); } if (queriedEntityRecord.Contains("msnfp_firstpaymentdate") && queriedEntityRecord["msnfp_firstpaymentdate"] != null) { mSNFP_PaymentSchedule.FirstPaymentDate = (DateTime)queriedEntityRecord["msnfp_firstpaymentdate"]; localContext.TracingService.Trace("Got msnfp_firstpaymentdate."); } else { mSNFP_PaymentSchedule.FirstPaymentDate = null; localContext.TracingService.Trace("Did NOT find msnfp_firstpaymentdate."); } if (queriedEntityRecord.Contains("msnfp_frequencyinterval") && queriedEntityRecord["msnfp_frequencyinterval"] != null) { mSNFP_PaymentSchedule.FrequencyInterval = (int)queriedEntityRecord["msnfp_frequencyinterval"]; localContext.TracingService.Trace("Got msnfp_frequencyinterval."); } else { mSNFP_PaymentSchedule.FrequencyInterval = null; localContext.TracingService.Trace("Did NOT find msnfp_frequencyinterval."); } if (queriedEntityRecord.Contains("msnfp_frequency") && queriedEntityRecord["msnfp_frequency"] != null) { mSNFP_PaymentSchedule.Frequency = ((OptionSetValue)queriedEntityRecord["msnfp_frequency"]).Value; localContext.TracingService.Trace("Got msnfp_frequency."); } else { mSNFP_PaymentSchedule.Frequency = null; localContext.TracingService.Trace("Did NOT find msnfp_frequency."); } if (queriedEntityRecord.Contains("msnfp_nextpaymentdate") && queriedEntityRecord["msnfp_nextpaymentdate"] != null) { mSNFP_PaymentSchedule.NextPaymentDate = (DateTime)queriedEntityRecord["msnfp_nextpaymentdate"]; localContext.TracingService.Trace("Got msnfp_nextpaymentdate."); } else { mSNFP_PaymentSchedule.NextPaymentDate = null; localContext.TracingService.Trace("Did NOT find msnfp_nextpaymentdate."); } if (queriedEntityRecord.Contains("msnfp_frequencystartcode") && queriedEntityRecord["msnfp_frequencystartcode"] != null) { mSNFP_PaymentSchedule.FrequencyStartCode = ((OptionSetValue)queriedEntityRecord["msnfp_frequencystartcode"]).Value; localContext.TracingService.Trace("Got msnfp_frequencystartcode."); } else { mSNFP_PaymentSchedule.FrequencyStartCode = null; localContext.TracingService.Trace("Did NOT find msnfp_frequencystartcode."); } if (queriedEntityRecord.Contains("msnfp_cancelationcode") && queriedEntityRecord["msnfp_cancelationcode"] != null) { mSNFP_PaymentSchedule.CancelationCode = ((OptionSetValue)queriedEntityRecord["msnfp_cancelationcode"]).Value; localContext.TracingService.Trace("Got msnfp_cancelationcode."); } else { mSNFP_PaymentSchedule.CancelationCode = null; localContext.TracingService.Trace("Did NOT find msnfp_cancelationcode."); } if (queriedEntityRecord.Contains("msnfp_cancellationnote") && queriedEntityRecord["msnfp_cancellationnote"] != null) { mSNFP_PaymentSchedule.CancellationNote = (string)queriedEntityRecord["msnfp_cancellationnote"]; localContext.TracingService.Trace("Got msnfp_cancellationnote."); } else { mSNFP_PaymentSchedule.CancellationNote = null; localContext.TracingService.Trace("Did NOT find msnfp_cancellationnote."); } if (queriedEntityRecord.Contains("msnfp_cancelledon") && queriedEntityRecord["msnfp_cancelledon"] != null) { mSNFP_PaymentSchedule.CancelledOn = (DateTime)queriedEntityRecord["msnfp_cancelledon"]; localContext.TracingService.Trace("Got msnfp_cancelledon."); } else { mSNFP_PaymentSchedule.CancelledOn = null; localContext.TracingService.Trace("Did NOT find msnfp_cancelledon."); } if (queriedEntityRecord.Contains("msnfp_endondate") && queriedEntityRecord["msnfp_endondate"] != null) { mSNFP_PaymentSchedule.EndonDate = (DateTime)queriedEntityRecord["msnfp_endondate"]; localContext.TracingService.Trace("Got msnfp_endondate."); } else { mSNFP_PaymentSchedule.EndonDate = null; localContext.TracingService.Trace("Did NOT find msnfp_endondate."); } if (queriedEntityRecord.Contains("msnfp_lastpaymentdate") && queriedEntityRecord["msnfp_lastpaymentdate"] != null) { mSNFP_PaymentSchedule.LastPaymentDate = (DateTime)queriedEntityRecord["msnfp_lastpaymentdate"]; localContext.TracingService.Trace("Got msnfp_lastpaymentdate."); } else { mSNFP_PaymentSchedule.LastPaymentDate = null; localContext.TracingService.Trace("Did NOT find msnfp_lastpaymentdate."); } if (queriedEntityRecord.Contains("msnfp_scheduletypecode") && queriedEntityRecord["msnfp_scheduletypecode"] != null) { mSNFP_PaymentSchedule.ScheduleTypeCode = ((OptionSetValue)queriedEntityRecord["msnfp_scheduletypecode"]).Value; localContext.TracingService.Trace("Got msnfp_scheduletypecode."); } else { mSNFP_PaymentSchedule.ScheduleTypeCode = null; localContext.TracingService.Trace("Did NOT find msnfp_scheduletypecode."); } if (queriedEntityRecord.Contains("msnfp_anonymity") && queriedEntityRecord["msnfp_anonymity"] != null) { mSNFP_PaymentSchedule.Anonymity = ((OptionSetValue)queriedEntityRecord["msnfp_anonymity"]).Value; localContext.TracingService.Trace("Got msnfp_anonymity."); } else { mSNFP_PaymentSchedule.Anonymity = null; localContext.TracingService.Trace("Did NOT find msnfp_anonymity."); } if (queriedEntityRecord.Contains("msnfp_paymentmethodid") && queriedEntityRecord["msnfp_paymentmethodid"] != null) { mSNFP_PaymentSchedule.PaymentMethodId = ((EntityReference)queriedEntityRecord["msnfp_paymentmethodid"]).Id; localContext.TracingService.Trace("Got msnfp_paymentmethodid."); } else { mSNFP_PaymentSchedule.PaymentMethodId = null; localContext.TracingService.Trace("Did NOT find msnfp_paymentmethodid."); } if (queriedEntityRecord.Contains("msnfp_designationid") && queriedEntityRecord["msnfp_designationid"] != null) { mSNFP_PaymentSchedule.DesignationId = ((EntityReference)queriedEntityRecord["msnfp_designationid"]).Id; localContext.TracingService.Trace("Got msnfp_designationid."); } else { mSNFP_PaymentSchedule.DesignationId = null; localContext.TracingService.Trace("Did NOT find msnfp_designationid."); } if (queriedEntityRecord.Contains("msnfp_appealid") && queriedEntityRecord["msnfp_appealid"] != null) { mSNFP_PaymentSchedule.AppealId = ((EntityReference)queriedEntityRecord["msnfp_appealid"]).Id; localContext.TracingService.Trace("Got msnfp_appealid."); } else { mSNFP_PaymentSchedule.AppealId = null; localContext.TracingService.Trace("Did NOT find msnfp_appealid."); } if (queriedEntityRecord.Contains("msnfp_appraiser") && queriedEntityRecord["msnfp_appraiser"] != null) { mSNFP_PaymentSchedule.Appraiser = (string)queriedEntityRecord["msnfp_appraiser"]; localContext.TracingService.Trace("Got msnfp_appraiser."); } else { mSNFP_PaymentSchedule.Appraiser = null; localContext.TracingService.Trace("Did NOT find msnfp_appraiser."); } if (queriedEntityRecord.Contains("msnfp_billing_city") && queriedEntityRecord["msnfp_billing_city"] != null) { mSNFP_PaymentSchedule.BillingCity = (string)queriedEntityRecord["msnfp_billing_city"]; localContext.TracingService.Trace("Got msnfp_billing_city."); } else { mSNFP_PaymentSchedule.BillingCity = null; localContext.TracingService.Trace("Did NOT find msnfp_billing_city."); } if (queriedEntityRecord.Contains("msnfp_billing_country") && queriedEntityRecord["msnfp_billing_country"] != null) { mSNFP_PaymentSchedule.BillingCountry = (string)queriedEntityRecord["msnfp_billing_country"]; localContext.TracingService.Trace("Got msnfp_billing_country."); } else { mSNFP_PaymentSchedule.BillingCountry = null; localContext.TracingService.Trace("Did NOT find msnfp_billing_country."); } if (queriedEntityRecord.Contains("msnfp_billing_line1") && queriedEntityRecord["msnfp_billing_line1"] != null) { mSNFP_PaymentSchedule.BillingLine1 = (string)queriedEntityRecord["msnfp_billing_line1"]; localContext.TracingService.Trace("Got msnfp_billing_line1."); } else { mSNFP_PaymentSchedule.BillingLine1 = null; localContext.TracingService.Trace("Did NOT find msnfp_billing_line1."); } if (queriedEntityRecord.Contains("msnfp_billing_line2") && queriedEntityRecord["msnfp_billing_line2"] != null) { mSNFP_PaymentSchedule.BillingLine2 = (string)queriedEntityRecord["msnfp_billing_line2"]; localContext.TracingService.Trace("Got msnfp_billing_line2."); } else { mSNFP_PaymentSchedule.BillingLine2 = null; localContext.TracingService.Trace("Did NOT find msnfp_billing_line2."); } if (queriedEntityRecord.Contains("msnfp_billing_line3") && queriedEntityRecord["msnfp_billing_line3"] != null) { mSNFP_PaymentSchedule.BillingLine3 = (string)queriedEntityRecord["msnfp_billing_line3"]; localContext.TracingService.Trace("Got msnfp_billing_line3."); } else { mSNFP_PaymentSchedule.BillingLine3 = null; localContext.TracingService.Trace("Did NOT find msnfp_billing_line3."); } if (queriedEntityRecord.Contains("msnfp_billing_postalcode") && queriedEntityRecord["msnfp_billing_postalcode"] != null) { mSNFP_PaymentSchedule.BillingPostalCode = (string)queriedEntityRecord["msnfp_billing_postalcode"]; localContext.TracingService.Trace("Got msnfp_billing_postalcode."); } else { mSNFP_PaymentSchedule.BillingPostalCode = null; localContext.TracingService.Trace("Did NOT find msnfp_billing_postalcode."); } if (queriedEntityRecord.Contains("msnfp_billing_stateorprovince") && queriedEntityRecord["msnfp_billing_stateorprovince"] != null) { mSNFP_PaymentSchedule.BillingStateorProvince = (string)queriedEntityRecord["msnfp_billing_stateorprovince"]; localContext.TracingService.Trace("Got msnfp_billing_stateorprovince."); } else { mSNFP_PaymentSchedule.BillingStateorProvince = null; localContext.TracingService.Trace("Did NOT find msnfp_billing_stateorprovince."); } if (queriedEntityRecord.Contains("msnfp_originatingcampaignid") && queriedEntityRecord["msnfp_originatingcampaignid"] != null) { mSNFP_PaymentSchedule.OriginatingCampaignId = ((EntityReference)queriedEntityRecord["msnfp_originatingcampaignid"]).Id; localContext.TracingService.Trace("Got msnfp_originatingcampaignid."); } else { mSNFP_PaymentSchedule.OriginatingCampaignId = null; localContext.TracingService.Trace("Did NOT find msnfp_originatingcampaignid."); } if (queriedEntityRecord.Contains("msnfp_ccbrandcode") && queriedEntityRecord["msnfp_ccbrandcode"] != null) { mSNFP_PaymentSchedule.CcBrandCode = ((OptionSetValue)queriedEntityRecord["msnfp_ccbrandcode"]).Value; localContext.TracingService.Trace("Got msnfp_ccbrandcode."); } else { mSNFP_PaymentSchedule.CcBrandCode = null; localContext.TracingService.Trace("Did NOT find msnfp_ccbrandcode."); } if (queriedEntityRecord.Contains("msnfp_chargeoncreate") && queriedEntityRecord["msnfp_chargeoncreate"] != null) { mSNFP_PaymentSchedule.ChargeonCreate = (bool)queriedEntityRecord["msnfp_chargeoncreate"]; localContext.TracingService.Trace("Got msnfp_chargeoncreate."); } else { mSNFP_PaymentSchedule.ChargeonCreate = null; localContext.TracingService.Trace("Did NOT find msnfp_chargeoncreate."); } if (queriedEntityRecord.Contains("msnfp_configurationid") && queriedEntityRecord["msnfp_configurationid"] != null) { mSNFP_PaymentSchedule.ConfigurationId = ((EntityReference)queriedEntityRecord["msnfp_configurationid"]).Id; localContext.TracingService.Trace("Got msnfp_configurationid."); } else { mSNFP_PaymentSchedule.ConfigurationId = null; localContext.TracingService.Trace("Did NOT find msnfp_configurationid."); } if (queriedEntityRecord.Contains("msnfp_constituentid") && queriedEntityRecord["msnfp_constituentid"] != null) { mSNFP_PaymentSchedule.ConstituentId = ((EntityReference)queriedEntityRecord["msnfp_constituentid"]).Id; localContext.TracingService.Trace("Got msnfp_constituentid."); } else { mSNFP_PaymentSchedule.ConstituentId = null; localContext.TracingService.Trace("Did NOT find msnfp_constituentid."); } if (queriedEntityRecord.Contains("msnfp_customerid") && queriedEntityRecord["msnfp_customerid"] != null) { mSNFP_PaymentSchedule.CustomerId = ((EntityReference)queriedEntityRecord["msnfp_customerid"]).Id; if (((EntityReference)queriedEntityRecord["msnfp_customerid"]).LogicalName.ToLower() == "contact") { mSNFP_PaymentSchedule.CustomerIdType = 2; } else if (((EntityReference)queriedEntityRecord["msnfp_customerid"]).LogicalName.ToLower() == "account") { mSNFP_PaymentSchedule.CustomerIdType = 1; } localContext.TracingService.Trace("Got msnfp_customerid."); } else { mSNFP_PaymentSchedule.CustomerId = null; mSNFP_PaymentSchedule.CustomerIdType = null; localContext.TracingService.Trace("Did NOT find msnfp_customerid."); } if (queriedEntityRecord.Contains("msnfp_bookdate") && queriedEntityRecord["msnfp_bookdate"] != null) { mSNFP_PaymentSchedule.BookDate = (DateTime)queriedEntityRecord["msnfp_bookdate"]; localContext.TracingService.Trace("Got msnfp_bookdate."); } else { mSNFP_PaymentSchedule.BookDate = null; localContext.TracingService.Trace("Did NOT find msnfp_bookdate."); } if (queriedEntityRecord.Contains("msnfp_paymentprocessorid") && queriedEntityRecord["msnfp_paymentprocessorid"] != null) { mSNFP_PaymentSchedule.PaymentProcessorId = ((EntityReference)queriedEntityRecord["msnfp_paymentprocessorid"]).Id; localContext.TracingService.Trace("Got msnfp_paymentprocessorid"); } else { mSNFP_PaymentSchedule.PaymentProcessorId = null; localContext.TracingService.Trace("Did NOT find msnfp_paymentprocessorid"); } if (queriedEntityRecord.Contains("msnfp_ga_deliverycode") && queriedEntityRecord["msnfp_ga_deliverycode"] != null) { mSNFP_PaymentSchedule.GaDeliveryCode = ((OptionSetValue)queriedEntityRecord["msnfp_ga_deliverycode"]).Value; localContext.TracingService.Trace("Got msnfp_ga_deliverycode."); } else { mSNFP_PaymentSchedule.GaDeliveryCode = null; localContext.TracingService.Trace("Did NOT find msnfp_ga_deliverycode."); } if (queriedEntityRecord.Contains("msnfp_depositdate") && queriedEntityRecord["msnfp_depositdate"] != null) { mSNFP_PaymentSchedule.DepositDate = (DateTime)queriedEntityRecord["msnfp_depositdate"]; localContext.TracingService.Trace("Got msnfp_depositdate."); } else { mSNFP_PaymentSchedule.DepositDate = null; localContext.TracingService.Trace("Did NOT find msnfp_depositdate."); } if (queriedEntityRecord.Contains("msnfp_emailaddress1") && queriedEntityRecord["msnfp_emailaddress1"] != null) { mSNFP_PaymentSchedule.EmailAddress1 = (string)queriedEntityRecord["msnfp_emailaddress1"]; localContext.TracingService.Trace("Got msnfp_emailaddress1."); } else { mSNFP_PaymentSchedule.EmailAddress1 = null; localContext.TracingService.Trace("Did NOT find msnfp_emailaddress1."); } if (queriedEntityRecord.Contains("msnfp_eventid") && queriedEntityRecord["msnfp_eventid"] != null) { mSNFP_PaymentSchedule.EventId = ((EntityReference)queriedEntityRecord["msnfp_eventid"]).Id; localContext.TracingService.Trace("Got msnfp_eventid."); } else { mSNFP_PaymentSchedule.EventId = null; localContext.TracingService.Trace("Did NOT find msnfp_eventid."); } if (queriedEntityRecord.Contains("msnfp_eventpackageid") && queriedEntityRecord["msnfp_eventpackageid"] != null) { mSNFP_PaymentSchedule.EventPackageId = ((EntityReference)queriedEntityRecord["msnfp_eventpackageid"]).Id; localContext.TracingService.Trace("Got msnfp_eventpackageid."); } else { mSNFP_PaymentSchedule.EventPackageId = null; localContext.TracingService.Trace("Did NOT find msnfp_eventpackageid."); } if (queriedEntityRecord.Contains("msnfp_firstname") && queriedEntityRecord["msnfp_firstname"] != null) { mSNFP_PaymentSchedule.FirstName = (string)queriedEntityRecord["msnfp_firstname"]; localContext.TracingService.Trace("Got msnfp_firstname."); } else { mSNFP_PaymentSchedule.FirstName = null; localContext.TracingService.Trace("Did NOT find msnfp_firstname."); } if (queriedEntityRecord.Contains("msnfp_giftbatchid") && queriedEntityRecord["msnfp_giftbatchid"] != null) { mSNFP_PaymentSchedule.GiftBatchId = ((EntityReference)queriedEntityRecord["msnfp_giftbatchid"]).Id; localContext.TracingService.Trace("Got msnfp_giftbatchid."); } else { mSNFP_PaymentSchedule.GiftBatchId = null; localContext.TracingService.Trace("Did NOT find msnfp_giftbatchid."); } if (queriedEntityRecord.Contains("msnfp_dataentrysource") && queriedEntityRecord["msnfp_dataentrysource"] != null) { mSNFP_PaymentSchedule.DataEntrySource = ((OptionSetValue)queriedEntityRecord["msnfp_dataentrysource"]).Value; localContext.TracingService.Trace("Got msnfp_dataentrysource."); } else { mSNFP_PaymentSchedule.DataEntrySource = null; localContext.TracingService.Trace("Did NOT find msnfp_dataentrysource."); } if (queriedEntityRecord.Contains("msnfp_paymenttypecode") && queriedEntityRecord["msnfp_paymenttypecode"] != null) { mSNFP_PaymentSchedule.PaymentTypeCode = ((OptionSetValue)queriedEntityRecord["msnfp_paymenttypecode"]).Value; localContext.TracingService.Trace("Got msnfp_paymenttypecode."); } else { mSNFP_PaymentSchedule.PaymentTypeCode = null; localContext.TracingService.Trace("Did NOT find msnfp_paymenttypecode."); } if (queriedEntityRecord.Contains("msnfp_lastname") && queriedEntityRecord["msnfp_lastname"] != null) { mSNFP_PaymentSchedule.LastName = (string)queriedEntityRecord["msnfp_lastname"]; localContext.TracingService.Trace("Got msnfp_lastname."); } else { mSNFP_PaymentSchedule.LastName = null; localContext.TracingService.Trace("Did NOT find msnfp_lastname."); } if (queriedEntityRecord.Contains("msnfp_membershipcategoryid") && queriedEntityRecord["msnfp_membershipcategoryid"] != null) { mSNFP_PaymentSchedule.MembershipCategoryId = ((EntityReference)queriedEntityRecord["msnfp_membershipcategoryid"]).Id; localContext.TracingService.Trace("Got msnfp_membershipcategoryid."); } else { mSNFP_PaymentSchedule.MembershipCategoryId = null; localContext.TracingService.Trace("Did NOT find msnfp_membershipcategoryid."); } if (queriedEntityRecord.Contains("msnfp_membershipinstanceid") && queriedEntityRecord["msnfp_membershipinstanceid"] != null) { mSNFP_PaymentSchedule.MembershipId = ((EntityReference)queriedEntityRecord["msnfp_membershipinstanceid"]).Id; localContext.TracingService.Trace("Got msnfp_membershipinstanceid."); } else { mSNFP_PaymentSchedule.MembershipId = null; localContext.TracingService.Trace("Did NOT find msnfp_membershipinstanceid."); } if (queriedEntityRecord.Contains("msnfp_mobilephone") && queriedEntityRecord["msnfp_mobilephone"] != null) { mSNFP_PaymentSchedule.MobilePhone = (string)queriedEntityRecord["msnfp_mobilephone"]; localContext.TracingService.Trace("Got msnfp_mobilephone."); } else { mSNFP_PaymentSchedule.MobilePhone = null; localContext.TracingService.Trace("Did NOT find msnfp_mobilephone."); } if (queriedEntityRecord.Contains("msnfp_organizationname") && queriedEntityRecord["msnfp_organizationname"] != null) { mSNFP_PaymentSchedule.OrganizationName = (string)queriedEntityRecord["msnfp_organizationname"]; localContext.TracingService.Trace("Got msnfp_organizationname."); } else { mSNFP_PaymentSchedule.OrganizationName = null; localContext.TracingService.Trace("Did NOT find msnfp_organizationname."); } if (queriedEntityRecord.Contains("msnfp_packageid") && queriedEntityRecord["msnfp_packageid"] != null) { mSNFP_PaymentSchedule.PackageId = ((EntityReference)queriedEntityRecord["msnfp_packageid"]).Id; localContext.TracingService.Trace("Got msnfp_packageid."); } else { mSNFP_PaymentSchedule.PackageId = null; localContext.TracingService.Trace("Did NOT find msnfp_packageid."); } if (queriedEntityRecord.Contains("msnfp_taxreceiptid") && queriedEntityRecord["msnfp_taxreceiptid"] != null) { mSNFP_PaymentSchedule.TaxReceiptId = ((EntityReference)queriedEntityRecord["msnfp_taxreceiptid"]).Id; localContext.TracingService.Trace("Got msnfp_taxreceiptid."); } else { mSNFP_PaymentSchedule.TaxReceiptId = null; localContext.TracingService.Trace("Did NOT find msnfp_taxreceiptid."); } if (queriedEntityRecord.Contains("msnfp_receiptpreferencecode") && queriedEntityRecord["msnfp_receiptpreferencecode"] != null) { mSNFP_PaymentSchedule.ReceiptPreferenceCode = ((OptionSetValue)queriedEntityRecord["msnfp_receiptpreferencecode"]).Value; localContext.TracingService.Trace("Got msnfp_receiptpreferencecode."); } else { mSNFP_PaymentSchedule.ReceiptPreferenceCode = null; localContext.TracingService.Trace("Did NOT find msnfp_receiptpreferencecode."); } if (queriedEntityRecord.Contains("msnfp_telephone1") && queriedEntityRecord["msnfp_telephone1"] != null) { mSNFP_PaymentSchedule.Telephone1 = (string)queriedEntityRecord["msnfp_telephone1"]; localContext.TracingService.Trace("Got msnfp_telephone1."); } else { mSNFP_PaymentSchedule.Telephone1 = null; localContext.TracingService.Trace("Did NOT find msnfp_telephone1."); } if (queriedEntityRecord.Contains("msnfp_telephone2") && queriedEntityRecord["msnfp_telephone2"] != null) { mSNFP_PaymentSchedule.Telephone2 = (string)queriedEntityRecord["msnfp_telephone2"]; localContext.TracingService.Trace("Got msnfp_telephone2."); } else { mSNFP_PaymentSchedule.Telephone2 = null; localContext.TracingService.Trace("Did NOT find msnfp_telephone2."); } if (queriedEntityRecord.Contains("msnfp_dataentryreference") && queriedEntityRecord["msnfp_dataentryreference"] != null) { mSNFP_PaymentSchedule.DataEntryReference = (string)queriedEntityRecord["msnfp_dataentryreference"]; localContext.TracingService.Trace("Got msnfp_dataentryreference."); } else { mSNFP_PaymentSchedule.DataEntryReference = null; localContext.TracingService.Trace("Did NOT find msnfp_dataentryreference."); } if (queriedEntityRecord.Contains("msnfp_invoiceidentifier") && queriedEntityRecord["msnfp_invoiceidentifier"] != null) { mSNFP_PaymentSchedule.InvoiceIdentifier = (string)queriedEntityRecord["msnfp_invoiceidentifier"]; localContext.TracingService.Trace("Got msnfp_invoiceidentifier."); } else { mSNFP_PaymentSchedule.InvoiceIdentifier = null; localContext.TracingService.Trace("Did NOT find msnfp_invoiceidentifier."); } if (queriedEntityRecord.Contains("msnfp_transactionfraudcode") && queriedEntityRecord["msnfp_transactionfraudcode"] != null) { mSNFP_PaymentSchedule.TransactionFraudCode = (string)queriedEntityRecord["msnfp_transactionfraudcode"]; localContext.TracingService.Trace("Got msnfp_transactionfraudcode."); } else { mSNFP_PaymentSchedule.TransactionFraudCode = null; localContext.TracingService.Trace("Did NOT find msnfp_transactionfraudcode."); } if (queriedEntityRecord.Contains("msnfp_transactionidentifier") && queriedEntityRecord["msnfp_transactionidentifier"] != null) { mSNFP_PaymentSchedule.TransactionIdentifier = (string)queriedEntityRecord["msnfp_transactionidentifier"]; localContext.TracingService.Trace("Got msnfp_transactionidentifier."); } else { mSNFP_PaymentSchedule.TransactionIdentifier = null; localContext.TracingService.Trace("Did NOT find msnfp_transactionidentifier."); } if (queriedEntityRecord.Contains("msnfp_transactionresult") && queriedEntityRecord["msnfp_transactionresult"] != null) { mSNFP_PaymentSchedule.TransactionResult = (string)queriedEntityRecord["msnfp_transactionresult"]; localContext.TracingService.Trace("Got msnfp_transactionresult."); } else { mSNFP_PaymentSchedule.TransactionResult = null; localContext.TracingService.Trace("Did NOT find msnfp_transactionresult."); } if (queriedEntityRecord.Contains("msnfp_tributecode") && queriedEntityRecord["msnfp_tributecode"] != null) { mSNFP_PaymentSchedule.TributeCode = ((OptionSetValue)queriedEntityRecord["msnfp_tributecode"]).Value; localContext.TracingService.Trace("Got msnfp_tributecode."); } else { mSNFP_PaymentSchedule.TributeCode = null; localContext.TracingService.Trace("Did NOT find msnfp_tributecode."); } if (queriedEntityRecord.Contains("msnfp_tributeacknowledgement") && queriedEntityRecord["msnfp_tributeacknowledgement"] != null) { mSNFP_PaymentSchedule.TributeAcknowledgement = (string)queriedEntityRecord["msnfp_tributeacknowledgement"]; localContext.TracingService.Trace("Got msnfp_tributeacknowledgement."); } else { mSNFP_PaymentSchedule.TributeAcknowledgement = null; localContext.TracingService.Trace("Did NOT find msnfp_tributeacknowledgement."); } if (queriedEntityRecord.Contains("msnfp_tributeid") && queriedEntityRecord["msnfp_tributeid"] != null) { mSNFP_PaymentSchedule.TributeId = ((EntityReference)queriedEntityRecord["msnfp_tributeid"]).Id; localContext.TracingService.Trace("Got msnfp_tributeid."); } else { mSNFP_PaymentSchedule.TributeId = null; localContext.TracingService.Trace("Did NOT find msnfp_tributeid."); } if (queriedEntityRecord.Contains("msnfp_tributemessage") && queriedEntityRecord["msnfp_tributemessage"] != null) { mSNFP_PaymentSchedule.TributeMessage = (string)queriedEntityRecord["msnfp_tributemessage"]; localContext.TracingService.Trace("Got msnfp_tributemessage."); } else { mSNFP_PaymentSchedule.TributeMessage = null; localContext.TracingService.Trace("Did NOT find msnfp_tributemessage."); } if (queriedEntityRecord.Contains("msnfp_transactiondescription") && queriedEntityRecord["msnfp_transactiondescription"] != null) { mSNFP_PaymentSchedule.TransactionDescription = (string)queriedEntityRecord["msnfp_transactiondescription"]; localContext.TracingService.Trace("Got msnfp_transactiondescription."); } else { mSNFP_PaymentSchedule.TransactionDescription = null; localContext.TracingService.Trace("Did NOT find msnfp_transactiondescription."); } if (queriedEntityRecord.Contains("transactioncurrencyid") && queriedEntityRecord["transactioncurrencyid"] != null) { mSNFP_PaymentSchedule.TransactionCurrencyId = ((EntityReference)queriedEntityRecord["transactioncurrencyid"]).Id; localContext.TracingService.Trace("Got TransactionCurrencyId."); } else { mSNFP_PaymentSchedule.TransactionCurrencyId = null; localContext.TracingService.Trace("Did NOT find TransactionCurrencyId."); } if (queriedEntityRecord.Contains("statecode") && queriedEntityRecord["statecode"] != null) { mSNFP_PaymentSchedule.StateCode = ((OptionSetValue)queriedEntityRecord["statecode"]).Value; localContext.TracingService.Trace("Got StateCode"); } else { mSNFP_PaymentSchedule.StateCode = null; localContext.TracingService.Trace("Did NOT find StateCode"); } if (queriedEntityRecord.Contains("statuscode") && queriedEntityRecord["statuscode"] != null) { mSNFP_PaymentSchedule.StatusCode = ((OptionSetValue)queriedEntityRecord["statuscode"]).Value; localContext.TracingService.Trace("Got StatusCode"); } else { mSNFP_PaymentSchedule.StatusCode = null; localContext.TracingService.Trace("Did NOT find StatusCode"); } if (messageName == "Create") { mSNFP_PaymentSchedule.CreatedOn = DateTime.UtcNow; } else if (queriedEntityRecord.Contains("createdon") && queriedEntityRecord["createdon"] != null) { mSNFP_PaymentSchedule.CreatedOn = (DateTime)queriedEntityRecord["createdon"]; } else { mSNFP_PaymentSchedule.CreatedOn = null; } mSNFP_PaymentSchedule.SyncDate = DateTime.UtcNow; if (messageName == "Delete") { mSNFP_PaymentSchedule.Deleted = true; mSNFP_PaymentSchedule.DeletedDate = DateTime.UtcNow; } else { mSNFP_PaymentSchedule.Deleted = false; mSNFP_PaymentSchedule.DeletedDate = null; } mSNFP_PaymentSchedule.Receipt = new HashSet <MSNFP_Receipt>(); mSNFP_PaymentSchedule.Response = new HashSet <MSNFP_Response>(); mSNFP_PaymentSchedule.Transaction = new HashSet <MSNFP_Transaction>(); localContext.TracingService.Trace("JSON object created"); if (messageName == "Create") { text2 = text2 + text + "/Create" + text; } else if (messageName == "Update" || messageName == "Delete") { text2 = text2 + text + "/Update" + text; } MemoryStream memoryStream = new MemoryStream(); DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(MSNFP_PaymentSchedule)); dataContractJsonSerializer.WriteObject(memoryStream, mSNFP_PaymentSchedule); byte[] array = memoryStream.ToArray(); memoryStream.Close(); string @string = Encoding.UTF8.GetString(array, 0, array.Length); WebAPIClient webAPIClient = new WebAPIClient(); webAPIClient.Headers[HttpRequestHeader.ContentType] = "application/json"; webAPIClient.Headers["Padlock"] = (string)configurationRecord["msnfp_apipadlocktoken"]; webAPIClient.Encoding = Encoding.UTF8; localContext.TracingService.Trace("---------Preparing JSON---------"); localContext.TracingService.Trace("Converted to json API URL : " + text2); localContext.TracingService.Trace("JSON: " + @string); localContext.TracingService.Trace("---------End of Preparing JSON---------"); localContext.TracingService.Trace("Sending data to Azure."); string str = webAPIClient.UploadString(text2, @string); localContext.TracingService.Trace("Got response."); localContext.TracingService.Trace("Response: " + str); } else { localContext.TracingService.Trace("No API URL or Enable Portal Pages. Exiting workflow."); } }
/// <summary> /// Executes the plug-in. /// </summary> /// <param name="serviceProvider">The service provider.</param> /// <remarks> /// For improved performance, Microsoft Dynamics CRM caches plug-in instances. /// The plug-in's Execute method should be written to be stateless as the constructor /// is not called for every invocation of the plug-in. Also, multiple system threads /// could execute the plug-in at the same time. All per invocation state information /// is stored in the context. This means that you should not use global variables in plug-ins. /// </remarks> public void Execute(IServiceProvider serviceProvider) { Stopwatch sw = new Stopwatch(); if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } // Construct the Local plug-in context. using (var localContext = new LocalPluginContext(serviceProvider)) { localContext.Log($"Entity: {localContext.PrimaryEntityName}, Message: {localContext.MessageName}, Stage: {Enum.ToObject(typeof(Stages), localContext.Stage)}, Mode: {localContext.Mode}"); localContext.Log($"\r\nClass {ChildClassName}"); localContext.Log($"\r\nUserId\t\t\t\t{localContext.UserId}\r\nInitiatingUserId\t{localContext.InitiatingUserId}"); localContext.Log($"\r\nStart : {DateTime.Now:dd/MM/yyyy HH:mm:ss.fff}"); sw.Restart(); try { // Iterate over all of the expected registered events to ensure that the plugin // has been invoked by an expected event // For any given plug-in event at an instance in time, we would expect at most 1 result to match. var steps = (from a in _newRegisteredEvents where ( localContext.IsStage(a.Stage) && localContext.IsMessage(a.Message) && (string.IsNullOrWhiteSpace(a.EntityName) || a.EntityName == localContext.PrimaryEntityName) ) select a); var stage = Enum.ToObject(typeof(Stages), localContext.Stage); sw.Restart(); localContext.Log("------------------ Input Variables (before) ------------------"); localContext.DumpInputParameters(); localContext.Log("\r\n------------------ Shared Variables (before) ------------------"); localContext.DumpSharedVariables(); localContext.Log("\r\n---------------------------------------------------------------"); foreach (var step in steps) { sw.Restart(); if (step.Message == Messages.Update && step.FilteringAttributes.Any()) { var target = localContext.GetInputParameter <Entity>(InputParameters.Target); var useStep = false; foreach (var attributeName in target.Attributes.Select(a => a.Key)) { useStep |= step.FilteringAttributes.Contains(attributeName); } if (!useStep) { localContext.Log( "\r\n{0}.{5} is not fired because filteringAttributes filter is not met.", ChildClassName, localContext.PrimaryEntityName, localContext.MessageName, stage, localContext.Mode, step.Method.Name); continue; } } var entityAction = step.Method; localContext.Log($"\r\n\r\n{ChildClassName}.{step.Method.Name} is firing"); sw.Restart(); localContext.Log($"{ChildClassName}.{step.Method.Name} Start"); Invoke(entityAction, localContext); localContext.Log($"{ChildClassName}.{step.Method.Name} End, duration : {sw.Elapsed}"); } if (localContext.IsStage(Stages.PreValidation) || localContext.IsStage(Stages.PreOperation)) { localContext.Log("\r\n\r\n------------------ Input Variables (after) ------------------"); localContext.DumpInputParameters(); localContext.Log("\r\n------------------ Shared Variables (after) ------------------"); localContext.DumpSharedVariables(); localContext.Log("\r\n---------------------------------------------------------------"); } } catch (FaultException <OrganizationServiceFault> e) { localContext.Log($"Exception: {e}"); // Handle the exception. throw; } catch (TargetInvocationException e) { localContext.Log($"Exception : {e.InnerException}"); if (e.InnerException != null) { throw e.InnerException; } } finally { localContext.Log($"Exiting {ChildClassName}.Execute()"); localContext.Log($"End : {DateTime.Now:dd/MM/yyyy HH:mm:ss.fff}\r\n"); } } }
public void ExecutePluginLogic(IServiceProvider serviceProvider) { // Use a 'using' statement to dispose of the service context properly // To use a specific early bound entity replace the 'Entity' below with the appropriate class type using (var localContext = new LocalPluginContext <Entity>(serviceProvider)) { // Todo: Place your logic here for the plugin ITracingService tracingService = localContext.TracingService; tracingService.Trace("Plugin execution started"); bool success = false; string ResultMessage = "Unknown Error"; EntityReference leadReference = null; if (localContext.PluginExecutionContext.InputParameters.Contains("Target")) { leadReference = localContext.PluginExecutionContext.InputParameters["Target"] as EntityReference; } if (leadReference != null) { try { QualifyHelper qualify = new QualifyHelper(); tracingService.Trace("Qualifying Lead"); string quoteId = qualify.QualifyLead(leadReference, localContext.OrganizationService); if (quoteId != null) { tracingService.Trace("Lead qualified successfully"); success = true; localContext.PluginExecutionContext.OutputParameters["Success"] = success; localContext.PluginExecutionContext.OutputParameters["ResultMessage"] = "OK"; localContext.PluginExecutionContext.OutputParameters["ExecutionResult"] = quoteId; SetStateRequest setStateRequest = new SetStateRequest() { EntityMoniker = new EntityReference { Id = leadReference.Id, LogicalName = leadReference.LogicalName, }, State = new OptionSetValue(1), Status = new OptionSetValue(3) }; localContext.OrganizationService.Execute(setStateRequest); tracingService.Trace("Plugin execution completed successfully"); } else { throw new InvalidPluginExecutionException("There was an issue creating the quote"); } } catch (Exception ex) { success = false; ResultMessage = ex.Message; throw new InvalidPluginExecutionException(ex.Message); } } else { localContext.PluginExecutionContext.OutputParameters["Success"] = success; localContext.PluginExecutionContext.OutputParameters["ResultMessage"] = ResultMessage; } } }
protected override void ExecuteCrmPlugin(LocalPluginContext localContext) { if (localContext == null) { throw new ArgumentNullException("localContext"); } IPluginExecutionContext pluginExecutionContext = localContext.PluginExecutionContext; IOrganizationService organizationService = localContext.OrganizationService; OrganizationServiceContext organizationServiceContext = new OrganizationServiceContext(organizationService); Utilities utilities = new Utilities(); localContext.TracingService.Trace("Configuration Create."); string messageName = pluginExecutionContext.MessageName; Entity entity = null; string empty = string.Empty; if (!pluginExecutionContext.InputParameters.Contains("Target") || (!(pluginExecutionContext.InputParameters["Target"] is Entity) && !(pluginExecutionContext.InputParameters["Target"] is EntityReference))) { return; } localContext.TracingService.Trace("Triggered By: " + messageName); if (messageName == "Create") { entity = (Entity)pluginExecutionContext.InputParameters["Target"]; } else if (messageName == "Update" || messageName == "Delete") { entity = organizationService.Retrieve("msnfp_configuration", pluginExecutionContext.PrimaryEntityId, GetColumnSet()); localContext.TracingService.Trace("Obtained values"); } if (entity == null || (!(messageName == "Create") && !(messageName == "Update") && !(messageName == "Delete"))) { return; } localContext.TracingService.Trace("Configuration is Primary entity. Plugin Called On: " + messageName); MSNFP_Configuration mSNFP_Configuration = new MSNFP_Configuration(); mSNFP_Configuration.ConfigurationId = (Guid)entity["msnfp_configurationid"]; mSNFP_Configuration.Identifier = (entity.Contains("msnfp_identifier") ? ((string)entity["msnfp_identifier"]) : string.Empty); localContext.TracingService.Trace("Obtaining JSON Fields to send to API."); mSNFP_Configuration.AzureWebApiUrl = (entity.Contains("msnfp_azure_webapiurl") ? ((string)entity["msnfp_azure_webapiurl"]) : string.Empty); mSNFP_Configuration.AddressAuth1 = (entity.Contains("msnfp_addressauth1") ? ((string)entity["msnfp_addressauth1"]) : string.Empty); mSNFP_Configuration.AddressAuth2 = (entity.Contains("msnfp_addressauth2") ? ((string)entity["msnfp_addressauth2"]) : string.Empty); mSNFP_Configuration.BankRunPregeneratedBy = ((!entity.Contains("msnfp_bankrun_pregeneratedby")) ? 1 : ((int)entity["msnfp_bankrun_pregeneratedby"])); mSNFP_Configuration.CharityTitle = (entity.Contains("msnfp_charitytitle") ? ((string)entity["msnfp_charitytitle"]) : string.Empty); mSNFP_Configuration.ScheMaxRetries = (entity.Contains("msnfp_sche_maxretries") ? ((int)entity["msnfp_sche_maxretries"]) : 0); if (entity.Contains("msnfp_sche_recurrencestart")) { mSNFP_Configuration.ScheRecurrenceStart = ((OptionSetValue)entity["msnfp_sche_recurrencestart"]).Value; } else { mSNFP_Configuration.ScheRecurrenceStart = null; } mSNFP_Configuration.ScheRetryinterval = ((!entity.Contains("msnfp_sche_retryinterval")) ? 1 : ((int)entity["msnfp_sche_retryinterval"])); localContext.TracingService.Trace("Get Entity References."); if (entity.Contains("msnfp_teamownerid") && entity["msnfp_teamownerid"] != null) { mSNFP_Configuration.TeamOwnerId = ((EntityReference)entity["msnfp_teamownerid"]).Id; } else { mSNFP_Configuration.TeamOwnerId = null; } if (entity.Contains("msnfp_paymentprocessorid") && entity["msnfp_paymentprocessorid"] != null) { mSNFP_Configuration.PaymentProcessorId = ((EntityReference)entity["msnfp_paymentprocessorid"]).Id; } else { mSNFP_Configuration.PaymentProcessorId = null; } if (entity.Contains("msnfp_defaultconfiguration") && entity["msnfp_defaultconfiguration"] != null) { mSNFP_Configuration.DefaultConfiguration = (bool)entity["msnfp_defaultconfiguration"]; localContext.TracingService.Trace("Got Default Configuration."); } else { mSNFP_Configuration.DefaultConfiguration = null; localContext.TracingService.Trace("Did NOT find Default Configuration."); } if (entity.Contains("statecode") && entity["statecode"] != null) { mSNFP_Configuration.StateCode = ((OptionSetValue)entity["statecode"]).Value; localContext.TracingService.Trace("Got statecode."); } else { mSNFP_Configuration.StateCode = null; localContext.TracingService.Trace("Did NOT find statecode."); } if (entity.Contains("statuscode") && entity["statuscode"] != null) { mSNFP_Configuration.StatusCode = ((OptionSetValue)entity["statuscode"]).Value; localContext.TracingService.Trace("Got statuscode."); } else { mSNFP_Configuration.StatusCode = null; localContext.TracingService.Trace("Did NOT find statuscode."); } localContext.TracingService.Trace("Set remaining JSON fields to null as they are not used here."); if (messageName == "Create") { mSNFP_Configuration.CreatedOn = DateTime.UtcNow; } else if (entity.Contains("createdon") && entity["createdon"] != null) { mSNFP_Configuration.CreatedOn = (DateTime)entity["createdon"]; } else { mSNFP_Configuration.CreatedOn = null; } mSNFP_Configuration.SyncDate = DateTime.UtcNow; if (messageName == "Delete") { mSNFP_Configuration.Deleted = true; mSNFP_Configuration.DeletedDate = DateTime.UtcNow; } else { mSNFP_Configuration.Deleted = false; mSNFP_Configuration.DeletedDate = null; } mSNFP_Configuration.PaymentProcessor = null; mSNFP_Configuration.Event = new HashSet <MSNFP_Event>(); mSNFP_Configuration.EventPackage = new HashSet <MSNFP_EventPackage>(); mSNFP_Configuration.PaymentSchedule = new HashSet <MSNFP_PaymentSchedule>(); mSNFP_Configuration.ReceiptStack = new HashSet <MSNFP_ReceiptStack>(); mSNFP_Configuration.Transaction = new HashSet <MSNFP_Transaction>(); localContext.TracingService.Trace("Gathered fields."); empty = mSNFP_Configuration.AzureWebApiUrl; localContext.TracingService.Trace("API URL: " + empty); if (empty.Length > 0) { localContext.TracingService.Trace("Syncing data to Azure."); if (messageName == "Update" || messageName == "Delete") { empty += "Configuration/UpdateConfiguration"; } else if (messageName == "Create") { empty += "Configuration/CreateConfiguration"; } MemoryStream memoryStream = new MemoryStream(); DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(MSNFP_Configuration)); dataContractJsonSerializer.WriteObject(memoryStream, mSNFP_Configuration); byte[] array = memoryStream.ToArray(); memoryStream.Close(); string @string = Encoding.UTF8.GetString(array, 0, array.Length); localContext.TracingService.Trace("---------Preparing JSON---------"); localContext.TracingService.Trace("Converted to json API URL : " + empty); localContext.TracingService.Trace("JSON: " + @string); localContext.TracingService.Trace("---------End of Preparing JSON---------"); localContext.TracingService.Trace("Sending data to Azure."); WebAPIClient webAPIClient = new WebAPIClient(); webAPIClient.Headers[HttpRequestHeader.ContentType] = "application/json"; if (entity.Contains("msnfp_apipadlocktoken")) { if ((string)entity["msnfp_apipadlocktoken"] == null) { return; } webAPIClient.Headers["Padlock"] = (string)entity["msnfp_apipadlocktoken"]; webAPIClient.Encoding = Encoding.UTF8; string text = webAPIClient.UploadString(empty, @string); localContext.TracingService.Trace("Got response."); localContext.TracingService.Trace("Response: " + text); Utilities utilities2 = new Utilities(); utilities2.CheckAPIReturnJSONForErrors(text, entity.GetAttributeValue <OptionSetValue>("msnfp_showapierrorresponses"), localContext.TracingService); EntityCollection entityCollection = organizationService.RetrieveMultiple(new QueryExpression { EntityName = "transactioncurrency", ColumnSet = new ColumnSet("transactioncurrencyid") }); foreach (Entity entity2 in entityCollection.Entities) { OrganizationRequest organizationRequest = new OrganizationRequest("msnfp_ActionSyncCurrency"); organizationRequest["Target"] = entity2.ToEntityReference(); organizationService.Execute(organizationRequest); localContext.TracingService.Trace($"currency {entity2.Id} updated."); } } else { localContext.TracingService.Trace("No padlock found, did not send data to Azure."); } } else { localContext.TracingService.Trace("API URL is null or Portal Syncing is turned off. Exiting Plugin."); } }
protected override void ExecuteCrmPlugin(LocalPluginContext localContext) { if (localContext == null) { throw new ArgumentNullException("localContext"); } localContext.TracingService.Trace("---------Triggered DonationImportCreate.cs ---------"); IPluginExecutionContext pluginExecutionContext = localContext.PluginExecutionContext; IOrganizationService organizationService = localContext.OrganizationService; OrganizationServiceContext organizationServiceContext = new OrganizationServiceContext(organizationService); string messageName = pluginExecutionContext.MessageName; localContext.TracingService.Trace("messageName: " + messageName); Guid initiatingUserId = pluginExecutionContext.InitiatingUserId; Entity entity = organizationService.Retrieve("systemuser", initiatingUserId, new ColumnSet("msnfp_configurationid")); if (entity == null) { throw new Exception("No user id found. Please ensure the user is valid. Exiting plugin."); } Entity configurationRecordByMessageName = Utilities.GetConfigurationRecordByMessageName(pluginExecutionContext, organizationService, localContext.TracingService); if (!pluginExecutionContext.InputParameters.Contains("Target")) { return; } if (pluginExecutionContext.InputParameters["Target"] is Entity) { localContext.TracingService.Trace("---------Entering DonationImportCreate.cs Main Function---------"); Entity entity2 = (Entity)pluginExecutionContext.InputParameters["Target"]; Entity entity3 = (Entity)pluginExecutionContext.InputParameters["Target"]; if (entity3 != null && entity3.Contains("msnfp_statusupdated") && !entity3.Contains("msnfp_transactionid")) { localContext.TracingService.Trace("Contains msnfp_statusupdated."); if (messageName == "Update") { entity3 = pluginExecutionContext.PostEntityImages["postImage"]; } if (((OptionSetValue)entity3["msnfp_statusupdated"]).Value == 844060000) { localContext.TracingService.Trace("Checking Import Status.."); if (entity3.GetAttributeValue <OptionSetValue>("msnfp_importresult") != null && entity3.GetAttributeValue <OptionSetValue>("msnfp_importresult").Value == 844060001) { organizationService.Update(new Entity(entity3.LogicalName, entity3.Id) { Attributes = { new KeyValuePair <string, object>("msnfp_statusupdated", new OptionSetValue(844060001)) } }); return; } localContext.TracingService.Trace("Status Ready - processing donation import."); try { Entity entity4 = null; Guid empty = Guid.Empty; bool flag = false; bool flag2 = false; Entity entity5 = null; Entity entity6 = null; string empty2 = string.Empty; Guid empty3 = Guid.Empty; Guid empty4 = Guid.Empty; ColumnSet columnSet = null; bool flag3 = entity3.Contains("msnfp_createdonor") && (bool)entity3["msnfp_createdonor"]; string empty5 = string.Empty; Guid empty6 = Guid.Empty; OptionSetValue attributeValue = entity3.GetAttributeValue <OptionSetValue>("msnfp_anonymous"); bool flag4 = entity3.Contains("msnfp_donotsendmm") && (bool)entity3["msnfp_donotsendmm"]; bool flag5 = entity3.Contains("msnfp_constituent_donotsendmm") && (bool)entity3["msnfp_constituent_donotsendmm"]; if (entity3.Contains("msnfp_teamownerid") && entity3["msnfp_teamownerid"] != null) { empty5 = ((EntityReference)entity3["msnfp_teamownerid"]).LogicalName; empty6 = ((EntityReference)entity3["msnfp_teamownerid"]).Id; } else { empty5 = ((EntityReference)entity3["ownerid"]).LogicalName; empty6 = ((EntityReference)entity3["ownerid"]).Id; } KeyValuePair <string, object> keyValuePair = InitiateHouseholdProcess(organizationService, entity3, entity5?.ToEntityReference()); if (keyValuePair.Key != "msnfp_householdid") { localContext.Trace("Added shared variable.."); localContext.PluginExecutionContext.SharedVariables.Add("DonationImport", entity3); } else { entity3["msnfp_householdid"] = (EntityReference)keyValuePair.Value; } if (entity3.Contains("msnfp_customerid")) { localContext.TracingService.Trace("Donation Import contains Customer"); empty2 = ((EntityReference)entity3["msnfp_customerid"]).LogicalName; empty3 = ((EntityReference)entity3["msnfp_customerid"]).Id; if (empty2 == "account") { entity5 = organizationService.Retrieve(empty2, empty3, new ColumnSet("accountid", "name")); } else if (empty2 == "contact") { columnSet = new ColumnSet("contactid", "salutation", "lastname", "fullname", "middlename", "firstname", "birthdate", "emailaddress1", "telephone1", "mobilephone", "gendercode", "address1_line1", "address1_line2", "address1_line3", "address1_city", "address1_stateorprovince", "address1_country", "address1_postalcode"); entity5 = organizationService.Retrieve(empty2, empty3, columnSet); if (entity3.GetAttributeValue <OptionSetValue>("msnfp_householdrelationship") != null) { organizationService.Update(new Entity(entity5.LogicalName, entity5.Id) { Attributes = { new KeyValuePair <string, object>("msnfp_householdrelationship", entity3.GetAttributeValue <OptionSetValue>("msnfp_householdrelationship")) } }); } } localContext.TracingService.Trace("Update Donation Import with Donor."); } else { localContext.TracingService.Trace("Donation Import does not have customer."); string text = (entity3.Contains("msnfp_organizationname") ? ((string)entity3["msnfp_organizationname"]) : string.Empty); string text2 = (entity3.Contains("msnfp_emailaddress1") ? ((string)entity3["msnfp_emailaddress1"]) : string.Empty); string text3 = (entity3.Contains("msnfp_firstname") ? ((string)entity3["msnfp_firstname"]) : string.Empty); string text4 = (entity3.Contains("msnfp_lastname") ? ((string)entity3["msnfp_lastname"]) : string.Empty); string value = (entity3.Contains("msnfp_billing_postalcode") ? ((string)entity3["msnfp_billing_postalcode"]) : string.Empty); string value2 = (entity3.Contains("msnfp_billing_city") ? ((string)entity3["msnfp_billing_city"]) : string.Empty); string value3 = (entity3.Contains("msnfp_billing_line1") ? ((string)entity3["msnfp_billing_line1"]) : string.Empty); localContext.TracingService.Trace("Validating Organization Name."); if (!string.IsNullOrEmpty(text)) { localContext.TracingService.Trace("Organization Name: " + text + "."); ColumnSet columnSet2 = new ColumnSet("name"); List <Entity> list = new List <Entity>(); QueryExpression queryExpression = new QueryExpression("account"); queryExpression.ColumnSet = columnSet2; queryExpression.Criteria = new FilterExpression(); queryExpression.Criteria.AddCondition("statecode", ConditionOperator.Equal, 0); queryExpression.Criteria.FilterOperator = LogicalOperator.And; FilterExpression filterExpression = queryExpression.Criteria.AddFilter(LogicalOperator.And); filterExpression.AddCondition("name", ConditionOperator.Equal, text); list = organizationService.RetrieveMultiple(queryExpression).Entities.ToList(); if (list.Count > 0) { localContext.TracingService.Trace("Account found."); entity4 = list.FirstOrDefault(); entity3["msnfp_customerid"] = new EntityReference("account", entity4.Id); flag = true; } else if (flag3) { localContext.TracingService.Trace("No account found, creating new record."); entity4 = new Entity("account"); entity4["name"] = text; entity4["donotbulkemail"] = entity3.Contains("msnfp_donotbulkemail") && (bool)entity3["msnfp_donotbulkemail"]; entity4["donotemail"] = entity3.Contains("msnfp_donotemail") && (bool)entity3["msnfp_donotemail"]; entity4["donotphone"] = entity3.Contains("msnfp_donotphone") && (bool)entity3["msnfp_donotphone"]; entity4["donotpostalmail"] = entity3.Contains("msnfp_donotpostalmail") && (bool)entity3["msnfp_donotpostalmail"]; if (flag4) { entity4["donotbulkpostalmail"] = false; } else { entity4["donotbulkpostalmail"] = true; } entity4["address1_addresstypecode"] = new OptionSetValue(3); entity4["msnfp_anonymity"] = attributeValue; if (entity3.Contains("msnfp_receiptpreferencecode")) { entity4["msnfp_receiptpreferencecode"] = (OptionSetValue)entity3["msnfp_receiptpreferencecode"]; } if (empty5 != string.Empty && empty6 != Guid.Empty) { localContext.TracingService.Trace("Assigning Owner"); entity4["ownerid"] = new EntityReference(empty5, empty6); } empty = organizationService.Create(entity4); ExecuteWorkflowRequest executeWorkflowRequest = new ExecuteWorkflowRequest(); executeWorkflowRequest.EntityId = empty; executeWorkflowRequest.WorkflowId = Guid.Parse("810C634A-2F4C-45B7-BFCC-C4FAAE315970"); organizationService.Execute(executeWorkflowRequest); localContext.TracingService.Trace("Account created and giving level calculated.."); localContext.TracingService.Trace("Account created and set as Donor."); if (empty != Guid.Empty) { entity3["msnfp_customerid"] = new EntityReference("account", empty); flag = true; } } } localContext.TracingService.Trace("Account validation completed."); ColumnSet columnSet3 = new ColumnSet("contactid", "firstname", "lastname", "middlename", "firstname", "birthdate", "emailaddress1", "emailaddress2", "emailaddress3", "telephone1", "mobilephone", "gendercode", "address1_line1", "address1_line2", "address1_line3", "address1_city", "address1_stateorprovince", "address1_country", "address1_postalcode", "msnfp_householdid", "msnfp_householdrelationship"); List <Entity> list2 = new List <Entity>(); QueryExpression queryExpression2 = new QueryExpression("contact"); queryExpression2.ColumnSet = columnSet3; queryExpression2.Criteria = new FilterExpression(); queryExpression2.Criteria.AddCondition("statecode", ConditionOperator.Equal, 0); queryExpression2.Criteria.FilterOperator = LogicalOperator.And; if (!string.IsNullOrEmpty(text2) && !string.IsNullOrEmpty(text3) && !string.IsNullOrEmpty(text4)) { FilterExpression filterExpression2 = queryExpression2.Criteria.AddFilter(LogicalOperator.Or); filterExpression2.AddCondition("emailaddress1", ConditionOperator.Equal, text2); filterExpression2.AddCondition("emailaddress2", ConditionOperator.Equal, text2); filterExpression2.AddCondition("emailaddress3", ConditionOperator.Equal, text2); FilterExpression filterExpression3 = queryExpression2.Criteria.AddFilter(LogicalOperator.And); filterExpression3.AddCondition("firstname", ConditionOperator.BeginsWith, text3.Substring(0, 1)); filterExpression3.AddCondition("lastname", ConditionOperator.BeginsWith, text4); list2 = organizationService.RetrieveMultiple(queryExpression2).Entities.ToList(); } if (list2.Count > 0) { localContext.TracingService.Trace("customer by email found."); entity5 = list2.FirstOrDefault(); } else { localContext.TracingService.Trace("No customer found by email."); list2 = new List <Entity>(); FilterExpression filterExpression4 = new FilterExpression(); if (!string.IsNullOrEmpty(text4) && !string.IsNullOrEmpty(value) && !string.IsNullOrEmpty(value2) && !string.IsNullOrEmpty(text3) && !string.IsNullOrEmpty(value3)) { filterExpression4.Conditions.Add(new ConditionExpression("lastname", ConditionOperator.Equal, text4)); filterExpression4.Conditions.Add(new ConditionExpression("address1_postalcode", ConditionOperator.Equal, value)); filterExpression4.Conditions.Add(new ConditionExpression("address1_city", ConditionOperator.Equal, value2)); filterExpression4.Conditions.Add(new ConditionExpression("address1_line1", ConditionOperator.Equal, value3)); filterExpression4.Conditions.Add(new ConditionExpression("firstname", ConditionOperator.BeginsWith, text3.Substring(0, 1))); filterExpression4.Conditions.Add(new ConditionExpression("statecode", ConditionOperator.Equal, 0)); filterExpression4.FilterOperator = LogicalOperator.And; queryExpression2.Criteria = filterExpression4; list2 = organizationService.RetrieveMultiple(queryExpression2).Entities.ToList(); } if (list2.Count > 0) { entity5 = list2.FirstOrDefault(); } else { list2 = new List <Entity>(); FilterExpression filterExpression5 = new FilterExpression(); if (!string.IsNullOrEmpty(text4) && !string.IsNullOrEmpty(value3) && !string.IsNullOrEmpty(value) && !string.IsNullOrEmpty(text3)) { filterExpression5.Conditions.Add(new ConditionExpression("lastname", ConditionOperator.Equal, text4)); filterExpression5.Conditions.Add(new ConditionExpression("address1_line1", ConditionOperator.Equal, value3)); filterExpression5.Conditions.Add(new ConditionExpression("address1_postalcode", ConditionOperator.Equal, value)); filterExpression5.Conditions.Add(new ConditionExpression("firstname", ConditionOperator.BeginsWith, text3.Substring(0, 1))); filterExpression5.Conditions.Add(new ConditionExpression("statecode", ConditionOperator.Equal, 0)); filterExpression5.FilterOperator = LogicalOperator.And; queryExpression2.Criteria = filterExpression5; list2 = organizationService.RetrieveMultiple(queryExpression2).Entities.ToList(); } if (list2.Count > 0) { entity5 = list2.FirstOrDefault(); } } } localContext.Trace($"Shared variable :{localContext.PluginExecutionContext.SharedVariables.Count}"); if (entity5 != null) { localContext.TracingService.Trace("found customer based on search criteria and set to Customer System"); if (flag) { entity3["msnfp_constituentid"] = new EntityReference(entity5.LogicalName, entity5.Id); flag2 = true; } else { entity3["msnfp_customerid"] = new EntityReference(entity5.LogicalName, entity5.Id); } if (entity5.GetAttributeValue <EntityReference>("msnfp_householdid") != null) { Entity entity7 = new Entity(entity5.LogicalName, entity5.Id); if (keyValuePair.Key == "msnfp_householdid") { entity7["msnfp_householdid"] = (EntityReference)keyValuePair.Value; } if (entity3.GetAttributeValue <OptionSetValue>("msnfp_householdrelationship") != null) { entity7["msnfp_householdrelationship"] = entity3.GetAttributeValue <OptionSetValue>("msnfp_householdrelationship"); } organizationService.Update(entity7); } } else { localContext.TracingService.Trace("No record found, going to create Contact"); string value4 = (entity3.Contains("msnfp_firstname") ? ((string)entity3["msnfp_firstname"]) : string.Empty); string value5 = (entity3.Contains("msnfp_lastname") ? ((string)entity3["msnfp_lastname"]) : string.Empty); if (entity3.Contains("msnfp_createdonor") && flag3 && !string.IsNullOrEmpty(value4) && !string.IsNullOrEmpty(value5)) { entity5 = new Entity("contact"); entity5["msnfp_householdrelationship"] = (entity3.Attributes.ContainsKey("msnfp_householdrelationship") ? entity3.GetAttributeValue <OptionSetValue>("msnfp_householdrelationship") : null); entity5["msnfp_householdid"] = ((keyValuePair.Key == "msnfp_householdid") ? ((EntityReference)keyValuePair.Value) : null); entity5["salutation"] = (entity3.Contains("msnfp_salutation") ? ((string)entity3["msnfp_salutation"]) : string.Empty); entity5["lastname"] = (entity3.Contains("msnfp_lastname") ? ((string)entity3["msnfp_lastname"]) : string.Empty); entity5["middlename"] = (entity3.Contains("msnfp_middlename") ? ((string)entity3["msnfp_middlename"]) : string.Empty); entity5["firstname"] = (entity3.Contains("msnfp_firstname") ? ((string)entity3["msnfp_firstname"]) : string.Empty); if (entity3.Contains("msnfp_birthdate")) { entity5["birthdate"] = (DateTime)entity3["msnfp_birthdate"]; } entity5["emailaddress1"] = (entity3.Contains("msnfp_emailaddress1") ? ((string)entity3["msnfp_emailaddress1"]) : string.Empty); entity5["telephone1"] = (entity3.Contains("msnfp_telephone1") ? ((string)entity3["msnfp_telephone1"]) : string.Empty); entity5["mobilephone"] = (entity3.Contains("msnfp_mobilephone") ? ((string)entity3["msnfp_mobilephone"]) : string.Empty); entity5["address1_line1"] = (entity3.Contains("msnfp_billing_line1") ? ((string)entity3["msnfp_billing_line1"]) : string.Empty); entity5["address1_line2"] = (entity3.Contains("msnfp_billing_line2") ? ((string)entity3["msnfp_billing_line2"]) : string.Empty); entity5["address1_line3"] = (entity3.Contains("msnfp_billing_line3") ? ((string)entity3["msnfp_billing_line3"]) : string.Empty); entity5["address1_city"] = (entity3.Contains("msnfp_billing_city") ? ((string)entity3["msnfp_billing_city"]) : string.Empty); entity5["address1_stateorprovince"] = (entity3.Contains("msnfp_billing_stateorprovince") ? ((string)entity3["msnfp_billing_stateorprovince"]) : string.Empty); entity5["address1_country"] = (entity3.Contains("msnfp_billing_country") ? ((string)entity3["msnfp_billing_country"]) : string.Empty); entity5["address1_postalcode"] = (entity3.Contains("msnfp_billing_postalcode") ? ((string)entity3["msnfp_billing_postalcode"]) : string.Empty); entity5["donotbulkemail"] = entity3.Contains("msnfp_donotbulkemail") && (bool)entity3["msnfp_donotbulkemail"]; entity5["donotemail"] = entity3.Contains("msnfp_donotemail") && (bool)entity3["msnfp_donotemail"]; entity5["donotphone"] = entity3.Contains("msnfp_donotphone") && (bool)entity3["msnfp_donotphone"]; entity5["donotpostalmail"] = entity3.Contains("msnfp_donotpostalmail") && (bool)entity3["msnfp_donotpostalmail"]; if (flag4) { entity5["donotbulkpostalmail"] = false; } else { entity5["donotbulkpostalmail"] = true; } entity5["address1_addresstypecode"] = new OptionSetValue(844060000); entity5["msnfp_anonymity"] = attributeValue; if (entity3.Contains("msnfp_receiptpreferencecode")) { entity5["msnfp_receiptpreferencecode"] = (OptionSetValue)entity3["msnfp_receiptpreferencecode"]; } if (empty5 != string.Empty && empty6 != Guid.Empty) { entity5["ownerid"] = new EntityReference(empty5, empty6); } Guid guid = organizationService.Create(entity5); ExecuteWorkflowRequest executeWorkflowRequest2 = new ExecuteWorkflowRequest(); executeWorkflowRequest2.EntityId = guid; executeWorkflowRequest2.WorkflowId = Guid.Parse("EAAE076C-DB57-4979-A479-CC17B83CE705"); organizationService.Execute(executeWorkflowRequest2); localContext.TracingService.Trace("Contact created and giving level calculated.."); localContext.TracingService.Trace("Contact created and set to Donor"); if (flag) { entity3["msnfp_constituentid"] = new EntityReference("contact", guid); flag2 = true; } else { entity3["msnfp_customerid"] = new EntityReference("contact", guid); } } } localContext.TracingService.Trace("Donation Import updated"); } if (!entity3.Contains("msnfp_constituentid") && !flag2) { localContext.TracingService.Trace("Donation Import does not have constituent"); string text5 = (entity3.Contains("msnfp_constituent_firstname") ? ((string)entity3["msnfp_constituent_firstname"]) : string.Empty); string text6 = (entity3.Contains("msnfp_constituent_lastname") ? ((string)entity3["msnfp_constituent_lastname"]) : string.Empty); ColumnSet columnSet4 = new ColumnSet("contactid", "lastname", "middlename", "firstname", "birthdate", "emailaddress1", "emailaddress2", "emailaddress3", "telephone1", "mobilephone", "address1_line1", "address1_line2", "address1_line3", "address1_city", "address1_stateorprovince", "address1_country", "address1_postalcode"); List <Entity> list3 = new List <Entity>(); QueryExpression queryExpression3 = new QueryExpression("contact"); queryExpression3.ColumnSet = columnSet4; queryExpression3.Criteria = new FilterExpression(); queryExpression3.Criteria.AddCondition("statecode", ConditionOperator.Equal, 0); if (!string.IsNullOrEmpty(text5) && !string.IsNullOrEmpty(text6)) { FilterExpression filterExpression6 = new FilterExpression(); filterExpression6.AddCondition("firstname", ConditionOperator.Equal, text5); filterExpression6.AddCondition("lastname", ConditionOperator.Equal, text6); filterExpression6.FilterOperator = LogicalOperator.And; queryExpression3.Criteria = filterExpression6; list3 = organizationService.RetrieveMultiple(queryExpression3).Entities.ToList(); if (list3.Count > 0) { localContext.TracingService.Trace("constituent found by first name and last name."); entity6 = list3.FirstOrDefault(); } if (entity6 != null) { localContext.TracingService.Trace("found constituent based on search criteria and set to Constituent"); entity3["msnfp_constituentid"] = new EntityReference(entity6.LogicalName, entity6.Id); } else { localContext.TracingService.Trace("No constituent record found, going to create new Contact"); if (entity3.Contains("msnfp_createconstituent") && (bool)entity3["msnfp_createconstituent"]) { entity6 = new Entity("contact"); entity6["salutation"] = (entity3.Contains("msnfp_constituent_salutation") ? ((string)entity3["msnfp_constituent_salutation"]) : string.Empty); entity6["lastname"] = (entity3.Contains("msnfp_constituent_lastname") ? ((string)entity3["msnfp_constituent_lastname"]) : string.Empty); entity6["middlename"] = (entity3.Contains("msnfp_constituent_middlename") ? ((string)entity3["msnfp_constituent_middlename"]) : string.Empty); entity6["firstname"] = (entity3.Contains("msnfp_constituent_firstname") ? ((string)entity3["msnfp_constituent_firstname"]) : string.Empty); entity6["emailaddress1"] = (entity3.Contains("msnfp_constituent_emailaddress1") ? ((string)entity3["msnfp_constituent_emailaddress1"]) : string.Empty); entity6["telephone1"] = (entity3.Contains("msnfp_constituent_telephone") ? ((string)entity3["msnfp_constituent_telephone"]) : string.Empty); entity6["mobilephone"] = (entity3.Contains("msnfp_constituent_mobilephone") ? ((string)entity3["msnfp_constituent_mobilephone"]) : string.Empty); entity6["address1_line1"] = (entity3.Contains("msnfp_constituent_billing_line1") ? ((string)entity3["msnfp_constituent_billing_line1"]) : string.Empty); entity6["address1_line2"] = (entity3.Contains("msnfp_constituent_billing_line2") ? ((string)entity3["msnfp_constituent_billing_line2"]) : string.Empty); entity6["address1_line3"] = (entity3.Contains("msnfp_constituent_billing_line3") ? ((string)entity3["msnfp_constituent_billing_line3"]) : string.Empty); entity6["address1_city"] = (entity3.Contains("msnfp_constituent_billing_city") ? ((string)entity3["msnfp_constituent_billing_city"]) : string.Empty); entity6["address1_stateorprovince"] = (entity3.Contains("msnfp_constituent_billing_stateorprovince") ? ((string)entity3["msnfp_constituent_billing_stateorprovince"]) : string.Empty); entity6["address1_country"] = (entity3.Contains("msnfp_constituent_billing_country") ? ((string)entity3["msnfp_constituent_billing_country"]) : string.Empty); entity6["address1_postalcode"] = (entity3.Contains("msnfp_constituent_billing_postalcode") ? ((string)entity3["msnfp_constituent_billing_postalcode"]) : string.Empty); entity6["donotbulkemail"] = entity3.Contains("msnfp_constituent_donotbulkemail") && (bool)entity3["msnfp_constituent_donotbulkemail"]; entity6["donotemail"] = entity3.Contains("msnfp_constituent_donotemail") && (bool)entity3["msnfp_constituent_donotemail"]; entity6["donotphone"] = entity3.Contains("msnfp_constituent_donotphone") && (bool)entity3["msnfp_constituent_donotphone"]; entity6["donotpostalmail"] = entity3.Contains("msnfp_constituent_donotpostalmail") && (bool)entity3["msnfp_constituent_donotpostalmail"]; if (flag5) { entity6["donotbulkpostalmail"] = false; } else { entity6["donotbulkpostalmail"] = true; } entity6["address1_addresstypecode"] = new OptionSetValue(844060000); entity6["msnfp_anonymity"] = attributeValue; if (entity3.Contains("msnfp_receiptpreferencecode")) { entity6["msnfp_receiptpreferencecode"] = (OptionSetValue)entity3["msnfp_receiptpreferencecode"]; } if (empty5 != string.Empty && empty6 != Guid.Empty) { entity6["ownerid"] = new EntityReference(empty5, empty6); } Guid id = organizationService.Create(entity6); localContext.TracingService.Trace("constituent created and set to Constituent"); entity3["msnfp_constituentid"] = new EntityReference("contact", id); } } localContext.TracingService.Trace("Donation Import updated with Constituent"); } } Entity entity8 = new Entity("msnfp_transaction"); if (entity3.Contains("msnfp_customerid")) { localContext.TracingService.Trace("Donation Import contains customer"); string logicalName = ((EntityReference)entity3["msnfp_customerid"]).LogicalName; Guid id2 = ((EntityReference)entity3["msnfp_customerid"]).Id; entity8["msnfp_customerid"] = new EntityReference(logicalName, id2); } if (entity3.Contains("msnfp_constituentid")) { localContext.TracingService.Trace("Donation Import contains constituent"); string logicalName2 = ((EntityReference)entity3["msnfp_constituentid"]).LogicalName; Guid id3 = ((EntityReference)entity3["msnfp_constituentid"]).Id; entity8["msnfp_relatedconstituentid"] = new EntityReference(logicalName2, id3); } if (entity3.Contains("msnfp_amount_receiptable")) { entity8["msnfp_amount_receipted"] = (Money)entity3["msnfp_amount_receiptable"]; } if (entity3.Contains("msnfp_chequewiredate")) { entity8["msnfp_chequewiredate"] = (DateTime)entity3["msnfp_chequewiredate"]; } if (entity3.Contains("msnfp_bookdate")) { entity8["msnfp_bookdate"] = (DateTime)entity3["msnfp_bookdate"]; } if (entity3.Contains("msnfp_paymenttypecode")) { entity8["msnfp_paymenttypecode"] = (OptionSetValue)entity3["msnfp_paymenttypecode"]; } if (entity3.Contains("msnfp_dataentrysource")) { entity8["msnfp_dataentrysource"] = (OptionSetValue)entity3["msnfp_dataentrysource"]; } if (entity3.Contains("msnfp_amount_membership")) { entity8["msnfp_amount_membership"] = (Money)entity3["msnfp_amount_membership"]; } if (entity3.Contains("msnfp_amount_nonreceiptable")) { entity8["msnfp_amount_nonreceiptable"] = (Money)entity3["msnfp_amount_nonreceiptable"]; } if (entity3.Contains("msnfp_amount_tax")) { entity8["msnfp_amount_tax"] = (Money)entity3["msnfp_amount_tax"]; } if (entity3.Contains("msnfp_ccbrandcode")) { entity8["msnfp_ccbrandcode"] = (OptionSetValue)entity3["msnfp_ccbrandcode"]; } if (entity3.Contains("msnfp_appealid")) { string logicalName3 = ((EntityReference)entity3["msnfp_appealid"]).LogicalName; Guid id4 = ((EntityReference)entity3["msnfp_appealid"]).Id; entity8["msnfp_appealid"] = new EntityReference(logicalName3, id4); } if (entity3.Contains("msnfp_originatingcampaignid")) { localContext.TracingService.Trace("Donation Import contains campaign"); string logicalName4 = ((EntityReference)entity3["msnfp_originatingcampaignid"]).LogicalName; Guid id5 = ((EntityReference)entity3["msnfp_originatingcampaignid"]).Id; entity8["msnfp_originatingcampaignid"] = new EntityReference(logicalName4, id5); } if (entity3.Contains("msnfp_amount")) { entity8["msnfp_amount"] = (Money)entity3["msnfp_amount"]; } if (entity3.Contains("msnfp_packageid")) { localContext.TracingService.Trace("Donation Import contains package"); string logicalName5 = ((EntityReference)entity3["msnfp_packageid"]).LogicalName; Guid id6 = ((EntityReference)entity3["msnfp_packageid"]).Id; entity8["msnfp_packageid"] = new EntityReference(logicalName5, id6); } if (entity3.Contains("msnfp_designationid")) { localContext.TracingService.Trace("Donation Import contains fund"); string logicalName6 = ((EntityReference)entity3["msnfp_designationid"]).LogicalName; Guid id7 = ((EntityReference)entity3["msnfp_designationid"]).Id; entity8["msnfp_designationid"] = new EntityReference(logicalName6, id7); } entity8["msnfp_transactionidentifier"] = (entity3.Contains("msnfp_transactionidentifier") ? ((string)entity3["msnfp_transactionidentifier"]) : string.Empty); entity8["msnfp_dataentryreference"] = (entity3.Contains("msnfp_dataentryreference") ? ((string)entity3["msnfp_dataentryreference"]) : string.Empty); entity8["msnfp_chequenumber"] = (entity3.Contains("msnfp_chequenumber") ? ((string)entity3["msnfp_chequenumber"]) : string.Empty); if (entity3.Contains("msnfp_receiveddate")) { entity8["msnfp_depositdate"] = (DateTime)entity3["msnfp_receiveddate"]; } entity8["msnfp_firstname"] = (entity3.Contains("msnfp_firstname") ? ((string)entity3["msnfp_firstname"]) : string.Empty); entity8["msnfp_lastname"] = (entity3.Contains("msnfp_lastname") ? ((string)entity3["msnfp_lastname"]) : string.Empty); entity8["msnfp_billing_line1"] = (entity3.Contains("msnfp_billing_line1") ? ((string)entity3["msnfp_billing_line1"]) : string.Empty); entity8["msnfp_billing_line2"] = (entity3.Contains("msnfp_billing_line2") ? ((string)entity3["msnfp_billing_line2"]) : string.Empty); entity8["msnfp_billing_line3"] = (entity3.Contains("msnfp_billing_line3") ? ((string)entity3["msnfp_billing_line3"]) : string.Empty); entity8["msnfp_billing_city"] = (entity3.Contains("msnfp_billing_city") ? ((string)entity3["msnfp_billing_city"]) : string.Empty); entity8["msnfp_billing_stateorprovince"] = (entity3.Contains("msnfp_billing_stateorprovince") ? ((string)entity3["msnfp_billing_stateorprovince"]) : string.Empty); entity8["msnfp_billing_postalcode"] = (entity3.Contains("msnfp_billing_postalcode") ? ((string)entity3["msnfp_billing_postalcode"]) : string.Empty); entity8["msnfp_billing_country"] = (entity3.Contains("msnfp_billing_country") ? ((string)entity3["msnfp_billing_country"]) : string.Empty); entity8["msnfp_emailaddress1"] = (entity3.Contains("msnfp_emailaddress1") ? ((string)entity3["msnfp_emailaddress1"]) : string.Empty); entity8["msnfp_telephone1"] = (entity3.Contains("msnfp_telephone1") ? ((string)entity3["msnfp_telephone1"]) : string.Empty); entity8["msnfp_anonymous"] = attributeValue; entity8["msnfp_chargeoncreate"] = false; if (empty5 != string.Empty && empty6 != Guid.Empty) { entity8["ownerid"] = new EntityReference(empty5, empty6); } entity8["statuscode"] = new OptionSetValue(844060000); entity8["msnfp_configurationid"] = entity3.GetAttributeValue <EntityReference>("msnfp_configurationid"); Guid id8 = organizationService.Create(entity8); entity3["msnfp_transactionid"] = new EntityReference("msnfp_transaction", id8); } catch (Exception ex) { localContext.TracingService.Trace("error : " + ex.Message); entity3["msnfp_statusupdated"] = new OptionSetValue(844060001); localContext.TracingService.Trace("Status code updated to failed"); } organizationService.Update(entity3); } } } localContext.TracingService.Trace("---------Exiting DonationImportCreate.cs---------"); }
private void UpdateEventSponsorshipsAvailable(Entity queriedEntityRecord, OrganizationServiceContext orgSvcContext, IOrganizationService service, LocalPluginContext localContext) { Entity eventSponsorship = service.Retrieve("msnfp_eventsponsorship", queriedEntityRecord.Id, new ColumnSet("msnfp_eventsponsorshipid", "msnfp_sum_available")); Entity entity = new Entity(eventSponsorship.LogicalName, eventSponsorship.Id); List <Entity> source = (from a in orgSvcContext.CreateQuery("msnfp_sponsorship") where ((EntityReference)a["msnfp_eventsponsorshipid"]).Id == eventSponsorship.Id && ((OptionSetValue)a["statuscode"]).Value != 844060001 select a).ToList(); if (queriedEntityRecord.Contains("msnfp_quantity") && queriedEntityRecord["msnfp_quantity"] != null) { entity["msnfp_sum_available"] = (int)queriedEntityRecord["msnfp_quantity"] - source.Count(); } service.Update(entity); }
protected override void ExecuteCrmPlugin(LocalPluginContext localContext) { if (localContext == null) { throw new ArgumentNullException("localContext"); } IPluginExecutionContext pluginExecutionContext = localContext.PluginExecutionContext; IOrganizationService organizationService = localContext.OrganizationService; OrganizationServiceContext organizationServiceContext = new OrganizationServiceContext(organizationService); localContext.TracingService.Trace("---------Triggered ReceiptUpdate.cs---------"); if (pluginExecutionContext.Depth > 2) { localContext.TracingService.Trace("Context.depth > 2. Exiting Plugin."); return; } Utilities utilities = new Utilities(); localContext.TracingService.Trace("---------Entering ReceiptUpdate.cs Main Function---------"); ColumnSet columnSet = new ColumnSet("msnfp_receiptid", "msnfp_generatedorprinted", "msnfp_amount_nonreceiptable", "msnfp_receiptnumber", "msnfp_receiptissuedate", "msnfp_amount_receipted", "msnfp_receiptgeneration", "msnfp_receiptstackid", "msnfp_receiptstatus", "msnfp_replacesreceiptid", "statuscode", "modifiedby", "msnfp_customerid", "msnfp_lastdonationdate"); Entity primaryReceipt = organizationService.Retrieve("msnfp_receipt", pluginExecutionContext.PrimaryEntityId, columnSet); localContext.TracingService.Trace("Retrieved primary receipt. Id:" + primaryReceipt.Id.ToString() + ", Number" + primaryReceipt.GetAttributeValue <string>("msnfp_receiptnumber")); string optionSetValueLabel = Utilities.GetOptionSetValueLabel("msnfp_receipt", "statuscode", ((OptionSetValue)primaryReceipt["statuscode"]).Value, organizationService); string text = (primaryReceipt.Contains("msnfp_receiptnumber") ? ((string)primaryReceipt["msnfp_receiptnumber"]) : string.Empty); if (primaryReceipt.Contains("statuscode") && ((OptionSetValue)primaryReceipt["statuscode"]).Value == 844060000) { localContext.TracingService.Trace("Statuscode : Void"); primaryReceipt["msnfp_receiptstatus"] = "Receipt Voided"; Entity entity = new Entity("msnfp_receiptlog"); if (primaryReceipt.Contains("msnfp_receiptstackid")) { entity["msnfp_receiptstackid"] = new EntityReference("msnfp_receiptstack", ((EntityReference)primaryReceipt["msnfp_receiptstackid"]).Id); } primaryReceipt["msnfp_identifier"] = text + " - " + optionSetValueLabel; entity["msnfp_receiptnumber"] = (primaryReceipt.Contains("msnfp_receiptnumber") ? ((string)primaryReceipt["msnfp_receiptnumber"]) : string.Empty); entity["msnfp_entryreason"] = "RECEIPT VOIDED"; entity["msnfp_entryby"] = ((EntityReference)primaryReceipt["modifiedby"]).Name; if (pluginExecutionContext.Depth < 2) { organizationService.Create(entity); localContext.TracingService.Trace("Receipt log created as Void."); } else { localContext.TracingService.Trace("Receipt log not created due to context.depth >= 2."); } } else if (primaryReceipt.Contains("statuscode") && ((OptionSetValue)primaryReceipt["statuscode"]).Value == 844060001) { localContext.TracingService.Trace("Statuscode : Void (Reissued)"); Entity entity2 = new Entity("msnfp_receipt"); string text2 = string.Empty; string empty = string.Empty; double num = 0.0; int num2 = 0; Entity entity3 = new Entity("msnfp_receiptlog"); List <Entity> list = (from g in organizationServiceContext.CreateQuery("msnfp_transaction") where ((EntityReference)g["msnfp_taxreceiptid"]).Id == primaryReceipt.Id && (((OptionSetValue)g["statuscode"]).Value == 844060000 || ((OptionSetValue)g["statuscode"]).Value == 844060004 || ((OptionSetValue)g["statuscode"]).Value == 1) select g).ToList(); localContext.TracingService.Trace(list.Count + " Transactions"); List <Entity> list2 = (from ev in organizationServiceContext.CreateQuery("msnfp_eventpackage") where ((EntityReference)ev["msnfp_taxreceiptid"]).Id == primaryReceipt.Id && ((OptionSetValue)ev["statuscode"]).Value == 844060000 select ev).ToList(); localContext.TracingService.Trace(list2.Count + " Event Packages"); List <Entity> list3 = (from ps in organizationServiceContext.CreateQuery("msnfp_paymentschedule") where ((EntityReference)ps["msnfp_taxreceiptid"]).Id == primaryReceipt.Id && (((OptionSetValue)ps["statuscode"]).Value == 844060000 || ((OptionSetValue)ps["statuscode"]).Value == 844060004 || ((OptionSetValue)ps["statuscode"]).Value == 1) select ps).ToList(); localContext.TracingService.Trace(list3.Count + " Payment Schedules"); if (list.Count > 0 || list2.Count > 0) { localContext.TracingService.Trace("Got related transactions (" + list.Count + ") for this receipt."); localContext.TracingService.Trace("Got related event packages (" + list2.Count + ") for this receipt."); localContext.TracingService.Trace("Got related payment schedule(s) (" + list3.Count + ") for this receipt."); decimal value = default(decimal); decimal value2 = default(decimal); decimal d = default(decimal); decimal d2 = default(decimal); Entity entity4 = null; if (primaryReceipt.Contains("msnfp_receiptstackid")) { entity4 = organizationService.Retrieve("msnfp_receiptstack", ((EntityReference)primaryReceipt["msnfp_receiptstackid"]).Id, new ColumnSet("msnfp_receiptstackid", "msnfp_prefix", "msnfp_currentrange", "msnfp_numberrange")); } if (entity4 != null) { localContext.TracingService.Trace("Receipt stack available."); entity2["msnfp_receiptstackid"] = new EntityReference("msnfp_receiptstack", entity4.Id); empty = (entity4.Contains("msnfp_prefix") ? ((string)entity4["msnfp_prefix"]) : string.Empty); num = (entity4.Contains("msnfp_currentrange") ? ((double)entity4["msnfp_currentrange"]) : 0.0); switch (entity4.Contains("msnfp_numberrange") ? ((OptionSetValue)entity4["msnfp_numberrange"]).Value : 0) { case 844060006: localContext.TracingService.Trace("number range : 6 digit"); text2 = empty + (num + 1.0).ToString().PadLeft(6, '0'); break; case 844060008: localContext.TracingService.Trace("number range : 8 digit"); text2 = empty + (num + 1.0).ToString().PadLeft(8, '0'); break; case 844060010: localContext.TracingService.Trace("number range : 10 digit"); text2 = empty + (num + 1.0).ToString().PadLeft(10, '0'); break; } localContext.TracingService.Trace("receiptNumber : " + text2); entity3["msnfp_receiptstackid"] = new EntityReference("msnfp_receiptstack", entity4.Id); double value3 = (primaryReceipt.Contains("msnfp_generatedorprinted") ? ((double)primaryReceipt["msnfp_generatedorprinted"]) : 0.0); entity2["msnfp_generatedorprinted"] = Convert.ToDouble(value3); entity2["msnfp_receiptnumber"] = text2; entity2["msnfp_identifier"] = text2; entity2["msnfp_receiptgeneration"] = new OptionSetValue(844060000); entity2["msnfp_replacesreceiptid"] = new EntityReference("msnfp_receipt", primaryReceipt.Id); if (list != null && list.Count > 0) { foreach (Entity item in list) { if (item.Contains("msnfp_amount_receipted")) { value2 += ((Money)item["msnfp_amount_receipted"]).Value; } if (item.Contains("msnfp_amount_membership")) { d += ((Money)item["msnfp_amount_membership"]).Value; } if (item.Contains("msnfp_amount_nonreceiptable")) { d2 += ((Money)item["msnfp_amount_nonreceiptable"]).Value; } if (item.Contains("msnfp_amount")) { value += ((Money)item["msnfp_amount"]).Value; } } } if (list2 != null && list2.Count > 0) { foreach (Entity item2 in list) { if (item2.Contains("msnfp_amount_receipted")) { value2 += ((Money)item2["msnfp_amount_receipted"]).Value; } if (item2.Contains("msnfp_amount_membership")) { d += ((Money)item2["msnfp_amount_membership"]).Value; } if (item2.Contains("msnfp_amount_nonreceiptable")) { d2 += ((Money)item2["msnfp_amount_nonreceiptable"]).Value; } if (item2.Contains("msnfp_amount")) { value += ((Money)item2["msnfp_amount"]).Value; } } } entity2["msnfp_amount_receipted"] = new Money(value2); entity2["msnfp_amount_nonreceiptable"] = new Money(d + d2); string str = string.Empty; if (primaryReceipt.Contains("msnfp_receiptissuedate")) { str = ((DateTime)primaryReceipt["msnfp_receiptissuedate"]).ToShortDateString(); } entity2["msnfp_receiptstatus"] = "This receipt replaces receipt " + text + " issued on " + str; if (primaryReceipt.Contains("msnfp_lastdonationdate")) { entity2["msnfp_lastdonationdate"] = (DateTime)primaryReceipt["msnfp_lastdonationdate"]; } entity2["msnfp_receiptissuedate"] = DateTime.Now; entity2["msnfp_transactioncount"] = list.Count; entity2["msnfp_eventcount"] = list2.Count; entity2["msnfp_amount"] = new Money(value); entity2["statuscode"] = new OptionSetValue(1); if (primaryReceipt.Contains("msnfp_customerid")) { string logicalName = ((EntityReference)primaryReceipt["msnfp_customerid"]).LogicalName; Guid id = ((EntityReference)primaryReceipt["msnfp_customerid"]).Id; entity2["msnfp_customerid"] = new EntityReference(logicalName, id); } Guid id2 = organizationService.Create(entity2); bool flag = true; localContext.TracingService.Trace("Receipt created successfully. Update the receipt stacks current number by 1."); entity4["msnfp_currentrange"] = num + 1.0; organizationService.Update(entity4); localContext.TracingService.Trace("Updated Receipt Stack current range to: " + (num + 1.0)); localContext.TracingService.Trace("new receipt created"); primaryReceipt["msnfp_identifier"] = text + " - Reissued"; primaryReceipt["msnfp_receiptstatus"] = "Void"; entity3["msnfp_receiptnumber"] = (primaryReceipt.Contains("msnfp_receiptnumber") ? ((string)primaryReceipt["msnfp_receiptnumber"]) : string.Empty); entity3["msnfp_entryreason"] = "RECEIPT REPLACED BY RECEIPT " + text2; entity3["msnfp_entryby"] = ((EntityReference)primaryReceipt["modifiedby"]).Name; organizationService.Create(entity3); localContext.TracingService.Trace("Receipt log created as Void (Reissued)."); if (list != null) { foreach (Entity item3 in list) { Entity entity5 = organizationService.Retrieve("msnfp_transaction", item3.Id, new ColumnSet("msnfp_taxreceiptid")); if (entity5 != null) { entity5["msnfp_taxreceiptid"] = new EntityReference("msnfp_receipt", id2); organizationService.Update(entity5); localContext.TracingService.Trace("Updated gift with new receipt."); } } } if (list2 != null) { foreach (Entity item4 in list2) { Entity entity6 = organizationService.Retrieve("msnfp_eventpackage", item4.Id, new ColumnSet("msnfp_taxreceiptid")); if (entity6 != null) { entity6["msnfp_taxreceiptid"] = new EntityReference("msnfp_receipt", id2); organizationService.Update(entity6); localContext.TracingService.Trace("Updated event package with new receipt."); } } } foreach (Entity item5 in list3) { Entity entity7 = organizationService.Retrieve("msnfp_paymentschedule", item5.Id, new ColumnSet("msnfp_taxreceiptid")); if (entity7 != null) { entity7["msnfp_taxreceiptid"] = new EntityReference("msnfp_receipt", id2); organizationService.Update(entity7); localContext.TracingService.Trace("Updated payment schedule with new receipt."); } } } } } else if (primaryReceipt.Contains("statuscode") && ((OptionSetValue)primaryReceipt["statuscode"]).Value == 844060002) { localContext.TracingService.Trace("statuscode : Void (Payment Failed)"); primaryReceipt["msnfp_receiptstatus"] = "Receipt Voided"; Entity entity8 = new Entity("msnfp_receiptlog"); if (primaryReceipt.Contains("msnfp_receiptstackid")) { entity8["msnfp_receiptstackid"] = new EntityReference("msnfp_receiptstack", ((EntityReference)primaryReceipt["msnfp_receiptstackid"]).Id); } primaryReceipt["msnfp_identifier"] = text + " - " + optionSetValueLabel; entity8["msnfp_receiptnumber"] = (primaryReceipt.Contains("msnfp_receiptnumber") ? ((string)primaryReceipt["msnfp_receiptnumber"]) : string.Empty); entity8["msnfp_entryreason"] = "PAYMENT FAILED RECEIPT VOIDED"; entity8["msnfp_entryby"] = ((EntityReference)primaryReceipt["modifiedby"]).Name; organizationService.Create(entity8); localContext.TracingService.Trace("receipt log created as Void (Payment Failed)."); } organizationService.Update(primaryReceipt); }
private void UpdateEventTicketTotals(Entity queriedEntityRecord, OrganizationServiceContext orgSvcContext, IOrganizationService service, LocalPluginContext localContext) { localContext.TracingService.Trace("---------UpdateEventTicketTotals---------"); if (!queriedEntityRecord.Contains("msnfp_eventticketid")) { return; } decimal value = default(decimal); Entity eventTicket = service.Retrieve("msnfp_eventticket", ((EntityReference)queriedEntityRecord["msnfp_eventticketid"]).Id, new ColumnSet("msnfp_eventticketid", "msnfp_amount", "msnfp_quantity")); List <Entity> list = (from a in orgSvcContext.CreateQuery("msnfp_ticket") where ((EntityReference)a["msnfp_eventticketid"]).Id == eventTicket.Id && ((OptionSetValue)a["statuscode"]).Value != 844060001 select a).ToList(); foreach (Entity item in list) { if (item.Contains("msnfp_amount") && item["msnfp_amount"] != null) { value += ((Money)item["msnfp_amount"]).Value; } } eventTicket["msnfp_sum_sold"] = list.Count(); eventTicket["msnfp_val_sold"] = new Money(value); if (eventTicket.Contains("msnfp_quantity") && eventTicket["msnfp_quantity"] != null) { eventTicket["msnfp_sum_available"] = (int)eventTicket["msnfp_quantity"] - list.Count(); } service.Update(eventTicket); }
private void AddOrUpdateThisRecordWithAzure(Entity queriedEntityRecord, Entity configurationRecord, LocalPluginContext localContext, IOrganizationService service, IPluginExecutionContext context) { localContext.TracingService.Trace("---------Send the Record to Azure---------"); string messageName = context.MessageName; string text = "ReceiptStack"; string text2 = Utilities.GetAzureWebAPIURL(service, context); localContext.TracingService.Trace("Got API URL: " + text2); if (text2 != string.Empty) { localContext.TracingService.Trace("Getting Latest Info for Record: " + queriedEntityRecord["msnfp_receiptstackid"].ToString()); MSNFP_ReceiptStack mSNFP_ReceiptStack = new MSNFP_ReceiptStack(); mSNFP_ReceiptStack.ReceiptStackId = (Guid)queriedEntityRecord["msnfp_receiptstackid"]; mSNFP_ReceiptStack.Identifier = (queriedEntityRecord.Contains("msnfp_identifier") ? ((string)queriedEntityRecord["msnfp_identifier"]) : string.Empty); localContext.TracingService.Trace("Title: " + mSNFP_ReceiptStack.Identifier); if (queriedEntityRecord.Contains("msnfp_configurationid") && queriedEntityRecord["msnfp_configurationid"] != null) { mSNFP_ReceiptStack.ConfigurationId = ((EntityReference)queriedEntityRecord["msnfp_configurationid"]).Id; localContext.TracingService.Trace("Got msnfp_configurationid."); } else { mSNFP_ReceiptStack.ConfigurationId = null; localContext.TracingService.Trace("Did NOT find msnfp_configurationid."); } if (queriedEntityRecord.Contains("msnfp_currentrange") && queriedEntityRecord["msnfp_currentrange"] != null) { mSNFP_ReceiptStack.CurrentRange = (double)queriedEntityRecord["msnfp_currentrange"]; localContext.TracingService.Trace("Got msnfp_currentrange."); } else { mSNFP_ReceiptStack.CurrentRange = null; localContext.TracingService.Trace("Did NOT find msnfp_currentrange."); } if (queriedEntityRecord.Contains("msnfp_numberrange") && queriedEntityRecord["msnfp_numberrange"] != null) { mSNFP_ReceiptStack.NumberRange = ((OptionSetValue)queriedEntityRecord["msnfp_numberrange"]).Value; localContext.TracingService.Trace("Got msnfp_numberrange."); } else { mSNFP_ReceiptStack.NumberRange = null; localContext.TracingService.Trace("Did NOT find msnfp_numberrange."); } if (queriedEntityRecord.Contains("msnfp_prefix") && queriedEntityRecord["msnfp_prefix"] != null) { mSNFP_ReceiptStack.Prefix = (string)queriedEntityRecord["msnfp_prefix"]; localContext.TracingService.Trace("Got msnfp_prefix."); } else { mSNFP_ReceiptStack.Prefix = null; localContext.TracingService.Trace("Did NOT find msnfp_prefix."); } if (queriedEntityRecord.Contains("msnfp_receiptyear") && queriedEntityRecord["msnfp_receiptyear"] != null) { mSNFP_ReceiptStack.ReceiptYear = ((OptionSetValue)queriedEntityRecord["msnfp_receiptyear"]).Value; localContext.TracingService.Trace("Got msnfp_receiptyear."); } else { mSNFP_ReceiptStack.ReceiptYear = null; localContext.TracingService.Trace("Did NOT find msnfp_receiptyear."); } if (queriedEntityRecord.Contains("msnfp_startingrange") && queriedEntityRecord["msnfp_startingrange"] != null) { mSNFP_ReceiptStack.StartingRange = (double)queriedEntityRecord["msnfp_startingrange"]; localContext.TracingService.Trace("Got msnfp_startingrange."); } else { mSNFP_ReceiptStack.StartingRange = null; localContext.TracingService.Trace("Did NOT find msnfp_startingrange."); } if (queriedEntityRecord.Contains("statecode") && queriedEntityRecord["statecode"] != null) { mSNFP_ReceiptStack.StateCode = ((OptionSetValue)queriedEntityRecord["statecode"]).Value; localContext.TracingService.Trace("Got statecode."); } else { mSNFP_ReceiptStack.StateCode = null; localContext.TracingService.Trace("Did NOT find statecode."); } if (queriedEntityRecord.Contains("statuscode") && queriedEntityRecord["statuscode"] != null) { mSNFP_ReceiptStack.StatusCode = ((OptionSetValue)queriedEntityRecord["statuscode"]).Value; localContext.TracingService.Trace("Got statuscode."); } else { mSNFP_ReceiptStack.StatusCode = null; localContext.TracingService.Trace("Did NOT find statuscode."); } if (messageName == "Create") { mSNFP_ReceiptStack.CreatedOn = DateTime.UtcNow; } else if (queriedEntityRecord.Contains("createdon") && queriedEntityRecord["createdon"] != null) { mSNFP_ReceiptStack.CreatedOn = (DateTime)queriedEntityRecord["createdon"]; } else { mSNFP_ReceiptStack.CreatedOn = null; } mSNFP_ReceiptStack.SyncDate = DateTime.UtcNow; if (messageName == "Delete") { mSNFP_ReceiptStack.Deleted = true; mSNFP_ReceiptStack.DeletedDate = DateTime.UtcNow; } else { mSNFP_ReceiptStack.Deleted = false; mSNFP_ReceiptStack.DeletedDate = null; } mSNFP_ReceiptStack.Configuration = null; mSNFP_ReceiptStack.Receipt = new HashSet <MSNFP_Receipt>(); mSNFP_ReceiptStack.ReceiptLog = new HashSet <MSNFP_ReceiptLog>(); localContext.TracingService.Trace("JSON object created"); if (messageName == "Create") { text2 = text2 + text + "/Create" + text; } else if (messageName == "Update" || messageName == "Delete") { text2 = text2 + text + "/Update" + text; } MemoryStream memoryStream = new MemoryStream(); DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(MSNFP_ReceiptStack)); dataContractJsonSerializer.WriteObject(memoryStream, mSNFP_ReceiptStack); byte[] array = memoryStream.ToArray(); memoryStream.Close(); string @string = Encoding.UTF8.GetString(array, 0, array.Length); WebAPIClient webAPIClient = new WebAPIClient(); webAPIClient.Headers[HttpRequestHeader.ContentType] = "application/json"; webAPIClient.Headers["Padlock"] = (string)configurationRecord["msnfp_apipadlocktoken"]; webAPIClient.Encoding = Encoding.UTF8; localContext.TracingService.Trace("---------Preparing JSON---------"); localContext.TracingService.Trace("Converted to json API URL : " + text2); localContext.TracingService.Trace("JSON: " + @string); localContext.TracingService.Trace("---------End of Preparing JSON---------"); localContext.TracingService.Trace("Sending data to Azure."); string text3 = webAPIClient.UploadString(text2, @string); localContext.TracingService.Trace("Got response."); localContext.TracingService.Trace("Response: " + text3); Utilities utilities = new Utilities(); utilities.CheckAPIReturnJSONForErrors(text3, configurationRecord.GetAttributeValue <OptionSetValue>("msnfp_showapierrorresponses"), localContext.TracingService); } else { localContext.TracingService.Trace("No API URL or Enable Portal Pages. Exiting workflow."); } }
private void AddOrUpdateThisRecordWithAzure(Entity queriedEntityRecord, Entity configurationRecord, LocalPluginContext localContext, IOrganizationService service, IPluginExecutionContext context) { localContext.TracingService.Trace("---------Send the Record to Azure---------"); string messageName = context.MessageName; string text = "MembershipCategory"; string text2 = Utilities.GetAzureWebAPIURL(service, context); localContext.TracingService.Trace("Got API URL: " + text2); if (text2 != string.Empty) { localContext.TracingService.Trace("Getting Latest Info for Record: " + queriedEntityRecord["msnfp_membershipcategoryid"].ToString()); MSNFP_MembershipCategory mSNFP_MembershipCategory = new MSNFP_MembershipCategory(); mSNFP_MembershipCategory.MembershipCategoryId = (Guid)queriedEntityRecord["msnfp_membershipcategoryid"]; mSNFP_MembershipCategory.Name = (queriedEntityRecord.Contains("msnfp_name") ? ((string)queriedEntityRecord["msnfp_name"]) : string.Empty); localContext.TracingService.Trace("Title: " + mSNFP_MembershipCategory.Name); if (queriedEntityRecord.Contains("msnfp_amount_membership") && queriedEntityRecord["msnfp_amount_membership"] != null) { mSNFP_MembershipCategory.AmountMembership = ((Money)queriedEntityRecord["msnfp_amount_membership"]).Value; localContext.TracingService.Trace("Got msnfp_amount_membership."); } else { mSNFP_MembershipCategory.AmountMembership = default(decimal); localContext.TracingService.Trace("Did NOT find msnfp_amount_membership."); } if (queriedEntityRecord.Contains("msnfp_amount_tax") && queriedEntityRecord["msnfp_amount_tax"] != null) { mSNFP_MembershipCategory.AmountTax = ((Money)queriedEntityRecord["msnfp_amount_tax"]).Value; localContext.TracingService.Trace("Got msnfp_amount_tax."); } else { mSNFP_MembershipCategory.AmountTax = default(decimal); localContext.TracingService.Trace("Did NOT find msnfp_amount_tax."); } if (queriedEntityRecord.Contains("msnfp_amount") && queriedEntityRecord["msnfp_amount"] != null) { mSNFP_MembershipCategory.Amount = ((Money)queriedEntityRecord["msnfp_amount"]).Value; localContext.TracingService.Trace("Got msnfp_amount."); } else { mSNFP_MembershipCategory.Amount = null; localContext.TracingService.Trace("Did NOT find msnfp_amount."); } if (queriedEntityRecord.Contains("msnfp_goodwilldate") && queriedEntityRecord["msnfp_goodwilldate"] != null) { mSNFP_MembershipCategory.GoodWillDate = (DateTime)queriedEntityRecord["msnfp_goodwilldate"]; localContext.TracingService.Trace("Got msnfp_goodwilldate."); } else { mSNFP_MembershipCategory.GoodWillDate = null; localContext.TracingService.Trace("Did NOT find msnfp_goodwilldate."); } if (queriedEntityRecord.Contains("msnfp_membershipduration") && queriedEntityRecord["msnfp_membershipduration"] != null) { mSNFP_MembershipCategory.MembershipDuration = ((OptionSetValue)queriedEntityRecord["msnfp_membershipduration"]).Value; localContext.TracingService.Trace("Got msnfp_membershipduration."); } else { mSNFP_MembershipCategory.MembershipDuration = null; localContext.TracingService.Trace("Did NOT find msnfp_membershipduration."); } if (queriedEntityRecord.Contains("msnfp_renewaldate") && queriedEntityRecord["msnfp_renewaldate"] != null) { mSNFP_MembershipCategory.RenewalDate = (DateTime)queriedEntityRecord["msnfp_renewaldate"]; localContext.TracingService.Trace("Got msnfp_renewaldate."); } else { mSNFP_MembershipCategory.RenewalDate = null; localContext.TracingService.Trace("Did NOT find msnfp_renewaldate."); } if (queriedEntityRecord.Contains("transactioncurrencyid") && queriedEntityRecord["transactioncurrencyid"] != null) { mSNFP_MembershipCategory.TransactionCurrencyId = ((EntityReference)queriedEntityRecord["transactioncurrencyid"]).Id; localContext.TracingService.Trace("Got transactioncurrencyid."); } else { mSNFP_MembershipCategory.TransactionCurrencyId = null; localContext.TracingService.Trace("Did NOT find transactioncurrencyid."); } if (queriedEntityRecord.Contains("statecode") && queriedEntityRecord["statecode"] != null) { mSNFP_MembershipCategory.StateCode = ((OptionSetValue)queriedEntityRecord["statecode"]).Value; localContext.TracingService.Trace("Got statecode."); } else { mSNFP_MembershipCategory.StateCode = null; localContext.TracingService.Trace("Did NOT find statecode."); } if (queriedEntityRecord.Contains("statuscode") && queriedEntityRecord["statuscode"] != null) { mSNFP_MembershipCategory.StatusCode = ((OptionSetValue)queriedEntityRecord["statuscode"]).Value; localContext.TracingService.Trace("Got statuscode."); } else { mSNFP_MembershipCategory.StatusCode = null; localContext.TracingService.Trace("Did NOT find statuscode."); } if (messageName == "Create") { mSNFP_MembershipCategory.CreatedOn = DateTime.UtcNow; } else if (queriedEntityRecord.Contains("createdon") && queriedEntityRecord["createdon"] != null) { mSNFP_MembershipCategory.CreatedOn = (DateTime)queriedEntityRecord["createdon"]; } else { mSNFP_MembershipCategory.CreatedOn = null; } mSNFP_MembershipCategory.SyncDate = DateTime.UtcNow; if (messageName == "Delete") { mSNFP_MembershipCategory.Deleted = true; mSNFP_MembershipCategory.DeletedDate = DateTime.UtcNow; } else { mSNFP_MembershipCategory.Deleted = false; mSNFP_MembershipCategory.DeletedDate = null; } mSNFP_MembershipCategory.Membership = new HashSet <MSNFP_Membership>(); localContext.TracingService.Trace("JSON object created"); if (messageName == "Create") { text2 = text2 + text + "/Create" + text; } else if (messageName == "Update" || messageName == "Delete") { text2 = text2 + text + "/Update" + text; } MemoryStream memoryStream = new MemoryStream(); DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(MSNFP_MembershipCategory)); dataContractJsonSerializer.WriteObject(memoryStream, mSNFP_MembershipCategory); byte[] array = memoryStream.ToArray(); memoryStream.Close(); string @string = Encoding.UTF8.GetString(array, 0, array.Length); WebAPIClient webAPIClient = new WebAPIClient(); webAPIClient.Headers[HttpRequestHeader.ContentType] = "application/json"; webAPIClient.Headers["Padlock"] = (string)configurationRecord["msnfp_apipadlocktoken"]; webAPIClient.Encoding = Encoding.UTF8; localContext.TracingService.Trace("---------Preparing JSON---------"); localContext.TracingService.Trace("Converted to json API URL : " + text2); localContext.TracingService.Trace("JSON: " + @string); localContext.TracingService.Trace("---------End of Preparing JSON---------"); localContext.TracingService.Trace("Sending data to Azure."); string text3 = webAPIClient.UploadString(text2, @string); localContext.TracingService.Trace("Got response."); localContext.TracingService.Trace("Response: " + text3); Utilities utilities = new Utilities(); utilities.CheckAPIReturnJSONForErrors(text3, configurationRecord.GetAttributeValue <OptionSetValue>("msnfp_showapierrorresponses"), localContext.TracingService); } else { localContext.TracingService.Trace("No API URL or Enable Portal Pages. Exiting plugin."); } }
private AvsInfo AssignAVSValidationFieldsFromPaymentMethod(Entity paymentMethod, AvsInfo avsCheck, LocalPluginContext localContext, IOrganizationService service) { localContext.TracingService.Trace("Entering AssignAVSValidationFieldsFromPaymentMethod()."); try { if (!paymentMethod.Contains("msnfp_billing_line1") || !paymentMethod.Contains("msnfp_billing_postalcode")) { localContext.TracingService.Trace("Customer is missing either msnfp_billing_line1 or msnfp_billing_postalcode fields on their payment method. Exiting plugin."); throw new Exception("Customer is missing either msnfp_billing_line1 or msnfp_billing_postalcode fields on their payment method. Exiting plugin."); } string[] array = ((string)paymentMethod["msnfp_billing_line1"]).Split(' '); if (array.Length <= 1) { localContext.TracingService.Trace("Could not split address for AVS Validation. Please ensure the Street 1 billing address on the payment method is in the form '123 Example Street'. Exiting plugin."); throw new ArgumentNullException("msnfp_billing_line1"); } string text = (string)paymentMethod["msnfp_billing_line1"]; localContext.TracingService.Trace("Unformatted Street Name: " + text); text = text.Replace(array[0], "").Trim(' '); localContext.TracingService.Trace("Formatted Street Name: " + text); localContext.TracingService.Trace("Formatted Street Number: " + array[0]); avsCheck.SetAvsStreetNumber(array[0]); avsCheck.SetAvsStreetName(text); avsCheck.SetAvsZipCode((string)paymentMethod["msnfp_billing_postalcode"]); if (paymentMethod.Contains("msnfp_emailaddress1")) { avsCheck.SetAvsEmail((string)paymentMethod["msnfp_emailaddress1"]); } avsCheck.SetAvsShipMethod("G"); if (paymentMethod.Contains("msnfp_telephone1")) { avsCheck.SetAvsCustPhone((string)paymentMethod["msnfp_telephone1"]); } localContext.TracingService.Trace("Updated AVS Check variable successfully."); } catch (Exception ex) { localContext.TracingService.Trace("AssignAVSValidationFieldsFromPaymentMethod() Error: " + ex.ToString()); throw new Exception("AssignAVSValidationFieldsFromPaymentMethod() Error: " + ex.ToString()); } return(avsCheck); }
private Guid CreateBrandNewOpportunityStageForOpportunity(Entity opportunityRecord, LocalPluginContext localContext, OrganizationServiceContext orgSvcContext, IOrganizationService service) { localContext.TracingService.Trace("---------Entering CreateBrandNewOpportunityStageForOpportunity()---------"); if (opportunityRecord == null) { localContext.TracingService.Trace("The variable opportunityRecord is null. Cannot create opportunity stage without an associated opportunity. Exiting Plugin."); throw new ArgumentNullException("opportunityRecord"); } Entity entity = new Entity("msnfp_opportunitystage"); string[] array = (opportunityRecord.Contains("stepname") ? ((string)opportunityRecord["stepname"]).Split('-') : new string[0]); string text = ""; text = ((array.Length <= 1 && opportunityRecord.Contains("stepname")) ? ((string)opportunityRecord["stepname"]) : ((array.Length != 2) ? "Qualify" : array[1])); localContext.TracingService.Trace("Pipeline Step Name: " + text); entity["msnfp_stagename"] = text; entity["msnfp_identifier"] = text + " - " + DateTime.Now.ToShortDateString(); entity["msnfp_startedon"] = DateTime.UtcNow; entity["msnfp_appointments"] = 0; entity["msnfp_emails"] = 0; entity["msnfp_letters"] = 0; entity["msnfp_phonecalls"] = 0; entity["msnfp_tasks"] = 0; entity["msnfp_totalactivities"] = 0; entity["msnfp_opportunityid"] = new EntityReference("opportunity", opportunityRecord.Id); localContext.TracingService.Trace("Creating Opportunity Stage."); Guid result = service.Create(entity); localContext.TracingService.Trace("Opportunity Stage created with Id: " + result.ToString()); localContext.TracingService.Trace("---------Exiting CreateBrandNewOpportunityStageForOpportunity()---------"); return(result); }
private void AddOrUpdateThisRecordWithAzure(Entity queriedEntityRecord, Entity configurationRecord, LocalPluginContext localContext, IOrganizationService service, IPluginExecutionContext context) { localContext.TracingService.Trace("---------Send the Record to Azure---------"); string messageName = context.MessageName; string text = "Receipt"; string text2 = Utilities.GetAzureWebAPIURL(service, context); localContext.TracingService.Trace("Got API URL: " + text2); if (text2 != string.Empty) { localContext.TracingService.Trace("Getting Latest Info for Record: " + queriedEntityRecord["msnfp_receiptid"].ToString()); MSNFP_Receipt mSNFP_Receipt = new MSNFP_Receipt(); mSNFP_Receipt.ReceiptId = (Guid)queriedEntityRecord["msnfp_receiptid"]; mSNFP_Receipt.Identifier = (queriedEntityRecord.Contains("msnfp_identifier") ? ((string)queriedEntityRecord["msnfp_identifier"]) : string.Empty); localContext.TracingService.Trace("Title: " + mSNFP_Receipt.Identifier); if (queriedEntityRecord.Contains("msnfp_customerid") && queriedEntityRecord["msnfp_customerid"] != null) { mSNFP_Receipt.CustomerId = ((EntityReference)queriedEntityRecord["msnfp_customerid"]).Id; if (((EntityReference)queriedEntityRecord["msnfp_customerid"]).LogicalName.ToLower() == "contact") { mSNFP_Receipt.CustomerIdType = 2; } else if (((EntityReference)queriedEntityRecord["msnfp_customerid"]).LogicalName.ToLower() == "account") { mSNFP_Receipt.CustomerIdType = 1; } localContext.TracingService.Trace("Got msnfp_customerid."); } else { mSNFP_Receipt.CustomerId = null; mSNFP_Receipt.CustomerIdType = null; localContext.TracingService.Trace("Did NOT find msnfp_customerid."); } if (queriedEntityRecord.Contains("msnfp_expectedtaxcredit") && queriedEntityRecord["msnfp_expectedtaxcredit"] != null) { mSNFP_Receipt.ExpectedTaxCredit = ((Money)queriedEntityRecord["msnfp_expectedtaxcredit"]).Value; localContext.TracingService.Trace("Got msnfp_expectedtaxcredit."); } else { mSNFP_Receipt.ExpectedTaxCredit = null; localContext.TracingService.Trace("Did NOT find msnfp_expectedtaxcredit."); } if (queriedEntityRecord.Contains("msnfp_generatedorprinted") && queriedEntityRecord["msnfp_generatedorprinted"] != null) { mSNFP_Receipt.GeneratedorPrinted = (double)queriedEntityRecord["msnfp_generatedorprinted"]; localContext.TracingService.Trace("Got msnfp_generatedorprinted."); } else { mSNFP_Receipt.GeneratedorPrinted = null; localContext.TracingService.Trace("Did NOT find msnfp_generatedorprinted."); } if (queriedEntityRecord.Contains("msnfp_lastdonationdate") && queriedEntityRecord["msnfp_lastdonationdate"] != null) { mSNFP_Receipt.LastDonationDate = (DateTime)queriedEntityRecord["msnfp_lastdonationdate"]; localContext.TracingService.Trace("Got msnfp_lastdonationdate."); } else { mSNFP_Receipt.LastDonationDate = null; localContext.TracingService.Trace("Did NOT find msnfp_lastdonationdate."); } if (queriedEntityRecord.Contains("msnfp_amount_nonreceiptable") && queriedEntityRecord["msnfp_amount_nonreceiptable"] != null) { mSNFP_Receipt.AmountNonReceiptable = ((Money)queriedEntityRecord["msnfp_amount_nonreceiptable"]).Value; localContext.TracingService.Trace("Got msnfp_amount_nonreceiptable."); } else { mSNFP_Receipt.AmountNonReceiptable = null; localContext.TracingService.Trace("Did NOT find msnfp_amount_nonreceiptable."); } if (queriedEntityRecord.Contains("msnfp_transactioncount") && queriedEntityRecord["msnfp_transactioncount"] != null) { mSNFP_Receipt.TransactionCount = (int)queriedEntityRecord["msnfp_transactioncount"]; localContext.TracingService.Trace("Got msnfp_transactioncount."); } else { mSNFP_Receipt.TransactionCount = null; localContext.TracingService.Trace("Did NOT find msnfp_transactioncount."); } if (queriedEntityRecord.Contains("msnfp_preferredlanguagecode") && queriedEntityRecord["msnfp_preferredlanguagecode"] != null) { mSNFP_Receipt.PreferredLanguageCode = ((OptionSetValue)queriedEntityRecord["msnfp_preferredlanguagecode"]).Value; localContext.TracingService.Trace("Got msnfp_preferredlanguagecode."); } else { mSNFP_Receipt.PreferredLanguageCode = null; localContext.TracingService.Trace("Did NOT find msnfp_preferredlanguagecode."); } if (queriedEntityRecord.Contains("msnfp_receiptnumber") && queriedEntityRecord["msnfp_receiptnumber"] != null) { mSNFP_Receipt.ReceiptNumber = (string)queriedEntityRecord["msnfp_receiptnumber"]; localContext.TracingService.Trace("Got msnfp_receiptnumber."); } else { mSNFP_Receipt.ReceiptNumber = null; localContext.TracingService.Trace("Did NOT find msnfp_receiptnumber."); } if (queriedEntityRecord.Contains("msnfp_receiptgeneration") && queriedEntityRecord["msnfp_receiptgeneration"] != null) { mSNFP_Receipt.ReceiptGeneration = ((OptionSetValue)queriedEntityRecord["msnfp_receiptgeneration"]).Value; localContext.TracingService.Trace("Got msnfp_receiptgeneration."); } else { mSNFP_Receipt.ReceiptGeneration = null; localContext.TracingService.Trace("Did NOT find msnfp_receiptgeneration."); } if (queriedEntityRecord.Contains("msnfp_receiptissuedate") && queriedEntityRecord["msnfp_receiptissuedate"] != null) { mSNFP_Receipt.ReceiptIssueDate = (DateTime)queriedEntityRecord["msnfp_receiptissuedate"]; localContext.TracingService.Trace("Got msnfp_receiptissuedate."); } else { mSNFP_Receipt.ReceiptIssueDate = null; localContext.TracingService.Trace("Did NOT find msnfp_receiptissuedate."); } if (queriedEntityRecord.Contains("msnfp_receiptstackid") && queriedEntityRecord["msnfp_receiptstackid"] != null) { mSNFP_Receipt.ReceiptStackId = ((EntityReference)queriedEntityRecord["msnfp_receiptstackid"]).Id; localContext.TracingService.Trace("Got msnfp_receiptstackid."); } else { mSNFP_Receipt.ReceiptStackId = null; localContext.TracingService.Trace("Did NOT find msnfp_receiptstackid."); } if (queriedEntityRecord.Contains("msnfp_receiptstatus") && queriedEntityRecord["msnfp_receiptstatus"] != null) { mSNFP_Receipt.ReceiptStatus = (string)queriedEntityRecord["msnfp_receiptstatus"]; localContext.TracingService.Trace("Got msnfp_receiptstatus."); } else { mSNFP_Receipt.ReceiptStatus = null; localContext.TracingService.Trace("Did NOT find msnfp_receiptstatus."); } if (queriedEntityRecord.Contains("msnfp_amount_receipted") && queriedEntityRecord["msnfp_amount_receipted"] != null) { mSNFP_Receipt.AmountReceipted = ((Money)queriedEntityRecord["msnfp_amount_receipted"]).Value; localContext.TracingService.Trace("Got msnfp_amount_receipted."); } else { mSNFP_Receipt.AmountReceipted = null; localContext.TracingService.Trace("Did NOT find msnfp_amount_receipted."); } if (queriedEntityRecord.Contains("msnfp_paymentscheduleid") && queriedEntityRecord["msnfp_paymentscheduleid"] != null) { mSNFP_Receipt.PaymentScheduleId = ((EntityReference)queriedEntityRecord["msnfp_paymentscheduleid"]).Id; localContext.TracingService.Trace("Got msnfp_paymentscheduleid."); } else { mSNFP_Receipt.PaymentScheduleId = null; localContext.TracingService.Trace("Did NOT find msnfp_paymentscheduleid."); } if (queriedEntityRecord.Contains("msnfp_replacesreceiptid") && queriedEntityRecord["msnfp_replacesreceiptid"] != null) { mSNFP_Receipt.ReplacesReceiptId = ((EntityReference)queriedEntityRecord["msnfp_replacesreceiptid"]).Id; localContext.TracingService.Trace("Got msnfp_replacesreceiptid."); } else { mSNFP_Receipt.ReplacesReceiptId = null; localContext.TracingService.Trace("Did NOT find msnfp_replacesreceiptid."); } if (queriedEntityRecord.Contains("msnfp_replacesreceiptid") && queriedEntityRecord["msnfp_replacesreceiptid"] != null) { mSNFP_Receipt.ReplacesReceiptId = ((EntityReference)queriedEntityRecord["msnfp_replacesreceiptid"]).Id; localContext.TracingService.Trace("Got msnfp_replacesreceiptid."); } else { mSNFP_Receipt.ReplacesReceiptId = null; localContext.TracingService.Trace("Did NOT find msnfp_replacesreceiptid."); } if (queriedEntityRecord.Contains("msnfp_amount") && queriedEntityRecord["msnfp_amount"] != null) { mSNFP_Receipt.Amount = ((Money)queriedEntityRecord["msnfp_amount"]).Value; localContext.TracingService.Trace("Got msnfp_amount."); } else { mSNFP_Receipt.Amount = null; localContext.TracingService.Trace("Did NOT find msnfp_amount."); } if (queriedEntityRecord.Contains("transactioncurrencyid") && queriedEntityRecord["transactioncurrencyid"] != null) { mSNFP_Receipt.TransactionCurrencyId = ((EntityReference)queriedEntityRecord["transactioncurrencyid"]).Id; localContext.TracingService.Trace("Got TransactionCurrencyId."); } else { mSNFP_Receipt.TransactionCurrencyId = null; localContext.TracingService.Trace("Did NOT find TransactionCurrencyId."); } if (queriedEntityRecord.Contains("msnfp_printed") && queriedEntityRecord["msnfp_printed"] != null) { mSNFP_Receipt.Printed = (DateTime)queriedEntityRecord["msnfp_printed"]; localContext.TracingService.Trace("Got Printed."); } else { mSNFP_Receipt.Printed = null; localContext.TracingService.Trace("Did NOT find Printed."); } if (queriedEntityRecord.Contains("msnfp_deliverycode") && queriedEntityRecord["msnfp_deliverycode"] != null) { mSNFP_Receipt.DeliveryCode = ((OptionSetValue)queriedEntityRecord["msnfp_deliverycode"]).Value; localContext.TracingService.Trace("Got Delivery."); } else { mSNFP_Receipt.DeliveryCode = null; localContext.TracingService.Trace("Did NOT find Delivery."); } if (queriedEntityRecord.Contains("msnfp_emaildeliverystatuscode") && queriedEntityRecord["msnfp_emaildeliverystatuscode"] != null) { mSNFP_Receipt.EmailDeliveryStatusCode = ((OptionSetValue)queriedEntityRecord["msnfp_emaildeliverystatuscode"]).Value; localContext.TracingService.Trace("Got EmailDeliveryStatus."); } else { mSNFP_Receipt.EmailDeliveryStatusCode = null; localContext.TracingService.Trace("Did NOT find EmailDeliveryStatus."); } if (queriedEntityRecord.Contains("statecode") && queriedEntityRecord["statecode"] != null) { mSNFP_Receipt.StateCode = ((OptionSetValue)queriedEntityRecord["statecode"]).Value; localContext.TracingService.Trace("Got statecode."); } else { mSNFP_Receipt.StateCode = null; localContext.TracingService.Trace("Did NOT find statecode."); } if (queriedEntityRecord.Contains("statuscode") && queriedEntityRecord["statuscode"] != null) { mSNFP_Receipt.StatusCode = ((OptionSetValue)queriedEntityRecord["statuscode"]).Value; localContext.TracingService.Trace("Got statuscode."); } else { mSNFP_Receipt.StatusCode = null; localContext.TracingService.Trace("Did NOT find statuscode."); } if (messageName == "Create") { mSNFP_Receipt.CreatedOn = DateTime.UtcNow; } else if (queriedEntityRecord.Contains("createdon") && queriedEntityRecord["createdon"] != null) { mSNFP_Receipt.CreatedOn = (DateTime)queriedEntityRecord["createdon"]; } else { mSNFP_Receipt.CreatedOn = null; } mSNFP_Receipt.SyncDate = DateTime.UtcNow; if (messageName == "Delete") { mSNFP_Receipt.Deleted = true; mSNFP_Receipt.DeletedDate = DateTime.UtcNow; } else { mSNFP_Receipt.Deleted = false; mSNFP_Receipt.DeletedDate = null; } mSNFP_Receipt.PaymentSchedule = null; mSNFP_Receipt.ReceiptStack = null; mSNFP_Receipt.ReplacesReceipt = null; mSNFP_Receipt.InverseReplacesReceipt = new HashSet <MSNFP_Receipt>(); localContext.TracingService.Trace("JSON object created"); if (messageName == "Create") { text2 = text2 + text + "/Create" + text; } else if (messageName == "Update" || messageName == "Delete") { text2 = text2 + text + "/Update" + text; } MemoryStream memoryStream = new MemoryStream(); DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(MSNFP_Receipt)); dataContractJsonSerializer.WriteObject(memoryStream, mSNFP_Receipt); byte[] array = memoryStream.ToArray(); memoryStream.Close(); string @string = Encoding.UTF8.GetString(array, 0, array.Length); WebAPIClient webAPIClient = new WebAPIClient(); webAPIClient.Headers[HttpRequestHeader.ContentType] = "application/json"; webAPIClient.Headers["Padlock"] = (string)configurationRecord["msnfp_apipadlocktoken"]; webAPIClient.Encoding = Encoding.UTF8; localContext.TracingService.Trace("---------Preparing JSON---------"); localContext.TracingService.Trace("Converted to json API URL : " + text2); localContext.TracingService.Trace("JSON: " + @string); localContext.TracingService.Trace("---------End of Preparing JSON---------"); localContext.TracingService.Trace("Sending data to Azure."); string str = webAPIClient.UploadString(text2, @string); localContext.TracingService.Trace("Got response."); localContext.TracingService.Trace("Response: " + str); } else { localContext.TracingService.Trace("No API URL or Enable Portal Pages. Exiting workflow."); } }
private Guid CreateNextOpportunityStageForOpportunity(Entity opportunityRecord, LocalPluginContext localContext, OrganizationServiceContext orgSvcContext, IOrganizationService service) { localContext.TracingService.Trace("---------Entering CreateNextOpportunityStageForOpportunity()---------"); if (opportunityRecord == null) { localContext.TracingService.Trace("The variable opportunityRecord is null. Cannot create opportunity stage without an associated opportunity. Exiting Plugin."); throw new ArgumentNullException("opportunityRecord"); } Entity entity = new Entity("msnfp_opportunitystage"); Entity latestOpportunityStageForThisOpportunity = GetLatestOpportunityStageForThisOpportunity(opportunityRecord.Id, localContext, orgSvcContext); if (latestOpportunityStageForThisOpportunity == null) { localContext.TracingService.Trace("Error: There is no last opportunity stage but one was attempted to be retrieved. Exiting plugin."); throw new ArgumentNullException("lastOpportunityStage"); } localContext.TracingService.Trace("Updating opportunity stage name: " + (string)latestOpportunityStageForThisOpportunity["msnfp_stagename"]); string[] array = ((string)opportunityRecord["stepname"]).Split('-'); string text = ""; text = ((array.Length > 1) ? array[1] : ((string)opportunityRecord["stepname"])); localContext.TracingService.Trace("Pipeline Step Name: " + text); if (text == (string)latestOpportunityStageForThisOpportunity["msnfp_stagename"]) { localContext.TracingService.Trace("Stage names are both: " + text); } localContext.TracingService.Trace("Getting Appointments"); DateTime started = (latestOpportunityStageForThisOpportunity.Attributes.ContainsKey("msnfp_startedon") ? latestOpportunityStageForThisOpportunity.GetAttributeValue <DateTime>("msnfp_startedon") : DateTime.Now); List <Guid> list = (from s in orgSvcContext.CreateQuery("appointment") where ((EntityReference)s["regardingobjectid"]).Id == opportunityRecord.Id && (DateTime)s["createdon"] >= started select s.Id).ToList(); localContext.TracingService.Trace("Got Appointments: " + list.Count); localContext.TracingService.Trace("Getting Emails"); List <Guid> list2 = (from s in orgSvcContext.CreateQuery("email") where ((EntityReference)s["regardingobjectid"]).Id == opportunityRecord.Id && (DateTime)s["createdon"] >= started select s.Id).ToList(); localContext.TracingService.Trace("Got Emails: " + list2.Count); localContext.TracingService.Trace("Getting Letters"); List <Guid> list3 = (from s in orgSvcContext.CreateQuery("letter") where ((EntityReference)s["regardingobjectid"]).Id == opportunityRecord.Id && (DateTime)s["createdon"] >= started select s.Id).ToList(); localContext.TracingService.Trace("Got Letters: " + list3.Count); localContext.TracingService.Trace("Getting Phonecalls"); List <Guid> list4 = (from s in orgSvcContext.CreateQuery("phonecall") where ((EntityReference)s["regardingobjectid"]).Id == opportunityRecord.Id && (DateTime)s["createdon"] >= started select s.Id).ToList(); localContext.TracingService.Trace("Got Phonecalls: " + list4.Count); localContext.TracingService.Trace("Getting Tasks"); List <Guid> list5 = (from s in orgSvcContext.CreateQuery("task") where ((EntityReference)s["regardingobjectid"]).Id == opportunityRecord.Id && (DateTime)s["createdon"] >= started select s.Id).ToList(); localContext.TracingService.Trace("Got Tasks: " + list5.Count); latestOpportunityStageForThisOpportunity["msnfp_finishedon"] = DateTime.UtcNow; if (latestOpportunityStageForThisOpportunity.Attributes.ContainsKey("msnfp_startedon")) { localContext.TracingService.Trace("Days in stage: " + Math.Round((DateTime.Now - (DateTime)latestOpportunityStageForThisOpportunity["msnfp_startedon"]).TotalDays, MidpointRounding.AwayFromZero)); latestOpportunityStageForThisOpportunity["msnfp_daysinstage"] = (int)Math.Round((DateTime.Now - (DateTime)latestOpportunityStageForThisOpportunity["msnfp_startedon"]).TotalDays, MidpointRounding.AwayFromZero); } latestOpportunityStageForThisOpportunity["msnfp_appointments"] = list.Count; latestOpportunityStageForThisOpportunity["msnfp_emails"] = list2.Count; latestOpportunityStageForThisOpportunity["msnfp_letters"] = list3.Count; latestOpportunityStageForThisOpportunity["msnfp_phonecalls"] = list4.Count; latestOpportunityStageForThisOpportunity["msnfp_tasks"] = list5.Count; latestOpportunityStageForThisOpportunity["msnfp_totalactivities"] = list.Count + list2.Count + list3.Count + list4.Count + list5.Count; localContext.TracingService.Trace("Saving changes to previous stage: " + (string)latestOpportunityStageForThisOpportunity["msnfp_stagename"]); orgSvcContext.UpdateObject(latestOpportunityStageForThisOpportunity); orgSvcContext.SaveChanges(); localContext.TracingService.Trace("Update complete. Previous Stage End Date: " + DateTime.Now.ToString()); localContext.TracingService.Trace("Creating New Opportunity Stage with name: " + text); entity["msnfp_stagename"] = text; entity["msnfp_identifier"] = text + " - " + DateTime.Now.ToShortDateString(); entity["msnfp_startedon"] = DateTime.Now; entity["msnfp_appointments"] = 0; entity["msnfp_emails"] = 0; entity["msnfp_letters"] = 0; entity["msnfp_phonecalls"] = 0; entity["msnfp_tasks"] = 0; entity["msnfp_totalactivities"] = 0; entity["msnfp_opportunityid"] = new EntityReference("opportunity", opportunityRecord.Id); Guid result = service.Create(entity); localContext.TracingService.Trace("Opportunity Stage created with Id: " + result.ToString()); localContext.TracingService.Trace("---------Exiting CreateNextOpportunityStageForOpportunity()---------"); return(result); }
private void UpdateEventTicketsAvailable(Entity queriedEntityRecord, OrganizationServiceContext orgSvcContext, IOrganizationService service, LocalPluginContext localContext) { localContext.TracingService.Trace("---------UpdateEventTicketsAvailable---------"); Entity eventTicket = service.Retrieve("msnfp_eventticket", queriedEntityRecord.Id, new ColumnSet("msnfp_eventticketid", "msnfp_sum_available")); List <Entity> source = (from a in orgSvcContext.CreateQuery("msnfp_ticket") where ((EntityReference)a["msnfp_eventticketid"]).Id == eventTicket.Id && ((OptionSetValue)a["statuscode"]).Value != 844060001 select a).ToList(); if (queriedEntityRecord.Contains("msnfp_quantity") && queriedEntityRecord["msnfp_quantity"] != null) { eventTicket["msnfp_sum_available"] = (int)queriedEntityRecord["msnfp_quantity"] - source.Count(); } service.Update(eventTicket); }
private void UpdateExistingOpportunityStage(Entity opportunityRecord, LocalPluginContext localContext, OrganizationServiceContext orgSvcContext) { localContext.TracingService.Trace("---------Entering UpdateExistingOpportunityStage()---------"); if (opportunityRecord == null) { localContext.TracingService.Trace("The variable opportunityRecord is null. Cannot update opportunity stage without an associated opportunity. Exiting Plugin."); throw new ArgumentNullException("opportunityRecord"); } Entity latestOpportunityStageForThisOpportunity = GetLatestOpportunityStageForThisOpportunity(opportunityRecord.Id, localContext, orgSvcContext); if (latestOpportunityStageForThisOpportunity == null) { localContext.TracingService.Trace("The variable opportunityStage is null. Cannot update the opportunity stage as it is not found. Exiting Plugin."); throw new ArgumentNullException("opportunityStage"); } DateTime started = (latestOpportunityStageForThisOpportunity.Attributes.ContainsKey("msnfp_startedon") ? latestOpportunityStageForThisOpportunity.GetAttributeValue <DateTime>("msnfp_startedon") : DateTime.Now); List <Guid> list = (from s in orgSvcContext.CreateQuery("appointment") where ((EntityReference)s["regardingobjectid"]).Id == opportunityRecord.Id && (DateTime)s["createdon"] >= started select s.Id).ToList(); localContext.TracingService.Trace("Got Appointments: " + list.Count); localContext.TracingService.Trace("Getting Emails"); List <Guid> list2 = (from s in orgSvcContext.CreateQuery("email") where ((EntityReference)s["regardingobjectid"]).Id == opportunityRecord.Id && (DateTime)s["createdon"] >= started select s.Id).ToList(); localContext.TracingService.Trace("Got Emails: " + list2.Count); localContext.TracingService.Trace("Getting Letters"); List <Guid> list3 = (from s in orgSvcContext.CreateQuery("letter") where ((EntityReference)s["regardingobjectid"]).Id == opportunityRecord.Id && (DateTime)s["createdon"] >= started select s.Id).ToList(); localContext.TracingService.Trace("Got Letters: " + list3.Count); localContext.TracingService.Trace("Getting Phonecalls"); List <Guid> list4 = (from s in orgSvcContext.CreateQuery("phonecall") where ((EntityReference)s["regardingobjectid"]).Id == opportunityRecord.Id && (DateTime)s["createdon"] >= started select s.Id).ToList(); localContext.TracingService.Trace("Got Phonecalls: " + list4.Count); localContext.TracingService.Trace("Getting Tasks"); List <Guid> list5 = (from s in orgSvcContext.CreateQuery("task") where ((EntityReference)s["regardingobjectid"]).Id == opportunityRecord.Id && (DateTime)s["createdon"] >= started select s.Id).ToList(); localContext.TracingService.Trace("Got Tasks: " + list5.Count); if (latestOpportunityStageForThisOpportunity.Attributes.ContainsKey("msnfp_startedon")) { localContext.TracingService.Trace("Days in stage: " + Math.Round((DateTime.Now - (DateTime)latestOpportunityStageForThisOpportunity["msnfp_startedon"]).TotalDays, MidpointRounding.AwayFromZero)); latestOpportunityStageForThisOpportunity["msnfp_daysinstage"] = (int)Math.Round((DateTime.Now - (DateTime)latestOpportunityStageForThisOpportunity["msnfp_startedon"]).TotalDays, MidpointRounding.AwayFromZero); } latestOpportunityStageForThisOpportunity["msnfp_appointments"] = list.Count; latestOpportunityStageForThisOpportunity["msnfp_emails"] = list2.Count; latestOpportunityStageForThisOpportunity["msnfp_letters"] = list3.Count; latestOpportunityStageForThisOpportunity["msnfp_phonecalls"] = list4.Count; latestOpportunityStageForThisOpportunity["msnfp_tasks"] = list5.Count; latestOpportunityStageForThisOpportunity["msnfp_totalactivities"] = list.Count + list2.Count + list3.Count + list4.Count + list5.Count; localContext.TracingService.Trace("Opportunity statecode: " + ((OptionSetValue)opportunityRecord["statecode"]).Value); if (((OptionSetValue)opportunityRecord["statecode"]).Value != 0) { localContext.TracingService.Trace("Setting finish date to now as the opportunity status is inactive."); latestOpportunityStageForThisOpportunity["msnfp_finishedon"] = DateTime.UtcNow; } localContext.TracingService.Trace("Updating Opportunity Stage."); orgSvcContext.UpdateObject(latestOpportunityStageForThisOpportunity); orgSvcContext.SaveChanges(); localContext.TracingService.Trace("Updated Opportunity Stage."); localContext.TracingService.Trace("---------Exiting UpdateExistingOpportunityStage()---------"); }
private void AddOrUpdateThisRecordWithAzure(Entity queriedEntityRecord, Entity configurationRecord, LocalPluginContext localContext, IOrganizationService service, IPluginExecutionContext context) { localContext.TracingService.Trace("---------Send the Record to Azure---------"); string messageName = context.MessageName; string text = "EventTicket"; string text2 = Utilities.GetAzureWebAPIURL(service, context); localContext.TracingService.Trace("Got API URL: " + text2); if (text2 != string.Empty) { localContext.TracingService.Trace("Getting Latest Info for Record: " + queriedEntityRecord["msnfp_eventticketid"].ToString()); MSNFP_EventTicket mSNFP_EventTicket = new MSNFP_EventTicket(); mSNFP_EventTicket.EvenTicketId = (Guid)queriedEntityRecord["msnfp_eventticketid"]; if (queriedEntityRecord.Contains("msnfp_amount") && queriedEntityRecord["msnfp_amount"] != null) { mSNFP_EventTicket.Amount = ((Money)queriedEntityRecord["msnfp_amount"]).Value; localContext.TracingService.Trace("Got msnfp_amount"); } else { mSNFP_EventTicket.Amount = null; localContext.TracingService.Trace("Did NOT find msnfp_amount."); } if (queriedEntityRecord.Contains("msnfp_amount_receipted") && queriedEntityRecord["msnfp_amount_receipted"] != null) { mSNFP_EventTicket.AmountReceipted = ((Money)queriedEntityRecord["msnfp_amount_receipted"]).Value; localContext.TracingService.Trace("Got msnfp_amount_receipted."); } else { mSNFP_EventTicket.AmountReceipted = null; localContext.TracingService.Trace("Did NOT find msnfp_amount_receipted."); } if (queriedEntityRecord.Contains("msnfp_amount_nonreceiptable") && queriedEntityRecord["msnfp_amount_nonreceiptable"] != null) { mSNFP_EventTicket.AmountNonReceiptable = ((Money)queriedEntityRecord["msnfp_amount_nonreceiptable"]).Value; localContext.TracingService.Trace("Got msnfp_amount_nonreceiptable."); } else { mSNFP_EventTicket.AmountNonReceiptable = null; localContext.TracingService.Trace("Did NOT find msnfp_amount_nonreceiptable."); } if (queriedEntityRecord.Contains("msnfp_amount_tax") && queriedEntityRecord["msnfp_amount_tax"] != null) { mSNFP_EventTicket.AmountTax = ((Money)queriedEntityRecord["msnfp_amount_tax"]).Value; localContext.TracingService.Trace("Got msnfp_amount_tax."); } else { mSNFP_EventTicket.AmountTax = null; localContext.TracingService.Trace("Did NOT find msnfp_amount_tax."); } if (queriedEntityRecord.Contains("msnfp_description") && queriedEntityRecord["msnfp_description"] != null) { mSNFP_EventTicket.Description = (string)queriedEntityRecord["msnfp_description"]; localContext.TracingService.Trace("Got msnfp_description."); } else { mSNFP_EventTicket.Description = string.Empty; localContext.TracingService.Trace("Did NOT find msnfp_description."); } if (queriedEntityRecord.Contains("msnfp_eventid") && queriedEntityRecord["msnfp_eventid"] != null) { mSNFP_EventTicket.EventId = ((EntityReference)queriedEntityRecord["msnfp_eventid"]).Id; localContext.TracingService.Trace("Got msnfp_eventid."); } else { mSNFP_EventTicket.EventId = null; localContext.TracingService.Trace("Did NOT find msnfp_eventid."); } if (queriedEntityRecord.Contains("msnfp_maxspots") && queriedEntityRecord["msnfp_maxspots"] != null) { mSNFP_EventTicket.MaxSpots = (int)queriedEntityRecord["msnfp_maxspots"]; localContext.TracingService.Trace("Got msnfp_maxspots."); } else { mSNFP_EventTicket.MaxSpots = null; localContext.TracingService.Trace("Did NOT find msnfp_maxspots."); } if (queriedEntityRecord.Contains("msnfp_registrationsperticket") && queriedEntityRecord["msnfp_registrationsperticket"] != null) { mSNFP_EventTicket.RegistrationsPerTicket = (int)queriedEntityRecord["msnfp_registrationsperticket"]; localContext.TracingService.Trace("Got msnfp_registrationsperticket."); } else { mSNFP_EventTicket.RegistrationsPerTicket = null; localContext.TracingService.Trace("Did NOT find msnfp_registrationsperticket."); } if (queriedEntityRecord.Contains("msnfp_sum_available") && queriedEntityRecord["msnfp_sum_available"] != null) { mSNFP_EventTicket.SumAvailable = (int)queriedEntityRecord["msnfp_sum_available"]; localContext.TracingService.Trace("Got msnfp_sum_available."); } else { mSNFP_EventTicket.SumAvailable = null; localContext.TracingService.Trace("Did NOT find msnfp_sum_available."); } if (queriedEntityRecord.Contains("msnfp_sum_sold") && queriedEntityRecord["msnfp_sum_sold"] != null) { mSNFP_EventTicket.SumSold = (int)queriedEntityRecord["msnfp_sum_sold"]; localContext.TracingService.Trace("Got msnfp_sum_sold."); } else { mSNFP_EventTicket.SumSold = null; localContext.TracingService.Trace("Did NOT find msnfp_sum_sold."); } if (queriedEntityRecord.Contains("msnfp_tickets") && queriedEntityRecord["msnfp_tickets"] != null) { mSNFP_EventTicket.Tickets = (int)queriedEntityRecord["msnfp_tickets"]; localContext.TracingService.Trace("Got msnfp_tickets."); } else { mSNFP_EventTicket.Tickets = null; localContext.TracingService.Trace("Did NOT find msnfp_tickets."); } if (queriedEntityRecord.Contains("msnfp_identifier") && queriedEntityRecord["msnfp_identifier"] != null) { mSNFP_EventTicket.Identifier = (string)queriedEntityRecord["msnfp_identifier"]; localContext.TracingService.Trace("Got msnfp_identifier."); } else { mSNFP_EventTicket.Identifier = string.Empty; localContext.TracingService.Trace("Did NOT find msnfp_identifier."); } if (queriedEntityRecord.Contains("msnfp_val_sold") && queriedEntityRecord["msnfp_val_sold"] != null) { mSNFP_EventTicket.ValTickets = ((Money)queriedEntityRecord["msnfp_val_sold"]).Value; localContext.TracingService.Trace("Got msnfp_val_sold."); } else { mSNFP_EventTicket.ValTickets = null; localContext.TracingService.Trace("Did NOT find msnfp_val_sold."); } if (queriedEntityRecord.Contains("transactioncurrencyid") && queriedEntityRecord["transactioncurrencyid"] != null) { mSNFP_EventTicket.TransactionCurrencyId = ((EntityReference)queriedEntityRecord["transactioncurrencyid"]).Id; localContext.TracingService.Trace("Got transactioncurrencyid."); } else { mSNFP_EventTicket.TransactionCurrencyId = null; localContext.TracingService.Trace("Did NOT find transactioncurrencyid."); } if (queriedEntityRecord.Contains("statecode") && queriedEntityRecord["statecode"] != null) { mSNFP_EventTicket.StateCode = ((OptionSetValue)queriedEntityRecord["statecode"]).Value; localContext.TracingService.Trace("Got statecode."); } else { mSNFP_EventTicket.StateCode = null; localContext.TracingService.Trace("Did NOT find statecode."); } if (queriedEntityRecord.Contains("statuscode") && queriedEntityRecord["statuscode"] != null) { mSNFP_EventTicket.StatusCode = ((OptionSetValue)queriedEntityRecord["statuscode"]).Value; localContext.TracingService.Trace("Got statuscode."); } else { mSNFP_EventTicket.StatusCode = null; localContext.TracingService.Trace("Did NOT find statuscode."); } if (messageName == "Create") { mSNFP_EventTicket.CreatedOn = DateTime.UtcNow; } else if (queriedEntityRecord.Contains("createdon") && queriedEntityRecord["createdon"] != null) { mSNFP_EventTicket.CreatedOn = (DateTime)queriedEntityRecord["createdon"]; } else { mSNFP_EventTicket.CreatedOn = null; } mSNFP_EventTicket.SyncDate = DateTime.UtcNow; if (messageName == "Delete") { mSNFP_EventTicket.Deleted = true; mSNFP_EventTicket.DeletedDate = DateTime.UtcNow; } else { mSNFP_EventTicket.Deleted = false; mSNFP_EventTicket.DeletedDate = null; } localContext.TracingService.Trace("JSON object created"); if (messageName == "Create") { text2 = text2 + text + "/Create" + text; } else if (messageName == "Update" || messageName == "Delete") { text2 = text2 + text + "/Update" + text; } MemoryStream memoryStream = new MemoryStream(); DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(MSNFP_EventTicket)); dataContractJsonSerializer.WriteObject(memoryStream, mSNFP_EventTicket); byte[] array = memoryStream.ToArray(); memoryStream.Close(); string @string = Encoding.UTF8.GetString(array, 0, array.Length); WebAPIClient webAPIClient = new WebAPIClient(); webAPIClient.Headers[HttpRequestHeader.ContentType] = "application/json"; webAPIClient.Headers["Padlock"] = (string)configurationRecord["msnfp_apipadlocktoken"]; webAPIClient.Encoding = Encoding.UTF8; localContext.TracingService.Trace("---------Preparing JSON---------"); localContext.TracingService.Trace("Converted to json API URL : " + text2); localContext.TracingService.Trace("JSON: " + @string); localContext.TracingService.Trace("---------End of Preparing JSON---------"); localContext.TracingService.Trace("Sending data to Azure."); string str = webAPIClient.UploadString(text2, @string); localContext.TracingService.Trace("Got response."); localContext.TracingService.Trace("Response: " + str); } else { localContext.TracingService.Trace("No API URL or Enable Portal Pages. Exiting plugin."); } }
private Entity GetLatestOpportunityStageForThisOpportunity(Guid opportunityId, LocalPluginContext localContext, OrganizationServiceContext orgSvcContext) { localContext.TracingService.Trace("---------Entering GetLatestOpportunityStageForThisOpportunity()---------"); List <Entity> list = (from s in orgSvcContext.CreateQuery("msnfp_opportunitystage") where ((EntityReference)s["msnfp_opportunityid"]).Id == opportunityId && (DateTime)(DateTime?)s.GetAttributeValue <DateTime>("msnfp_finishedon") == null select s).ToList(); localContext.TracingService.Trace("opportunityStages.Count = " + list.Count); if (list.Count > 0) { localContext.TracingService.Trace("Order list by created on"); list = list.OrderByDescending((Entity s) => s["createdon"]).ToList(); localContext.TracingService.Trace("Opportunity Stage Id = " + list[0].Id.ToString()); localContext.TracingService.Trace("Opportunity Stage Stage Name = " + list[0]["msnfp_stagename"].ToString()); localContext.TracingService.Trace("---------Exiting GetLatestOpportunityStageForThisOpportunity()---------"); return(list[0]); } localContext.TracingService.Trace("No opportunity stage found. Exiting function."); localContext.TracingService.Trace("---------Exiting GetLatestOpportunityStageForThisOpportunity()---------"); return(null); }
private void UpdateEventTotalRegistration(Entity queriedEntityRecord, OrganizationServiceContext orgSvcContext, IOrganizationService service, LocalPluginContext localContext) { localContext.TracingService.Trace("---------Update Event Total Registration---------"); if (!queriedEntityRecord.Contains("msnfp_eventid")) { return; } Entity eventRecord = service.Retrieve("msnfp_event", ((EntityReference)queriedEntityRecord["msnfp_eventid"]).Id, new ColumnSet("msnfp_eventid", "msnfp_sum_totalregistrations")); int num = 0; List <Entity> list = (from a in orgSvcContext.CreateQuery("msnfp_eventticket") where ((EntityReference)a["msnfp_eventid"]).Id == eventRecord.Id && ((OptionSetValue)a["statuscode"]).Value != 844060000 select a).ToList(); foreach (Entity item in list) { if (item.Contains("msnfp_sum_totalregistrations") && item["msnfp_sum_totalregistrations"] != null) { num += (int)item["msnfp_sum_totalregistrations"]; } } eventRecord["msnfp_sum_totalregistrations"] = num; service.Update(eventRecord); }
private bool CompareThisStageToLastOpportunityStage(Entity opportunityRecord, LocalPluginContext localContext, OrganizationServiceContext orgSvcContext) { localContext.TracingService.Trace("---------Entering CompareThisStageToLastOpportunityStage()---------"); bool flag = false; List <Entity> list = (from s in orgSvcContext.CreateQuery("msnfp_opportunitystage") where ((EntityReference)s["msnfp_opportunityid"]).Id == opportunityRecord.Id && (DateTime)(DateTime?)s.GetAttributeValue <DateTime>("msnfp_finishedon") == null select s).ToList(); localContext.TracingService.Trace("opportunityStages.Count = " + list.Count); flag = false; if (list.Count > 0) { string[] array = ((string)opportunityRecord["stepname"]).Split('-'); string text = ""; text = ((array.Length > 1) ? array[1] : ((string)opportunityRecord["stepname"])); localContext.TracingService.Trace("opportunityRecord[stepname] = " + text); localContext.TracingService.Trace("opportunityStages[0][msnfp_stagename] = " + list[0]["msnfp_stagename"].ToString()); localContext.TracingService.Trace("Equal = " + (text == (string)list[0]["msnfp_stagename"])); flag = ((!(text == (string)list[0]["msnfp_stagename"])) ? true : false); } else { localContext.TracingService.Trace("No opportunity stages exist for this opportunity."); flag = true; } localContext.TracingService.Trace("Different Stage Detected = " + flag); localContext.TracingService.Trace("---------Exiting CompareThisStageToLastOpportunityStage()---------"); return(flag); }
/// <summary> /// Executes the plug-in. /// </summary> /// <param name="serviceProvider">The service provider.</param> /// <remarks> /// For improved performance, Microsoft Dynamics CRM caches plug-in instances. /// The plug-in's Execute method should be written to be stateless as the constructor /// is not called for every invocation of the plug-in. Also, multiple system threads /// could execute the plug-in at the same time. All per invocation state information /// is stored in the context. This means that you should not use global variables in plug-ins. /// </remarks> public void Execute(IServiceProvider serviceProvider) { if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } // Construct the Local plug-in context. var localContext = new LocalPluginContext(serviceProvider); localContext.Log(string.Format("Entered {0}.Execute()", ChildClassName)); try { // Iterate over all of the expected registered events to ensure that the plugin // has been invoked by an expected event // For any given plug-in event at an instance in time, we would expect at most 1 result to match. var steps = (from a in _newRegisteredEvents where ( localContext.IsStage(a.Stage) && localContext.IsMessage(a.Message) && (string.IsNullOrWhiteSpace(a.EntityName) || a.EntityName == localContext.PrimaryEntityName) ) select a); foreach (var step in steps) { if ((step.Message == Messages.Update || step.Message == Messages.Create) && step.FilteringAttributes.Any()) { var target = localContext.GetInputParameter<Entity>(InputParameters.Target); var useStep = false; foreach (var attributeName in target.Attributes.Select(a => a.Key)) { useStep |= step.FilteringAttributes.Contains(attributeName); } if (!useStep) { localContext.Log(string.Format(string.Format( "{0}.{5} is not fired for Entity: {1}, Message: {2}, Stage: {3}, Mode: {4}, FilteringAttributes filter is not met.", ChildClassName, localContext.PrimaryEntityName, localContext.MessageName, localContext.Stage, localContext.Mode, step.Method.Name))); continue; } } var entityAction = step.Method; localContext.Log(string.Format( "{0} is firing for Entity: {1}, Message: {2}, Stage: {3}, Mode: {4}", ChildClassName, localContext.PrimaryEntityName, localContext.MessageName, localContext.Stage, localContext.Mode)); localContext.DumpInputParameters(); localContext.DumpSharedVariables(); localContext.Log(entityAction.Name, "Start"); Invoke(entityAction, localContext); localContext.Log(entityAction.Name, "End"); } } catch (FaultException<OrganizationServiceFault> e) { localContext.Log(string.Format("Exception: {0}", e)); // Handle the exception. throw; } catch (TargetInvocationException e) { localContext.Log(string.Format("Exception : {0}", e.InnerException)); throw e.InnerException; } finally { localContext.Log(string.Format("Exiting {0}.Execute()", ChildClassName)); } }
protected override void ExecuteCrmPlugin(LocalPluginContext localContext) { if (localContext == null) { throw new ArgumentNullException("localContext"); } localContext.TracingService.Trace("---------Triggered TributeOrMemoryUpdate.cs---------"); IPluginExecutionContext pluginExecutionContext = localContext.PluginExecutionContext; IOrganizationService organizationService = localContext.OrganizationService; OrganizationServiceContext organizationServiceContext = new OrganizationServiceContext(organizationService); if (pluginExecutionContext.Depth > 1) { localContext.TracingService.Trace("Context.depth > 1 => Exiting Plugin. context.Depth: " + pluginExecutionContext.Depth); return; } string messageName = pluginExecutionContext.MessageName; Entity configurationRecordByUser = Utilities.GetConfigurationRecordByUser(pluginExecutionContext, organizationService, localContext.TracingService); Entity entity = null; if (!pluginExecutionContext.InputParameters.Contains("Target") || !(pluginExecutionContext.InputParameters["Target"] is Entity)) { return; } entity = (Entity)pluginExecutionContext.InputParameters["Target"]; if (entity == null) { throw new InvalidPluginExecutionException("'Target' is null. Exiting plugin."); } if (entity.GetAttributeValue <EntityReference>("msnfp_duplicatetributeid") == null) { return; } EntityReference attributeValue = entity.GetAttributeValue <EntityReference>("msnfp_duplicatetributeid"); QueryByAttribute queryByAttribute = new QueryByAttribute("msnfp_transaction"); queryByAttribute.AddAttributeValue("msnfp_tributeid", attributeValue.Id); queryByAttribute.ColumnSet = new ColumnSet("msnfp_transactionid"); EntityCollection entityCollection = organizationService.RetrieveMultiple(queryByAttribute); if (entityCollection != null && entityCollection.Entities != null) { localContext.TracingService.Trace("Found " + entityCollection.Entities.Count + " Transactions for Duplicate Tribute."); foreach (Entity entity4 in entityCollection.Entities) { localContext.TracingService.Trace("Updating Transaction:" + entity4.Id.ToString()); entity4["msnfp_tributeid"] = new EntityReference(entity.LogicalName, entity.Id); organizationService.Update(entity4); localContext.TracingService.Trace("Transaction Updated."); } } Entity entity2 = new Entity(attributeValue.LogicalName, attributeValue.Id); entity2["statecode"] = new OptionSetValue(1); entity2["statuscode"] = new OptionSetValue(2); organizationService.Update(entity2); Entity entity3 = new Entity(entity.LogicalName, entity.Id); entity3["msnfp_duplicatetributeid"] = null; organizationService.Update(entity3); localContext.TracingService.Trace("Cleared Duplicate Field"); }
private void AddOrUpdateThisRecordWithAzure(Entity queriedEntityRecord, Entity configurationRecord, LocalPluginContext localContext, IOrganizationService service, IPluginExecutionContext context) { localContext.TracingService.Trace("---------Send the Record to Azure---------"); string messageName = context.MessageName; string text = "Response"; string text2 = Utilities.GetAzureWebAPIURL(service, context); localContext.TracingService.Trace("Got API URL: " + text2); if (text2 != string.Empty) { localContext.TracingService.Trace("Getting Latest Info for Record: " + queriedEntityRecord["msnfp_responseid"].ToString()); MSNFP_Response mSNFP_Response = new MSNFP_Response(); mSNFP_Response.ResponseId = (Guid)queriedEntityRecord["msnfp_responseid"]; if (queriedEntityRecord.Contains("msnfp_transactionid") && queriedEntityRecord["msnfp_transactionid"] != null) { mSNFP_Response.TransactionId = ((EntityReference)queriedEntityRecord["msnfp_transactionid"]).Id; localContext.TracingService.Trace("Got msnfp_transactionid."); } else { mSNFP_Response.TransactionId = null; localContext.TracingService.Trace("Did NOT find msnfp_transactionid."); } if (queriedEntityRecord.Contains("msnfp_response") && queriedEntityRecord["msnfp_response"] != null) { mSNFP_Response.Result = (string)queriedEntityRecord["msnfp_response"]; localContext.TracingService.Trace("Got msnfp_response."); } else { localContext.TracingService.Trace("Did NOT find msnfp_response."); } if (queriedEntityRecord.Contains("msnfp_identifier") && queriedEntityRecord["msnfp_identifier"] != null) { mSNFP_Response.Identifier = (string)queriedEntityRecord["msnfp_identifier"]; localContext.TracingService.Trace("Got msnfp_identifier."); } else { mSNFP_Response.Identifier = null; localContext.TracingService.Trace("Did NOT find msnfp_identifier."); } if (queriedEntityRecord.Contains("statecode") && queriedEntityRecord["statecode"] != null) { mSNFP_Response.StateCode = ((OptionSetValue)queriedEntityRecord["statecode"]).Value; localContext.TracingService.Trace("Got statecode."); } else { mSNFP_Response.StateCode = null; localContext.TracingService.Trace("Did NOT find statecode."); } if (queriedEntityRecord.Contains("statuscode") && queriedEntityRecord["statuscode"] != null) { mSNFP_Response.StatusCode = ((OptionSetValue)queriedEntityRecord["statuscode"]).Value; localContext.TracingService.Trace("Got statuscode."); } else { mSNFP_Response.StatusCode = null; localContext.TracingService.Trace("Did NOT find statuscode."); } if (messageName == "Create") { mSNFP_Response.CreatedOn = DateTime.UtcNow; } else if (queriedEntityRecord.Contains("createdon") && queriedEntityRecord["createdon"] != null) { mSNFP_Response.CreatedOn = (DateTime)queriedEntityRecord["createdon"]; } else { mSNFP_Response.CreatedOn = null; } mSNFP_Response.SyncDate = DateTime.UtcNow; if (messageName == "Delete") { mSNFP_Response.Deleted = true; mSNFP_Response.DeletedDate = DateTime.UtcNow; localContext.TracingService.Trace("Setting Deleted Date to:" + mSNFP_Response.DeletedDate.ToString()); } else { mSNFP_Response.Deleted = false; mSNFP_Response.DeletedDate = null; } localContext.TracingService.Trace("JSON object created"); if (messageName == "Create") { text2 = text2 + text + "/Create" + text; } else if (messageName == "Update" || messageName == "Delete") { text2 = text2 + text + "/Update" + text; } MemoryStream memoryStream = new MemoryStream(); DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(MSNFP_Response)); localContext.TracingService.Trace("Attempt to create JSON via serialization."); dataContractJsonSerializer.WriteObject(memoryStream, mSNFP_Response); byte[] array = memoryStream.ToArray(); memoryStream.Close(); string @string = Encoding.UTF8.GetString(array, 0, array.Length); WebAPIClient webAPIClient = new WebAPIClient(); webAPIClient.Headers[HttpRequestHeader.ContentType] = "application/json"; webAPIClient.Headers["Padlock"] = (string)configurationRecord["msnfp_apipadlocktoken"]; webAPIClient.Encoding = Encoding.UTF8; localContext.TracingService.Trace("---------Preparing JSON---------"); localContext.TracingService.Trace("Converted to json API URL : " + text2); localContext.TracingService.Trace("JSON: " + @string); localContext.TracingService.Trace("---------End of Preparing JSON---------"); localContext.TracingService.Trace("Sending data to Azure."); string str = webAPIClient.UploadString(text2, @string); localContext.TracingService.Trace("Got response."); localContext.TracingService.Trace("Response: " + str); } else { localContext.TracingService.Trace("No API URL or Enable Portal Pages. Exiting workflow."); } }
private void UpdateReceiptAmountForThisTransaction(Guid receiptRecordID, LocalPluginContext localContext, IOrganizationService service, IPluginExecutionContext context) { localContext.TracingService.Trace("Entering UpdateReceiptAmountForThisTransaction()"); OrganizationServiceContext organizationServiceContext = new OrganizationServiceContext(service); ColumnSet columnSet = new ColumnSet("msnfp_receiptid", "createdon", "msnfp_customerid", "msnfp_expectedtaxcredit", "msnfp_generatedorprinted", "msnfp_lastdonationdate", "msnfp_amount_nonreceiptable", "msnfp_transactioncount", "msnfp_preferredlanguagecode", "msnfp_receiptnumber", "msnfp_receiptgeneration", "msnfp_receiptissuedate", "msnfp_receiptstackid", "msnfp_receiptstatus", "msnfp_amount_receipted", "msnfp_paymentscheduleid", "msnfp_replacesreceiptid", "msnfp_identifier", "msnfp_amount"); Entity entity = service.Retrieve("msnfp_receipt", receiptRecordID, columnSet); localContext.TracingService.Trace("Old msnfp_amount_receipted: " + ((Money)entity["msnfp_amount_receipted"]).Value); entity["msnfp_amount_receipted"] = new Money(0m); localContext.TracingService.Trace("Old msnfp_amount_nonreceiptable: " + ((Money)entity["msnfp_amount_nonreceiptable"]).Value); entity["msnfp_amount_nonreceiptable"] = new Money(0m); localContext.TracingService.Trace("Old msnfp_amount: " + ((Money)entity["msnfp_amount"]).Value); entity["msnfp_amount"] = new Money(0m); entity["msnfp_transactioncount"] = 0; List <Entity> list = (from t in organizationServiceContext.CreateQuery("msnfp_transaction") where ((EntityReference)t["msnfp_taxreceiptid"]).Id == receiptRecordID select t).ToList(); foreach (Entity item in list) { decimal num = default(decimal); decimal num2 = default(decimal); decimal num3 = default(decimal); decimal num4 = default(decimal); localContext.TracingService.Trace("------------------"); localContext.TracingService.Trace("Processing Transaction ID: " + ((Guid)item["msnfp_transactionid"]).ToString()); num = (item.Contains("msnfp_amount") ? ((Money)item["msnfp_amount"]).Value : 0m); num2 = (item.Contains("msnfp_amount_receipted") ? ((Money)item["msnfp_amount_receipted"]).Value : 0m); num3 = (item.Contains("msnfp_amount_membership") ? ((Money)item["msnfp_amount_membership"]).Value : 0m); num4 = (item.Contains("msnfp_amount_nonreceiptable") ? ((Money)item["msnfp_amount_nonreceiptable"]).Value : 0m); localContext.TracingService.Trace("Got membership amount and non-receiptable amount."); localContext.TracingService.Trace("Amount Receipted " + num2 + " Membership Amount: " + num3 + " Non-receiptable : " + num4); localContext.TracingService.Trace("Old msnfp_amount_receipted: " + ((Money)entity["msnfp_amount_receipted"]).Value); entity["msnfp_amount_receipted"] = new Money(((Money)entity["msnfp_amount_receipted"]).Value + new Money(num2).Value); localContext.TracingService.Trace("New msnfp_amount_receipted: " + ((Money)entity["msnfp_amount_receipted"]).Value); localContext.TracingService.Trace("Old msnfp_amount_nonreceiptable: " + ((Money)entity["msnfp_amount_nonreceiptable"]).Value); entity["msnfp_amount_nonreceiptable"] = new Money(((Money)entity["msnfp_amount_nonreceiptable"]).Value + new Money(num3 + num4).Value); localContext.TracingService.Trace("New msnfp_amount_nonreceiptable: " + ((Money)entity["msnfp_amount_nonreceiptable"]).Value); localContext.TracingService.Trace("Old msnfp_amount: " + ((Money)entity["msnfp_amount"]).Value); entity["msnfp_amount"] = new Money(((Money)entity["msnfp_amount"]).Value + new Money(num).Value); localContext.TracingService.Trace("New msnfp_amount: " + ((Money)entity["msnfp_amount"]).Value); entity["msnfp_generatedorprinted"] = Convert.ToDouble(1); entity["msnfp_receiptgeneration"] = new OptionSetValue(844060000); entity["msnfp_receiptissuedate"] = DateTime.Now; localContext.TracingService.Trace("Getting transaction count."); localContext.TracingService.Trace("Old msnfp_transactioncount: " + (int)entity["msnfp_transactioncount"]); entity["msnfp_transactioncount"] = (int)entity["msnfp_transactioncount"] + 1; localContext.TracingService.Trace("New msnfp_transactioncount: " + (int)entity["msnfp_transactioncount"]); if (item.Contains("transactioncurrencyid")) { entity["transactioncurrencyid"] = new EntityReference("transactioncurrency", ((EntityReference)item["transactioncurrencyid"]).Id); } if (item.Contains("msnfp_customerid")) { string logicalName = ((EntityReference)item["msnfp_customerid"]).LogicalName; Guid id = ((EntityReference)item["msnfp_customerid"]).Id; entity["msnfp_customerid"] = new EntityReference(logicalName, id); } string logicalName2 = ((EntityReference)item["ownerid"]).LogicalName; Guid id2 = ((EntityReference)item["ownerid"]).Id; entity["ownerid"] = new EntityReference(logicalName2, id2); entity["statuscode"] = new OptionSetValue(1); if (item.Contains("msnfp_taxreceiptid")) { localContext.TracingService.Trace("Replace old receipt with this one."); if (item.Contains("msnfp_previousreceiptid")) { localContext.TracingService.Trace("Old Previous Receipt ID: " + ((EntityReference)item["msnfp_previousreceiptid"]).Id.ToString()); } item["msnfp_previousreceiptid"] = new EntityReference("msnfp_receipt", ((EntityReference)item["msnfp_taxreceiptid"]).Id); localContext.TracingService.Trace("Updated Previous Receipt ID: " + ((EntityReference)item["msnfp_previousreceiptid"]).Id.ToString()); localContext.TracingService.Trace("Saving Transaction."); if (!organizationServiceContext.IsAttached(item)) { organizationServiceContext.Attach(item); } organizationServiceContext.UpdateObject(item); organizationServiceContext.SaveChanges(); localContext.TracingService.Trace("Transaction Updated."); } localContext.TracingService.Trace("------------------"); } localContext.TracingService.Trace("Saving Receipt."); service.Update(entity); localContext.TracingService.Trace("Receipt updated."); localContext.TracingService.Trace("Exiting UpdateReceiptAmountForThisTransaction()"); }