private async Task <string> CreateLoanFromImportFileInternalAsync(HttpContent content, Loan loan, bool populate, CreateLoanOptions createLoanOptions, CancellationToken cancellationToken) { var loanId = await PostPopulateDirtyAsync("importers/loan", createLoanOptions?.ToQueryParameters().ToString(), content, nameof(CreateLoanFromImportFileAsync), loan, populate, cancellationToken).ConfigureAwait(false); loan?.Initialize(Client, loanId); return(loanId); }
/// <summary> /// Updates an existing loan by modifying the values of the loan data elements passed with the optionally specified <paramref name="updateLoanOptions"/>. /// </summary> /// <param name="loan">The loan to update.</param> /// <param name="updateLoanOptions">The loan update options.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="CancellationToken.None"/>.</param> /// <returns></returns> public Task UpdateLoanAsync(Loan loan, UpdateLoanOptions updateLoanOptions, CancellationToken cancellationToken = default) { Preconditions.NotNull(loan, nameof(loan)); Preconditions.NotNullOrEmpty(loan.EncompassId, $"{nameof(loan)}.{nameof(loan.EncompassId)}"); loan.Initialize(Client, loan.EncompassId); return(PatchPopulateDirtyAsync(loan.EncompassId, updateLoanOptions?.ToQueryParameters().ToString(), JsonStreamContent.Create(loan), nameof(UpdateLoanAsync), loan.EncompassId, loan, updateLoanOptions?.Populate == true, cancellationToken)); }
/// <summary> /// Creates a new loan in Encompass with the optionally specified <paramref name="createLoanOptions"/> and returns the loan id of the loan created. /// </summary> /// <param name="loan">The loan to create.</param> /// <param name="createLoanOptions">The loan creation options.</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 <string> CreateLoanAsync(Loan loan, CreateLoanOptions createLoanOptions, CancellationToken cancellationToken = default) { Preconditions.NotNull(loan, nameof(loan)); Preconditions.NullOrEmpty(loan.EncompassId, $"{nameof(loan)}.{nameof(loan.EncompassId)}"); var loanId = await PostPopulateDirtyAsync(null, createLoanOptions?.ToQueryParameters().ToString(), nameof(CreateLoanAsync), loan, createLoanOptions?.Populate == true, cancellationToken).ConfigureAwait(false); loan.Initialize(Client, loanId); return(loanId); }
/// <summary> /// Updates an existing loan by modifying the values of the loan data elements passed with the optionally specified <paramref name="updateLoanOptions"/>. /// </summary> /// <param name="loan">The loan to update.</param> /// <param name="updateLoanOptions">The loan update options.</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 UpdateLoanAsync(Loan loan, UpdateLoanOptions updateLoanOptions, CancellationToken cancellationToken = default) { Preconditions.NotNull(loan, nameof(loan)); Preconditions.NotNullOrEmpty(loan.EncompassId, $"{nameof(loan)}.{nameof(loan.EncompassId)}"); loan.Initialize(Client, loan.EncompassId); HttpContent content; if (updateLoanOptions?.Persistent == false) { var body = loan.ToJson(); content = new JsonStringContent(body); } else { var transientLoanUpdates = loan.TransientLoanUpdates; if (transientLoanUpdates?.Count > 0) { foreach (var transientLoanUpdate in transientLoanUpdates) { await PatchAsync(loan.EncompassId, transientLoanUpdate.QueryString, new JsonStringContent(transientLoanUpdate.Body), nameof(UpdateLoanAsync), loan.EncompassId, cancellationToken).ConfigureAwait(false); } transientLoanUpdates.Clear(); } content = JsonStreamContent.Create(loan); } await PatchAsync(loan.EncompassId, updateLoanOptions?.ToQueryParameters().ToString(), content, nameof(UpdateLoanAsync), loan.EncompassId, cancellationToken, async (HttpResponseMessage response) => { if (updateLoanOptions?.Populate == true) { await response.Content.PopulateAsync(loan).ConfigureAwait(false); } loan.Dirty = false; if (updateLoanOptions?.Persistent == false) { var transientLoanUpdates = loan.TransientLoanUpdates; if (transientLoanUpdates == null) { transientLoanUpdates = new List <Loan.TransientLoanUpdate>(); loan.TransientLoanUpdates = transientLoanUpdates; } transientLoanUpdates.Add(new Loan.TransientLoanUpdate { Body = ((JsonStringContent)content).Json, QueryString = updateLoanOptions.ToQueryParameters(true).ToString() }); } return(string.Empty); }).ConfigureAwait(false); }