Esempio n. 1
0
        protected void PrepareTransactionForCreate(BaseValueSegmentTransaction baseValueSegmentTransaction, bool keepBaseValueSegmentReference)
        {
            baseValueSegmentTransaction.Id = 0;

            if (!keepBaseValueSegmentReference)
            {
                baseValueSegmentTransaction.BaseValueSegmentId = 0;
            }

            foreach (var baseValueSegmentOwner in baseValueSegmentTransaction.BaseValueSegmentOwners)
            {
                baseValueSegmentOwner.Id = 0;
                baseValueSegmentOwner.BaseValueSegmentTransactionId = 0;
            }

            foreach (var baseValueSegmentValueHeader in baseValueSegmentTransaction.BaseValueSegmentValueHeaders)
            {
                baseValueSegmentValueHeader.Id = 0;
                baseValueSegmentValueHeader.BaseValueSegmentTransactionId = 0;

                foreach (var baseValueSegmentValue in baseValueSegmentValueHeader.BaseValueSegmentValues)
                {
                    baseValueSegmentValue.Id = 0;
                    baseValueSegmentValue.BaseValueSegmentValueHeaderId = 0;
                }
            }
        }
Esempio n. 2
0
        public void GetBaseValueSegmentEventsByRevenueObjectId_MatchId_ValidateSortOrder()
        {
            //BVS Events shoulld be returned in Descending order based on AsOf Date
            //
            //Add another BVS with today's date. This BVS should be the first in returned listed
            //
            var testBvs = new Models.V1.BaseValueSegment
            {
                Id                           = BvsId - 1,
                AsOf                         = DateTime.Now,
                TransactionId                = 0,
                RevenueObjectId              = RevObjId,
                DynCalcInstanceId            = 0,
                BaseValueSegmentTransactions = new List <BaseValueSegmentTransaction>()
            };
            var testBvsTrans = new BaseValueSegmentTransaction
            {
                Id = BvsTranId + 1,
                BaseValueSegmentId = BvsId - 1,
                TransactionId      = 0,
                EffectiveStatus    = "A",
                BaseValueSegmentTransactionTypeId = 2,
                DynCalcStepTrackingId             = -100,
                BaseValueSegmentOwners            = new List <BaseValueSegmentOwner>(),
                BaseValueSegmentValueHeaders      = new List <BaseValueSegmentValueHeader>()
            };
            var testBvsOwner = new BaseValueSegmentOwner
            {
                Id = BvsOwnerId + 1,
                BaseValueSegmentTransactionId = BvsTranId - 1,
                LegalPartyRoleId          = 0,
                BeneficialInterestPercent = 50,
                DynCalcStepTrackingId     = 0,
                GRMEventId = EventId + 1,
                BaseValueSegmentOwnerValueValues = new List <BaseValueSegmentOwnerValue>()
            };

            testBvsTrans.BaseValueSegmentOwners.Add(testBvsOwner);
            testBvs.BaseValueSegmentTransactions.Add(testBvsTrans);

            _context.BaseValueSegments.Add(testBvs);
            _context.SaveChanges();

            IBaseValueSegmentRepository baseValueSegmentRepository = new BaseValueSegmentRepository(_context);

            var baseValueSegmentEvents = baseValueSegmentRepository.GetBvsEventsByRevenueObjectId(RevObjId).ToList();

            baseValueSegmentEvents.Count.ShouldBeGreaterThan(1);
            DateTime date1 = baseValueSegmentEvents.First().BvsAsOf;
            DateTime date2 = baseValueSegmentEvents.Last().BvsAsOf;

            date1.ShouldBeGreaterThan(date2);
        }
