Exemple #1
0
        public async Task <FileGiftAidDeclarationResponse> Handle(FileGiftAidDeclarationRequest request, CancellationToken cancellationToken)
        {
            ValidateRequest(request);

            var donation = request.Donation;

            var giftAidDeclaration = new GiftAidDeclaration
            {
                Id               = Guid.NewGuid(),
                DonationId       = donation.Id,
                DonationAmount   = donation.DonationAmount,
                GiftAidAmount    = donation.GiftAidAmount,
                GiftAidReference = donation.GiftAidReference,
                DonorDetails     = donation.DonorDetails,
                Created          = DateTimeOffset.Now
            };

            _logger.LogDebug("Filing Gift-Aid declaration with reference {GiftAidReference} for donation with id {DonationId}.", donation.GiftAidReference, request.Donation.Id);

            await _createGiftAidDeclarationCommand.Execute(giftAidDeclaration, cancellationToken);

            return(new FileGiftAidDeclarationResponse
            {
                Declaration = giftAidDeclaration,
            });
        }
Exemple #2
0
        public HttpResponseMessage UpdateGiftAidDeclaration(GiftAidDeclaration GiftAidDeclaration)
        {
            try
            {
                if (GiftAidDeclaration == null)
                {
                    return(new HttpResponseMessage(HttpStatusCode.BadRequest));
                }

                // Create the GiftAidDeclaration record in the Azure SQL DB:
                int GiftAidDeclarationResult = _GiftAidDeclarationWorker.UpdateCreate(GiftAidDeclaration);
                if (GiftAidDeclarationResult > 0)
                {
                    return(new HttpResponseMessage(HttpStatusCode.OK));
                }
                // Existed already:
                else if (GiftAidDeclarationResult == 0)
                {
                    return(new HttpResponseMessage(HttpStatusCode.OK));
                }

                return(new HttpResponseMessage(HttpStatusCode.OK));
            }
            catch (Exception e)
            {
                return(new HttpResponseMessage(HttpStatusCode.BadRequest));
            }
        }
Exemple #3
0
        public Task Execute(GiftAidDeclaration giftAidDeclaration, CancellationToken cancellationToken = default)
        {
            if (giftAidDeclaration == null)
            {
                throw new ArgumentNullException(nameof(giftAidDeclaration));
            }

            var collection = _db.GetCollection <GiftAidDeclaration>("gift-aid-declarations");

            collection.Insert(giftAidDeclaration);

            return(Task.CompletedTask);
        }
Exemple #4
0
        public GiftAidDeclarationBuilderBuilder()
        {
            var donation = new DonationModelBuilder().Build();

            _model = new GiftAidDeclaration
            {
                GiftAidAmount    = donation.GiftAidAmount,
                DonationAmount   = donation.DonationAmount,
                Created          = DateTimeOffset.Now,
                DonationId       = donation.Id,
                DonorDetails     = donation.DonorDetails,
                Id               = Guid.NewGuid(),
                GiftAidReference = donation.GiftAidReference
            };
        }
        public int CreateGiftAidDeclaration(string name, string postCode, double donationAmount)
        {
            using (var db = new LiteDatabase(_databaseConnectionString))
            {
                var declarations = db.GetCollection <GiftAidDeclaration>();

                var declaration = new GiftAidDeclaration
                {
                    Name           = name,
                    PostCode       = postCode,
                    DonationAmount = donationAmount
                };

                declarations.Insert(declaration); // LiteDB auto-increments the ID property of the object, resulting in a unique identifier.

                return(declaration.Id);
            }
        }
        public async Task <IActionResult> PostAsync([FromBody] GiftAidDeclarationRequest request)
        {
            Log.Information($"Received {nameof(GiftAidDeclarationRequest)}: {@request}", request);

            var validationResult = await _postCodeValidator.Validate(request.PostCode);

            if (!validationResult.result)
            {
                return(BadRequest(new { error = "Invalid PostCode" }));
            }

            await _giftAidRepository.CreateGiftAidDeclaration(request);

            var response = new GiftAidDeclaration
            {
                DeclarationId = request.DeclarationId,
                GiftAidAmount = _giftAidCalculator.Calculate(request.Amount)
            };

            return(new JsonResult(response));
        }
Exemple #7
0
 public GiftAidDeclarationBuilderBuilder With(GiftAidDeclaration model)
 {
     _model = model;
     return(this);
 }