コード例 #1
0
ファイル: Company.cs プロジェクト: yersans/Merp
            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);
            }
コード例 #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);
        }
コード例 #3
0
ファイル: Company.cs プロジェクト: zszqwe/Merp
            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);
            }
コード例 #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();
            }
        }
コード例 #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);
            }
コード例 #6
0
 /// <summary>
 /// <see cref="IHandleEvent{TEvent}.Handle(TEvent)"/>
 /// </summary>
 /// <param name="event"></param>
 public void Handle(CompanyRegisteredEvent @event)
 {
     try
     {
         EventStore.Save(@event);
     }
     catch
     {
         throw;
     }
 }
コード例 #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());
        }
コード例 #8
0
ファイル: Company.cs プロジェクト: emanbuc/M.NetAAE2
            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);
            }
コード例 #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);
        }
コード例 #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);
            }
コード例 #11
0
ファイル: Company.cs プロジェクト: mtemel123/Merp
            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);
            }
コード例 #12
0
 public void Apply(CompanyRegisteredEvent evt)
 {
     Id          = evt.CompanyId;
     CompanyName = evt.CompanyName;
     VatIndex    = evt.VatIndex;
 }
コード例 #13
0
ファイル: Company.cs プロジェクト: stalla/NAAE
 public void Apply(CompanyRegisteredEvent evt)
 {
     this.Id          = evt.CompanyId;
     this.CompanyName = evt.CompanyName;
     this.VatIndex    = evt.VatIndex;
 }