コード例 #1
0
        public async Task UpdateSingleField_WithDeltaUpdateStrategy_Success()
        {
            var initialAddressInstance = new AddressAggregate
            {
                HouseNumber = "40",
                Street      = "Grove Street",
                Town        = "Manchester",
                Postcode    = "M1 1AA"
            };

            var initialUnitOfWork = new AddressUnitOfWork(Database, CollectionName);

            initialUnitOfWork.Addresses.Add(initialAddressInstance);
            await initialUnitOfWork.CommitAsync();

            var outerUpdateUnitOfWork = new AddressUnitOfWork(Database, CollectionName);
            var innerUpdateUnitOfWork = new AddressUnitOfWork(Database, CollectionName);
            var outerUpdateInstance   =
                await outerUpdateUnitOfWork.Addresses.QuerySingleAsync(a => a.Id == initialAddressInstance.Id);

            var innerUpdateInstance =
                await outerUpdateUnitOfWork.Addresses.QuerySingleAsync(a => a.Id == initialAddressInstance.Id);

            innerUpdateInstance.HouseNumber = "30";
            await innerUpdateUnitOfWork.CommitAsync();

            outerUpdateInstance.Street = "Wood Avenue";
            await outerUpdateUnitOfWork.CommitAsync();

            var result = await initialUnitOfWork.Addresses.QuerySingleAsync(a => a.Id == initialAddressInstance.Id);

            Assert.AreEqual("30", result.HouseNumber);
            Assert.AreEqual("Wood Avenue", result.Street);
        }
コード例 #2
0
ファイル: CustomerForm.cs プロジェクト: Djcoyer/Software-2
        private int UpdateAddress()
        {
            address address;
            var     addressAggregate = new AddressAggregate()
            {
                Address1    = customer.Address1,
                Address2    = customer.Address2,
                PostalCode  = customer.PostalCode,
                CountryName = customer.Country,
                CityName    = customer.City,
                Phone       = customer.Phone
            };

            try
            {
                address = addressService.FindByAddressAndPostalCode(addressAggregate.Address1, addressAggregate.Address2, addressAggregate.PostalCode);
                addressAggregate.CityId    = address.cityId;
                addressAggregate.AddressId = address.addressId;
                addressService.UpdateAddress(addressAggregate);
            }
            catch (NotFoundException e)
            {
                addressService.addNewAddress(addressAggregate);
                address = addressService.FindByAddressAndPostalCode(addressAggregate.Address1, addressAggregate.Address2, addressAggregate.PostalCode);
            }

            return(address.addressId);
        }
コード例 #3
0
        protected virtual void Add(Person person)
        {
            var aggregate        = new PersonAggregate(person);
            var nameAggregate    = new NameAggregate(person.Name, person.Id);
            var addressAggregate = new AddressAggregate(person.Address, person.Id);

            context.Set <PersonAggregate>().Add(aggregate);
            context.Set <NameAggregate>().Add(nameAggregate);
            context.Set <AddressAggregate>().Add(addressAggregate);
        }
コード例 #4
0
 private void ValidateAddressAggregate(AddressAggregate addressAggregate)
 {
     if (String.IsNullOrEmpty(addressAggregate.CityName))
     {
         throw new InvalidInputException("Must include city value");
     }
     if (String.IsNullOrEmpty(addressAggregate.CountryName))
     {
         throw new InvalidInputException("Must include country value");
     }
     if (String.IsNullOrEmpty(addressAggregate.Address1))
     {
         throw new InvalidInputException("Must include address value");
     }
     if (String.IsNullOrEmpty(addressAggregate.PostalCode))
     {
         throw new InvalidInputException("Must include postal code value");
     }
     if (String.IsNullOrEmpty(addressAggregate.Phone))
     {
         throw new InvalidInputException("Must include phone number value");
     }
 }
コード例 #5
0
        public void UpdateAddress(AddressAggregate addressAggregate)
        {
            var countryId = GetUpdatedCountryId(addressAggregate.CountryName);
            var cityId    = GetUpdatedCityId(addressAggregate.CityId, addressAggregate.CityName, countryId);

            var existingAddress = FindByAddressAndPostalCode(addressAggregate.Address1, addressAggregate.Address2, addressAggregate.PostalCode);

            var address = new address()
            {
                cityId       = cityId,
                address1     = addressAggregate.Address1,
                address2     = addressAggregate.Address2,
                addressId    = addressAggregate.AddressId,
                phone        = addressAggregate.Phone,
                postalCode   = addressAggregate.PostalCode,
                createdBy    = existingAddress.createdBy,
                createDate   = existingAddress.createDate,
                lastUpdate   = DateTime.Now.ToUniversalTime(),
                lastUpdateBy = _authRepository.Username
            };

            _repository.Update(address, address.addressId);
        }
