Exemple #1
0
            public static Company CreateNewEntryByImport(Guid companyId, string companyName, string vatNumber, string nationalIdentificationNumber, string legalAddressAddress, string legalAddressCity, string legalAddressPostalCode, string legalAddressProvince, string legalAddressCountry)
            {
                if (string.IsNullOrWhiteSpace(companyName))
                {
                    throw new ArgumentException("The company name must be specified", nameof(companyName));
                }
                if (string.IsNullOrWhiteSpace(vatNumber))
                {
                    throw new ArgumentException("The VAT number must be specified", nameof(vatNumber));
                }
                if (string.IsNullOrEmpty(legalAddressAddress) && (!string.IsNullOrEmpty(legalAddressCity) || !string.IsNullOrEmpty(legalAddressCountry)))
                {
                    throw new ArgumentException("address must be specified when city and country are also specified", nameof(legalAddressAddress));
                }
                if (string.IsNullOrEmpty(legalAddressCity) && (!string.IsNullOrEmpty(legalAddressAddress) || !string.IsNullOrEmpty(legalAddressCountry)))
                {
                    throw new ArgumentException("city must be specified when address and country are also specified", nameof(legalAddressCity));
                }
                if (string.IsNullOrEmpty(legalAddressCountry) && (!string.IsNullOrEmpty(legalAddressAddress) || !string.IsNullOrEmpty(legalAddressCity)))
                {
                    throw new ArgumentException("country must be specified when address and country are also specified", nameof(legalAddressCountry));
                }
                if (!PostalAddressHelper.IsValidAddress(legalAddressAddress, legalAddressCity, legalAddressPostalCode, legalAddressProvince, legalAddressCountry))
                {
                    throw new ArgumentException("legal address must either be empty or comprehensive of both address and city");
                }
                var p = new Company();
                var e = new CompanyRegisteredEvent(companyId, companyName, vatNumber, nationalIdentificationNumber, legalAddressAddress, legalAddressCity, legalAddressPostalCode, legalAddressProvince, legalAddressCountry);

                p.RaiseEvent(e);
                return(p);
            }
Exemple #2
0
        /// <summary>
        /// Implementation of <see cref="ICustomerCommands.RegisterNewCompany(string, string, string)"/>
        /// </summary>
        /// <param name="companyName">The company name</param>
        /// <param name="vatNumber">The company vat number</param>
        /// <param name="nationalIdentificationNumber">The company national identification number</param>
        /// <returns></returns>
        public async Task RegisterNewCompany(string companyName, string vatNumber, string nationalIdentificationNumber)
        {
            if (string.IsNullOrWhiteSpace(companyName))
            {
                throw new ArgumentException("value cannot be empty", nameof(companyName));
            }

            if (string.IsNullOrWhiteSpace(vatNumber))
            {
                throw new ArgumentException("value cannot be empty", nameof(vatNumber));
            }

            var company = Company.Register(companyName, vatNumber);

            if (!string.IsNullOrWhiteSpace(nationalIdentificationNumber))
            {
                company.SetNationalIdentificationNumber(nationalIdentificationNumber);
            }

            Repository.Add(company);
            await Repository.SaveChangesAsync();

            var @event = new CompanyRegisteredEvent(company.Id, companyName, vatNumber);

            EventBus.RaiseEvent(@event);
        }
Exemple #3
0
            public static Company CreateNewEntry(string companyName, string vatNumber, string nationalIdentificationNumber,
                                                 string legalAddressAddress, string legalAddressCity, string legalAddressPostalCode, string legalAddressProvince, string legalAddressCountry,
                                                 string billingAddressAddress, string billingAddressCity, string billingAddressPostalCode, string billingAddressProvince, string billingAddressCountry,
                                                 string shippingAddressAddress, string shippingAddressCity, string shippingAddressPostalCode, string shippingAddressProvince, string shippingAddressCountry, Guid userId)
            {
                if (string.IsNullOrWhiteSpace(companyName))
                {
                    throw new ArgumentException("The company name must be specified", nameof(companyName));
                }

                if (string.IsNullOrWhiteSpace(nationalIdentificationNumber) && string.IsNullOrWhiteSpace(vatNumber))
                {
                    throw new ArgumentException("Either the VAT number or the NIN must be specified", nameof(vatNumber));
                }

                var companyId = Guid.NewGuid();
                var p         = new Company();
                var e         = new CompanyRegisteredEvent(companyId, DateTime.Now, companyName, vatNumber, nationalIdentificationNumber,
                                                           legalAddressAddress, legalAddressCity, legalAddressPostalCode, legalAddressProvince, legalAddressCountry,
                                                           billingAddressAddress, billingAddressCity, billingAddressPostalCode, billingAddressProvince, billingAddressCountry,
                                                           shippingAddressAddress, shippingAddressCity, shippingAddressPostalCode, shippingAddressProvince, shippingAddressCountry, userId);

                p.RaiseEvent(e);
                return(p);
            }
