コード例 #1
0
        public void SetUp()
        {
            this.salesAccountUpdateResource = new SalesAccountUpdateResource
            {
                TurnoverBandUri               = "/tb/10",
                DiscountSchemeUri             = "/ds/10",
                EligibleForGoodCreditDiscount = true
            };

            this.salesAccount = new SalesAccount(new SalesAccountCreateActivity("/employees/100", 1, "name"))
            {
                Id = 111
            };

            this.discountScheme = new DiscountScheme {
                DiscountSchemeUri = "/ds/10", TurnoverBandUris = new[] { "/tb/10" }
            };
            this.DiscountingService.GetDiscountScheme(this.salesAccountUpdateResource.DiscountSchemeUri)
            .Returns(this.discountScheme);
            this.SalesAccountRepository.GetById(111).Returns(this.salesAccount);

            this.Response = this.Browser.Put(
                "/sales/accounts/111",
                with =>
            {
                with.Header("Accept", "application/json");
                with.Header("Content-Type", "application/json");
                with.JsonBody(this.salesAccountUpdateResource);
            }).Result;
        }
コード例 #2
0
 public void SetUp()
 {
     this.DiscountingService.GetDiscountScheme("/ds/1").Returns((DiscountScheme)null);
     this.updateResource = new SalesAccountUpdateResource
     {
         DiscountSchemeUri             = "/ds/1",
         TurnoverBandUri               = "/tb/1",
         EligibleForGoodCreditDiscount = true
     };
     this.Result = this.Sut.UpdateSalesAccount(1, this.updateResource, "/employees/100");
 }
コード例 #3
0
        public IResult <SalesAccount> UpdateSalesAccount(
            int salesAccountId,
            SalesAccountUpdateResource updateResource,
            string updatedByUri)
        {
            var account = this.salesAccountRepository.GetById(salesAccountId);

            if (account == null)
            {
                return(new NotFoundResult <SalesAccount>());
            }

            var discountScheme = this.discountingService.GetDiscountScheme(updateResource.DiscountSchemeUri);

            if (!string.IsNullOrEmpty(updateResource.DiscountSchemeUri) && discountScheme == null)
            {
                return(new BadRequestResult <SalesAccount>($"Could not find discount scheme {updateResource.DiscountSchemeUri}"));
            }

            try
            {
                account.UpdateAccount(
                    updatedByUri,
                    discountScheme,
                    updateResource.TurnoverBandUri,
                    updateResource.EligibleForGoodCreditDiscount,
                    updateResource.EligibleForRebate,
                    updateResource.GrowthPartner);

                this.transactionManager.Commit();
                this.salesAccountUpdatedDispatcher.SendSalesAccountUpdated(account.ToMessage());
            }
            catch (InvalidTurnoverBandException exception)
            {
                return(new BadRequestResult <SalesAccount>(exception.Message));
            }

            return(new SuccessResult <SalesAccount>(account));
        }