예제 #1
0
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, RegistryDbContext dc, UserManager <ApplicationUser> userManager, RoleManager <ApplicationRole> roleManager)
        {
            // Configure database
            this.ConfigureDatabase(dc, userManager, roleManager).Wait();

            // Configure middleware
            app.UseRequestLocalization(new RequestLocalizationOptions {
                SupportedCultures   = { new CultureInfo("cs-CZ") },
                SupportedUICultures = { new CultureInfo("cs-CZ") }
            });
            if (env.IsDevelopment())
            {
                // Development
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
                app.UseStaticFiles();
            }
            else
            {
                // Production
                app.UseStaticFiles(new StaticFileOptions {
                    OnPrepareResponse = context => {
                        context.Context.Response.Headers.Add("Cache-Control", "public,max-age=31536000");
                    }
                });
            }
            app.UseAuthentication();
            app.UseMvc();
        }
            public async Task Returns_Item_With_All_Properties_When_Service_Exists()
            {
                var serviceModel = new Service
                {
                    ServiceId   = "Returns_Item_With_All_Properties_When_Service_Exists",
                    DisplayName = "Test Service",
                    Endpoints   = new[] { new Uri("http://myservice1-qa.com") },
                    IpAddresses = new[] { "10.10.0.1" },
                    PublicUrls  = new[] { new Uri("http://myservice-qa.com") }
                };

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    context.Services.Add(serviceModel.ToEntity());
                    context.SaveChanges();
                }

                Service service;

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var store = new ServiceStore(context, new Mock <ILogger <ServiceStore> >().Object);
                    service = await store.FindByServiceIdAsync(serviceModel.ServiceId);
                }

                service.Should().NotBeNull();
                service.ServiceId.Should().Be(serviceModel.ServiceId);
                service.DisplayName.Should().Be(serviceModel.DisplayName);
                service.Endpoints.Should().HaveCount(1);
                service.Endpoints[0].Should().Be(serviceModel.Endpoints[0]);
                service.IpAddresses.Should().HaveCount(1);
                service.IpAddresses[0].Should().Be(serviceModel.IpAddresses[0]);
                service.PublicUrls.Should().HaveCount(1);
                service.PublicUrls[0].Should().Be(serviceModel.PublicUrls[0]);
            }
예제 #3
0
        public async Task Handle(PartyBillingAddressChangedEvent message)
        {
            if (message.EffectiveDate > DateTime.UtcNow)
            {
                await _bus.Defer(message.EffectiveDate - DateTime.UtcNow, message);

                return;
            }
            using (var context = new RegistryDbContext())
            {
                var billingAddress = new PostalAddress()
                {
                    Address    = message.Address,
                    City       = message.City,
                    Country    = message.Country,
                    PostalCode = message.PostalCode,
                    Province   = message.Province
                };
                var party = (from c in context.Parties
                             where c.OriginalId == message.PartyId
                             select c).Single();
                party.BillingAddress = billingAddress;

                await context.SaveChangesAsync();
            }
        }
예제 #4
0
        public async Task Handle(PersonRegisteredEvent message)
        {
            var p = new Person()
            {
                FirstName   = message.FirstName,
                LastName    = message.LastName,
                OriginalId  = message.PersonId,
                DisplayName = $"{message.FirstName} {message.LastName}",
                NationalIdentificationNumber = message.NationalIdentificationNumber,
                VatIndex     = message.VatNumber,
                LegalAddress = new PostalAddress
                {
                    Address    = message.LegalAddressAddress,
                    City       = message.LegalAddressCity,
                    Country    = message.LegalAddressCountry,
                    PostalCode = message.LegalAddressPostalCode,
                    Province   = message.LegalAddressProvince
                },
                //ContactInfo = new ContactInfo
                //{
                PhoneNumber      = message.PhoneNumber,
                MobileNumber     = message.MobileNumber,
                FaxNumber        = message.FaxNumber,
                WebsiteAddress   = message.WebsiteAddress,
                EmailAddress     = message.EmailAddress,
                InstantMessaging = message.InstantMessaging
                                   //}
            };

            using (var context = new RegistryDbContext(Options))
            {
                context.People.Add(p);
                await context.SaveChangesAsync();
            }
        }
            public async Task Saves_New_Item()
            {
                var model = new Service
                {
                    ServiceId   = "Saves_New_Item",
                    DisplayName = "Test Service",
                    Endpoints   = new[] { new Uri("http://myservice01-qa.com") },
                    PublicUrls  = new[] { new Uri("http://myservice-qa.com") },
                    IpAddresses = new[] { "10.10.0.1" }
                };

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var store = new ServiceStore(context, new Mock <ILogger <ServiceStore> >().Object);
                    await store.StoreAsync(model);
                }

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var service = context.CreateServiceQuery().SingleOrDefault(s => s.ServiceId == model.ServiceId);
                    service.Should().NotBeNull();

                    service.ServiceId.Should().Be(model.ServiceId);
                    service.DisplayName.Should().Be(model.DisplayName);
                    service.Endpoints.Should().HaveCount(1);
                    service.Endpoints[0].EndpointUri.Should().Be(model.Endpoints[0].ToString());
                    service.IpAddresses.Should().HaveCount(1);
                    service.IpAddresses[0].IpAddress.Should().Be(model.IpAddresses[0]);
                    service.PublicUrls.Should().HaveCount(1);
                    service.PublicUrls[0].Url.Should().Be(model.PublicUrls[0].ToString());
                }
            }