Exemple #4
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();
            }
        }
Exemple #5
0
            public static Company CreateNewEntry(string companyName, string vatIndex)
            {
                var p = new Company();
                var e = new CompanyRegisteredEvent(Guid.NewGuid(), companyName, vatIndex);

                p.RaiseEvent(e);
                return(p);
            }
 /// <summary>
 /// <see cref="IHandleEvent{TEvent}.Handle(TEvent)"/>
 /// </summary>
 /// <param name="event"></param>
 public void Handle(CompanyRegisteredEvent @event)
 {
     try
     {
         EventStore.Save(@event);
     }
     catch
     {
         throw;
     }
 }
Exemple #7
0
        public void ToString_Should_Return_Event_Formatted_As_String()
        {
            Guid   companyId   = Guid.NewGuid();
            string companyName = "company";
            string vatNumber   = "1234567890";

            var ev = new CompanyRegisteredEvent(companyId, companyName, vatNumber);

            string eventAsString = $"Company {companyName}, VAT {vatNumber} registered";

            Assert.Equal(eventAsString, ev.ToString());
        }
Exemple #8
0
            public static Company CreateNewEntry(string companyName, string vatIndex)
            {
                var p = new Company()
                {
                    Id          = Guid.NewGuid(),
                    CompanyName = companyName,
                    VatIndex    = vatIndex
                };
                var e = new CompanyRegisteredEvent(p.Id, p.CompanyName, p.VatIndex);

                p.RaiseEvent(e);
                return(p);
            }
Exemple #9
0
        public void Ctor_Should_Set_All_Values_Correctly()
        {
            Guid   companyId   = Guid.NewGuid();
            string companyName = "company";
            string vatNumber   = "1234567890";

            var ev = new CompanyRegisteredEvent(companyId, companyName, vatNumber);

            Assert.Equal(companyId, ev.CompanyId);
            Assert.Equal(companyName, ev.CompanyName);
            Assert.Equal(vatNumber, ev.VatNumber);

            Assert.Equal(companyId, ev.AggregateId);
            Assert.Equal(typeof(Registries.Models.Customer), ev.AggregateType);
            Assert.Equal(DateTime.Today, ev.FiredOn.Date);
        }
Exemple #10
0
            public static Company CreateNewEntryByImport(Guid companyId, string companyName, string vatNumber, string nationalIdentificationNumber)
            {
                if (string.IsNullOrWhiteSpace(companyName))
                {
                    throw new ArgumentException("The company name must be specified", nameof(companyName));
                }
                if (string.IsNullOrWhiteSpace(vatNumber))
                {
                    throw new ArgumentException("The VAT number must be specified", nameof(vatNumber));
                }

                var p = new Company();
                var e = new CompanyRegisteredEvent(companyId, companyName, vatNumber, nationalIdentificationNumber);

                p.RaiseEvent(e);
                return(p);
            }
Exemple #11
0
            public static Company CreateNewEntry(string companyName, string vatIndex)
            {
                if (string.IsNullOrWhiteSpace(companyName))
                {
                    throw new ArgumentException("The company name must be specified", nameof(companyName));
                }
                if (string.IsNullOrWhiteSpace(vatIndex))
                {
                    throw new ArgumentException("The VAT index must be specified", nameof(vatIndex));
                }

                var p = new Company();
                var e = new CompanyRegisteredEvent(Guid.NewGuid(), companyName, vatIndex);

                p.RaiseEvent(e);
                return(p);
            }
Exemple #12
0
 public void Apply(CompanyRegisteredEvent evt)
 {
     Id          = evt.CompanyId;
     CompanyName = evt.CompanyName;
     VatIndex    = evt.VatIndex;
 }
Exemple #13
0
 public void Apply(CompanyRegisteredEvent evt)
 {
     this.Id          = evt.CompanyId;
     this.CompanyName = evt.CompanyName;
     this.VatIndex    = evt.VatIndex;
 }