public HubClient(string url, string key, IDynamicsClient client)
 {
     dynamicsClient = client;
     connection = new HttpClient(new LoggingHandler(new HttpClientHandler()));
     connection.MaxResponseContentBufferSize = 256000;
     connection.DefaultRequestHeaders.Add("user-agent", "Hub.NET-Agent");
     connection.DefaultRequestHeaders.Add("accept", "application/json");
     connection.DefaultRequestHeaders.Add("x-agent-token", key);
     connection.BaseAddress = new Uri(url);
 }
Example #2
0
        public static MicrosoftDynamicsCRMbcgovCustomproduct GetCustomProductById(this IDynamicsClient system, Guid id)
        {
            MicrosoftDynamicsCRMbcgovCustomproduct result;

            try
            {
                // fetch from Dynamics.
                result = system.Customproducts.GetByKey(id.ToString());
            }
            catch (OdataerrorException)
            {
                result = null;
            }
            return(result);
        }
Example #3
0
        /// <summary>
        /// Get an Invoice by the Id
        /// </summary>
        /// <param name="system">Re</param>
        /// <param name="id"></param>
        /// <returns>The Invoice, or null if it does not exist</returns>
        public static async Task <MicrosoftDynamicsCRMinvoice> GetInvoiceById(this IDynamicsClient system, Guid id)
        {
            MicrosoftDynamicsCRMinvoice result;

            try
            {
                // fetch from Dynamics.
                result = await system.Invoices.GetByKeyAsync(id.ToString());
            }
            catch (OdataerrorException)
            {
                result = null;
            }
            return(result);
        }
        public static MicrosoftDynamicsCRMbcgovCustomaddress GetCustomAddressById(this IDynamicsClient system, string id)
        {
            MicrosoftDynamicsCRMbcgovCustomaddress result;

            try
            {
                // fetch from Dynamics.
                result = system.Customaddresses.GetByKey(id);
            }
            catch (OdataerrorException)
            {
                result = null;
            }
            return(result);
        }
        public static async Task <MicrosoftDynamicsCRMcontact> CreateSubmitterAsync(IDynamicsClient dynamicsClient, User user)
        {
            var entity = new MicrosoftDynamicsCRMcontact
            {
                Fullname      = $"{user.GivenName} {user.Surname}",
                Firstname     = user.GivenName,
                Lastname      = user.Surname,
                Emailaddress1 = user.Email,
                SpicePortalcontactidentifier = user.Id
            };

            entity = await dynamicsClient.Contacts.CreateAsync(entity);

            return(entity);
        }
Example #6
0
        public static MicrosoftDynamicsCRMadoxioLicencetype GetAdoxioLicencetypeById(this IDynamicsClient _dynamicsClient, Guid id)
        {
            MicrosoftDynamicsCRMadoxioLicencetype result = null;

            try
            {
                result = _dynamicsClient.AdoxioLicencetypes.GetByKey(id.ToString());
            }
            catch (OdataerrorException)
            {
                result = null;
            }

            return(result);
        }
Example #7
0
        public static async Task <MicrosoftDynamicsCRMadoxioAlias> GetAliasById(this IDynamicsClient system, Guid id)
        {
            MicrosoftDynamicsCRMadoxioAlias result;

            try
            {
                // fetch from Dynamics.
                result = await system.Aliases.GetByKeyAsync(id.ToString());
            }
            catch (HttpOperationException)
            {
                result = null;
            }
            return(result);
        }
        public static async Task <MicrosoftDynamicsCRMadoxioWorker> GetWorkerById(this IDynamicsClient system, Guid id)
        {
            MicrosoftDynamicsCRMadoxioWorker result;

            try
            {
                // fetch from Dynamics.
                result = await system.Workers.GetByKeyAsync(id.ToString());
            }
            catch (Gov.Lclb.Cllb.Interfaces.Models.OdataerrorException)
            {
                result = null;
            }
            return(result);
        }