예제 #6
0
        public async Task Handle(CompanyRegisteredEvent message)
        {
            var p = new Company()
            {
                CompanyName = message.CompanyName,
                VatIndex    = message.VatIndex,
                OriginalId  = message.CompanyId,
                DisplayName = message.CompanyName,
                NationalIdentificationNumber = message.NationalIdentificationNumber ?? "",
                LegalAddress = new PostalAddress
                {
                    Address    = message.LegalAddressAddress,
                    City       = message.LegalAddressCity,
                    Country    = message.LegalAddressCountry,
                    PostalCode = message.LegalAddressPostalCode,
                    Province   = message.LegalAddressProvince
                },
                ShippingAddress = new PostalAddress(),
                BillingAddress  = new PostalAddress(),
                ContactInfo     = new ContactInfo()
            };

            using (var context = new RegistryDbContext())
            {
                context.Parties.Add(p);
                await context.SaveChangesAsync();
            }
        }
            public async Task Updates_DisplayName_On_Existing_Item()
            {
                var model = new Service
                {
                    ServiceId   = "Updates_DisplayName_On_Existing_Item",
                    DisplayName = "Test Service"
                };

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    context.Services.Add(model.ToEntity());
                    context.SaveChanges();
                }

                model.DisplayName = "New name";

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var store = new ServiceStore(context, new Mock <ILogger <ServiceStore> >().Object);
                    await store.StoreAsync(model);
                }

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var item = context.CreateServiceQuery().SingleOrDefault(s => s.ServiceId == model.ServiceId);
                    item.Should().NotBeNull();
                    item.DisplayName.Should().Be(model.DisplayName);
                }
            }
            public async Task Updates_Endpoints_On_Existing_Item()
            {
                var model = new Service
                {
                    ServiceId   = "Updates_Endpoints_On_Existing_Item",
                    DisplayName = "Test Service",
                    Endpoints   = new[] { new Uri("http://myservice01-qa.com") }
                };

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    context.Services.Add(model.ToEntity());
                    context.SaveChanges();
                }

                model.Endpoints = new[] { new Uri("http://myservice01-qa.com"), new Uri("http://myservice02-qa.com") };

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var store = new ServiceStore(context, new Mock <ILogger <ServiceStore> >().Object);
                    await store.StoreAsync(model);
                }

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var item = context.CreateServiceQuery().SingleOrDefault(s => s.ServiceId == model.ServiceId);
                    item.Should().NotBeNull();
                    item.Endpoints.Should().HaveCount(2);
                }
            }
