Exemplo n.º 1
0
        public void Update(Voucher voucher)
        {
            var dataObject = dataAccess.Checkout(voucher.Id);

            try
            {
                // TODO: could check whether each property changes before updating...

                dataObject.Properties.Set(
                    VoucherAttributes.Dishonoured,
                    voucher.Dishonoured.ToString());

                // TODO: could also avoid update if nothing changes

                dataAccess.Checkin(dataObject);

                Log.Information("Repository updated.");
            }
            catch (Exception)
            {
                dataAccess.CancelCheckout(voucher.Id);
                throw;
            }
        }
Exemplo n.º 2
0
        public async Task<DishonourLetter> CreateLetterForVoucher(Voucher voucher, DateTime processingDate)
        {
            Log.Debug("Creating dishonours letter in Documentum");

            Guard.IsNotNull(voucher, "voucher");

            var fileName = DishonourLetter.GetFileName(                
                voucher.AuxiliaryDomestic,
                voucher.Bsb,
                voucher.AccountNumber,
                voucher.Amount,
                voucher.ProcessingDate);

            var letter = new DishonourLetter(
                fileName,
                DishonourLetterStatus.LetterRaised,
                processingDate);

            var letterPath = await Create(letter);

            LinkLetterToVoucher(letterPath, voucher, processingDate);

            return letter;
        }
Exemplo n.º 3
0
        private Voucher GetVoucherFromDataObject(DataObject dataObject, bool includeFile)
        {
            var voucherId = dataObject.Identity.GetValueAsString();

            var ad = GetAttribute(dataObject, VoucherAttributes.AuxiliaryDomestic);
            var bsb = GetAttribute(dataObject, VoucherAttributes.Bsb);
            var accnt = GetAttribute(dataObject, VoucherAttributes.AccountNumber);
            var amount = GetAttribute(dataObject, VoucherAttributes.Amount);

            var procdate = GetDateTimeAttribute(dataObject, VoucherAttributes.ProcessingDate);

            // TODO: think about handling/parsing of other fields too

            var name = GetAttribute(dataObject, DocumentumAttributes.ObjectName);

            var dishonoured = GetBooleanlAttribute(dataObject, VoucherAttributes.Dishonoured);
            var delayedImage = GetBooleanlAttribute(dataObject, VoucherAttributes.DelayedImage);

            var voucher = new Voucher
            {
                Id = voucherId,
                Name = name,
                AuxiliaryDomestic = ad,
                Bsb = bsb,
                AccountNumber = accnt,
                Amount = amount,
                Dishonoured = dishonoured,
                DelayedImage = delayedImage,
                ProcessingDate = procdate
            };

            if (includeFile && dataObject.Contents != null && dataObject.Contents.Count > 0)
            {
                var resultContent = dataObject.Contents[0];
                if (resultContent != null && resultContent.CanGetAsFile())
                {
                    var fileInfo = resultContent.GetAsFile();

                    using (var reader = new BinaryReader(fileInfo.OpenRead()))
                    {
                        voucher.File = reader.ReadBytes((int)fileInfo.Length);
                    }
                }
            }

            return voucher;
        }
Exemplo n.º 4
0
        private void LinkLetterToVoucher(string letterPath, Voucher voucher, DateTime processingDate)
        {
            var cutOffDate = processingDate.AddDays(-dfsConfiguration.DishonourTimeWindowDays);

            var latestVoucher = voucherRepository.GetVoucher(voucher.AuxiliaryDomestic, voucher.Bsb, voucher.AccountNumber, voucher.Amount, false, cutOffDate);

            var voucherObj = objectRepository.GetDataObjectByObjectId(latestVoucher.Id);

            if (voucherObj == null)
            {
                throw new ArgumentException("Voucher not found", "voucher");
            }

            var letterObj = objectRepository.GetDataObject(letterPath);
            if (letterObj == null)
            {
                throw new ArgumentException("Dishonour Letter not found ", "letterPath");
            }

            objectRepository.CreateParentChildRelationship(voucherObj, letterObj, DocumentumTypes.DishonourVoucherRelation);
        }
 private void ExpectVoucherRepoToGetVoucher(Voucher voucher)
 {
     voucherRepository.Setup(x => x.GetVoucher(
             voucher.AuxiliaryDomestic,
             voucher.Bsb,
             voucher.AccountNumber,
             voucher.Amount,
             false,
             It.IsAny<DateTime>()))
         .Returns(voucher)
         .Verifiable();
 }