コード例 #6
0
ファイル: OrderService.cs プロジェクト: NisanurBulut/Camekan
        public async Task <OrderEntity> CreateOrderAsync(string buyerEmail, int deliveryMethodId, string basketId, AddressAggregate shippingAddress)
        {
            // get basket from the repo
            var basket = await _basketRepo.GetBasketAsync(basketId);

            // get items from product repo
            var items = new List <OrderItemEntity>();

            foreach (var item in basket.Items)
            {
                var productItem = await _unitOfWork.Repository <ProductEntity>().GetByIdAsync(item.Id);

                var itemOrdered = new ProductItemOrdered(productItem.Name, productItem.Id, productItem.PictureUrl);
                var orderItem   = new OrderItemEntity(itemOrdered, productItem.Price, item.Quantity);
                items.Add(orderItem);
            }

            // get delivery method from the repo
            var deliveryMethod = await _unitOfWork.Repository <DeliveryMethodEntity>().GetByIdAsync(deliveryMethodId);

            // calculate subtotal
            var subTotal = items.Sum(a => a.Price * a.Quantity);

            // check to see if order is exists
            var spec          = new OrderByPaymentIntentIdSpecification(basket.PaymentIntentId);
            var existingOrder = await _unitOfWork.Repository <OrderEntity>().GetEntityWithSpec(spec);

            if (existingOrder != null)
            {
                _unitOfWork.Repository <OrderEntity>().Delete(existingOrder);
                await _paymentService.CreateOrUpdatePaymentIntent(basket.PaymentIntentId);
            }

            // create order
            var order = new OrderEntity(items, buyerEmail, deliveryMethod, shippingAddress, subTotal, basket.PaymentIntentId);

            _unitOfWork.Repository <OrderEntity>().Add(order);

            // save to db
            var result = await _unitOfWork.Complete();

            // return order
            if (result <= 0)
            {
                return(null);
            }


            return(order);
        }
コード例 #7
0
 private static async Task UpdateOrInsertAggregateAsync(IDbConnection sqlCon, IDbTransaction trans, AddressAggregate addAgg, bool isInsert)
 {
     await sqlCon.ExecuteAsync(isInsert?AddressAggregateInsertSql : AddressAggregateUpdateSql, new
     {
         addAgg.AddressId,
         addAgg.LastBlockHeight,
         addAgg.Balance,
         addAgg.ReceivedAmount,
         addAgg.ReceivedCount,
         addAgg.SentAmount,
         addAgg.SentCount,
         UpdatedOn = DateTime.Now
     }, trans);
 }
コード例 #8
0
        public void addNewAddress(AddressAggregate addressAggregate)
        {
            ValidateAddressAggregate(addressAggregate);
            var username = _authRepository.Username;

            try
            {
                var existingAddress = FindByAddressAndPostalCode(addressAggregate.Address1, addressAggregate.Address2, addressAggregate.PostalCode);
                //Already exists
                throw new DataIntegrityViolationException("Address already exists");
            }
            catch (NotFoundException e)
            {
                try
                {
                    var country = countryService.findByName(addressAggregate.CountryName);
                    addressAggregate.CountryId = country.countryId;
                }
                catch (NotFoundException ex)
                {
                    countryService.add(new country()
                    {
                        country1     = addressAggregate.CountryName,
                        lastUpdate   = DateTime.Now.ToUniversalTime(),
                        createdBy    = username,
                        lastUpdateBy = username,
                        createDate   = DateTime.Now.ToUniversalTime()
                    });

                    var country = countryService.findByName(addressAggregate.CountryName);
                    addressAggregate.CountryId = country.countryId;
                }


                try
                {
                    var city = cityService.findByNameAndCountryId(addressAggregate.CityName, addressAggregate.CountryId);
                    addressAggregate.CityId = city.cityId;
                }
                catch (NotFoundException ex)
                {
                    cityService.add(new city()
                    {
                        countryId    = addressAggregate.CountryId,
                        city1        = addressAggregate.CityName,
                        lastUpdateBy = username,
                        createdBy    = username,
                        createDate   = DateTime.Now.ToUniversalTime(),
                        lastUpdate   = DateTime.Now.ToUniversalTime()
                    });

                    var city = cityService.findByNameAndCountryId(addressAggregate.CityName, addressAggregate.CountryId);
                    addressAggregate.CityId = city.cityId;
                }

                _repository.Add(new address()
                {
                    cityId       = addressAggregate.CityId,
                    address1     = addressAggregate.Address1,
                    address2     = addressAggregate.Address2,
                    createDate   = DateTime.Now.ToUniversalTime(),
                    lastUpdate   = DateTime.Now.ToUniversalTime(),
                    createdBy    = username,
                    lastUpdateBy = username,
                    phone        = addressAggregate.Phone,
                    postalCode   = addressAggregate.PostalCode
                });
            }
        }