예제 #9
0
 public async Task Handle(ContactInfoSetForPartyEvent message)
 {
     using (var context = new RegistryDbContext(Options))
     {
         //var contactInfo = new ContactInfo()
         //{
         //    PhoneNumber = message.PhoneNumber,
         //    MobileNumber = message.MobileNumber,
         //    FaxNumber = message.FaxNumber,
         //    WebsiteAddress = message.WebsiteAddress,
         //    EmailAddress = message.EmailAddress,
         //    InstantMessaging = message.InstantMessaging
         //};
         var party = (from c in context.Parties
                      where c.OriginalId == message.PartyId
                      select c).Single();
         //party.ContactInfo = contactInfo;
         party.PhoneNumber      = message.PhoneNumber;
         party.MobileNumber     = message.MobileNumber;
         party.FaxNumber        = message.FaxNumber;
         party.WebsiteAddress   = message.WebsiteAddress;
         party.EmailAddress     = message.EmailAddress;
         party.InstantMessaging = message.InstantMessaging;
         await context.SaveChangesAsync();
     }
 }
            public async Task Returns_All_Items()
            {
                var model1 = new Service
                {
                    ServiceId   = "AllItem1",
                    DisplayName = "Test Service"
                };

                var model2 = new Service
                {
                    ServiceId   = "AllItem2",
                    DisplayName = "Test Service 2"
                };

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    context.Services.RemoveRange(context.Services.ToArray());
                    context.Services.Add(model1.ToEntity());
                    context.Services.Add(model2.ToEntity());
                    context.SaveChanges();
                }

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var store    = new ServiceStore(context, new Mock <ILogger <ServiceStore> >().Object);
                    var services = (await store.GetAllAsync()).ToList();

                    services.Should().HaveCount(2);
                    services[0].ServiceId.Should().Be(model1.ServiceId);
                    services[0].DisplayName.Should().Be(model1.DisplayName);
                    services[1].ServiceId.Should().Be(model2.ServiceId);
                    services[1].DisplayName.Should().Be(model2.DisplayName);
                }
            }
            public async Task Removes_Existing_Item()
            {
                var model = new Service
                {
                    ServiceId   = "Removes_Existing_Item",
                    DisplayName = "Test Service"
                };

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    context.Services.Add(model.ToEntity());
                    context.SaveChanges();
                }

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var store = new ServiceStore(context, new Mock <ILogger <ServiceStore> >().Object);
                    await store.RemoveAsync(model.ServiceId);
                }

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    context.Services.SingleOrDefault(s => s.ServiceId == model.ServiceId).Should().BeNull();
                }
            }
예제 #12
0
        public async Task Handle(CompanyRegisteredEvent message)
        {
            var p = new Party()
            {
                DisplayName = message.CompanyName,
                VatIndex    = message.VatIndex,
                OriginalId  = message.CompanyId,
                NationalIdentificationNumber = message.NationalIdentificationNumber ?? "",
                Type         = Party.PartyType.Company,
                LegalAddress = new PostalAddress
                {
                    Address    = message.LegalAddressAddress,
                    City       = message.LegalAddressCity,
                    Country    = message.LegalAddressCountry,
                    PostalCode = message.LegalAddressPostalCode,
                    Province   = message.LegalAddressProvince
                }
            };

            using (var context = new RegistryDbContext(Options))
            {
                context.Parties.Add(p);
                await context.SaveChangesAsync();
            }
        }
예제 #13
0
        public async Task Handle(CompanyRegisteredEvent message)
        {
            var p = new Company()
            {
                CompanyName = message.CompanyName,
                VatIndex    = message.VatIndex,
                OriginalId  = message.CompanyId,
                NationalIdentificationNumber = message.NationalIdentificationNumber ?? ""
                                               //LegalAddress = new PostalAddress
                                               //{
                                               //    Address = message.LegalAddressAddress,
                                               //    City = message.LegalAddressCity,
                                               //    Country = message.LegalAddressCountry,
                                               //    PostalCode = message.LegalAddressPostalCode,
                                               //    Province = message.LegalAddressProvince
                                               //},
                                               //ShippingAddress = new PostalAddress(),
                                               //BillingAddress = new PostalAddress(),
                                               //ContactInfo = new ContactInfo()
            };

            using (var context = new RegistryDbContext(Options))
            {
                context.Companies.Add(p);
                await context.SaveChangesAsync();
            }
        }
예제 #14
0
 public CreateApiHandler(RegistryDbContext context,
                         IMediator mediator,
                         IConfiguration configuration)
 {
     _context       = context;
     _mediator      = mediator;
     _configuration = configuration;
 }
예제 #15
0
        public async Task Handle(PartyUnlistedEvent message)
        {
            using (var context = new RegistryDbContext(Options))
            {
                var party = context.Parties.Single(p => p.OriginalId == message.PartyId);
                party.Unlisted = true;

                await context.SaveChangesAsync();
            }
        }
            public void Does_Not_Throw_On_NonExisting_Item()
            {
                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var         store  = new ServiceStore(context, new Mock <ILogger <ServiceStore> >().Object);
                    Func <Task> action = async() => await store.RemoveAsync("anyserviceid");

                    action.Should().NotThrow();
                }
            }
