Beispiel #1
0
        public static BaseValueSegmentDto CreateMockDto()
        {
            var baseValueSegment = new BaseValueSegmentDto
            {
                AsOf = new DateTime(2013, 1, 1),
                AssessmentEventTransactionId = 435,
                RevenueObjectId                     = 54,
                DynCalcInstanceId                   = 5346,
                SequenceNumber                      = 1,
                TransactionId                       = 6457,
                BaseValueSegmentTransactions        = new List <BaseValueSegmentTransactionDto>(),
                BaseValueSegmentAssessmentRevisions = new List <AssessmentRevisionBaseValueSegmentDto>()
            };

            baseValueSegment.BaseValueSegmentTransactions.Add(CreateMockTransactionDto());

            baseValueSegment.BaseValueSegmentAssessmentRevisions.Add(new AssessmentRevisionBaseValueSegmentDto
            {
                ReviewMessage = "foo bar",
                BaseValueSegmentStatusType = new BaseValueSegmentStatusTypeDto {
                    Description = "foobar", Name = "foobar"
                }
            });

            return(baseValueSegment);
        }
Beispiel #2
0
        public async Task <BaseValueSegmentDto> SaveAsync(int assessmentEventId, BaseValueSegmentDto baseValueSegmentDto)
        {
            if (baseValueSegmentDto == null)
            {
                throw new BadRequestException("BaseValueSegmentDto is null.");
            }

            var assessmentEvents = await _assessmentEventRepository.ListAsync(baseValueSegmentDto.RevenueObjectId, baseValueSegmentDto.AsOf);

            // 1 based index, NOT 0-based index.
            var sequenceNumber = assessmentEvents.OrderBy(x => x.Id).Select((item, index) =>
                                                                            new { item.Id, Index = index }).Single(x => x.Id == assessmentEventId).Index + 1;

            if (await IsExist(baseValueSegmentDto, sequenceNumber))
            {
                await _baseValueSegmentRepository.CreateTransactionAsync(baseValueSegmentDto.BaseValueSegmentTransactions.Single(x => x.Id.HasValue && x.Id < 0));

                return(baseValueSegmentDto);
            }

            baseValueSegmentDto.SequenceNumber = sequenceNumber;
            baseValueSegmentDto.Id             = null; // Remember to null out the Id as we are about to create
            // a brand new Base Value Segment!

            // TODO: validate if caller sends multiple creates ie negative number
            baseValueSegmentDto.BaseValueSegmentTransactions =
                baseValueSegmentDto.BaseValueSegmentTransactions.Where(t => t.Id < 0).ToList();

            return(await _baseValueSegmentRepository.CreateAsync(baseValueSegmentDto));
        }
Beispiel #3
0
        public async Task <Tuple <BaseValueSegmentDto, BaseValueSegmentDto> > GetCurrentAndPrevious(int assessmentEventId)
        {
            var assessmentEventsWithSameRevenueObjectId = (await _assessmentEventRepository.ListAsync(assessmentEventId))
                                                          .OrderBy(x => x.EventDate.Date)
                                                          .ThenBy(x => x.Id).ToList();

            var selectedAssessmentEvent = assessmentEventsWithSameRevenueObjectId.SingleOrDefault(x => x.Id == assessmentEventId);

            if (selectedAssessmentEvent == null)
            {
                throw new NotFoundException($"Assessment event Id: {assessmentEventId} is invalid.");
            }

            var sameDayAssessments = assessmentEventsWithSameRevenueObjectId
                                     .Where(x => x.EventDate.Date == selectedAssessmentEvent.EventDate.Date)
                                     .ToList();

            var sequence = sameDayAssessments.Count == 1 ? 1 : sameDayAssessments.IndexOf(selectedAssessmentEvent) + 1;

            List <BaseValueSegmentInfoDto> baseValueSegmentDtos = (await _baseValueSegmentRepository.GetListAsync(selectedAssessmentEvent.RevObjId))
                                                                  .Where(x => x.AsOf.Date < selectedAssessmentEvent.EventDate.Date ||
                                                                         (x.AsOf.Date == selectedAssessmentEvent.EventDate.Date && x.SequenceNumber <= sequence))
                                                                  .OrderByDescending(x => x.AsOf.Date).ThenByDescending(x => x.SequenceNumber).ToList();

            BaseValueSegmentDto current =
                // ReSharper disable once PossibleInvalidOperationException
                baseValueSegmentDtos.Count == 0 ? null : await _baseValueSegmentRepository.GetAsync(baseValueSegmentDtos.First().Id.Value);

            BaseValueSegmentDto previous =
                // ReSharper disable once PossibleInvalidOperationException
                baseValueSegmentDtos.Count > 1 ? await _baseValueSegmentRepository.GetAsync(baseValueSegmentDtos[1].Id.Value) : null;

            return(new Tuple <BaseValueSegmentDto, BaseValueSegmentDto>(current, previous));
        }
        public async Task <IEnumerable <GrmEventInformationDto> > GetOwnerGrmEvents(BaseValueSegmentDto baseValueSegmentDto)
        {
            // build search object
            var grmEventSearchDto = new GrmEventSearchDto();
            var idList            = new List <int>();

            var firstTransaction = baseValueSegmentDto.FirstTransaction();

            // get owner grm event ids
            var owners = firstTransaction.BaseValueSegmentOwners;

            // ReSharper disable once PossibleInvalidOperationException
            var grmEventIds = owners.Where(o => o.GRMEventId.HasValue).Select(owner => owner.GRMEventId.Value).Distinct();

            idList.AddRange(grmEventIds);

            // get header grm event ids
            var headerValuesGrmEventIds = firstTransaction.BaseValueSegmentValueHeaders.Where(hv => hv.GRMEventId.HasValue).Select(hv => hv.GRMEventId.Value).Distinct();

            idList.AddRange(headerValuesGrmEventIds);

            grmEventSearchDto.GrmEventIdList.AddRange(idList.Distinct());

            // call service with search object to get grm event associated to this base value segment
            var eventInformationDtos = _grmEventRepository.SearchAsync(grmEventSearchDto).Result;

            var effectiveDate   = baseValueSegmentDto.AsOf;
            var revenueObjectId = baseValueSegmentDto.RevenueObjectId;

            // call service with search object to get legal parties associated to this base value segment
            var grmEventInformationDtos = await _grmEventRepository.GetAsync(revenueObjectId, effectiveDate);

            // return unique set
            return(eventInformationDtos.Union(grmEventInformationDtos, new GrmEventInformationDtoComparer()).ToArray());
        }
Beispiel #5
0
        public void CreateBaseValueSegmentNoOwnersBadRequestExceptionIsThrown()
        {
            var baseValueSegment = new BaseValueSegmentDto();

            baseValueSegment.BaseValueSegmentTransactions.Add(new BaseValueSegmentTransactionDto());

            Should.ThrowAsync <BadRequestException>(() => _baseValueSegmentDomain.CreateAsync(baseValueSegment));
        }
Beispiel #6
0
        public void CreateBaseValueSegmentWithValidIdGetBadRequestException()
        {
            var baseValueSegment = new BaseValueSegmentDto {
                Id = 0
            };

            Should.ThrowAsync <BadRequestException>(() => _baseValueSegmentDomain.CreateAsync(baseValueSegment));
        }
        public async Task <int[]> Create(BaseValueSegmentDto baseValueSegmentDto)
        {
            List <int> createdEventIds = new List <int>();

            foreach (var transaction in baseValueSegmentDto.BaseValueSegmentTransactions)
            {
                var transactionEventIds = await CreateEventForTransaction(transaction);

                createdEventIds.AddRange(transactionEventIds);
            }

            // return created information
            return(createdEventIds.ToArray());
        }