Example #9
0
 public CarlaUtils(IConfiguration Configuration, ILoggerFactory loggerFactory, FileManager sharepoint)
 {
     this.Configuration = Configuration;
     _logger            = loggerFactory.CreateLogger(typeof(CarlaUtils));
     if (!string.IsNullOrEmpty(Configuration["DYNAMICS_ODATA_URI"]))
     {
         _dynamics = DynamicsSetupUtil.SetupDynamics(Configuration);
     }
     else
     {
         _dynamics = null;
     }
     CarlaClient      = SetupCarlaClient();
     _carlaSharepoint = new CarlaSharepoint(Configuration, loggerFactory, sharepoint, CarlaClient);
 }
Example #10
0
        /// <summary>
        /// Returns a User based on the guid
        /// </summary>
        /// <param name="context"></param>
        /// <param name="guid"></param>
        /// <returns></returns>
        public static Public.Models.User GetUserBySmUserId(this IDynamicsClient _dynamicsClient, string guid)
        {
            Guid id = new Guid(guid);

            Public.Models.User user = null;
            var contact             = _dynamicsClient.GetContactByExternalId(id.ToString());

            if (contact != null)
            {
                user = new Public.Models.User();
                user.FromContact(contact);
            }

            return(user);
        }
Example #11
0
        /// <summary>
        /// Returns a User based on the guid
        /// </summary>
        /// <param name="context"></param>
        /// <param name="guid"></param>
        /// <returns></returns>
        public static async Task <Public.Models.User> GetUserByGuid(this IDynamicsClient _dynamicsClient, string guid)
        {
            Guid id = new Guid(guid);

            Public.Models.User user = null;
            var contact             = _dynamicsClient.GetContactById(id);

            if (contact != null)
            {
                user = new Public.Models.User();
                user.FromContact(contact);
            }

            return(user);
        }
Example #12
0
        public static MicrosoftDynamicsCRMincident GetApplicationById(this IDynamicsClient system, Guid id)
        {
            MicrosoftDynamicsCRMincident result;

            try
            {
                // fetch from Dynamics.
                result = system.Incidents.GetByKey(id.ToString());
            }
            catch (OdataerrorException)
            {
                result = null;
            }
            return(result);
        }
Example #13
0
        public static MicrosoftDynamicsCRMadoxioEstablishment GetEstablishmentById(this IDynamicsClient _dynamicsClient, Guid id)
        {
            MicrosoftDynamicsCRMadoxioEstablishment result = null;

            try
            {
                result = _dynamicsClient.Establishments.GetByKey(id.ToString());
            }
            catch (OdataerrorException)
            {
                result = null;
            }

            return(result);
        }
Example #14
0
        /// <summary>
        /// Returns the folder name for a given entity
        /// </summary>
        /// <param name="entityName"></param>
        /// <param name="entityId"></param>
        /// <param name="_dynamicsClient"></param>
        /// <returns></returns>
        public static async Task <string> GetFolderName(this IDynamicsClient _dynamicsClient, string entityName, string entityId)
        {
            string folderName = null;

            folderName = _dynamicsClient.GetEntitySharePointDocumentLocation(entityName, entityId);

            if (folderName == null)
            {
                switch (entityName.ToLower())
                {
                case "account":
                    var account = await _dynamicsClient.GetAccountByIdAsync(Guid.Parse(entityId)).ConfigureAwait(true);

                    folderName = account.GetDocumentFolderName();
                    break;

                case "application":
                    var application = await _dynamicsClient.GetApplicationById(Guid.Parse(entityId)).ConfigureAwait(true);

                    folderName = application.GetDocumentFolderName();
                    break;

                case "contact":
                    var contact = await _dynamicsClient.GetContactById(Guid.Parse(entityId)).ConfigureAwait(true);

                    folderName = contact.GetDocumentFolderName();
                    break;

                case "worker":
                    var worker = await _dynamicsClient.GetWorkerById(Guid.Parse(entityId)).ConfigureAwait(true);

                    folderName = worker.GetDocumentFolderName();
                    break;

                case "event":
                    var eventEntity = _dynamicsClient.GetEventById(Guid.Parse(entityId));
                    folderName = eventEntity.GetDocumentFolderName();
                    break;

                case "licence":
                    var licenceEntity = _dynamicsClient.GetLicenceById(Guid.Parse(entityId));
                    folderName = licenceEntity.GetDocumentFolderName();
                    break;
                }
            }

            return(folderName);
        }