예제 #17
0
        public async Task Handle(CompanyNameChangedEvent message)
        {
            using (var context = new RegistryDbContext(Options))
            {
                var company = (from c in context.Companies
                               where c.OriginalId == message.CompanyId
                               select c).Single();
                company.CompanyName = message.CompanyName;

                await context.SaveChangesAsync();
            }
        }
            public async Task Returns_Null_When_Service_Not_Exists()
            {
                Service service;

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var store = new ServiceStore(context, new Mock <ILogger <ServiceStore> >().Object);
                    service = await store.FindByServiceIdAsync("someServiceId");
                }

                service.Should().BeNull();
            }
예제 #19
0
        public async Task Handle(CompanyNameChangedEvent message)
        {
            using (var context = new RegistryDbContext())
            {
                var company = (from c in context.Parties.OfType <Company>()
                               where c.OriginalId == message.CompanyId
                               select c).Single();
                company.DisplayName = message.CompanyName;
                company.CompanyName = message.CompanyName;

                await context.SaveChangesAsync();
            }
        }
예제 #20
0
        public async Task Handle(CompanyMainContactAssociatedEvent message)
        {
            using (var context = new RegistryDbContext())
            {
                var company = (from c in context.Parties.OfType <Company>()
                               where c.OriginalId == message.CompanyId
                               select c).Single();
                var person = (from c in context.Parties.OfType <Person>()
                              where c.OriginalId == message.MainContactId
                              select c).Single();
                company.MainContact = person;

                await context.SaveChangesAsync();
            }
        }
예제 #21
0
        public async Task Handle(CompanyMainContactAssociatedEvent message)
        {
            using (var context = new RegistryDbContext(Options))
            {
                var company = (from c in context.Companies
                               where c.OriginalId == message.CompanyId
                               select c).Single();
                var person = (from c in context.People
                              where c.OriginalId == message.MainContactId
                              select c).Single();
                company.MainContact = $"{person.FirstName} {person.LastName}";

                await context.SaveChangesAsync();
            }
        }
예제 #22
0
        public void Handle(CompanyRegisteredEvent message)
        {
            var p = new Company()
            {
                CompanyName = message.CompanyName,
                VatIndex    = message.VatIndex,
                OriginalId  = message.CompanyId,
                DisplayName = message.CompanyName
            };

            using (var context = new RegistryDbContext())
            {
                context.Parties.Add(p);
                context.SaveChanges();
            }
        }
        public void Handle(PersonRegisteredEvent message)
        {
            var p = new Person()
            {
                FirstName   = message.FirstName,
                LastName    = message.LastName,
                OriginalId  = message.PersonId,
                DisplayName = $"{message.FirstName} {message.LastName}"
            };

            using (var context = new RegistryDbContext())
            {
                context.Parties.Add(p);
                context.SaveChanges();
            }
        }
예제 #24
0
        public async Task ConfigureDatabase(RegistryDbContext dc, UserManager <ApplicationUser> userManager, RoleManager <ApplicationRole> roleManager)
        {
            // Migrate database to latest version
            await dc.Database.MigrateAsync();

            // Configure identity
            void EnsureIdentitySuccess(IdentityResult result)
            {
                if (result == IdentityResult.Success)
                {
                    return;
                }
                var errors = string.Join(", ", result.Errors.Select(x => x.Description));

                throw new Exception("Identity operation failed: " + errors);
            }

            // Create roles
            async Task EnsureRoleCreated(string roleName)
            {
                if (await roleManager.FindByNameAsync(roleName) != null)
                {
                    return;
                }
                EnsureIdentitySuccess(await roleManager.CreateAsync(new ApplicationRole {
                    Name = roleName
                }));
            }

            await EnsureRoleCreated(ApplicationRole.AdministratorRoleName);
            await EnsureRoleCreated(ApplicationRole.OperatorRoleName);
            await EnsureRoleCreated(ApplicationRole.MonitorRoleName);

            // Create admin user
            if (!userManager.Users.Any())
            {
                var user = new ApplicationUser {
                    UserName = "******", DisplayName = "Správce systému"
                };
                EnsureIdentitySuccess(await userManager.CreateAsync(user, "pass.word123"));
                EnsureIdentitySuccess(await userManager.AddToRoleAsync(user, ApplicationRole.AdministratorRoleName));
            }
        }
