Example #1
0
        public async Task LoanFieldDescriptors_RefreshStandardFields_NoUpdates()
        {
            var client = await GetTestClientAsync();

            var count = LoanFieldDescriptors.StandardFields.Count;
            await LoanFieldDescriptors.RefreshStandardFieldsAsync(client);

            Assert.AreEqual(count, LoanFieldDescriptors.StandardFields.Count);
            foreach (var pair in LoanFieldDescriptors.StandardFields)
            {
                Assert.AreEqual(pair.Value.GetType(), typeof(FieldDescriptor), pair.Key);
            }
        }
Example #2
0
        public async Task LoanFieldDescriptors_RefreshStandardFields_DoesNotAffectUserAddedFields()
        {
            var client = await GetTestClientAsync();

            const string newFieldId = "NEWFIELD";

            Assert.IsTrue(LoanFieldDescriptors.FieldMappings.TryAdd(newFieldId, "Loan.NewField", false));
            var count = LoanFieldDescriptors.StandardFields.Count;
            await LoanFieldDescriptors.RefreshStandardFieldsAsync(client);

            Assert.AreEqual(count, LoanFieldDescriptors.StandardFields.Count);
            foreach (var pair in LoanFieldDescriptors.StandardFields)
            {
                Assert.AreEqual(pair.Value.GetType(), typeof(FieldDescriptor), pair.Key);
            }
            Assert.IsTrue(LoanFieldDescriptors.FieldMappings.ContainsKey(newFieldId));
        }
Example #3
0
        /// <summary>
        /// Refreshes the custom fields cache.
        /// </summary>
        /// <param name="client">The client to use to retrieve the custom fields.</param>
        /// <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="CancellationToken.None"/>.</param>
        /// <returns></returns>
        public async Task RefreshCustomFieldsAsync(EncompassRestClient client, CancellationToken cancellationToken = default)
        {
            Preconditions.NotNull(client, nameof(client));

            var retrievedCustomFields = new Dictionary <string, FieldDescriptor>(StringComparer.OrdinalIgnoreCase);

            var customFieldsList = await client.Settings.Loan.CustomFields.GetCustomFieldsAsync(cancellationToken).ConfigureAwait(false);

            foreach (var customField in customFieldsList)
            {
                var modelPath = $"Loan.CustomFields[(FieldName == '{customField.Id}')].StringValue";
                retrievedCustomFields[customField.Id] = new NonStandardFieldDescriptor(customField.Id, LoanFieldDescriptors.CreateModelPath(modelPath), modelPath, customField.Description, customField.Format, customField.Options?.Select(o => new FieldOption(o)).ToList(), false);
            }

            var customFields = _customFields;

            foreach (var pair in customFields)
            {
                if (retrievedCustomFields.TryGetValue(pair.Key, out var descriptor))
                {
                    customFields[pair.Key] = descriptor;
                    retrievedCustomFields.Remove(pair.Key);
                }
                else
                {
                    customFields.TryRemove(pair.Key, out _);
                }
            }

            foreach (var pair in retrievedCustomFields)
            {
                customFields[pair.Key] = pair.Value;
            }

            CustomFieldsLastRefreshedUtc = DateTime.UtcNow;
        }
 public int GetHashCode(string obj) => !string.IsNullOrEmpty(obj) ? LoanFieldDescriptors.CreateModelPath(obj)?.GetHashCode() ?? 0 : 0;
 public bool Equals(string x, string y) => string.IsNullOrEmpty(x) ? string.IsNullOrEmpty(y) : LoanFieldDescriptors.CreateModelPath(x)?.Equals(LoanFieldDescriptors.CreateModelPath(y)) ?? false;