Example #15
0
        public static async Task <MicrosoftDynamicsCRMcontact> CreateCandidateAsync(IDynamicsClient dynamicsClient, Candidate candidate)
        {
            var entity = new MicrosoftDynamicsCRMcontact
            {
                Fullname         = $"{candidate.FirstName} {candidate.LastName}",
                Firstname        = candidate.FirstName,
                Middlename       = candidate.MiddleName,
                Lastname         = candidate.LastName,
                SpiceDateofbirth = candidate.DateOfBirth,
                Emailaddress1    = candidate.Email,
            };

            entity = await dynamicsClient.Contacts.CreateAsync(entity);

            return(entity);
        }
        public static void RemoveNewsletterSubscriber(this IDynamicsClient context, string slug, string email)
        {
            Newsletter newsletter = context.GetNewsletterBySlug(slug);

            if (newsletter != null)
            {
                /*
                 * Subscriber existing = newsletter.Subscribers.FirstOrDefault(x => x.Email == email);
                 * if (existing != null)
                 * {
                 *  newsletter.Subscribers.Remove(existing);
                 *  context.Newsletters.Update(newsletter);
                 *  context.SaveChanges();
                 * }
                 */
            }
        }
Example #17
0
        /// <summary>
        /// Hangfire job to send LicenceDetailsMessage to One stop.
        /// </summary>
        public async Task SendProgramAccountDetailsBroadcastMessageRest(PerformContext hangfireContext, string licenceGuidRaw)
        {
            IDynamicsClient dynamicsClient = DynamicsSetupUtil.SetupDynamics(_configuration);

            if (hangfireContext != null)
            {
                hangfireContext.WriteLine("Starting OneStop REST ProgramAccountDetailsBroadcast Job.");
            }

            string licenceGuid = Utils.ParseGuid(licenceGuidRaw);

            //prepare soap content
            var req     = new ProgramAccountDetailsBroadcast();
            var licence = dynamicsClient.GetLicenceByIdWithChildren(licenceGuid);

            if (hangfireContext != null && licence != null)
            {
                hangfireContext.WriteLine($"Got Licence {licenceGuid}.");
            }

            if (licence == null)
            {
                if (hangfireContext != null)
                {
                    hangfireContext.WriteLine($"Unable to get licence {licenceGuid}.");
                }

                if (Log.Logger != null)
                {
                    Log.Logger.Error($"Unable to get licence {licenceGuid}.");
                }
            }
            else
            {
                var innerXML = req.CreateXML(licence);

                //send message to Onestop hub
                var outputXML = await _onestopRestClient.ReceiveFromPartner(innerXML);

                if (hangfireContext != null)
                {
                    hangfireContext.WriteLine(outputXML);
                    hangfireContext.WriteLine("End of OneStop REST ProgramAccountDetailsBroadcast  Job.");
                }
            }
        }
Example #18
0
        private void AddInitialPolicyDocuments(IDynamicsClient dynamicsClient)
        {
            string PolicyDocumentInitializationFile = Configuration["PolicyDocumentInitializationFile"];

            if (string.IsNullOrEmpty(PolicyDocumentInitializationFile))
            {
                // default to sample data, which is stored in the "SeedData" directory.
                PolicyDocumentInitializationFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SeedData" + Path.DirectorySeparatorChar + "PolicyDocuments.json");
            }
            bool forceupdate = false;

            if (!string.IsNullOrEmpty(Configuration["FORCE_POLICY_UPDATE"]))
            {
                forceupdate = true;
            }
            dynamicsClient.AddInitialPolicyDocumentsFromFile(PolicyDocumentInitializationFile, forceupdate);
        }