Esempio n. 3
0
        public void GetBaseValueSegment_MatchesId_ValidateNoInactiveBvsTransactions()
        {
            IBaseValueSegmentRepository baseValueSegmentRepository = new BaseValueSegmentRepository(_context);
            var baseValueSegment = baseValueSegmentRepository.Get(BvsId);
            int bvsTransCount    = baseValueSegment.BaseValueSegmentTransactions.Count;

            //Add an Active Transaction
            var testBvsTrans = new BaseValueSegmentTransaction
            {
                Id = BvsTranId + 1,
                BaseValueSegmentId = BvsId,
                TransactionId      = 0,
                EffectiveStatus    = "A",
                BaseValueSegmentTransactionTypeId = 2,
                DynCalcStepTrackingId             = -100,
                BaseValueSegmentOwners            = new List <BaseValueSegmentOwner>(),
                BaseValueSegmentValueHeaders      = new List <BaseValueSegmentValueHeader>()
            };

            _context.BaseValueSegmentTransactions.Add(testBvsTrans);
            _context.SaveChanges();
            baseValueSegment = baseValueSegmentRepository.Get(BvsId);
            int updatedBvsTransCount = baseValueSegment.BaseValueSegmentTransactions.Count;

            bvsTransCount.ShouldBeLessThan(updatedBvsTransCount);

            //Add an Inactive Transaction
            testBvsTrans = new BaseValueSegmentTransaction
            {
                Id = BvsTranId + 2,
                BaseValueSegmentId = BvsId,
                TransactionId      = 0,
                EffectiveStatus    = "A",
                BaseValueSegmentTransactionTypeId = UserDeletedTransactionId(),
                DynCalcStepTrackingId             = -100,
                BaseValueSegmentOwners            = new List <BaseValueSegmentOwner>(),
                BaseValueSegmentValueHeaders      = new List <BaseValueSegmentValueHeader>()
            };
            _context.BaseValueSegmentTransactions.Add(testBvsTrans);
            _context.SaveChanges();
            baseValueSegment = baseValueSegmentRepository.Get(BvsId);
            int newBvsTransCount = baseValueSegment.BaseValueSegmentTransactions.Count;

            updatedBvsTransCount.ShouldBe(newBvsTransCount);
        }
        public async Task CreateAsync(BaseValueSegmentTransaction baseValueSegmentTransaction, IEnumerable <BaseValueSegmentOwnerValue> baseValueSegmentOwnerValuesList)
        {
            using (var transaction = await _baseValueSegmentQueryContext.Database.BeginTransactionAsync())
            {
                try
                {
                    await _baseValueSegmentQueryContext.BaseValueSegmentTransactions.AddAsync(baseValueSegmentTransaction);

                    await _baseValueSegmentQueryContext.SaveChangesAsync();

                    var baseValueSegmentOwnerValues = baseValueSegmentOwnerValuesList.ToList();
                    if (baseValueSegmentOwnerValues.Count > 0)
                    {
                        baseValueSegmentOwnerValues.ForEach(x =>
                        {
                            if (x.Header == null)
                            {
                                // This allows us to determine in the DTO that was submitted.
                                throw new NullReferenceException($"Header cannot be set for Base Value Segment Owner with Id: {x.Id}");
                            }

                            x.Id = 0;
                            x.BaseValueSegmentOwnerId       = x.Owner.Id;
                            x.BaseValueSegmentValueHeaderId = x.Header.Id;
                        });

                        await _baseValueSegmentQueryContext.BaseValueSegmentOwnerValues.AddRangeAsync(baseValueSegmentOwnerValues);

                        await _baseValueSegmentQueryContext.SaveChangesAsync();
                    }

                    transaction.Commit();
                }
                catch
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }
Esempio n. 5
0
 public static BaseValueSegmentTransactionDto ToDomain(this BaseValueSegmentTransaction bvsTransaction)
 {
     return(Mapper.Map <BaseValueSegmentTransactionDto>(bvsTransaction));
 }
Esempio n. 6
0
        protected void DiscoverOwnerValuesForSavingInTransaction(Func <BaseValueSegmentTransactionType> getUserType,
                                                                 Func <BaseValueSegmentTransactionType> getUserDeletedType,
                                                                 BaseValueSegmentTransaction baseValueSegmentTransaction,
                                                                 List <BaseValueSegmentOwnerValue> baseValueSegmentOwnerValues)
        {
            // if we are explicitly trying to save a UserDeleted Tran, do NOT change it to user
            var userDeletedTransactionType = getUserDeletedType();

            if (baseValueSegmentTransaction.BaseValueSegmentTransactionTypeId == userDeletedTransactionType.Id)
            {
                baseValueSegmentTransaction.BaseValueSegmentTransactionType   = userDeletedTransactionType;
                baseValueSegmentTransaction.BaseValueSegmentTransactionTypeId = userDeletedTransactionType.Id;
            }
            else
            {
                var userTransactionType = getUserType();
                baseValueSegmentTransaction.BaseValueSegmentTransactionType   = userTransactionType;
                baseValueSegmentTransaction.BaseValueSegmentTransactionTypeId = userTransactionType.Id;
            }

            foreach (var baseValueSegmentOwner in baseValueSegmentTransaction.BaseValueSegmentOwners)
            {
                // We are clearing out BaseValueSegmentOwnerValues because it needs a relationship from both
                // the header and the owner. However, both distint parents are not yet created. This causes
                // an issue when saving because EF does not know how to persist this kind of relationship.

                var list = baseValueSegmentOwner.BaseValueSegmentOwnerValueValues
                           .Where(x => baseValueSegmentOwnerValues.All(y => y.Id != x.Id || y.Id == 0)).ToList();                  // Prevent duplicates.

                if (list.Count > 0)
                {
                    // Store a reference to owner who is about to be persisted.
                    list.ForEach(x => x.Owner = baseValueSegmentOwner);
                }

                // Clear out of the list as planned so EF wouldn't deal with it yet.
                baseValueSegmentOwner.BaseValueSegmentOwnerValueValues.Clear();

                if (list.Count > 0)
                {
                    // Here, we are trying to find a matching header to set in each basevaluesegmentownervalue.
                    list.ForEach(x =>
                    {
                        foreach (var baseValueSegmentValueHeader in baseValueSegmentTransaction.BaseValueSegmentValueHeaders)
                        {
                            if (baseValueSegmentValueHeader.BaseValueSegmentOwnerValues.Any(y => y.Id == x.Id))
                            {
                                x.Header = baseValueSegmentValueHeader;
                                break;
                            }
                        }
                    });

                    baseValueSegmentOwnerValues.AddRange(list);
                }
            }

            foreach (var baseValueSegmentValueHeader in baseValueSegmentTransaction.BaseValueSegmentValueHeaders)
            {
                // Same reason as above. baseValueSegmentOwnerValues will be used to save.
                baseValueSegmentValueHeader.BaseValueSegmentOwnerValues.Clear();
            }
        }
Esempio n. 7
0
        public BaseValueSegmentRepositoryTests()
        {
            var optionsBuilder = new DbContextOptionsBuilder <BaseValueSegmentQueryContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString("N"));

            _context = new BaseValueSegmentQueryContext(optionsBuilder.Options);

            var baseValueSegmentTransaction = new BaseValueSegmentTransaction
            {
                Id = BvsTranId,
                BaseValueSegmentId = BvsId,
                TransactionId      = 0,
                EffectiveStatus    = "A",
                BaseValueSegmentTransactionTypeId = 2,
                DynCalcStepTrackingId             = -100,
                BaseValueSegmentOwners            = new List <BaseValueSegmentOwner>(),
                BaseValueSegmentValueHeaders      = new List <BaseValueSegmentValueHeader>()
            };

            var baseValueSegmentOwner = new BaseValueSegmentOwner
            {
                Id = BvsOwnerId,
                BaseValueSegmentTransactionId = BvsTranId,
                LegalPartyRoleId          = 0,
                BeneficialInterestPercent = 50,
                DynCalcStepTrackingId     = 0,
                GRMEventId      = EventId,
                AlphaBVSOwnerId = null,
                BaseValueSegmentOwnerValueValues = new List <BaseValueSegmentOwnerValue>()
            };

            var baseValueSegmentValueHeader = new BaseValueSegmentValueHeader
            {
                Id = BvsValueHeaderId,
                BaseValueSegmentTransactionId = BvsTranId,
                BaseYear = 2015,
                DynCalcStepTrackingId  = 0,
                BaseValueSegmentValues = new List <BaseValueSegmentValue>()
            };

            var baseValueSegmentValue = new BaseValueSegmentValue
            {
                Id = BvsValueId,
                BaseValueSegmentValueHeaderId = BvsValueHeaderId,
                SubComponent          = 1,
                ValueAmount           = 110000,
                PercentComplete       = 75,
                FullValueAmount       = 120000,
                DynCalcStepTrackingId = 0,
            };

            var baseValueSegmentOwnerValue = new BaseValueSegmentOwnerValue
            {
                Id = BvsOwnerValueId,
                BaseValueSegmentOwnerId = BvsOwnerValueId,
                BaseValue             = 100000,
                DynCalcStepTrackingId = 0,
            };

            var baseValueSegment = new Models.V1.BaseValueSegment
            {
                Id                    = BvsId,
                AsOf                  = AssessmentEventDate,
                TransactionId         = 0,
                RevenueObjectId       = RevObjId,
                SequenceNumber        = 1,
                DynCalcInstanceId     = 0,
                DynCalcStepTrackingId = 0
            };

            baseValueSegmentOwner.BaseValueSegmentOwnerValueValues.Add(baseValueSegmentOwnerValue);
            baseValueSegmentValueHeader.BaseValueSegmentValues.Add(baseValueSegmentValue);
            baseValueSegmentTransaction.BaseValueSegmentOwners.Add(baseValueSegmentOwner);
            baseValueSegmentTransaction.BaseValueSegmentValueHeaders.Add(baseValueSegmentValueHeader);
            baseValueSegment.BaseValueSegmentTransactions.Add(baseValueSegmentTransaction);

            _context.Add(baseValueSegment);

            var userDeletedTransaction = new BaseValueSegmentTransactionType
            {
                Id          = 1,
                Name        = "User Deleted",
                Description = "User Deleted"
            };

            _context.Add(userDeletedTransaction);
            var userTransactionType = new BaseValueSegmentTransactionType
            {
                Id          = 2,
                Name        = "User",
                Description = "User"
            };

            _context.Add(userTransactionType);


            var beneficialInterestInfo = new BeneficialInterestInfo
            {
                LegalPartyId                 = 100,
                GrmEventId                   = 200,
                EventDate                    = new DateTime(2015, 1, 1),
                EventType                    = "Transfer",
                EffectiveDate                = new DateTime(2015, 2, 1),
                DocNumber                    = "UnitTestDoc",
                DocType                      = "Deed",
                DocDate                      = new DateTime(2015, 3, 1),
                OwnerId                      = 300,
                OwnerName                    = "Unit Test Owner",
                LegalPartyRoleId             = 400,
                BeneficialInterestPercentage = 50,
                PercentageInterestGain       = 25
            };

            _context.Add(beneficialInterestInfo);

            _context.SaveChanges();
        }