Beispiel #8
0
        public void CreateBaseValueSegmentNoValueHeaderBadRequestExceptionIsThrown()
        {
            var baseValueSegment = new BaseValueSegmentDto();

            baseValueSegment.BaseValueSegmentTransactions.Add(new BaseValueSegmentTransactionDto
            {
                BaseValueSegmentOwners = new List <BaseValueSegmentOwnerDto>
                {
                    new BaseValueSegmentOwnerDto()
                }
            });

            Should.ThrowAsync <BadRequestException>(() => _baseValueSegmentDomain.CreateAsync(baseValueSegment));
        }
        private BaseValueSegmentDto MockData()
        {
            var owner1 = new BaseValueSegmentOwnerDto {
                GRMEventId = 101
            };
            var owner2 = new BaseValueSegmentOwnerDto();
            var owner3 = new BaseValueSegmentOwnerDto {
                GRMEventId = 202
            };                                                        // Testing the distint part of the query
            var owner4 = new BaseValueSegmentOwnerDto {
                GRMEventId = 202
            };

            var transaction = new BaseValueSegmentTransactionDto();

            transaction.BaseValueSegmentOwners.Add(owner1);
            transaction.BaseValueSegmentOwners.Add(owner2);
            transaction.BaseValueSegmentOwners.Add(owner3);
            transaction.BaseValueSegmentOwners.Add(owner4);

            var header1 = new BaseValueSegmentValueHeaderDto {
                GRMEventId = 400
            };
            var header2 = new BaseValueSegmentValueHeaderDto();
            var header3 = new BaseValueSegmentValueHeaderDto {
                GRMEventId = 510
            };                                                               // Testing the distint part of the query
            var header4 = new BaseValueSegmentValueHeaderDto {
                GRMEventId = 510
            };
            var header5 = new BaseValueSegmentValueHeaderDto {
                GRMEventId = 202
            };

            transaction.BaseValueSegmentValueHeaders.Add(header1);
            transaction.BaseValueSegmentValueHeaders.Add(header2);
            transaction.BaseValueSegmentValueHeaders.Add(header3);
            transaction.BaseValueSegmentValueHeaders.Add(header4);
            transaction.BaseValueSegmentValueHeaders.Add(header5);

            var baseValueSegmentDto = new BaseValueSegmentDto
            {
                RevenueObjectId = 4565,
                AsOf            = new DateTime(2011, 8, 1)
            };

            baseValueSegmentDto.BaseValueSegmentTransactions.Add(transaction);
            return(baseValueSegmentDto);
        }