Example #19
0
        public static string DocumentLocationExistsWithCleanup(this IDynamicsClient _dynamicsClient, MicrosoftDynamicsCRMsharepointdocumentlocation mdcsdl)
        {
            var relativeUrl = mdcsdl.Relativeurl.Replace("'", "''");
            var filter      = $"relativeurl eq '{relativeUrl}'";
            // start by getting the existing document locations.
            string result = null;

            try
            {
                var locations =
                    _dynamicsClient.Sharepointdocumentlocations.Get(filter: filter).Value.ToList();

                foreach (var location in locations)
                {
                    if (string.IsNullOrEmpty(location._regardingobjectidValue))
                    {
                        Log.Error($"Orphan Sharepointdocumentlocation found.  ID is {location.Sharepointdocumentlocationid}");
                        // it is an invalid document location. cleanup.
                        try
                        {
                            _dynamicsClient.Sharepointdocumentlocations.Delete(location.Sharepointdocumentlocationid);
                        }
                        catch (HttpOperationException odee)
                        {
                        }
                    }
                    else
                    {
                        if (result != null)
                        {
                            Log.Error($"Duplicate Sharepointdocumentlocation found.  ID is {location.Sharepointdocumentlocationid}");
                        }
                        else
                        {
                            result = location.Sharepointdocumentlocationid;
                        }
                    }
                }
            }
            catch (HttpOperationException odee)
            {
                Log.Error(odee, "Error getting SharepointDocumentLocations");
            }

            return(result);
        }
Example #20
0
        public static MicrosoftDynamicsCRMincident GetApplicationByIdWithChildren(this IDynamicsClient system, string id)
        {
            MicrosoftDynamicsCRMincident result;

            try
            {
                List <string> expand = new List <string>()
                {
                    "bcgov_ApplicationTypeId", "bcgov_incident_customproduct_RelatedApplication", "customerid_account", "bcgov_incident_businesscontact",
                    "bcgov_BCSellersAddress", "bcgov_OutsideBCSellersAddress", "bcgov_ImportersAddress", "bcgov_OriginatingSellersAddress",
                    "bcgov_AddressofBusinessthathasGivenorLoaned", "bcgov_AddressofBusinessthathasRentedorLeased", "bcgov_EquipmentLocation", "bcgov_AddressofPersonBusiness",
                    "bcgov_incident_bcgov_certificate_Application"
                };
                // fetch from Dynamics.
                result = system.Incidents.GetByKey(incidentid: id, expand: expand);
                // expand only goes one level deep - we need the "location address"

                if (result.BcgovEquipmentLocation != null && result.BcgovEquipmentLocation._bcgovLocationaddressValue != null)
                {
                    result.BcgovEquipmentLocation.BcgovLocationAddress = system.GetCustomAddressById(result.BcgovEquipmentLocation._bcgovLocationaddressValue);
                }
            }
            catch (OdataerrorException)
            {
                result = null;
            }

            if (result != null && result.BcgovIncidentBusinesscontact != null)
            {
                for (int i = 0; i < result.BcgovIncidentBusinesscontact.Count; i++)
                {
                    try
                    {
                        result.BcgovIncidentBusinesscontact[i] = system.GetBusinessContactById(result.BcgovIncidentBusinesscontact[i].BcgovBusinesscontactid);
                    }
                    catch (OdataerrorException)
                    {
                        // ignore the exception.
                    }
                }
            }


            return(result);
        }
        /// <summary>
        /// Adds a jurisdiction to the system, only if it does not exist.
        /// </summary>
        private static void AddInitialNewsletter(this IDynamicsClient context, ViewModels.Newsletter initialNewsletter)
        {
            Newsletter newsletter = context.GetNewsletterBySlug(initialNewsletter.slug);

            if (newsletter != null)
            {
                return;
            }

            newsletter = new Newsletter
                         (
                initialNewsletter.slug,
                initialNewsletter.title,
                initialNewsletter.description
                         );

            context.AddNewsletter(newsletter);
        }
