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; }
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)); }
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); }