public async Task <IActionResult> LinkAccount(
            [FromRoute] Guid organizationId,
            [FromBody] LinkCustomerWithCompanyInput input)
        {
            var account = await _accountService.LinkOrganizationCustomer(_accountManager, input);

            return(Ok(account));
        }
Exemplo n.º 2
0
        private async Task <CustomerAccountResult> Link(LinkCustomerWithCompanyInput input)
        {
            _logger.LogInformation(GetLogMessage(
                                       $@"Linking Account, Account Manager: {input.AccountManagerId}, Customer Lookup Info: {input.EmailAddress} ({input.CompanyName})"));

            CustomerAccountResult retVal = new CustomerAccountResult();


            var cu = _customerService.Repository.Queryable()
                     .FindByOrganizationNameAndEmail(input.EmailAddress, input.CompanyName).FirstOrDefaultAsync();

            await Task.WhenAll(cu);

            if (cu.Result == null)
            {
                retVal.ErrorMessage = "Customer not found";
                return(retVal);
            }

            var input2 = new CustomerAccountInput
            {
                CustomerId             = cu.Result.CustomerId,
                CustomerOrganizationId = cu.Result.OrganizationId,
                PaymentTermId          = input.PaymentTermId.GetValueOrDefault(1)
            };

            input2.InjectFrom(input);
            var output = await Create(input2);

            if (output.Succeeded)
            {
                await Task.Run(() =>
                {
                    retVal = new CustomerAccountResult()
                    {
                        AccountManagerId             = input.AccountManagerId,
                        AccountManagerOrganizationId = input.AccountManagerOrganizationId,
                        CustomerId             = cu.Result.CustomerId,
                        CustomerOrganizationId = cu.Result.OrganizationId,
                        Succeeded   = true,
                        BuyerNumber = output.BuyerNumber,
                        Number      = output.Number
                    };

                    RaiseEvent(new CustomerAccountLinkedEvent
                    {
                        AccountManagerId             = input.AccountManagerId,
                        AccountManagerOrganizationId = input.AccountManagerOrganizationId,
                        CustomerId             = cu.Result.CustomerId,
                        CustomerOrganizationId = cu.Result.OrganizationId
                    });
                });
            }


            return(retVal);
        }
Exemplo n.º 3
0
 public async Task <CustomerAccountResult> LinkOrganizationCustomer(IProviderAgencyOwner ao, LinkCustomerWithCompanyInput input)
 {
     input.AccountManagerOrganizationId = ao.OrganizationId;
     return(await Link(input));
 }
Exemplo n.º 4
0
        public async Task <CustomerAccountResult> LinkOrganizationCustomer(IOrganizationAccountManager am, LinkCustomerWithCompanyInput input)
        {
            input.AccountManagerId             = am.AccountManagerId;
            input.AccountManagerOrganizationId = am.OrganizationId;

            return(await Link(input));
        }