Example #22
0
        /// <summary>
        /// Get a Account by their Guid
        /// </summary>
        /// <param name="system"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static MicrosoftDynamicsCRMaccount GetAccountByIdWithChildren(this IDynamicsClient system, Guid id)
        {
            List <string> expand = new List <string>()
            {
                "primarycontactid",
                "bcgov_AdditionalContact",
                "Account_SharepointDocumentLocation"
            };

            MicrosoftDynamicsCRMaccount result;

            try
            {
                // fetch from Dynamics.
                result = system.Accounts.GetByKey(accountid: id.ToString(), expand: expand);
            }
            catch (OdataerrorException)
            {
                result = null;
            }
            catch (Exception e)
            {
                var ex = e;
                result = null;
            }

            // get the primary contact.
            if (result != null && result.Primarycontactid == null && result._primarycontactidValue != null)
            {
                try
                {
                    result.Primarycontactid = system.GetContactById(Guid.Parse(result._primarycontactidValue));
                }
                catch (OdataerrorException)
                {
                    result.Primarycontactid = null;
                }
                catch (Exception)
                {
                    result.Primarycontactid = null;
                }
            }
            return(result);
        }
        public MonthlyReportsController(IDynamicsClient dynamicsClient, IHttpContextAccessor httpContextAccessor, IConfiguration configuration)
        {
            _httpContextAccessor = httpContextAccessor;
            _dynamicsClient = dynamicsClient;
            _logger = Log.Logger;
            _configuration = configuration;

            if (!string.IsNullOrEmpty(_configuration["MONTHLY_REPORTS_MAX_MONTHS"]))
            {
                if (!int.TryParse(_configuration["MONTHLY_REPORTS_MAX_MONTHS"], out monthlyReportsMaxMonths))
                {
                    monthlyReportsMaxMonths = 12;
                }
            }
            else
            {
                monthlyReportsMaxMonths = 12;
            }
        }
Example #24
0
        /// <summary>
        /// Delete any business contact links if they exist.
        /// </summary>
        /// <param name="system"></param>
        /// <param name="_logger"></param>
        /// <param name="accountId"></param>
        /// <returns></returns>
        public static bool DeleteNonBceidBusinessContactLinkForAccount(this IDynamicsClient system, ILogger _logger, string accountId)
        {
            bool result = true;

            try
            {
                var businessContacts = system.Businesscontacts.Get(filter: $"_bcgov_businessprofile_value eq {accountId}");
                if (businessContacts.Value != null)
                {
                    foreach (MicrosoftDynamicsCRMbcgovBusinesscontact businessContact in businessContacts.Value)
                    {
                        if (businessContact.BcgovContacttype != (int?)ContactTypeCodes.BCeID)
                        {
                            try
                            {
                                system.Businesscontacts.Delete(businessContact.BcgovBusinesscontactid);
                            }
                            catch (OdataerrorException odee)
                            {
                                _logger.LogError(LoggingEvents.Error, "Error while deleting a business contact.");
                                _logger.LogError("Request:");
                                _logger.LogError(odee.Request.Content);
                                _logger.LogError("Response:");
                                _logger.LogError(odee.Response.Content);
                                result = false;
                            }
                        }
                    }
                }
            }
            catch (OdataerrorException odee)
            {
                _logger.LogError(LoggingEvents.Error, "Error while getting business contacts.");
                _logger.LogError("Request:");
                _logger.LogError(odee.Request.Content);
                _logger.LogError("Response:");
                _logger.LogError(odee.Response.Content);
                result = false;
            }

            return(result);
        }
        public static void ProcessTemplate(this IDynamicsClient dynamicsClient, MicrosoftDynamicsCRMadoxioPolicydocument document)
        {
            string body = document.AdoxioBody;

            if (body != null)
            {
                // start by scanning the document for blocks.

                int startRepeaterPos = body.IndexOf(REPEATER_START_TAG);
                if (startRepeaterPos > -1)
                {
                    int endRepeaterStartTagPos = body.IndexOf(">", startRepeaterPos);
                    if (endRepeaterStartTagPos > -1)
                    {
                        int endRepeaterPos = body.IndexOf(REPEATER_END_TAG);
                    }
                }
            }
            document.AdoxioBody = body;
        }
