public static void UpdateContact(IOrganizationService service, ITracingService trace, Entity entity, Entity image) { try { // Check if the entity contains status and email attributes if (!image.Contains(CrmContext.Contact.EmailAddress1) || !image.Contains(CrmContext.Base.StateCode)) { return; } trace.Trace("Start processing update on contact information"); var newStatus = entity.GetAttributeValue <OptionSetValue>(CrmContext.Base.StateCode); var oldStatus = image.GetAttributeValue <OptionSetValue>(CrmContext.Base.StateCode); trace.Trace($"Old status: {oldStatus.Value}"); trace.Trace($"New status: {newStatus.Value}"); // Check for change in status if (!oldStatus.Value.Equals(newStatus.Value)) { trace.Trace("The account status has been changed"); var emailAddress = image.GetAttributeValue <string>(CrmContext.Contact.EmailAddress1); // Create user change request var changeRequest = new UserChangeRequestDTO() { EmailAddress = emailAddress, RequestType = newStatus.Value == CrmContext.StateCodes.Active ? "Unblock" : "Block" }; // Send user request to Azure Function API UpdateUser(service, trace, changeRequest); } } catch (FaultException <OrganizationServiceFault> ex) { throw new InvalidPluginExecutionException( $"An error occurrd in the organizationservice. {ex.Detail.Message}"); } catch (TimeoutException ex) { throw new InvalidPluginExecutionException($"A timeout occurred. {ex.Message}"); } catch (FaultException ex) { throw new InvalidPluginExecutionException($"An error occurrd. {ex.Message}"); } }
private static void UpdateUser(IOrganizationService service, ITracingService trace, UserChangeRequestDTO request) { //Get the application settings var xFunctionKey = SettingHelper.RetrieveSetting(trace, SettingHelper.SecureConfigKeys.UsersFunctionKey); var xFunctionEndPoint = SettingHelper.RetrieveSetting(trace, SettingHelper.SecureConfigKeys.UsersEndPoint); trace.Trace($"Sending request to users Azure Function: {xFunctionEndPoint}"); trace.Trace($"Function key - {xFunctionKey}"); // Call mail API via APIM. using (var httpClient = new HttpClient()) { httpClient.DefaultRequestHeaders.Add("x-functions-key", xFunctionKey); trace.Trace($"Content: {GlobalHelper.JsonSerializer<UserChangeRequestDTO>(request)}"); var content = new StringContent(GlobalHelper.JsonSerializer <UserChangeRequestDTO>(request), Encoding.UTF8, "application/json"); var response = httpClient.PostAsync( xFunctionEndPoint, content).GetAwaiter().GetResult(); if (response.IsSuccessStatusCode) { trace.Trace($"Success: user change request is successfully send."); } else { var errorContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); trace.Trace($"Error: user change request failed - {errorContent}"); } } }