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; } }
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; }
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; }
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(); }