Example #26
0
        /// <summary>
        /// Get a contact by their Siteminder ID
        /// </summary>
        /// <param name="system"></param>
        /// <param name="siteminderId"></param>
        /// <returns></returns>
        public static MicrosoftDynamicsCRMcontact GetContactByExternalId(this IDynamicsClient system, string siteminderId)
        {
            string sanitizedSiteminderId       = GuidUtility.SanitizeGuidString(siteminderId);
            MicrosoftDynamicsCRMcontact result = null;

            try
            {
                var contactsResponse = system.Contacts.Get(filter: "adoxio_externalid eq '" + sanitizedSiteminderId + "'");
                result = contactsResponse.Value.FirstOrDefault();
            }
            catch (HttpOperationException)
            {
                result = null;
            }
            catch (Exception)
            {
                result = null;
            }

            return(result);
        }
        /// <summary>
        /// Update region
        /// </summary>
        /// <param name="context"></param>
        /// <param name="regionInfo"></param>
        public static void UpdateSeedNewsletterInfo(this IDynamicsClient context, Models.Newsletter newsletterInfo)
        {
            Newsletter newsletter = context.GetNewsletterBySlug(newsletterInfo.Slug);

            if (newsletter == null)
            {
                context.AddInitialNewsletter(newsletterInfo.ToViewModel());
            }
            else
            {
                // update Newsletter.
                MicrosoftDynamicsCRMlist list = new MicrosoftDynamicsCRMlist()
                {
                    Purpose     = newsletterInfo.Title,
                    Description = newsletterInfo.Description,
                    Listname    = newsletterInfo.Slug
                };

                context.Lists.Update(newsletter.Id.ToString(), list);
            }
        }
