public DebtEligibilityReviewResponse ToDebtEligibilityReview(DynamicsGatewayOptions options) { return(new DebtEligibilityReviewResponse { CreditorNotes = CreditorNotes, Reason = (DebtEligibilityReviewReasons)int.Parse(options.DebtEligibilityReviewReasons .First(r => r.Value == ReasonId.ToString()).Key), Status = options.DebtEligibilityReviewStatus[StatusId.ToString()], MoneyAdviserNotes = MoneyAdviserNotes, CreatedOn = CreatedOn.ToDateTimeOffset(), ModifiedOn = ModifiedOn.ToDateTimeOffset(), }); }
public BreathingSpaceResponse BuildMoratorium(MoratoriumDetail response, DynamicsGatewayOptions options) { return(new BreathingSpaceResponse { OrganisationId = response.MoneyAdviserOrganisation.Id, MoneyAdviserOrganization = response.MoneyAdviserOrganisation.ToMoneyAdviserOrganizationResponse(), DebtorDetails = new DebtorDetailsResponse { ReferenceNumber = response.ReferenceNumber, FirstName = response.Debtor.FirstName, MiddleName = response.Debtor.MiddleName, LastName = response.Debtor.LastName, PreviousNames = response.Debtor.PreviousNames ?.OrderBy(x => x.CreatedOn) ?.Select(x => x.ToPreviousName()) ?? Enumerable.Empty <ClientPreviousNameResponse>(), DateOfBirth = response.Debtor.DateOfBirth.ToDateTimeOffset().DateTime, AddressHidden = response.IsAddressWithheld, NotificationEmailAddress = response.Debtor.NotificationEmailAddress, MoratoriumStatus = MoratoriumIdStatusMap.GetStatusFromId(response.StatusId), IsInMentalHealthMoratorium = response.IsMentalHealth, StartsOn = response.CommencementDate?.ToDateTimeOffset(), EndsOn = response.ExpiryDate?.ToDateTimeOffset(), CancellationDate = response.ClosureDate?.ToDateTimeOffset(), CreatedOn = response.CreatedOn?.ToDateTimeOffset(), ModifiedOn = response.ModifiedOn?.ToDateTimeOffset(), ContactPreference = Enum.Parse <ContactPreferenceType>(response.Debtor.ContactPreferenceId.ToString()), CancellationReason = response.ParentCancellationReason }, CurrentAddress = response.Debtor.CurrentAddress.ToAddressResponse(), PreviousAddresses = response.Debtor.PreviousAddresses ?.OrderBy(pd => pd.CreatedOn) ?.Select(pd => pd.ToPreviousAddress()) .ToList() ?? Enumerable.Empty <PreviousAddressResponse>(), DebtorBusinessDetails = response.Debtor.Businesses ?.OrderBy(b => b.CreatedOn) ?.Select(b => b.ToBusinessAddress()) .ToList() ?? Enumerable.Empty <BusinessAddressResponse>(), DebtDetails = response.Debts ?.Select(d => d.ToDebtDetail(options)) .ToList() ?? Enumerable.Empty <DebtDetailResponse>(), DebtorEligibilityReviews = response.DebtorEligibilityReview ?.Select(e => e.ToDebtorEligibilityReview(options)) .ToList() ?? Enumerable.Empty <DebtorEligibilityReviewResponse>(), DebtorNominatedContactResponse = response.ExternalContacts ?.Select(e => e.ToDebtorNominatedContactResponse(options)) .FirstOrDefault(), DebtorTransfer = response.MoratoriumTransfer?.ToDebtorTransfer(), }); }
public DebtorNominatedContactResponse ToDebtorNominatedContactResponse(DynamicsGatewayOptions options) { return(new DebtorNominatedContactResponse { ContactId = ExternalContact.Id, RoleId = Id, FullName = $"{ExternalContact.FirstName} {ExternalContact.LastName}", TelephoneNumber = ExternalContact.HomeTelephone, EmailAddress = ExternalContact.EmailAddress, PointContactRole = (PointContactRoleType)SubRoleId, NotificationMethod = (PointContactConfirmationMethod)ExternalContact.PreferredChannel, CommunicationAddress = ExternalContact.CurrentAddress?.ToAddressResponse() }); }
public BreathingSpaceBrowseGateway(IODataClient client, DynamicsGatewayOptions options) { _client = client; _options = options; _taskBrowseFunctions = new Dictionary <BreathingSpaceBrowseTask, Func <Guid, bool, Task <BreathingSpaceBrowseResponse> > > { { BreathingSpaceBrowseTask.DebtsToBeReviewed, BrowseDebtsToBeReviewedAsync }, { BreathingSpaceBrowseTask.ClientsToBeReviewed, BrowseClientsToBeReviewedAsync }, { BreathingSpaceBrowseTask.NewDebtsProposed, BrowseNewDebtsProposedAsync }, { BreathingSpaceBrowseTask.DebtsToBeTransferred, BrowseDebtsToBeTransferredAsync }, { BreathingSpaceBrowseTask.ClientsToBeTransferred, BrowseClientsToBeTransferred }, { BreathingSpaceBrowseTask.ClientsTransferredToMoneyAdviser, BrowseClientsTransferredToMoneyAdviser } }; }
public CommonDynamicsGateway( IODataClient client, DynamicsGatewayOptions options, ILogger <CommonDynamicsGateway> logger, IMapperService mapperService, AuditContext auditContext, IAuditService auditService) { _logger = logger; _client = client; _options = options; _mapperService = mapperService; _auditContext = auditContext; _auditService = auditService; }
public DebtorEligibilityReviewResponse ToDebtorEligibilityReview(DynamicsGatewayOptions options) { return(new DebtorEligibilityReviewResponse { CreditorId = CreditorId, CreditorNotes = CreditorNotes, MoneyAdviserNotes = MoneyAdviserNotes, CreditorName = Creditor, Status = options.DebtorEligibilityReviewStatus[StatusId.ToString()], CreatedOn = CreatedOn.ToDateTimeOffset(), EndReason = options.GetEligibilityReviewParentReasonById(ReasonId), ModifiedOn = ModifiedOn.ToDateTimeOffset(), NoLongerEligibleReason = SubreasonId != Guid.Empty ? options.GetEligibilityReviewChildReasonById(SubreasonId) : null }); }
public void Configure(IWebJobsBuilder builder) { var dynamicsOptions = new DynamicsGatewayOptions(); builder.Services.AddScoped <ICommonDynamicsGateway, CommonDynamicsGateway>(); builder.Services.AddSingleton <DynamicsGatewayOptions>(x => { var config = x.GetService <IConfiguration>(); config.GetSection("DynamicsGateway").Bind(dynamicsOptions); return(dynamicsOptions); }); builder.Services.AddSingleton <IDistributedCache, RedisCache>(x => { var config = x.GetService <IConfiguration>(); var redisConnectionString = config["redisServerUrl"]; var options = new RedisCacheOptions { Configuration = redisConnectionString, InstanceName = Constants.IntegrationAPICacheKey }; return(new RedisCache(options)); }); builder.Services.AddScoped <IODataClient, ODataClient>(x => { var config = x.GetService <IConfiguration>(); var oDataBeforeFunction = new ODataMessageAuthenticatorFunction( new AuthorityDetails { ClientId = config.GetValue <string>("ClientId"), ClientSecret = config.GetValue <string>("ClientSecret"), ClientUrl = config.GetValue <string>("AuthorityUrl"), ResourceUrl = config.GetValue <string>("ClientResource") }, x.GetService <ICacheClient>()); var clientSettings = GetODataClientSettings(config, oDataBeforeFunction); return(new ODataClient(clientSettings)); }); builder.Services.AddScoped <ICacheClient, CacheClient>(x => { var config = x.GetService <IConfiguration>(); var listLifetimeInDays = config.GetValue <int>("CacheLifeTimeInDays"); return(new CacheClient(x.GetService <IDistributedCache>(), TimeSpan.FromDays(listLifetimeInDays))); }); }
public Debt ToDebtModel(DynamicsGatewayOptions options) { return(new Debt { Id = GetId(), Amount = ntt_amount, Reference = ntt_creditorexternalreferenceid, DebtTypeName = ntt_debttypeid?.inss_name ?? ntt_otherdebttype, NINO = ntt_nationalinsurancenumber, CreatedOn = createdon.Value, RemovedOn = modifiedon.Value, Status = GetDebtStatus(options), SoldToCreditorName = ntt_SoldToCreditorId?.ntt_name, SoldToCreditorId = ntt_SoldToCreditorId?.GetId(), PreviouslySold = ntt_previouslysold ?? false, DebtRemovalReason = GetDebtRemovalReason(options) }); }
public Dictionary <string, object> ToDictionary(DynamicsGatewayOptions options, bool isMentalHealthMoratorium) { var isPartOfThirtyDayReviewAnswerRequired = Reason == BreathingSpaceEndReasonType.StoppedTreatment || Reason == BreathingSpaceEndReasonType.UnableToReachPointOfContact || (Reason == BreathingSpaceEndReasonType.DebtManagementSolution && !isMentalHealthMoratorium) || Reason == BreathingSpaceEndReasonType.NotCompliedWithObligations || Reason == BreathingSpaceEndReasonType.UnableToContactClient; var reasonId = options.BreathingSpaceEndReason[((int)Reason).ToString()]; var result = new Dictionary <string, object>() { { "CancellationReasonParent", reasonId }, { "MidwayReviewRequired", isPartOfThirtyDayReviewAnswerRequired }, { "MHReviewRequired", false } }; if (Reason == BreathingSpaceEndReasonType.NoLongerEligible && NoLongerEligibleReason.HasValue) { var noLongerEligibleReasonId = options.BreathingSpaceEndReasonNoLongerEligibleReason[((int)NoLongerEligibleReason).ToString()]; result.Add("CancellationReasonChild", noLongerEligibleReasonId); } if (isPartOfThirtyDayReviewAnswerRequired && IsPartOfThirtyDayReview.HasValue) { result.Add("MidwayReviewAnswer", IsPartOfThirtyDayReview.Value); } if (Reason == BreathingSpaceEndReasonType.Deceased) { result.Add("DebtorDeceasedDate", DateOfDeath.Value.ToString(Constants.UkDateFormat)); } if (Reason == BreathingSpaceEndReasonType.StoppedTreatment) { result.Add("MHTreatmentEndDate", EndTreatmentDate.Value.ToString(Constants.UkDateFormat)); } return(result); }
public void SetDebtorDetailSensitiveData(BreathingSpaceResponse response, DynamicsGatewayOptions options) { response.PreviousAddresses = response.PreviousAddresses .Where(add => add.DateTo.HasValue) .Select(add => MapPreviousAddressResponse(add, true)) .ToList(); response.DebtorDetails.IsInMentalHealthMoratorium = response.DebtorDetails.IsInMentalHealthMoratorium; response.DebtorDetails.NotificationEmailAddress = response.DebtorDetails.NotificationEmailAddress; response.DebtorDetails.ContactPreference = response.DebtorDetails.ContactPreference; response.DebtorDetails.StartsOn = response.DebtorDetails.StartsOn; response.DebtorDetails.EndsOn = response.DebtorDetails.EndsOn; response.DebtorDetails.CreatedOn = response.DebtorDetails.CreatedOn; response.DebtorDetails.ModifiedOn = response.DebtorDetails.ModifiedOn; response.DebtorDetails.MoratoriumStatus = response.DebtorDetails.MoratoriumStatus; response.DebtorBusinessDetails = response.DebtorBusinessDetails .Select(b => new BusinessAddressResponse { BusinessName = b.BusinessName, Address = MapCurrentAddressResponse(b.Address) }) .ToList(); }
public DebtRemovalReason?GetDebtRemovalReason(DynamicsGatewayOptions options) => _ntt_debtremovalreasonid_value.HasValue ? options.DebtRemovalReason.First(r => r.Value == _ntt_debtremovalreasonid_value.ToString()).Key : (DebtRemovalReason?)null;
public static Guid GetDebtStatusValue(DynamicsGatewayOptions options, DebtStatus status) { return(Guid.Parse(options.DebtStatus.First(p => p.Value == status).Key)); }
public DebtStatus GetDebtStatus(DynamicsGatewayOptions options) => options.DebtStatus[_ntt_debtstatusid_value.ToString()];
public PointContactConfirmationMethod GetMappedPreferredChannelId(DynamicsGatewayOptions options) { _ = options.ContactPreferenceReadMap.TryGetValue(ntt_preferredchannel.ToString(), out var channelId); return((PointContactConfirmationMethod)channelId); }
public DebtEligibilityReviewStatus GetEligiblityReviewStatus(DynamicsGatewayOptions options) => options.DebtEligibilityReviewStatus[_ntt_eligibilitystatusid_value.ToString()];
public PointContactRoleType GetMappedPointContactRoleId(DynamicsGatewayOptions options) { _ = options.PointContactRoleRead.TryGetValue(ntt_subrole.ToString(), out var roleId); return((PointContactRoleType)roleId); }