public void SetAccountSearchResult(AccountSearchResponse accountSearchResult, Ntt_breathingspacedebtor debtor, Ntt_breathingspacemoratorium moratorium)
        {
            var address = debtor.ntt_breathingspacedebtor_inss_inssaddress?.FirstOrDefault();

            accountSearchResult.BreathingSpaceId        = moratorium.ntt_breathingspacemoratoriumid.Value;
            accountSearchResult.FirstName               = debtor.ntt_firstname;
            accountSearchResult.MiddleName              = debtor.ntt_middlename;
            accountSearchResult.Surname                 = debtor.ntt_lastname;
            accountSearchResult.DateOfBirth             = debtor.ntt_dateofbirth.HasValue ? debtor.ntt_dateofbirth.Value.Date : default;
            accountSearchResult.BreathingSpaceReference = moratorium.ntt_referencenumber;
            accountSearchResult.Address                 = address != null ? new AddressResponse
            {
                AddressId    = address.GetId(),
                AddressLine1 = address.inss_addressline1,
                AddressLine2 = address.inss_addressline2,
                TownCity     = address.inss_addressline3,
                County       = address.inss_addressline4,
                Country      = address.inss_addressline5,
                Postcode     = address.inss_postcode,
            } : null;
            accountSearchResult.StartDate = moratorium.ntt_commencementdate.HasValue
                ? DateTime.SpecifyKind(moratorium.ntt_commencementdate.Value.Date, DateTimeKind.Utc)
                : (DateTime?)null;
            accountSearchResult.EndDate = moratorium.GetMoratoriumEndDate().HasValue
                ? moratorium.GetMoratoriumEndDate()?.DateTime.FromUtcToSpecifiedTimeZone(
                Constants.WindowsUKSystemTimeZone,
                Constants.LinuxUKSystemTimeZone)
                : null;
            accountSearchResult.MoratoriumStatus = moratorium.GetMoratoriumStatus();
            accountSearchResult.OrganisationName = moratorium.ntt_ManagingMoneyAdviserOrganisationId?.inss_name;
            accountSearchResult.MoratoriumType   = moratorium.ntt_breathingspacetypeid.ntt_name;
            accountSearchResult.CreatedOn        = moratorium.createdon.HasValue
                ? DateTime.SpecifyKind(moratorium.createdon.Value.DateTime, DateTimeKind.Utc)
                : default;
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <AccountSearchResponse> > Search([FromQuery] AccountSearchRequest request)
        {
            request.EnsureValidation();
            AccountSearchArgs   accountSearchArgs   = new AccountSearchArgs();
            IMediator           mediator            = Factory.Resolve <IMediator>();
            AccountSearchResult accountSearchResult = await mediator.Send(new AccountSearchCommand(accountSearchArgs));

            accountSearchResult.EnsureSuccess();
            AccountSearchResponse response = new AccountSearchResponse
            {
                Accounts = accountSearchResult.Results
                           .Select(x => { return(new AccountLiteView(x)); })
                           .ToArray()
            };

            return(Ok(response));
        }
Ejemplo n.º 3
0
        public async Task <IEnumerable <AccountSearchResponse> > SearchAccountsAsync(AccountSearchBaseRequest searchParam, Guid organisationId)
        {
            Setup(searchParam);

            if (!IsSearchValid)
            {
                return(Enumerable.Empty <AccountSearchResponse>());
            }

            var debtors = await Client.For <Ntt_breathingspacedebtor>()
                          .Expand(x => x.ntt_breathingspacedebtor_inss_inssaddress)
                          .Expand(x => x.Ntt_breathingspacedebtor_ntt_breathingspacemoratorium_debtorid)
                          .Filter(GetSearchQuery())
                          .OrderBy(x => x.ntt_lastname)
                          .FindEntriesAsync();

            debtors = debtors.ToList();

            if (!debtors.Any())
            {
                return(Enumerable.Empty <AccountSearchResponse>());
            }

            var moratoriums = await Client.For <__Ntt_breathingspacemoratorium>()
                              .Expand(m => m.ntt_breathingspacetypeid)
                              .Expand(m => m.ntt_ManagingMoneyAdviserOrganisationId)
                              .WhereInFilter(x => x.ntt_breathingspacemoratoriumid, debtors.SelectMany(d => d.GetMoratoriumIds()).ToList())
                              .FindEntriesAsync();

            var moratoriumsByDebtorId = moratoriums
                                        .GroupBy(x => x._ntt_debtorid_value)
                                        .ToDictionary(g => g.Key, g => g.ToList());

            var indexDebtors = debtors.ToDictionary(x => x.GetId(), x => x);

            moratoriumsByDebtorId.ToList()
            .ForEach(x => indexDebtors[x.Key.Value].Ntt_breathingspacedebtor_ntt_breathingspacemoratorium_debtorid = x.Value.Select(y => y.MapToDynamicOriginal()).ToList());

            var results = debtors
                          .Where(x => x.Ntt_breathingspacedebtor_ntt_breathingspacemoratorium_debtorid
                                 .Any(y => y._ntt_managingmoneyadviserorganisationid_value == organisationId ||
                                      y.GetMoratoriumStatus() != MoratoriumStatus.Draft))
                          .SelectMany(
                (debtor) => debtor.Ntt_breathingspacedebtor_ntt_breathingspacemoratorium_debtorid,
                (debtor, moratorium) =>
            {
                var searchResult           = new AccountSearchResponse();
                var isAddressHidden        = debtor.Ntt_addresswithheld ?? false;
                var isManagingOrganisation = moratorium._ntt_managingmoneyadviserorganisationid_value == organisationId;

                _mapperService.SetAccountSearchResult(searchResult, debtor, moratorium);

                if (!isManagingOrganisation && isAddressHidden)
                {
                    searchResult.Address = null;
                }

                return(searchResult);
            })
                          .ToList();

            return(results);
        }