Example #28
0
        public void Move(IDynamicsClient _dynamicsClient)
        {
            // first find Cantest1
            string filter = "name eq 'XYZ Cannabis Sales Test'";

            try
            {
                var cantest1 = _dynamicsClient.Accounts.Get(filter: filter).Value.FirstOrDefault();

                if (cantest1 != null)
                {
                    var applications = _dynamicsClient.Applications.Get().Value;

                    foreach (var application in applications)
                    {
                        try
                        {
                            MicrosoftDynamicsCRMadoxioApplication newItem = new MicrosoftDynamicsCRMadoxioApplication()
                            {
                                AdoxioApplicantODataBind = _dynamicsClient.GetEntityURI("accounts", cantest1.Accountid)
                            };
                            _dynamicsClient.Applications.Update(application.AdoxioApplicationid, newItem);
                        }
                        catch (OdataerrorException odee)
                        {
                            Console.Out.WriteLine("Error updating application");
                            Console.Out.WriteLine("Request:");
                            Console.Out.WriteLine(odee.Request.Content);
                            Console.Out.WriteLine("Response:");
                            Console.Out.WriteLine(odee.Response.Content);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.Out.WriteLine("Unable to find Cantest1.");
            }
        }
Example #29
0
        public static void CreateApplicationDocumentLocation(this IDynamicsClient _dynamicsClient, MicrosoftDynamicsCRMadoxioApplication application, string folderName, string name)
        {
            // now create a document location to link them.
            var parentDocumentLibraryReference = _dynamicsClient.GetDocumentLocationReferenceByRelativeURL("adoxio_application");

            var regardingobjectId = _dynamicsClient.GetEntityURI("adoxio_applications", application.AdoxioApplicationid);

            // Create the SharePointDocumentLocation entity
            var mdcsdl = new MicrosoftDynamicsCRMsharepointdocumentlocation
            {
                RegardingobjectidAdoxioApplicationODataBind             = regardingobjectId,
                ParentsiteorlocationSharepointdocumentlocationODataBind = _dynamicsClient.GetEntityURI("sharepointdocumentlocations", parentDocumentLibraryReference),
                Relativeurl = folderName,
                Description = "Application Files",
                Name        = name
            };

            var sharepointdocumentlocationid = _dynamicsClient.DocumentLocationExistsWithCleanup(mdcsdl);

            if (sharepointdocumentlocationid == null)
            {
                sharepointdocumentlocationid = _dynamicsClient.CreateDocumentLocation(mdcsdl);

                var sharePointLocationData = _dynamicsClient.GetEntityURI("sharepointdocumentlocations", sharepointdocumentlocationid);

                var oDataId = new Odataid
                {
                    OdataidProperty = sharePointLocationData
                };
                try
                {
                    _dynamicsClient.Applications.AddReference(application.AdoxioApplicationid, "adoxio_application_SharePointDocumentLocations", oDataId);
                }
                catch (HttpOperationException odee)
                {
                    Log.Error(odee, "Error adding reference to SharepointDocumentLocation");
                }
            }
        }
        private async Task HandleWorkerLogin(UserSettings userSettings, HttpContext context)
        {
            IConfiguration    _configuration     = (IConfiguration)context.RequestServices.GetService(typeof(IConfiguration));
            IDynamicsClient   _dynamicsClient    = (IDynamicsClient)context.RequestServices.GetService(typeof(IDynamicsClient));
            FileManagerClient _fileManagerClient = (FileManagerClient)context.RequestServices.GetService(typeof(FileManagerClient));

            // Update worker with latest info from BC Service Card
            MicrosoftDynamicsCRMadoxioWorkerCollection workerCollection = _dynamicsClient.Workers.Get(filter: $"_adoxio_contactid_value eq {userSettings.ContactId}");

            if (workerCollection.Value.Count > 0)
            {
                MicrosoftDynamicsCRMadoxioWorker savedWorker = workerCollection.Value[0];

                Worker worker = new Worker();
                worker.CopyHeaderValues(context.Request.Headers);

                MicrosoftDynamicsCRMadoxioWorker patchWorker = new MicrosoftDynamicsCRMadoxioWorker
                {
                    AdoxioFirstname  = worker.firstname,
                    AdoxioLastname   = worker.lastname,
                    AdoxioMiddlename = worker.middlename
                };
                if (worker.gender != 0)
                {
                    patchWorker.AdoxioGendercode = (int)worker.gender;
                }

                _dynamicsClient.Workers.Update(savedWorker.AdoxioWorkerid, patchWorker);

                var updatedWorker = await _dynamicsClient.GetWorkerByIdWithChildren(savedWorker.AdoxioWorkerid);

                // only create the worker document location if the FEATURE_NO_WET_SIGNATURE setting is blank
                if (string.IsNullOrEmpty(_configuration["FEATURE_NO_WET_SIGNATURE"]))
                {
                    // ensure that the worker has a documents folder.
                    await CreateSharePointWorkerDocumentLocation(_fileManagerClient, updatedWorker);
                }
            }
        }
        /// <summary>
        /// Adds a jurisdiction to the system, only if it does not exist.
        /// </summary>
        private static void AddInitialPolicyDocument(this IDynamicsClient dynamicsClient, ViewModels.PolicyDocument initialPolicyDocument)
        {
            MicrosoftDynamicsCRMadoxioPolicydocument PolicyDocument = dynamicsClient.GetPolicyDocumentBySlug(initialPolicyDocument.slug);

            if (PolicyDocument != null)
            {
                return;
            }

            PolicyDocument = new MicrosoftDynamicsCRMadoxioPolicydocument
            {
                AdoxioSlug         = initialPolicyDocument.slug,
                AdoxioName         = initialPolicyDocument.title,
                AdoxioMenutext     = initialPolicyDocument.menuText,
                AdoxioCategory     = initialPolicyDocument.category,
                AdoxioBody         = initialPolicyDocument.body,
                AdoxioDisplayorder = initialPolicyDocument.displayOrder
            };


            dynamicsClient.AddPolicyDocument(PolicyDocument);
        }