public async Task <Guid> CreateClientWithDetailsAsync(ClientDetailsCreateRequest model, Guid organisationId)
        {
            var dynamicsDebtorModel = new Ntt_breathingspacedebtor
            {
                ntt_firstname   = model.FirstName,
                ntt_lastname    = model.LastName,
                ntt_middlename  = model.MiddleName,
                ntt_dateofbirth = model.DateOfBirth
            };

            var debtorResult = await _client.For <Ntt_breathingspacedebtor>()
                               .Set(dynamicsDebtorModel)
                               .InsertEntryWithLogsAsync(_logger);

            var moneyAdviser = await _client.For <inss_moneyadviserorganisation>()
                               .Key(organisationId)
                               .FindEntryAsync();

            var moratorium = new Ntt_breathingspacemoratorium
            {
                ntt_ManagingMoneyAdviserOrganisationId = moneyAdviser
            };

            var moratoriumResult = await _client.For <Ntt_breathingspacemoratorium>()
                                   .Set(moratorium)
                                   .InsertEntryWithLogsAsync(_logger);

            await _client.For <Ntt_breathingspacedebtor>()
            .Key(debtorResult.Ntt_breathingspacedebtorid.Value)
            .LinkEntryWithLogsAsync(_logger, moratoriumResult, "Ntt_breathingspacedebtor_ntt_breathingspacemoratorium_debtorid");

            await _auditService.PerformAuditing(_auditContext.ToAuditDetail(dynamicsDebtorModel.ToAuditDictionary()));

            return(moratoriumResult.ntt_breathingspacemoratoriumid.Value);
        }
 public BreathingSpaceBrowseItem MapBreathingSpaceBrowseResult(Ntt_breathingspacemoratorium entity)
 {
     return(new BreathingSpaceBrowseItem()
     {
         BreathingSpaceReference = entity.ntt_referencenumber,
         DateStarted = entity.ntt_commencementdate,
         DateEnded = entity.ntt_expirydate,
         FirstName = entity.ntt_debtorid.ntt_firstname,
         LastName = entity.ntt_debtorid.ntt_lastname,
         BreathingSpaceId = entity.GetId()
     });
 }
        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;
        }