예제 #25
0
        public async Task Handle(PartyLegalAddressChangedEvent message)
        {
            using (var context = new RegistryDbContext(Options))
            {
                var legalAddress = new PostalAddress()
                {
                    Address    = message.Address,
                    City       = message.City,
                    Country    = message.Country,
                    PostalCode = message.PostalCode,
                    Province   = message.Province
                };
                var party = (from c in context.Parties
                             where c.OriginalId == message.PartyId
                             select c).Single();
                party.LegalAddress = legalAddress;

                await context.SaveChangesAsync();
            }
        }
예제 #26
0
        public async Task Handle(ContactInfoSetForPartyEvent message)
        {
            using (var context = new RegistryDbContext())
            {
                var contactInfo = new ContactInfo()
                {
                    PhoneNumber      = message.PhoneNumber,
                    MobileNumber     = message.MobileNumber,
                    FaxNumber        = message.FaxNumber,
                    WebsiteAddress   = message.WebsiteAddress,
                    EmailAddress     = message.EmailAddress,
                    InstantMessaging = message.InstantMessaging
                };
                var party = (from c in context.Parties
                             where c.OriginalId == message.PartyId
                             select c).Single();
                party.ContactInfo = contactInfo;

                await context.SaveChangesAsync();
            }
        }
예제 #27
0
        public async Task Handle(PersonRegisteredEvent message)
        {
            var p = new Person()
            {
                FirstName   = message.FirstName,
                LastName    = message.LastName,
                OriginalId  = message.PersonId,
                DisplayName = $"{message.FirstName} {message.LastName}",
                NationalIdentificationNumber = message.NationalIdentificationNumber,
                VatIndex        = message.VatNumber,
                BillingAddress  = new PostalAddress(),
                LegalAddress    = new PostalAddress(),
                ShippingAddress = new PostalAddress(),
                ContactInfo     = new ContactInfo()
            };

            using (var context = new RegistryDbContext())
            {
                context.Parties.Add(p);
                await context.SaveChangesAsync();
            }
        }
예제 #28
0
        public async Task Handle(PersonRegisteredEvent message)
        {
            var p = new Person()
            {
                FirstName   = message.FirstName,
                LastName    = message.LastName,
                OriginalId  = message.PersonId,
                DisplayName = $"{message.FirstName} {message.LastName}",
                NationalIdentificationNumber = message.NationalIdentificationNumber,
                VatIndex = message.VatNumber
                           //LegalAddress = new PostalAddress
                           //{
                           //    Address = message.Address,
                           //    City = message.City,
                           //    Country = message.Country,
                           //    PostalCode = message.PostalCode,
                           //    Province = message.Province
                           //},
                           //ShippingAddress = new PostalAddress(),
                           //BillingAddress = new PostalAddress(),
                           //ContactInfo = new ContactInfo
                           //{
                           //    PhoneNumber = message.PhoneNumber,
                           //    MobileNumber = message.MobileNumber,
                           //    FaxNumber = message.FaxNumber,
                           //    WebsiteAddress = message.WebsiteAddress,
                           //    EmailAddress = message.EmailAddress,
                           //    InstantMessaging = message.InstantMessaging
                           //}
            };

            using (var context = new RegistryDbContext(Options))
            {
                context.People.Add(p);
                await context.SaveChangesAsync();
            }
        }
            public async Task Returns_Item_When_Service_Exists()
            {
                var serviceModel = new Service
                {
                    ServiceId   = "Returns_Item_When_Service_Exists",
                    DisplayName = "Test Service"
                };

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    context.Services.Add(serviceModel.ToEntity());
                    context.SaveChanges();
                }

                Service service;

                using (var context = new RegistryDbContext(DbContextOptions, StoreOptions))
                {
                    var store = new ServiceStore(context, new Mock <ILogger <ServiceStore> >().Object);
                    service = await store.FindByServiceIdAsync(serviceModel.ServiceId);
                }

                service.Should().NotBeNull();
            }
예제 #30
0
 public GetSubDomainHandler(RegistryDbContext context)
 {
     _context = context;
 }