Beispiel #10
0
        public void Get_CallsGetOnAssessmentEventService_ReceivesAssessmentEventServiceDomainDTO_GetRevenueObjectThrowsNotFoundException()
        {
            var assessmentEventId  = 1;
            var assessmentEventDto = new AssessmentEventDto
            {
                Id                       = assessmentEventId,
                EventDate                = DateTime.Now,
                AsmtEventType            = 999,
                AsmtEventTypeDescription = "Annual",
                RevObjId                 = 888,
                DynCalcStepTrackingId    = 777,
                TaxYear                  = 2017,
                TranId                   = 99999999999
            };
            var assessmentEventTranDto = new AssessmentEventTransactionDto
            {
                AsmtEventStateDescription = "Review Required",
                AsmtEventId     = assessmentEventId,
                AsmtEventState  = 1,
                AsmtRevnEventId = 2,
                Id = 4
            };

            assessmentEventDto.AssessmentEventTransactions.Add(assessmentEventTranDto);

            var baseValueSegmentDto = new BaseValueSegmentDto()
            {
                AsOf            = DateTime.Now,
                RevenueObjectId = 999,
            };

            var httpClientWrapperMock = new Mock <IHttpClientWrapper>();

            httpClientWrapperMock.Setup(x => x.Get <AssessmentEventDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(assessmentEventDto);
            httpClientWrapperMock.Setup(x => x.Get <AssessmentEventTransactionDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(assessmentEventTranDto);
            httpClientWrapperMock.Setup(x => x.Get <BaseValueSegmentDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(baseValueSegmentDto);

            var applicationSettingsHelper = new Mock <IApplicationSettingsHelper>();

            applicationSettingsHelper.Setup(x => x.AssessmentEventServiceApiUrl).Returns("");
            applicationSettingsHelper.Setup(x => x.RevenueObjectServiceApiUrl).Throws(new NotFoundException("something"));
            applicationSettingsHelper.Setup(x => x.LegalPartyServiceApiUrl).Returns("");
            applicationSettingsHelper.Setup(x => x.BaseValueSegmentServiceApiUrl).Returns("");

            var domain = new AssessmentHeaderDomain(httpClientWrapperMock.Object, applicationSettingsHelper.Object);

            Should.Throw <NotFoundException>(() => domain.Get(assessmentEventId));
        }
Beispiel #11
0
        public void CreateGrmEventsFromBaseValueSegmentDtoWithoutGrmEventsForOwnerGetBadRequestException()
        {
            var baseValueSegment = new BaseValueSegmentDto
            {
                BaseValueSegmentTransactions = new List <BaseValueSegmentTransactionDto>
                {
                    new BaseValueSegmentTransactionDto
                    {
                        BaseValueSegmentOwners = new List <BaseValueSegmentOwnerDto>
                        {
                            new BaseValueSegmentOwnerDto
                            {
                                Id = 5235
                            },
                            new BaseValueSegmentOwnerDto
                            {
                                Id = 5238
                            }
                        }, BaseValueSegmentValueHeaders = new List <BaseValueSegmentValueHeaderDto>
                        {
                            new BaseValueSegmentValueHeaderDto
                            {
                                Id = 352523,
                                GrmEventInformation = new GrmEventCreateInformation
                                {
                                    EffectiveDateTime = new DateTime(2012, 1, 2),
                                    RevenueObjectId   = 6346436,
                                    EventType         = 312455
                                }
                            },
                            new BaseValueSegmentValueHeaderDto
                            {
                                Id = 352528,
                                GrmEventInformation = new GrmEventCreateInformation
                                {
                                    EffectiveDateTime = new DateTime(2012, 1, 3),
                                    RevenueObjectId   = 75544,
                                    EventType         = 65344
                                }
                            }
                        }
                    }
                }
            };

            Should.Throw <BadRequestException>(() => _grmEventDomain.Create(baseValueSegment));
        }
Beispiel #12
0
        public void CreateGrmEventsFromBaseValueSegmentDtoWithoutGrmEventsForHeaderValueGetBadRequestException()
        {
            var baseValueSegment = new BaseValueSegmentDto
            {
                BaseValueSegmentTransactions = new List <BaseValueSegmentTransactionDto>
                {
                    new BaseValueSegmentTransactionDto
                    {
                        BaseValueSegmentOwners = new List <BaseValueSegmentOwnerDto>
                        {
                            new BaseValueSegmentOwnerDto
                            {
                                Id = 5235,
                                GrmEventInformation = new GrmEventCreateInformation
                                {
                                    EffectiveDateTime = new DateTime(2012, 1, 1),
                                    RevenueObjectId   = 24661,
                                    EventType         = 34664
                                }
                            },
                            new BaseValueSegmentOwnerDto
                            {
                                Id = 5238,
                                GrmEventInformation = new GrmEventCreateInformation
                                {
                                    EffectiveDateTime = new DateTime(2012, 2, 1),
                                    RevenueObjectId   = 68656,
                                    EventType         = 9563463
                                }
                            }
                        }, BaseValueSegmentValueHeaders = new List <BaseValueSegmentValueHeaderDto>
                        {
                            new BaseValueSegmentValueHeaderDto
                            {
                                Id = 352523
                            },
                            new BaseValueSegmentValueHeaderDto
                            {
                                Id = 352528
                            }
                        }
                    }
                }
            };

            Should.Throw <BadRequestException>(() => _grmEventDomain.Create(baseValueSegment));
        }
Beispiel #13
0
        private async Task <bool> IsExist(BaseValueSegmentDto baseValueSegmentDto, int sequenceNumber)
        {
            try
            {
                var existing = await _baseValueSegmentRepository.GetAsync(baseValueSegmentDto.RevenueObjectId,
                                                                          baseValueSegmentDto.AsOf, sequenceNumber);

                return(existing != null);
            }
            catch (NotFoundException)
            {
                return(false);
            }
            catch (RecordNotFoundException)
            {
                return(false);
            }
        }
        public void ShouldGetFirstTransactionOrderedByIdFromBaseValueSegmentWhereIdIsAtLast()
        {
            var dto = new BaseValueSegmentDto
            {
                BaseValueSegmentTransactions = new List <BaseValueSegmentTransactionDto>
                {
                    new BaseValueSegmentTransactionDto {
                        Id = 101
                    },
                    new BaseValueSegmentTransactionDto {
                        Id = 102
                    },
                    new BaseValueSegmentTransactionDto {
                        Id = 300
                    }
                }
            };
            var firstTransaction = dto.FirstTransaction();

            firstTransaction.Id.ShouldBe(300);
        }
        private HeaderValue[] GetBaseValueSegmentHeaderEvents(BaseValueSegmentDto baseValueSegmentDto, BaseValueSegmentTransactionDto transaction)
        {
            var headerRelatedEvents = _grmEventDomain.GetValueHeaderGrmEvents(baseValueSegmentDto).Result.ToArray();

            var conclusionHeaderEvents = _baseValueSegmentRepository.GetConclusionsData(baseValueSegmentDto.RevenueObjectId, baseValueSegmentDto.AsOf).Result.ToList();

            var valueHeaders = new List <HeaderValue>();

            foreach (var baseValueSegmentValueHeaderDto in transaction.BaseValueSegmentValueHeaders)
            {
                var headerRelatedEvent = headerRelatedEvents.Single(he => he.GrmEventId == baseValueSegmentValueHeaderDto.GRMEventId);
                BaseValueSegmentConclusionDto conclusionEvent = null;

                if (conclusionHeaderEvents.Count > 0)
                {
                    conclusionEvent = conclusionHeaderEvents.FirstOrDefault(conclusion => conclusion.GrmEventId == headerRelatedEvent.GrmEventId);
                }

                var headerValue = new HeaderValue
                {
                    HeaderValueId = baseValueSegmentValueHeaderDto.Id,
                    GrmEventId    = headerRelatedEvent.GrmEventId,
                    DisplayName   = headerRelatedEvent.EventType + " " + headerRelatedEvent.EffectiveDate.Year,
                    BaseYear      = baseValueSegmentValueHeaderDto.BaseYear,
                    EventDate     = headerRelatedEvent.EventDate,
                    EventType     = headerRelatedEvent.EventType,
                    EffectiveDate = headerRelatedEvent.EffectiveDate
                };

                if (conclusionEvent != null)
                {
                    headerValue.DisplayName = conclusionEvent.Description + " " + conclusionEvent.ConclusionDate.Year;
                    headerValue.EventType   = conclusionEvent.Description;
                }

                valueHeaders.Add(headerValue);
            }

            return(valueHeaders.OrderByDescending(vh => vh.BaseYear).ToArray());
        }
Beispiel #16
0
        [Fact] // TODO: Need to consider the new services we have added.
        public void Get_CallsGetOnAssessmentEventService_ReceivesAssessmentEventServiceDomainDTOAndRevenueObjectDomainAndLegalPartyRolesDomainDTO()
        {
            var          assessmentEventId             = 1;
            var          assessmentEventDate           = DateTime.Now;
            const int    asmtRevnEventId               = 2;
            const int    asmtRevnId                    = 6;
            const int    nonPrimeLegalPartyRoleId      = 3;
            const int    primeLegalPartyRoleId         = 4;
            const string primeLegalPartyDisplayName    = "Prime Dude";
            const string nonPrimeLegalPartyDisplayName = "Nonprime Dude";
            const string tagDescription                = "some TAG description";
            const string firstName  = "UnitTestFirstName";
            const string middleName = "UnitTestMiddleName";
            const string lastName   = "UnitTestLastName";
            const string nameSfx    = "UnitTestNameSfx";
            const int    legalPartyRoleObjectType = 9999;

            var assessmentEventDto = new AssessmentEventDto
            {
                Id                       = assessmentEventId,
                EventDate                = assessmentEventDate,
                AsmtEventType            = 999,
                AsmtEventTypeDescription = "Annual",
                RevObjId                 = 888,
                DynCalcStepTrackingId    = 777,
                TaxYear                  = 2017,
                TranId                   = 99999999999,
                PrimaryBaseYear          = 2015,
                PrimaryBaseYearMultipleOrSingleDescription = "M"
            };
            var assessmentEventTranDto = new AssessmentEventTransactionDto
            {
                AsmtEventStateDescription = "Review Required",
                AsmtEventId     = assessmentEventId,
                AsmtEventState  = 1,
                AsmtRevnEventId = asmtRevnEventId,
                Id = 4
            };

            assessmentEventDto.AssessmentEventTransactions.Add(assessmentEventTranDto);

            var assessmentRevnDto = new AssessmentRevisionDto
            {
                Id = asmtRevnId
            };

            var revenueObjectDto = new RevenueObjectDto
            {
                Id = 333
            };

            var tagDto = new TAGDto
            {
                Description = tagDescription
            };

            var legalPartyRoleDtos = new List <LegalPartyRoleDto>()
            {
                new LegalPartyRoleDto()
                {
                    Id = nonPrimeLegalPartyRoleId,
                    PrimeLegalParty = 0,
                    LegalParty      = new LegalPartyDto()
                    {
                        DisplayName = nonPrimeLegalPartyDisplayName,
                    }
                },
                new LegalPartyRoleDto()
                {
                    Id = primeLegalPartyRoleId,
                    PrimeLegalParty = 1,
                    LegalParty      = new LegalPartyDto()
                    {
                        Id          = 100,
                        DisplayName = primeLegalPartyDisplayName,
                        FirstName   = firstName,
                        MiddleName  = middleName,
                        LastName    = lastName,
                        NameSfx     = nameSfx,
                    },
                    ObjectType = legalPartyRoleObjectType
                }
            };
            var bvsTran1 = new BaseValueSegmentTransactionDto()
            {
                Id = 1,
                BaseValueSegmentTransactionTypeId = 3,
                BaseValueSegmentTransactionType   = new BaseValueSegmentTransactionTypeDto()
                {
                    Name        = "Conversion",
                    Description = "Conversion"
                }
            };
            var bvsTran2 = new BaseValueSegmentTransactionDto()
            {
                Id = 2,
                BaseValueSegmentTransactionTypeId = 2,
                BaseValueSegmentTransactionType   = new BaseValueSegmentTransactionTypeDto()
                {
                    Name        = "User",
                    Description = "User"
                }
            };
            var baseValueSegmentDto = new BaseValueSegmentDto()
            {
                AsOf            = assessmentEventDate,
                RevenueObjectId = 888,
                BaseValueSegmentTransactions = new List <BaseValueSegmentTransactionDto>()
                {
                    bvsTran1,
                    bvsTran2
                }
            };
            var statutoryReferenceDto = new StatutoryReferenceDto()
            {
                Description = "Test Statuatory Reference"
            };

            var httpClientWrapperMock = new Mock <IHttpClientWrapper>();

            httpClientWrapperMock.Setup(x => x.Get <AssessmentEventDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(assessmentEventDto);

            httpClientWrapperMock.Setup(x => x.Get <AssessmentRevisionDto>(It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(assessmentRevnDto);
            httpClientWrapperMock.Setup(x => x.Get <RevenueObjectDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(revenueObjectDto);
            httpClientWrapperMock.Setup(x => x.Get <TAGDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(tagDto);
            httpClientWrapperMock.Setup(x => x.Get <IList <LegalPartyRoleDto> >(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(legalPartyRoleDtos);
            httpClientWrapperMock.Setup(x => x.Get <BaseValueSegmentDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(baseValueSegmentDto);
            httpClientWrapperMock.Setup(x => x.Get <StatutoryReferenceDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(statutoryReferenceDto);

            var applicationSettingsHelper = new Mock <IApplicationSettingsHelper>();

            applicationSettingsHelper.Setup(x => x.AssessmentEventServiceApiUrl).Returns("");
            applicationSettingsHelper.Setup(x => x.RevenueObjectServiceApiUrl).Returns("");
            applicationSettingsHelper.Setup(x => x.LegalPartyServiceApiUrl).Returns("");
            applicationSettingsHelper.Setup(x => x.BaseValueSegmentServiceApiUrl).Returns("");

            var domain = new AssessmentHeaderDomain(httpClientWrapperMock.Object, applicationSettingsHelper.Object);
            var assessmentHeaderModel = domain.Get(assessmentEventId).Result;

            assessmentHeaderModel.ShouldNotBeNull();
            assessmentHeaderModel.ShouldBeOfType <Models.V1.AssessmentHeader>();
            assessmentHeaderModel.AssessmentEvent.AssessmentEventId.ShouldBe(assessmentEventDto.Id);
            assessmentHeaderModel.AssessmentEvent.EventDate.ShouldBe(assessmentEventDto.EventDate);
            assessmentHeaderModel.AssessmentEvent.AssessmentEventType.ShouldBe(assessmentEventDto.AsmtEventType);
            assessmentHeaderModel.AssessmentEvent.AssessmentEventTypeDescription.ShouldBe(assessmentEventDto.AsmtEventTypeDescription);
            assessmentHeaderModel.AssessmentEvent.RevenueObjectId.ShouldBe(assessmentEventDto.RevObjId);
            assessmentHeaderModel.AssessmentEvent.TaxYear.ShouldBe(assessmentEventDto.TaxYear);
            assessmentHeaderModel.AssessmentEvent.EventState.ShouldBe(assessmentEventDto.AssessmentEventTransactions[0].AsmtEventStateDescription);
            assessmentHeaderModel.AssessmentEvent.RevisionId.ShouldBe(assessmentRevnDto.Id);
            assessmentHeaderModel.AssessmentEvent.BVSTranType.ShouldBe("User");
            assessmentHeaderModel.AssessmentEvent.TransactionId.ShouldBe(4);
            assessmentHeaderModel.AssessmentEvent.Note.ShouldBeNull();
            assessmentHeaderModel.AssessmentEvent.ReferenceNumber.ShouldBeNull();
            assessmentHeaderModel.AssessmentEvent.ChangeReason.ShouldBeNull();
            assessmentHeaderModel.AssessmentEvent.RevenueAndTaxCode.ShouldBe("Test Statuatory Reference");
            assessmentHeaderModel.AssessmentEvent.PrimaryBaseYear.ShouldBe(assessmentEventDto.PrimaryBaseYear);
            assessmentHeaderModel.AssessmentEvent.PrimaryBaseYearMultipleOrSingleDescription.ShouldBe(assessmentEventDto.PrimaryBaseYearMultipleOrSingleDescription);
            assessmentHeaderModel.RevenueObject.TAG.ShouldBe(tagDto.Description);
            assessmentHeaderModel.RevenueObject.Id.ShouldBe(333);
            assessmentHeaderModel.RevenueObject.Ain.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.AreaCd.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.BeginEffectiveDate.ShouldBe(DateTime.MinValue);
            assessmentHeaderModel.RevenueObject.CensusBlock.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.CensusTrack.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.ClassCd.ShouldBe(0);
            assessmentHeaderModel.RevenueObject.ClassCodeDescription.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.CountyCd.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.Description.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.EffectiveStatus.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.GeoCd.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.Pin.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.PropertyType.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.RelatedPins.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.RevenueCode.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.RightDescription.ShouldBe(0);
            assessmentHeaderModel.RevenueObject.RightEstate.ShouldBe(0);
            assessmentHeaderModel.RevenueObject.RightType.ShouldBe(0);
            assessmentHeaderModel.RevenueObject.SitusAddress.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.SubType.ShouldBe(0);
            assessmentHeaderModel.RevenueObject.TaxCode.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.Type.ShouldBe(0);
            assessmentHeaderModel.RevenueObject.UnformattedPin.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.XCoordinate.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.YCoordinate.ShouldBeNull();
            assessmentHeaderModel.RevenueObject.ZCoordinate.ShouldBeNull();
            assessmentHeaderModel.LegalParty.DisplayName.ShouldBe(primeLegalPartyDisplayName);
            assessmentHeaderModel.LegalParty.LegalPartyId.ShouldBe(100);
            assessmentHeaderModel.LegalParty.FirstName.ShouldBe(firstName);
            assessmentHeaderModel.LegalParty.MiddleName.ShouldBe(middleName);
            assessmentHeaderModel.LegalParty.LastName.ShouldBe(lastName);
            assessmentHeaderModel.LegalParty.NameSfx.ShouldBe(nameSfx);
            assessmentHeaderModel.LegalParty.RevenueAcct.ShouldBe(0);
            assessmentHeaderModel.LegalParty.LegalPartyRoleObjectType.ShouldBe(legalPartyRoleObjectType);
        }
        public void GetSubComponentsWithValidAssessmentEventId()
        {
            int      assessmentEventId     = 100;
            int      revenueObjectId       = 200;
            int      bvsId                 = 300;
            int      bvsTransId            = 310;
            int      bvsOwnerId            = 320;
            int      bvsValueHeaderId      = 330;
            int      bvsOwnerValueId       = 340;
            int      bvsValueId            = 350;
            int      transId               = 400;
            int      legalPartyRoleId      = 400;
            int      grmEventId            = 500;
            int      subComponentId        = 600;
            int      sequenceNumber        = 1;
            int      dynCalcStepTrackingId = -100;
            DateTime eventDate             = new DateTime(2016, 1, 1);
            DateTime effectiveDate         = new DateTime(2016, 2, 1);

            var baseValueSegmentCurrent = new BaseValueSegmentDto
            {
                AsOf = eventDate,
                AssessmentEventTransactionId        = 10,
                BaseValueSegmentAssessmentRevisions = new List <AssessmentRevisionBaseValueSegmentDto>(),
                BaseValueSegmentTransactions        = new List <BaseValueSegmentTransactionDto>
                {
                    new BaseValueSegmentTransactionDto
                    {
                        Id = bvsTransId,
                        BaseValueSegmentId = bvsId,
                        TransactionId      = transId,
                        EffectiveStatus    = "A",
                        BaseValueSegmentTransactionTypeId = 2,
                        BaseValueSegmentTransactionType   = new BaseValueSegmentTransactionTypeDto
                        {
                            Description = "UnitTestBVSTransactionType",
                            Name        = "UnitTestBVSTransactionType"
                        },
                        DynCalcStepTrackingId  = dynCalcStepTrackingId,
                        BaseValueSegmentOwners = new List <BaseValueSegmentOwnerDto>
                        {
                            new BaseValueSegmentOwnerDto
                            {
                                Id = bvsOwnerId,
                                BaseValueSegmentTransactionId = bvsTransId,
                                BeneficialInterestPercent     = 50,
                                DynCalcStepTrackingId         = dynCalcStepTrackingId,
                                GRMEventId       = grmEventId,
                                LegalPartyRoleId = legalPartyRoleId,
                                BaseValueSegmentOwnerValueValues = new List <BaseValueSegmentOwnerValueDto>
                                {
                                    new BaseValueSegmentOwnerValueDto
                                    {
                                        Id = bvsOwnerValueId,
                                        BaseValueSegmentOwnerId       = bvsOwnerId,
                                        BaseValueSegmentValueHeaderId = bvsValueHeaderId,
                                        BaseValue             = 10000,
                                        DynCalcStepTrackingId = dynCalcStepTrackingId
                                    }
                                }
                            },
                        },
                        BaseValueSegmentValueHeaders = new List <BaseValueSegmentValueHeaderDto>
                        {
                            new BaseValueSegmentValueHeaderDto
                            {
                                Id = bvsValueHeaderId,
                                BaseValueSegmentTransactionId = bvsTransId,
                                GRMEventId             = grmEventId,
                                BaseYear               = 2016,
                                BaseValueSegmentValues = new List <BaseValueSegmentValueDto>
                                {
                                    new BaseValueSegmentValueDto
                                    {
                                        Id = bvsValueId,
                                        BaseValueSegmentValueHeaderId = bvsValueHeaderId,
                                        DynCalcStepTrackingId         = dynCalcStepTrackingId,
                                        FullValueAmount = 100000,
                                        PercentComplete = 50,
                                        SubComponent    = subComponentId,
                                        ValueAmount     = 80000
                                    }
                                }
                            }
                        }
                    }
                },
                DynCalcInstanceId = -1,
                Id = bvsId,
                RevenueObjectId = revenueObjectId,
                SequenceNumber  = sequenceNumber,
                TransactionId   = -1000
            };

            var baseValueSegmentInfoList = new List <BaseValueSegmentInfoDto>
            {
                new BaseValueSegmentInfoDto
                {
                    AsOf            = eventDate,
                    Id              = bvsId,
                    RevenueObjectId = revenueObjectId,
                    SequenceNumber  = sequenceNumber
                }
            };

            var assessmentEvent = new AssessmentEventDto
            {
                Id        = assessmentEventId,
                EventDate = eventDate
            };

            var conclusionEventsList = new List <BaseValueSegmentConclusionDto>
            {
                new BaseValueSegmentConclusionDto
                {
                    ConclusionDate = eventDate,
                    Description    = "UnitTestConclusionEvent",
                    GrmEventId     = grmEventId
                }
            };

            var legalPartyRoleDocumentList = new List <LegalPartyDocumentDto>
            {
                new LegalPartyDocumentDto
                {
                    LegalPartyRoleId      = legalPartyRoleId,
                    DocDate               = effectiveDate,
                    DocNumber             = "UnitTestDocument",
                    DocType               = "Deed",
                    GrmEventId            = grmEventId,
                    LegalPartyDisplayName = "Unit Test Legal Party",
                    PctGain               = 50,
                    RightTransferId       = 0
                }
            };

            _legalPartyDomainRepository.Setup(x => x.GetLegalPartyRoleDocuments(It.IsAny <BaseValueSegmentDto>()))
            .ReturnsAsync(legalPartyRoleDocumentList);

            var valueHeaderGrmEvents = new List <GrmEventInformationDto>
            {
                new GrmEventInformationDto
                {
                    GrmEventId      = grmEventId,
                    Description     = "UnitTestGrmEvent",
                    EventDate       = eventDate,
                    EffectiveDate   = effectiveDate,
                    RevenueObjectId = revenueObjectId,
                    EventType       = "Transfer"
                }
            };

            var marketRestrictedValues = new List <MarketAndRestrictedValueDto>
            {
                new MarketAndRestrictedValueDto
                {
                    SubComponent    = subComponentId,
                    MarketValue     = 100000,
                    RestrictedValue = 50000
                }
            };

            var subComponentDetailsList = new List <SubComponentDetailDto>
            {
                new SubComponentDetailDto
                {
                    SubComponentId = subComponentId,
                    Component      = "Unit Test Component",
                    SubComponent   = "Unit Test Subcomponent"
                }
            };

            var factorBaseYearValueDetail = new FactorBaseYearValueDetailDto
            {
                AssessmentYear = 2016,
                Fbyv           = 102000
            };

            _baseValueSegmentRepository.Setup(x => x.GetListAsync(revenueObjectId)).ReturnsAsync(baseValueSegmentInfoList);

            Tuple <BaseValueSegmentDto, BaseValueSegmentDto> resultSet = new Tuple <BaseValueSegmentDto, BaseValueSegmentDto>(baseValueSegmentCurrent, null);

            _baseValueSegmentProvider.Setup(x => x.GetCurrentAndPrevious(assessmentEventId)).ReturnsAsync(resultSet);

            _assessmentEventRepository.Setup(x => x.Get(assessmentEventId)).ReturnsAsync(assessmentEvent);

            _grmEventDomain.Setup(x => x.GetValueHeaderGrmEvents(It.IsAny <BaseValueSegmentDto>()))
            .ReturnsAsync(valueHeaderGrmEvents.AsEnumerable);

            _baseValueSegmentRepository.Setup(x => x.GetConclusionsData(It.IsAny <int>(), It.IsAny <DateTime>()))
            .ReturnsAsync(conclusionEventsList.AsEnumerable);

            _revenueObjectDomain.Setup(x => x.GetMarketAndRestrictedValues(It.IsAny <DateTime>(), It.IsAny <int>()))
            .ReturnsAsync(marketRestrictedValues.AsEnumerable);

            _baseValueSegmentRepository.Setup(x => x.GetSubComponentDetails(It.IsAny <int>(), It.IsAny <DateTime>()))
            .ReturnsAsync(subComponentDetailsList.AsEnumerable);

            _baseValueSegmentRepository.Setup(x => x.GetFactorBaseYearValueDetail(It.IsAny <DateTime>(),
                                                                                  It.IsAny <int>(), It.IsAny <decimal>(), It.IsAny <int>())).ReturnsAsync(factorBaseYearValueDetail);

            var subComponent = _subComponentBaseValueSegmentDomain.Get(assessmentEventId).Result;

            subComponent.ShouldNotBeNull();
            subComponent.CurrentBaseValueSegment.ShouldNotBeNull();
            subComponent.PreviousBaseValueSegment.ShouldBeNull();
            var bvsComponent = subComponent.CurrentBaseValueSegment;

            bvsComponent.ShouldNotBeNull();
            bvsComponent.BaseValueSegmentTransactionTypeDescription.ShouldBe("UnitTestBVSTransactionType");
            bvsComponent.EventDate.ShouldBe(eventDate);
            bvsComponent.EffectiveDate.ShouldBe(effectiveDate);
            bvsComponent.EventName.ShouldBe("UnitTestGrmEvent");
            bvsComponent.EventType.ShouldBe("UnitTestConclusionEvent");
            bvsComponent.Source.ShouldBe(baseValueSegmentCurrent);
            bvsComponent.Components.Length.ShouldBeGreaterThan(0);
            bvsComponent.ValueHeaders.Length.ShouldBeGreaterThan(0);
            var component = bvsComponent.Components[0];

            component.BaseValue.ShouldBe(80000);
            component.BaseYear.ShouldBe(2016);
            component.EventId.ShouldBe(grmEventId);
            component.EventName.ShouldBe("UnitTestGrmEvent");
            component.EventType.ShouldBe("UnitTestConclusionEvent");
            component.Fbyv.ShouldBe(102000);
            component.FbyvAsOfYear.ShouldBe(2016);
            component.ValueHeaderId.ShouldBe(bvsValueHeaderId);
            var componentDetail = component.ComponentDetails[0];

            componentDetail.BaseValue.ShouldBe(80000);
            componentDetail.Component.ShouldBe("Unit Test Component");
            componentDetail.ComponentId.ShouldBe(0);
            componentDetail.Fbyv.ShouldBe(102000);
            componentDetail.SubComponent.ShouldBe("Unit Test Subcomponent");
            componentDetail.SubComponentId.ShouldBe(subComponentId);
            componentDetail.ValueId.ShouldBe(bvsValueId);
            var valueHeader = bvsComponent.ValueHeaders[0];

            valueHeader.BaseYear.ShouldBe(2016);
            valueHeader.DisplayName.ShouldBe("UnitTestConclusionEvent 2016");
            valueHeader.EffectiveDate.ShouldBe(effectiveDate);
            valueHeader.EventDate.ShouldBe(eventDate);
            valueHeader.EventType.ShouldBe("UnitTestConclusionEvent");
            valueHeader.GrmEventId.ShouldBe(grmEventId);
            valueHeader.HeaderValueId.ShouldBe(bvsValueHeaderId);
        }
 public async Task <BaseValueSegmentDto> CreateAsync(BaseValueSegmentDto baseValueSegmentDto)
 {
     return(await _httpClientWrapper.Post <BaseValueSegmentDto>(Url, $"{Version}/BaseValueSegments", baseValueSegmentDto));
 }
Beispiel #19
0
        private async Task <BvsDetailDto> CreateReadBvsTransactionByDetails(DateTime assessmentEventDate, BaseValueSegmentDto baseValueSegmentDto)
        {
            var bvsDto = new BvsDetailDto {
                Source = baseValueSegmentDto
            };

            // get the legal parties and document information associated to base value segment
            var legalPartyRoleDocuments = (await _legalPartyDomain.GetLegalPartyRoleDocuments(baseValueSegmentDto)).ToList();

            // get the unique set of events defined for the this bvs and revenue object
            var events = (await _grmEventDomain.GetOwnerGrmEvents(baseValueSegmentDto)).ToList();

            events.PopulateEvent(bvsDto);

            // take the first transaction for the bvs
            bvsDto.Details = (await CreateDetails(baseValueSegmentDto.FirstTransaction(), events, legalPartyRoleDocuments, assessmentEventDate, baseValueSegmentDto.RevenueObjectId));

            return(bvsDto);
        }
        public async Task <IActionResult> Create([FromBody] BaseValueSegmentDto baseValueSegment)
        {
            baseValueSegment = await _baseValueSegmentDomain.CreateAsync(baseValueSegment);

            return(CreatedAtRoute(GetRouteName, new { id = baseValueSegment.Id }, baseValueSegment));
        }
Beispiel #21
0
 public static BvsOwnerDto ToBvsOwnerDto(this BaseValueSegmentDto baseValueSegmentDto)
 {
     return(new BvsOwnerDto {
         Source = baseValueSegmentDto
     });
 }
Beispiel #22
0
 public static BaseValueSegmentTransactionDto FirstTransaction(this BaseValueSegmentDto baseValueSegmentDto)
 {
     // sort transactions by id desc, we are going to pop the first two, first will be current next will be previous
     return(baseValueSegmentDto.BaseValueSegmentTransactions.OrderByDescending(t => t.Id).First());
 }
Beispiel #23
0
        public static BaseValueSegmentDto MockData(this Mock <IBaseValueSegmentProvider> baseValueSegmentProvider, MockData mockData)
        {
            var ownerValueDtos = new List <BaseValueSegmentOwnerValueDto>();

            var owner = new BaseValueSegmentOwnerDto
            {
                Id = mockData.OwnerId,
                LegalPartyRoleId                 = 333,
                BeneficialInterestPercent        = mockData.BeneficialInterestPercentage,
                BaseValueSegmentOwnerValueValues = ownerValueDtos
            };

            ownerValueDtos.Add(new BaseValueSegmentOwnerValueDto
            {
                BaseValue = 100,
                BaseValueSegmentOwnerId       = mockData.OwnerId,
                BaseValueSegmentValueHeaderId = 1
            });

            var baseValueSegmentDto = new BaseValueSegmentDto
            {
                Id             = mockData.BaseValueSegmentId,
                AsOf           = mockData.EventDate,
                SequenceNumber = 1,
                BaseValueSegmentTransactions = new List <BaseValueSegmentTransactionDto>
                {
                    new BaseValueSegmentTransactionDto
                    {
                        Id = 31,
                        BaseValueSegmentOwners = new List <BaseValueSegmentOwnerDto>
                        {
                            owner
                        },
                        BaseValueSegmentTransactionType = new BaseValueSegmentTransactionTypeDto
                        {
                            Description = "BaseValueSegmentTransactionTypeDescription",
                            Name        = "BaseValueSegmentTransactionTypeName"
                        }
                    }
                }
            };

            var legalPartyDocuments = new List <LegalPartyDocumentDto>
            {
                new LegalPartyDocumentDto
                {
                    LegalPartyRoleId      = 333,
                    LegalPartyDisplayName = mockData.DisplayName,
                    DocNumber             = mockData.DocumentNumber,
                    DocType = mockData.DocumentType,
                    PctGain = mockData.PercentageInterestGain
                }
            };

            mockData.LegalPartyDomain.Setup(x => x.GetLegalPartyRoleDocuments(baseValueSegmentDto)).Returns(Task.FromResult <IEnumerable <LegalPartyDocumentDto> >(legalPartyDocuments));

            var events = new List <GrmEventInformationDto>
            {
                new GrmEventInformationDto
                {
                    Description = mockData.GrmEventDescription,
                    EventType   = mockData.GrmEventType,
                    EventDate   = mockData.GrmEventDate
                }
            };

            mockData.GrmEventDomain
            .Setup(x => x.GetOwnerGrmEvents(It.Is <BaseValueSegmentDto>(y => y.Id == mockData.BaseValueSegmentId)))
            .Returns(Task.FromResult <IEnumerable <GrmEventInformationDto> >(events));

            var tuple = new Tuple <BaseValueSegmentDto, BaseValueSegmentDto>(baseValueSegmentDto, null);

            baseValueSegmentProvider.Setup(x => x.GetCurrentAndPrevious(It.IsAny <int>()))
            .Returns(Task.FromResult(tuple));

            return(baseValueSegmentDto);
        }
        private async Task <BvsOwnerDto> CreateReadBvsTransactionByOwners(DateTime assessmentEventDate, BaseValueSegmentDto baseValueSegmentDto, int assessmentEventType)
        {
            var bvsDto = baseValueSegmentDto.ToBvsOwnerDto();

            // get the legal parties and document information associated to base value segment
            var legalPartyRoleDocuments = (await _legalPartyDomain.GetLegalPartyRoleDocuments(baseValueSegmentDto)).ToList();

            // get the unique set of events defined for the this bvs and revenue object
            var events = (await _grmEventDomain.GetOwnerGrmEvents(baseValueSegmentDto)).ToList();

            events.PopulateEvent(bvsDto);

            var firstTransaction = baseValueSegmentDto.FirstTransaction();

            // take the first transaction for the bvs
            bvsDto.Owners = await CreateOwners(firstTransaction, events, legalPartyRoleDocuments, assessmentEventDate, assessmentEventType);

            bvsDto.ValueHeaders = GetBaseValueSegmentHeaderEvents(baseValueSegmentDto, firstTransaction);

            bvsDto.BaseValueSegmentTransactionTypeDescription = firstTransaction.BaseValueSegmentTransactionType.Description;

            return(bvsDto);
        }
Beispiel #25
0
 public static Repository.Models.V1.BaseValueSegment ToEntity(this BaseValueSegmentDto baseValueSegment)
 {
     return(Mapper.Map <Repository.Models.V1.BaseValueSegment>(baseValueSegment));
 }
Beispiel #26
0
        public void Get_CallsGetOnAssessmentEventService_ReceivesAssessmentEventServiceDomainDTO_RevenueObjectIsNull()
        {
            var assessmentEventId  = 1;
            var assessmentEventDto = new AssessmentEventDto
            {
                Id                       = assessmentEventId,
                EventDate                = DateTime.Now,
                AsmtEventType            = 999,
                AsmtEventTypeDescription = "Annual",
                RevObjId                 = 888,
                DynCalcStepTrackingId    = 777,
                TaxYear                  = 2017,
                TranId                   = 99999999999
            };
            var assessmentEventTranDto = new AssessmentEventTransactionDto
            {
                AsmtEventStateDescription = "Review Required",
                AsmtEventId     = assessmentEventId,
                AsmtEventState  = 1,
                AsmtRevnEventId = 2,
                Id = 4
            };

            assessmentEventDto.AssessmentEventTransactions.Add(assessmentEventTranDto);

            var baseValueSegmentDto = new BaseValueSegmentDto()
            {
                AsOf            = DateTime.Now,
                RevenueObjectId = 999,
            };

            var httpClientWrapperMock = new Mock <IHttpClientWrapper>();

            httpClientWrapperMock.Setup(x => x.Get <AssessmentEventDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(assessmentEventDto);
            httpClientWrapperMock.Setup(x => x.Get <AssessmentEventTransactionDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(assessmentEventTranDto);
            httpClientWrapperMock.Setup(x => x.Get <BaseValueSegmentDto>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(baseValueSegmentDto);

            var applicationSettingsHelper = new Mock <IApplicationSettingsHelper>();

            applicationSettingsHelper.Setup(x => x.AssessmentEventServiceApiUrl).Returns("");
            applicationSettingsHelper.Setup(x => x.RevenueObjectServiceApiUrl).Returns("");
            applicationSettingsHelper.Setup(x => x.LegalPartyServiceApiUrl).Returns("");
            applicationSettingsHelper.Setup(x => x.BaseValueSegmentServiceApiUrl).Returns("");

            var domain = new AssessmentHeaderDomain(httpClientWrapperMock.Object, applicationSettingsHelper.Object);
            var assessmentHeaderModel = domain.Get(assessmentEventId).Result;

            assessmentHeaderModel.ShouldNotBeNull();
            assessmentHeaderModel.ShouldBeOfType <Models.V1.AssessmentHeader>();

            assessmentHeaderModel.AssessmentEvent.ShouldBeOfType <AssessmentEvent>();
            assessmentHeaderModel.AssessmentEvent.AssessmentEventId.ShouldBe(assessmentEventDto.Id);
            assessmentHeaderModel.AssessmentEvent.EventDate.ShouldBe(assessmentEventDto.EventDate);
            assessmentHeaderModel.AssessmentEvent.AssessmentEventType.ShouldBe(assessmentEventDto.AsmtEventType);
            assessmentHeaderModel.AssessmentEvent.AssessmentEventTypeDescription.ShouldBe(assessmentEventDto.AsmtEventTypeDescription);
            assessmentHeaderModel.AssessmentEvent.RevenueObjectId.ShouldBe(assessmentEventDto.RevObjId);
            assessmentHeaderModel.AssessmentEvent.TaxYear.ShouldBe(assessmentEventDto.TaxYear);
            assessmentHeaderModel.AssessmentEvent.EventState.ShouldBe(assessmentEventDto.AssessmentEventTransactions[0].AsmtEventStateDescription);
            assessmentHeaderModel.AssessmentEvent.BVSTranType.ShouldBeNullOrEmpty();

            assessmentHeaderModel.RevenueObject.ShouldBeNull();
        }
        private async Task <BvsComponenDto> CreateReadBvsTransactionByComponents(DateTime assessmentEventDate, BaseValueSegmentDto baseValueSegmentDto, int assessmentEventType)
        {
            var bvsDto = new BvsComponenDto {
                Source = baseValueSegmentDto
            };

            // get the events defined for the this bvs based on the SubComponentand revenue object
            var events = (await _grmEventDomain.GetValueHeaderGrmEvents(baseValueSegmentDto)).ToList();
            var conclusionHeaderEvents = _baseValueSegmentRepository.GetConclusionsData(baseValueSegmentDto.RevenueObjectId, baseValueSegmentDto.AsOf).Result;

            foreach (var grmEvent in events)
            {
                var conclusionEvent = conclusionHeaderEvents.FirstOrDefault(conclusion => conclusion.GrmEventId == grmEvent.GrmEventId);
                if (conclusionEvent != null)
                {
                    grmEvent.EventType = conclusionEvent.Description;
                }
            }

            events.PopulateEvent(bvsDto);

            // take the first transaction for the bvs
            var firstTransaction = baseValueSegmentDto.FirstTransaction();

            bvsDto.Components = CreateComponents(firstTransaction, events, baseValueSegmentDto.AsOf, baseValueSegmentDto.RevenueObjectId, assessmentEventDate, assessmentEventType);

            bvsDto.ValueHeaders = GetBaseValueSegmentHeaderEvents(baseValueSegmentDto, firstTransaction);

            bvsDto.BaseValueSegmentTransactionTypeDescription = firstTransaction.BaseValueSegmentTransactionType.Description;

            // get the legal parties and document information associated to base value segment
            var legalPartyRoleDocuments = (await _legalPartyDomain.GetLegalPartyRoleDocuments(baseValueSegmentDto)).ToList();

            bvsDto.Owners = firstTransaction.BaseValueSegmentOwners.ToList().Select(bvsOwner =>
            {
                var doc = legalPartyRoleDocuments.First(d => d.LegalPartyRoleId == bvsOwner.LegalPartyRoleId);

                // We are only populating 3 fields for the sub components because only the 3 fields are used for
                // determing what's the base value, market values for each BI based on the ordering of these 3
                // fields. These values are used to reallocate base values/ market values if they are changed by
                // the user in the UI.
                return(new OwnerDto
                {
                    // We must have an Owner Id.
                    // ReSharper disable once PossibleInvalidOperationException
                    OwnerId = bvsOwner.Id.Value,
                    BeneficialInterest = doc.LegalPartyDisplayName,
                    BiPercentage = bvsOwner.BeneficialInterestPercent
                });
            }).ToArray();

            return(bvsDto);
        }
Beispiel #28
0
        public async Task <BaseValueSegmentDto> CreateAsync(BaseValueSegmentDto baseValueSegmentDto)
        {
            if (baseValueSegmentDto.Id.HasValue)
            {
                throw new BadRequestException(string.Format("Id {0} is invalid.", baseValueSegmentDto.Id));
            }

            if (baseValueSegmentDto.BaseValueSegmentTransactions.Count == 0)
            {
                throw new BadRequestException("No Base Value Segment Transaction defined for the Base Value Segment");
            }

            foreach (var transaction in baseValueSegmentDto.BaseValueSegmentTransactions)
            {
                if (transaction.BaseValueSegmentOwners == null ||
                    transaction.BaseValueSegmentOwners.Count == 0)
                {
                    throw new BadRequestException("No Base Value Segment Owners defined for the Base Value Segment Transaction");
                }

                if (transaction.BaseValueSegmentValueHeaders == null ||
                    transaction.BaseValueSegmentValueHeaders.Count == 0)
                {
                    throw new BadRequestException("No Base Value Segment Value Headers defined for the Base Value Segment Transaction");
                }
            }

            // We are going to create a brand new Base Value Segment. In order for EF to know,
            // we are going to set all Primary Keys to 0.

            var eventsCreated = await _grmEventDomain.Create(baseValueSegmentDto);

            try
            {
                var entity = baseValueSegmentDto.ToEntity();

                entity.Id = 0;

                var baseValueSegmentOwnerValues = new List <BaseValueSegmentOwnerValue>();

                foreach (var baseValueSegmentTransaction in entity.BaseValueSegmentTransactions)
                {
                    PrepareTransactionForCreate(baseValueSegmentTransaction, false);
                }

                foreach (var assessmentRevisionBaseValueSegmentDto in entity.BaseValueSegmentAssessmentRevisions)
                {
                    assessmentRevisionBaseValueSegmentDto.Id = 0;
                    assessmentRevisionBaseValueSegmentDto.BaseValueSegmentId = 0;
                }

                foreach (var entityBaseValueSegmentTransaction in entity.BaseValueSegmentTransactions)
                {
                    DiscoverOwnerValuesForSavingInTransaction(() =>
                                                              _bvsRepository.GetUserTransactionType(),
                                                              () => _bvsRepository.GetUserDeletedTransactionType(),
                                                              entityBaseValueSegmentTransaction, baseValueSegmentOwnerValues);
                }

                foreach (var entityBaseValueSegmentAssessmentRevision in entity.BaseValueSegmentAssessmentRevisions)
                {
                    var newStatusType = _bvsRepository.GetNewStatusType();
                    entityBaseValueSegmentAssessmentRevision.BaseValueSegmentStatusType   = newStatusType;
                    entityBaseValueSegmentAssessmentRevision.BaseValueSegmentStatusTypeId = newStatusType.Id;
                }

                // Client side code does not necessary set this value when passing over,
                // In the case of when an assessment event does not have any current BVS, then
                // this issue will be seen. We are thus covering this case on the server side.
                foreach (var entityBaseValueSegmentTransaction in entity.BaseValueSegmentTransactions)
                {
                    if (string.IsNullOrEmpty(entityBaseValueSegmentTransaction.EffectiveStatus))
                    {
                        entityBaseValueSegmentTransaction.EffectiveStatus = "A";
                    }
                }

                await _bvsRepository.CreateAsync(entity, baseValueSegmentOwnerValues);

                return(entity.ToDomain());
            }
            catch
            {
                _grmEventDomain.Delete(eventsCreated);
                throw;
            }
        }
        public async Task <IActionResult> Save(int baseValueSegmentId, int assessmentEventId, [FromBody] BaseValueSegmentDto baseValueSegmentDto)
        {
            baseValueSegmentDto = await _baseValueSegmentDomain.SaveAsync(assessmentEventId, baseValueSegmentDto);

            return(CreatedAtRoute(GetBasedOnAssessmentEventIdRouteName, new { baseValueSegmentId, assessmentEventId }, baseValueSegmentDto));
        }
Beispiel #30
0
        public void CreateGrmEventsFromBaseValueSegmentDtoMappingsOccurAndGetGrmEventIdArray()
        {
            var baseValueSegment = new BaseValueSegmentDto
            {
                BaseValueSegmentTransactions = new List <BaseValueSegmentTransactionDto>
                {
                    new BaseValueSegmentTransactionDto
                    {
                        BaseValueSegmentOwners = new List <BaseValueSegmentOwnerDto>
                        {
                            new BaseValueSegmentOwnerDto
                            {
                                Id = 5235,
                                GrmEventInformation = new GrmEventCreateInformation
                                {
                                    EffectiveDateTime = new DateTime(2012, 1, 1),
                                    RevenueObjectId   = 24661,
                                    EventType         = 34664
                                }
                            },
                            new BaseValueSegmentOwnerDto
                            {
                                Id = 5238,
                                GrmEventInformation = new GrmEventCreateInformation
                                {
                                    EffectiveDateTime = new DateTime(2012, 2, 1),
                                    RevenueObjectId   = 68656,
                                    EventType         = 9563463
                                }
                            }
                        }, BaseValueSegmentValueHeaders = new List <BaseValueSegmentValueHeaderDto>
                        {
                            new BaseValueSegmentValueHeaderDto
                            {
                                Id = 352523,
                                GrmEventInformation = new GrmEventCreateInformation
                                {
                                    EffectiveDateTime = new DateTime(2012, 1, 2),
                                    RevenueObjectId   = 6346436,
                                    EventType         = 312455
                                }
                            },
                            new BaseValueSegmentValueHeaderDto
                            {
                                Id = 352528,
                                GrmEventInformation = new GrmEventCreateInformation
                                {
                                    EffectiveDateTime = new DateTime(2012, 1, 3),
                                    RevenueObjectId   = 75544,
                                    EventType         = 65344
                                }
                            }
                        }
                    }
                }
            };

            var created = new GrmEventListCreateDto();

            created.GrmEventList.Add(new GrmEventCreateDto
            {
                GrmEventId = 44,
                ParentType = GrmEventParentType.Owner,
                ParentId   = 5235
            });
            created.GrmEventList.Add(new GrmEventCreateDto
            {
                GrmEventId = 45,
                ParentType = GrmEventParentType.Owner,
                ParentId   = 5238
            });
            created.GrmEventList.Add(new GrmEventCreateDto
            {
                GrmEventId = 46,
                ParentType = GrmEventParentType.HeaderValue,
                ParentId   = 352523
            });
            created.GrmEventList.Add(new GrmEventCreateDto
            {
                GrmEventId = 47,
                ParentType = GrmEventParentType.HeaderValue,
                ParentId   = 352528
            });

            _mockRepository.Setup(x => x.CreateAsync(It.Is <GrmEventListCreateDto>(y => y.GrmEventList.Count == 4 &&
                                                                                   y.GrmEventList[0].ParentId == 5235 && y.GrmEventList[0].ParentType == GrmEventParentType.Owner && y.GrmEventList[0].EffectiveDateTime == new DateTime(2012, 1, 1) && y.GrmEventList[0].EventType == 34664 &&
                                                                                   y.GrmEventList[1].ParentId == 5238 && y.GrmEventList[1].ParentType == GrmEventParentType.Owner && y.GrmEventList[1].EffectiveDateTime == new DateTime(2012, 2, 1) && y.GrmEventList[1].EventType == 9563463 &&
                                                                                   y.GrmEventList[2].ParentId == 352523 && y.GrmEventList[2].ParentType == GrmEventParentType.HeaderValue && y.GrmEventList[2].EffectiveDateTime == new DateTime(2012, 1, 2) && y.GrmEventList[2].EventType == 312455 &&
                                                                                   y.GrmEventList[3].ParentId == 352528 && y.GrmEventList[3].ParentType == GrmEventParentType.HeaderValue && y.GrmEventList[3].EffectiveDateTime == new DateTime(2012, 1, 3) && y.GrmEventList[3].EventType == 65344)))
            .ReturnsAsync(created);

            var results = _grmEventDomain.Create(baseValueSegment).Result;

            results.ShouldNotBeNull();
            results[0].ShouldBe(44);
            results[1].ShouldBe(45);
            results[2].ShouldBe(46);
            results[3].ShouldBe(47);
        }