private void FundsDispersedToPersonEmail(FundsDispersedToPersonEvent evt)
        {
            _logger.LogInformation(GetLogMessage("Person Id: {person}; InvoiceId: {invoice}; Amount: {amount}"), evt.PersonId, evt.InvoiceId, evt.Amount);

            using (var context = new AppDbContext(DbContextOptions))
            {
                var person = context.UsersAccounts.Where(a => a.Id == evt.PersonId)
                             .Include(a => a.Person).First();

                var invoice = context.Invoices
                              .Where(a => a.InvoiceId == evt.InvoiceId)
                              .Include(a => a.ProviderOrganization)
                              .Include(a => a.Invoice).Include(a => a.Project)
                              .Include(a => a.OrganizationProjectManager).ThenInclude(a => a.Organization)
                              .First();

                var personTransferEmail = new PersonTransferEmail
                {
                    RecipientEmail                 = person.Email,
                    RecipientName                  = person.Person.FirstName,
                    SendMail                       = person.SendMail,
                    Amount                         = evt.Amount,
                    Number                         = invoice.Invoice.Number,
                    FlowUrl                        = Settings.Urls.Flow,
                    ProjectName                    = invoice.Project.Name,
                    ProviderOrganizationName       = invoice.ProviderOrganization.Name,
                    ProjectManagerOrganizationName = invoice.OrganizationProjectManager.Organization.Name
                };

                Send(TemplateTypes.AgencyOwnerInvoiceDispersedIndividual, personTransferEmail,
                     $@"[{personTransferEmail.ProviderOrganizationName}] - Payout Notification");
            }
        }
        public void Handle(FundsDispersedToPersonEvent evt)
        {
            _logger.LogInformation(GetLogMessage("Person Id: {person}; Amount: {amount}"), evt.PersonId, evt.Amount);

            Parallel.Invoke(() =>
            {
                FundsDispersedToPersonEmail(evt);
            });

            //using (var context = new AppDbContext(DbContextOptions))
            //{
            //var contract = context.Invoices
            //    .Include(x=>x.Invoice)
            //    .ThenInclude(x=>x.Items)
            //    .ThenInclude(x=>x.IndividualPayoutIntents)
            //    .Where(x => x.InvoiceId == evt.InvoiceId)
            //    .ProjectTo<ContractorContractEmail>(ProjectionMapping)
            //    .First();

            //contract.Initialize(Settings);

            //Send(TemplateTypes.ContractorContractApproved, contract,
            //    $@"[{contract.ProjectManagerOrganizationName} : Contracting] A new contract has been approved");

            //AddContractNotification(context, "Contract was approved", contract);

            //var invoice = context.InvoiceTransfers
            //    .Include(x => x.Invoice)
            //    .ThenInclude(x => x.Items)
            //    .ThenInclude(x => x.IndividualPayoutIntents)
            //    .Where(x => x.InvoiceId == evt.InvoiceId)
            //    .ProjectTo<ContractorContractEmail>(ProjectionMapping)
            //    .First();

            //invoice.Initialize();

            //}
        }