Beispiel #1
0
        public async Task <IList <CreditId> > GetCreditsForOrganisationNumber(OrganisationNumber organisationNumber)
        {
            var listOfCredits = new List <CreditId>();

            using (var connection = new SqlConnection(ConnectionString))
            {
                const string sql = "SELECT CreditId FROM CreditLookup WHERE OrganisationNumber = @organisationNumber";

                await connection.OpenAsync();

                using (var command = new SqlCommand(sql, connection))
                {
                    command.Parameters.AddWithValue("@organisationNumber", organisationNumber.Number);

                    using (var reader = await command.ExecuteReaderAsync())
                    {
                        while (reader.Read())
                        {
                            listOfCredits.Add(CreditId.Parse(reader.GetGuid(0)));
                        }
                    }
                }
            }

            return(listOfCredits);
        }
Beispiel #2
0
        public static async Task Main(string[] args)
        {
            // Plumbing --------------------------------------------
            var serviceProvider = Bootstrapper.GetServiceProvider();

            await serviceProvider.GetService <IEventStoreConnectionProvider>().Connect();

            var commandMediator = serviceProvider.GetService <CommandMediator>();
            var queryMediator   = serviceProvider.GetService <QueryMediator>();
            // -----------------------------------------------------


            // Register a new application
            var applicationId      = LoanApplicationId.NewId();
            var organisationNumber = new OrganisationNumber("5561682518", Country.Sweden);

            var registerApplicationCommand = new RegisterLoanApplication(applicationId)
            {
                OrganisationNumber = organisationNumber,
                RequestedAmount    = Money.Create(100000, Currency.SEK),
                VisitingAddress    = new Address("Demogatan 1", string.Empty, "41420", "Göteborg", "Sverige", string.Empty)
            };

            await commandMediator.MediateCommand(registerApplicationCommand);

            // Get data (Direct ES query)
            var loanApplicationView = await queryMediator.MediateQuery(new GetLoanApplicationById(applicationId));

            Log.Information("loanApplicationView: {View}", JsonConvert.SerializeObject(loanApplicationView, Formatting.Indented, SerializerSettings));


            // Approve application - Process + Builder
            await commandMediator.MediateCommand(new ApproveLoanApplication(applicationId));


            // Get data again (Direct ES query)
            var loanApplicationView2 = await queryMediator.MediateQuery(new GetLoanApplicationById(applicationId));

            Log.Information("loanApplicationView: {View}", JsonConvert.SerializeObject(loanApplicationView2, Formatting.Indented, SerializerSettings));


            // Credits for org number (ReadModel)
            var credits = await queryMediator.MediateQuery(new GetCreditsByOrganisationNumber(organisationNumber));


            // Get credit data (Direct ES query)
            var creditView = await queryMediator.MediateQuery(new GetCreditById(credits.FirstOrDefault()));

            Log.Information("creditView: {View}", JsonConvert.SerializeObject(creditView, Formatting.Indented, SerializerSettings));


            // Register disbursement payout
            await commandMediator.MediateCommand(new RegisterDisbursementPayout(credits.FirstOrDefault(), Money.Create(100000, Currency.SEK)));


            // Get credit again data (Direct ES query)
            var creditView2 = await queryMediator.MediateQuery(new GetCreditById(credits.FirstOrDefault()));

            Log.Information("creditView: {View}", JsonConvert.SerializeObject(creditView2, Formatting.Indented, SerializerSettings));
        }
Beispiel #3
0
        public async Task AddCreditToLookup(CreditId creditId, OrganisationNumber organisationNumber)
        {
            using (var connection = new SqlConnection(ConnectionString))
            {
                const string sql = "INSERT INTO CreditLookup (CreditId, OrganisationNumber, CreatedDate) VALUES (@creditId,@organisationNumber,@createdDate)";

                await connection.OpenAsync();

                using (var command = new SqlCommand(sql, connection))
                {
                    command.Parameters.AddWithValue("@creditId", (Guid)creditId);
                    command.Parameters.AddWithValue("@organisationNumber", organisationNumber.Number);
                    command.Parameters.AddWithValue("@createdDate", DateTimeOffset.Now);

                    await command.ExecuteNonQueryAsync();
                }
            }
        }
Beispiel #4
0
        public async Task Add()
        {
            EnhetsregisteretInfo = await enhetsregisteretClient.GetEnhetInfo(OrganisationNumber.ToString());

            AltInnSrrRights = await srrClient.AddRights(OrganisationNumber);
        }
 public LoanApplicationRegistered(OrganisationNumber organisationNumber, Money requestedAmount)
 {
     OrganisationNumber = organisationNumber;
     RequestedAmount    = requestedAmount;
 }
Beispiel #6
0
 public CreditRegistered(OrganisationNumber organisationNumber, Money loanAmount)
 {
     OrganisationNumber = organisationNumber;
     LoanAmount         = loanAmount;
 }
 public GetCreditsByOrganisationNumber(OrganisationNumber organisationNumber)
 {
     OrganisationNumber = organisationNumber;
 }