Пример #1
0
        private static void GetHeaderValueCreateGrmEventInformation(BaseValueSegmentTransactionDto transaction, GrmEventListCreateDto eventsToBeCreated)
        {
            var valueHeadersThatNeedEvents = transaction.BaseValueSegmentValueHeaders.Where(o => o.GRMEventId == null);

            var baseValueSegmentValueHeaderDtos = valueHeadersThatNeedEvents as BaseValueSegmentValueHeaderDto[] ??
                                                  valueHeadersThatNeedEvents.ToArray();

            var notValidHeaderValues = baseValueSegmentValueHeaderDtos.Where(v => v.GrmEventInformation == null);

            if (notValidHeaderValues.Any())
            {
                throw new BadRequestException("No GRMEvent Id defined and no GRMEventCreateInformation was provided.");
            }

            foreach (var valueHeader in baseValueSegmentValueHeaderDtos)
            {
                eventsToBeCreated.GrmEventList.Add(
                    new GrmEventCreateDto
                {
                    ParentId          = valueHeader.Id,
                    ParentType        = GrmEventParentType.HeaderValue,
                    EffectiveDateTime = valueHeader.GrmEventInformation.EffectiveDateTime,
                    RevenueObjectId   = valueHeader.GrmEventInformation.RevenueObjectId,
                    EventType         = valueHeader.GrmEventInformation.EventType
                }
                    );
            }
        }
Пример #2
0
        private static void GetOwnerCreateGrmEventInformation(BaseValueSegmentTransactionDto transaction, GrmEventListCreateDto eventsToBeCreated)
        {
            var ownersThatNeedEvents = transaction.BaseValueSegmentOwners.Where(o => o.GRMEventId == null);

            var baseValueSegmentOwnerDtos = ownersThatNeedEvents as BaseValueSegmentOwnerDto[] ?? ownersThatNeedEvents.ToArray();

            var notValidOwners = baseValueSegmentOwnerDtos.Where(v => v.GrmEventInformation == null);

            if (notValidOwners.Any())
            {
                throw new BadRequestException("No GRMEvent Id defined and no GRMEventCreateInformation was provided.");
            }

            foreach (var owner in baseValueSegmentOwnerDtos)
            {
                eventsToBeCreated.GrmEventList.Add(
                    new GrmEventCreateDto
                {
                    // ReSharper disable once PossibleInvalidOperationException
                    ParentId          = owner.Id.Value,
                    ParentType        = GrmEventParentType.Owner,
                    EffectiveDateTime = owner.GrmEventInformation.EffectiveDateTime,
                    RevenueObjectId   = owner.GrmEventInformation.RevenueObjectId,
                    EventType         = owner.GrmEventInformation.EventType
                }
                    );
            }
        }
        public void CreateBaseValueSegmentTransactionNoValueHeadersBadRequestExceptionIsThrown()
        {
            var baseValueSegmentTransaction = new BaseValueSegmentTransactionDto();

            baseValueSegmentTransaction.BaseValueSegmentOwners.Add(new BaseValueSegmentOwnerDto());

            Should.ThrowAsync <BadRequestException>(() => _baseValueSegmentTransactionDomain.CreateAsync(baseValueSegmentTransaction));
        }
        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);
        }
Пример #5
0
        private async Task <int[]> CreateEventForTransaction(BaseValueSegmentTransactionDto transaction)
        {
            GrmEventListCreateDto eventsToBeCreated = new GrmEventListCreateDto();

            // get grm event that need to be created
            GetOwnerCreateGrmEventInformation(transaction, eventsToBeCreated);

            GetHeaderValueCreateGrmEventInformation(transaction, eventsToBeCreated);

            // call grm events to create
            var createdEvents = await _grmEventRepository.CreateAsync(eventsToBeCreated);

            // now map back
            MapOwnerCreatedGrmEventToBvs(createdEvents, transaction);

            MapHeaderValueCreatedGrmEventToBvs(createdEvents, transaction);

            return(createdEvents.GrmEventList.Select(e => e.GrmEventId).ToArray());
        }
Пример #6
0
        public async Task <BaseValueSegmentTransactionDto> CreateAsync(BaseValueSegmentTransactionDto baseValueSegmentTransactionDto)
        {
            if (baseValueSegmentTransactionDto.BaseValueSegmentOwners == null ||
                baseValueSegmentTransactionDto.BaseValueSegmentOwners.Count == 0)
            {
                throw new BadRequestException("No Base Value Segment Owners defined for the Base Value Segment Transaction");
            }

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

            var eventsCreated = await _grmEventDomain.CreateForTransaction(baseValueSegmentTransactionDto);

            var baseValueSegmentTransaction = baseValueSegmentTransactionDto.ToEntity();

            PrepareTransactionForCreate(baseValueSegmentTransaction, true);

            var baseValueSegmentOwnerValues = new List <BaseValueSegmentOwnerValue>();

            DiscoverOwnerValuesForSavingInTransaction(() => _baseValueSegmentRepository.GetUserTransactionType(),
                                                      () => _baseValueSegmentRepository.GetUserDeletedTransactionType(),
                                                      baseValueSegmentTransaction,
                                                      baseValueSegmentOwnerValues);

            try
            {
                await _baseValueSegmentTransactionRepository.CreateAsync(baseValueSegmentTransaction, baseValueSegmentOwnerValues);
            }
            catch
            {
                _grmEventDomain.Delete(eventsCreated);
                throw;
            }

            return(baseValueSegmentTransaction.ToDomain());
        }
Пример #7
0
 public static BaseValueSegmentTransaction ToEntity(this BaseValueSegmentTransactionDto baseValueSegmentTransactionDto)
 {
     return(Mapper.Map <BaseValueSegmentTransaction>(baseValueSegmentTransactionDto));
 }
        private async Task <OwnerDto[]> CreateOwners(BaseValueSegmentTransactionDto bvsTransaction,
                                                     List <GrmEventInformationDto> grmEventInformationDtos,
                                                     List <LegalPartyDocumentDto> legalPartyRoleDocuments,
                                                     DateTime assessmentEventDate, int assessmentEventType)
        {
            var ownerDtos = new List <OwnerDto>();

            // now build segments and base value segment per owner
            foreach (var bvsOwner in bvsTransaction.BaseValueSegmentOwners)
            {
                // now build assessment event dto
                var owner = bvsOwner.ToOwner();

                grmEventInformationDtos.PopulateEvent(owner, bvsOwner.GRMEventId);
                legalPartyRoleDocuments.PopulateOwner(owner, bvsOwner);

                // the legal party role document may not tie back
                if (string.IsNullOrEmpty(owner.BeneficialInterest))
                {
                    var legalPartyRole = (await _legalPartyDomain.GetLegalPartyRole(bvsOwner.LegalPartyRoleId, assessmentEventDate));

                    owner.BeneficialInterest = legalPartyRole.LegalParty.DisplayName;
                }

                owner.IsOverride = bvsOwner.IsOverride;
                ownerDtos.Add(owner);

                // cast so we can add our base value segments
                var ownerEvents = new List <OwnerValueDto>();

                foreach (var ownerValue in bvsOwner.BaseValueSegmentOwnerValueValues)
                {
                    // get the values associated with the owner value
                    var valueHeaderDtos = bvsTransaction.BaseValueSegmentValueHeaders.Where(v => ownerValue.BaseValueSegmentValueHeaderId == v.Id);

                    foreach (var valueHeaderDto in valueHeaderDtos)
                    {
                        // now build new assessment dto
                        var ownerValueDto = new OwnerValueDto
                        {
                            ValueHeaderId = ownerValue.BaseValueSegmentValueHeaderId,       // NEW HOW TO SELECT ITEM IN COMBO
                            OwnerId       = bvsOwner.Id.Value,
                            // ReSharper disable once PossibleInvalidOperationException
                            OwnerValueId = ownerValue.Id.Value,

                            //GrmEventId = valueHeaderDto.GRMEventId, //OLD HOW TO SELECT ITEM IN COMBO
                            BaseYear  = valueHeaderDto.BaseYear,
                            BaseValue = decimal.Truncate(ownerValue.BaseValue)
                        };

                        grmEventInformationDtos.PopulateEvent(ownerValueDto, valueHeaderDto.GRMEventId);

                        var fbyvDetail = _baseValueSegmentRepository.GetFactorBaseYearValueDetail(assessmentEventDate,
                                                                                                  valueHeaderDto.BaseYear, ownerValue.BaseValue, assessmentEventType);

                        ownerValueDto.Fbyv       = fbyvDetail.Result.Fbyv;
                        ownerValueDto.IsOverride = valueHeaderDto.BaseValueSegmentValues.Any(x => x.IsOverride == true);
                        ownerEvents.Add(ownerValueDto);
                    }
                }

                owner.OwnerValues = ownerEvents.ToArray();
            }

            //Add default sorting
            ownerDtos = ownerDtos.OrderBy(x => x.BeneficialInterest)
                        .ThenBy(x => x.EventDate).ToList();

            return(ownerDtos.ToArray());
        }
        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());
        }
Пример #10
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);
        }
        private ComponentDto[] CreateComponents(BaseValueSegmentTransactionDto bvsTransaction,
                                                List <GrmEventInformationDto> grmEventInformationDtos,
                                                DateTime baseValueSegmentAsOfDate,
                                                int baseValueSegmentRevObjId,
                                                DateTime assessmentEventDate,
                                                int assessmentEventType)
        {
            var componentDtos = new List <ComponentDto>();

            // now build segments and base value segment per subComponents
            foreach (var bvsValueHeader in bvsTransaction.BaseValueSegmentValueHeaders)
            {
                // per meeting  with bob do not error out if grm even information is missing, return unknown
                var grmEventInformationDto = grmEventInformationDtos.FirstOrDefault(grm => grm.GrmEventId == bvsValueHeader.GRMEventId);
                if (grmEventInformationDto == null)
                {
                    continue;
                }

                grmEventInformationDto.RevenueObjectId = baseValueSegmentRevObjId;

                var eventName     = grmEventInformationDto.Description;
                var eventType     = grmEventInformationDto.EventType;
                var eventDate     = string.Format("{0:d}", grmEventInformationDto.EventDate);
                var effectiveDate = string.Format("{0:d}", grmEventInformationDto.EffectiveDate);

                var subComponentDetailDtos = _baseValueSegmentRepository.GetSubComponentDetails(baseValueSegmentRevObjId, baseValueSegmentAsOfDate).Result.ToList();

                // Build Component dto
                var component = new ComponentDto
                {
                    EventName     = eventName,
                    EventType     = eventType,
                    EventDate     = eventDate,
                    EffectiveDate = effectiveDate,
                    EventId       = bvsValueHeader.GRMEventId,
                    BaseYear      = bvsValueHeader.BaseYear,
                    FbyvAsOfYear  = (grmEventInformationDto.EventDate.Month < 7) ? grmEventInformationDto.EventDate.Year : grmEventInformationDto.EventDate.Year + 1,
                    ValueHeaderId = bvsValueHeader.Id
                };

                // Build Component Details
                var componentDetails = new List <ComponentDetailDto>();
                foreach (var value in bvsValueHeader.BaseValueSegmentValues)
                {
                    var subComponentDetail = subComponentDetailDtos.FirstOrDefault(x => x.SubComponentId == value.SubComponent);

                    int    componentId      = -1;
                    int    subComponentId   = -1;
                    string componentName    = Constants.ComponentUnknownName;
                    string subComponentName = Constants.SubComponentUnknownName;

                    if (subComponentDetail != null)
                    {
                        componentId      = subComponentDetail.ComponentTypeId;
                        subComponentId   = subComponentDetail.SubComponentId;
                        componentName    = subComponentDetail.Component;
                        subComponentName = subComponentDetail.SubComponent;
                    }


                    // build new component detail dto
                    var componentDetail = new ComponentDetailDto
                    {
                        ComponentId    = componentId,
                        Component      = componentName,
                        SubComponentId = subComponentId,
                        SubComponent   = subComponentName,
                        BaseValue      = decimal.Truncate(value.ValueAmount),
                        // ReSharper disable once PossibleInvalidOperationException
                        ValueId = value.Id.Value
                    };
                    var fbyvDetail = _baseValueSegmentRepository.GetFactorBaseYearValueDetail(assessmentEventDate,
                                                                                              bvsValueHeader.BaseYear, value.ValueAmount, assessmentEventType);

                    componentDetail.Fbyv       = fbyvDetail.Result.Fbyv;
                    componentDetail.IsOverride = value.IsOverride;
                    componentDetails.Add(componentDetail);
                }

                component.IsOverride       = bvsValueHeader.BaseValueSegmentValues.All(x => x.IsOverride == true);
                component.ComponentDetails = componentDetails;
                componentDtos.Add(component);
            }

            //Add default sorting
            componentDtos = componentDtos.OrderBy(x => x.BaseYear)
                            .ThenBy(x => x.EffectiveDate).ToList();

            return(componentDtos.ToArray());
        }
 public async Task CreateTransactionAsync(BaseValueSegmentTransactionDto baseValueSegmentTransactionDto)
 {
     await _httpClientWrapper.Post <BaseValueSegmentTransactionDto>(Url, $"{Version}/BaseValueSegments/Transactions", baseValueSegmentTransactionDto);
 }
Пример #13
0
        private static void MapOwnerCreatedGrmEventToBvs(GrmEventListCreateDto createdEvents, BaseValueSegmentTransactionDto transaction)
        {
            var ownerCreated = createdEvents.GrmEventList.Where(o => o.ParentType == GrmEventParentType.Owner);

            foreach (var ownerGrmEvent in ownerCreated)
            {
                var owner = transaction.BaseValueSegmentOwners.Single(o => o.Id == ownerGrmEvent.ParentId);

                owner.GRMEventId = ownerGrmEvent.GrmEventId;
            }
        }
Пример #14
0
        private static void MapHeaderValueCreatedGrmEventToBvs(GrmEventListCreateDto createdEvents, BaseValueSegmentTransactionDto transaction)
        {
            var headerValueCreated = createdEvents.GrmEventList.Where(o => o.ParentType == GrmEventParentType.HeaderValue);

            foreach (var headerGrmEvent in headerValueCreated)
            {
                var header = transaction.BaseValueSegmentValueHeaders.Single(h => h.Id == headerGrmEvent.ParentId);

                header.GRMEventId = headerGrmEvent.GrmEventId;
            }
        }
Пример #15
0
        public async Task <int[]> CreateForTransaction(BaseValueSegmentTransactionDto transaction)
        {
            var transactionEventIds = await CreateEventForTransaction(transaction);

            return(transactionEventIds.ToArray());
        }
Пример #16
0
        private async Task <DetailDto[]> CreateDetails(BaseValueSegmentTransactionDto bvsTransaction,
                                                       List <GrmEventInformationDto> grmEventInformationDtos,
                                                       List <LegalPartyDocumentDto> legalPartyDocumentDtos,
                                                       DateTime assessmentEventDate,
                                                       int baseValueSegmentRevObjId)
        {
            var list = new List <DetailDto>();

            // now build segments and base value segment per owner
            foreach (var bvsOwner in bvsTransaction.BaseValueSegmentOwners)
            {
                // per meeting  with bob do not error out if grm even information is missing, return unknown
                var grmOwnerEventInformationDto = grmEventInformationDtos.FirstOrDefault(grm => grm.GrmEventId == bvsOwner.GRMEventId);

                DateTime?ownerEventDate = null;
                string   ownerEventType;
                string   ownerEventName;

                if (grmOwnerEventInformationDto != null)
                {
                    ownerEventName = grmOwnerEventInformationDto.Description;
                    ownerEventType = grmOwnerEventInformationDto.EventType;
                    ownerEventDate = grmOwnerEventInformationDto.EffectiveDate;
                }
                else
                {
                    ownerEventName = Constants.EventUnknownName;
                    ownerEventType = Constants.EventUnknownName;
                }

                var allTheOwnersDocuments = legalPartyDocumentDtos.Where(x => x.LegalPartyRoleId == bvsOwner.LegalPartyRoleId).ToList();

                foreach (var ownerValue in bvsOwner.BaseValueSegmentOwnerValueValues)
                {
                    // get the values associated with the owner value
                    var baseValueHeaders = bvsTransaction.BaseValueSegmentValueHeaders.Where(v => ownerValue.BaseValueSegmentValueHeaderId == v.Id);

                    foreach (var bvsValueHeader in baseValueHeaders)
                    {
                        // per meeting with bob do not error out if grm even information is missing, return unknown
                        var grmValueHeaderEventInformationDto = grmEventInformationDtos.FirstOrDefault(grm => grm.GrmEventId == bvsValueHeader.GRMEventId);

                        // HACK: this should set but the migration process, bob told arpan to set revobject
                        // to zero for dummy grmevents created for bvs, need to discuss
                        grmValueHeaderEventInformationDto.RevenueObjectId = baseValueSegmentRevObjId;

                        string   valueHeaderEventName;
                        string   valueHeaderEventType;
                        DateTime?valueHeaderEventDate = null;

                        if (grmOwnerEventInformationDto != null)
                        {
                            valueHeaderEventName = grmValueHeaderEventInformationDto.Description;
                            valueHeaderEventType = grmValueHeaderEventInformationDto.EventType;
                            valueHeaderEventDate = grmValueHeaderEventInformationDto.EffectiveDate;
                        }
                        else
                        {
                            valueHeaderEventName = Constants.EventUnknownName;
                            valueHeaderEventType = Constants.EventUnknownName;
                        }

                        var subComponentDetailDtos = _baseValueSegmentRepository.GetSubComponentDetails(baseValueSegmentRevObjId, assessmentEventDate).Result.ToList();

                        foreach (var value in bvsValueHeader.BaseValueSegmentValues)
                        {
                            var subComponentDetail = subComponentDetailDtos.FirstOrDefault(x => x.SubComponentId == value.SubComponent);

                            if (subComponentDetail is null)
                            {
                                continue;
                            }

                            var ownerSpecificEventDocument = allTheOwnersDocuments.SingleOrDefault(x => x.GrmEventId == bvsOwner.GRMEventId);

                            string beneficialInterest;
                            string docNumber;

                            decimal?percentageInterestGain = null;

                            if (ownerSpecificEventDocument != null)
                            {
                                beneficialInterest     = ownerSpecificEventDocument.LegalPartyDisplayName;
                                docNumber              = ownerSpecificEventDocument.DocNumber;
                                percentageInterestGain = ownerSpecificEventDocument.PctGain;
                            }
                            else
                            {
                                var legalPartyRole = (await _legalPartyDomain.GetLegalPartyRole(bvsOwner.LegalPartyRoleId, assessmentEventDate));

                                beneficialInterest = legalPartyRole.LegalParty.DisplayName;
                                docNumber          = Constants.DocumentUnknownName;
                            }

                            // now build dto
                            var detail = new DetailDto
                            {
                                BeneficialInterest     = beneficialInterest,
                                DocNumber              = docNumber,
                                PercentageInterestGain = percentageInterestGain,

                                OwnershipEventName = ownerEventName,
                                OwnershipEventType = ownerEventType,
                                OwnershipEventDate = ownerEventDate,

                                BaseValueSegmentEventName = valueHeaderEventName,
                                BaseValueSegmentEventType = valueHeaderEventType,
                                BaseValueSegmentEventDate = valueHeaderEventDate,

                                BiPercentage = bvsOwner.BeneficialInterestPercent,

                                ComponentName       = subComponentDetail.Component,
                                SubComponentName    = subComponentDetail.SubComponent,
                                SubComponentId      = subComponentDetail.SubComponentId,
                                BaseYear            = bvsValueHeader.BaseYear,
                                OwnerIsOverride     = bvsOwner.IsOverride,
                                ComponentIsOverride = bvsValueHeader.BaseValueSegmentValues.Any(x => x.IsOverride == true && x.SubComponent == subComponentDetail.SubComponentId),
                                OwnerId             = bvsOwner.Id,
                                AssessmentEventDate = assessmentEventDate,
                                ValueHeaderId       = bvsValueHeader.Id
                            };

                            list.Add(detail);
                        }
                    }
                }
            }

            return(list.ToArray());
        }
        public async Task <IActionResult> Create([FromBody] BaseValueSegmentTransactionDto baseValueSegmentTransactionDto)
        {
            baseValueSegmentTransactionDto = await _baseValueSegmentTransactionDomainDomain.CreateAsync(baseValueSegmentTransactionDto);

            return(CreatedAtRoute(GetRouteName, new { id = baseValueSegmentTransactionDto.Id }, baseValueSegmentTransactionDto));
        }
Пример #18
0
        public void CreateForTransactionFromBaseValueSegmentTransactionDtoMappingsOccurAndGetGrmEventIdArray()
        {
            var transaction = 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.CreateForTransaction(transaction).Result;

            results.ShouldNotBeNull();
            results[0].ShouldBe(44);
            results[1].ShouldBe(45);
            results[2].ShouldBe(46);
            results[3].ShouldBe(47);
        }
        public async Task <Models.V1.AssessmentHeader> Get(int assessmentEventId)
        {
            if (assessmentEventId < 1)
            {
                throw new BadRequestException("Invalid AssessmentEventId");
            }

            var assessmentEventDto = await _httpClientWrapper.Get <AssessmentEventDto>(_applicationSettingsHelper.AssessmentEventServiceApiUrl, $"{Version}/assessmentevents/{assessmentEventId}");

            if (assessmentEventDto == null)
            {
                return(null);
            }

            var assessmentEventTran = assessmentEventDto.AssessmentEventTransactions.OrderByDescending(aet => aet.Id).FirstOrDefault();

            BaseValueSegmentTransactionDto currentBaseValueSegmentTransaction = null;

            BaseValueSegmentDto baseValueSegmentDto = null;

            try
            {
                baseValueSegmentDto = await _httpClientWrapper.Get <BaseValueSegmentDto>(_applicationSettingsHelper.BaseValueSegmentServiceApiUrl,
                                                                                         $"{Version}/basevaluesegments/RevenueObjectId/{assessmentEventDto.RevObjId}/AssessmentEventDate/{assessmentEventDto.EventDate:yyyy-MM-dd}");
            }
            catch (NotFoundException)
            {
                // no records found
            }

            if (baseValueSegmentDto != null)
            {
                var baseValueSegmentTransactions = baseValueSegmentDto.BaseValueSegmentTransactions.OrderByDescending(x => x.Id);
                if (baseValueSegmentTransactions.Any())
                {
                    currentBaseValueSegmentTransaction = baseValueSegmentTransactions.First();
                }
            }

            var assessmentHeader = new Models.V1.AssessmentHeader
            {
                AssessmentEvent = new AssessmentEvent
                {
                    AssessmentEventId              = assessmentEventDto.Id,
                    AssessmentEventType            = assessmentEventDto.AsmtEventType,
                    AssessmentEventTypeDescription = assessmentEventDto.AsmtEventTypeDescription,
                    RevenueObjectId = assessmentEventDto.RevObjId,
                    EventDate       = assessmentEventDto.EventDate,
                    TaxYear         = assessmentEventDto.TaxYear,
                    EventState      = assessmentEventTran?.AsmtEventStateDescription,
                    TransactionId   = assessmentEventTran?.Id ?? null,
                    BVSTranType     = (currentBaseValueSegmentTransaction != null) ? currentBaseValueSegmentTransaction.BaseValueSegmentTransactionType.Description : string.Empty,
                    PrimaryBaseYear = assessmentEventDto.PrimaryBaseYear,
                    PrimaryBaseYearMultipleOrSingleDescription = assessmentEventDto.PrimaryBaseYearMultipleOrSingleDescription
                }
            };
            RevenueObjectDto revenueObjectDto = null;

            try
            {
                revenueObjectDto = await _httpClientWrapper.Get <RevenueObjectDto>(_applicationSettingsHelper.RevenueObjectServiceApiUrl,
                                                                                   $"{Version}/revenueobjects/{assessmentEventDto.RevObjId}/EffectiveDate/{assessmentEventDto.EventDate:yyyy-MM-dd}");
            }
            catch (NotFoundException)
            {
                //if not found it could be because the PIN is inactive so send back a user-friendly message
                throw new NotFoundException("BVS data is unavailable.  This may be because the PIN is no longer active.");
            }
            catch
            {
                throw new NotFoundException("Unable to look up the Revenue Object.  This may be the result of an inactive record.");
            }

            var legalPartyRoleDtos = await _httpClientWrapper.Get <IList <LegalPartyRoleDto> >(_applicationSettingsHelper.LegalPartyServiceApiUrl,
                                                                                               $"{Version}/LegalParties/LegalPartyRoles/RevenueObjectId/{assessmentEventDto.RevObjId}/EffectiveDate/{assessmentEventDto.EventDate:O}");

            AssessmentRevisionDto assessmentRevisionDto = null;

            if (assessmentEventTran != null)
            {
                assessmentRevisionDto = await _httpClientWrapper.Get <AssessmentRevisionDto>(_applicationSettingsHelper.AssessmentEventServiceApiUrl,
                                                                                             $"{Version}/AssessmentEvents/AssessmentRevisionEventId/{assessmentEventTran.AsmtRevnEventId}/AssessmentEventDate/{assessmentEventDto.EventDate:yyyy-MM-dd}/AssessmentRevision");
            }

            var tagDto = await _httpClientWrapper.Get <TAGDto>(_applicationSettingsHelper.RevenueObjectServiceApiUrl,
                                                               $"{Version}/revenueobjects/RevenueObjectId/{assessmentEventDto.RevObjId}/EffectiveDate/{assessmentEventDto.EventDate:yyyy-MM-dd}/TAG");

            StatutoryReferenceDto statutoryReferenceDto = null;

            if (assessmentEventTran != null)
            {
                statutoryReferenceDto = await _httpClientWrapper.Get <StatutoryReferenceDto>(_applicationSettingsHelper.AssessmentEventServiceApiUrl,
                                                                                             $"{Version}/StatutoryReference/{assessmentEventTran.Id}");
            }

            if (statutoryReferenceDto != null)
            {
                assessmentHeader.AssessmentEvent.RevenueAndTaxCode = statutoryReferenceDto.Description;
            }

            if (revenueObjectDto != null)
            {
                assessmentHeader.RevenueObject = new RevenueObject
                {
                    Id = revenueObjectDto.Id,
                    BeginEffectiveDate = revenueObjectDto.BeginEffectiveDate,
                    EffectiveStatus    = revenueObjectDto.EffectiveStatus,
                    Pin              = revenueObjectDto.Pin,
                    UnformattedPin   = revenueObjectDto.UnformattedPin,
                    Ain              = revenueObjectDto.Ain,
                    GeoCd            = revenueObjectDto.GeoCd,
                    ClassCd          = revenueObjectDto.ClassCd,
                    AreaCd           = revenueObjectDto.AreaCd,
                    CountyCd         = revenueObjectDto.CountyCd,
                    CensusTrack      = revenueObjectDto.CensusTrack,
                    CensusBlock      = revenueObjectDto.CensusBlock,
                    XCoordinate      = revenueObjectDto.XCoordinate,
                    YCoordinate      = revenueObjectDto.YCoordinate,
                    ZCoordinate      = revenueObjectDto.ZCoordinate,
                    RightEstate      = revenueObjectDto.RightEstate,
                    RightType        = revenueObjectDto.RightType,
                    RightDescription = revenueObjectDto.RightDescription,
                    Type             = revenueObjectDto.Type,
                    SubType          = revenueObjectDto.SubType,
                    TAG              = tagDto.Description,
                    SitusAddress     = revenueObjectDto.SitusAddress != null
                                                            ? new SitusAddress
                    {
                        FreeFormAddress = revenueObjectDto.SitusAddress.FreeFormAddress,
                        City            = revenueObjectDto.SitusAddress.City,
                        StateCode       = revenueObjectDto.SitusAddress.StateCode,
                        PostalCode      = revenueObjectDto.SitusAddress.PostalCode
                    }
                                                            : null,
                    Description          = revenueObjectDto.Description,
                    PropertyType         = revenueObjectDto.PropertyType,
                    RelatedPins          = revenueObjectDto.RelatedPins,
                    ClassCodeDescription = revenueObjectDto.ClassCodeDescription,
                    //TODO Remove hard coding of TotalBaseValue once true source is determined
                    TotalBaseValue = 345000m
                };
            }
            if (legalPartyRoleDtos != null && legalPartyRoleDtos.Count > 0)
            {
                var primeLegalPartyRole = GetPrimeLegalPartyRole(legalPartyRoleDtos);
                if (primeLegalPartyRole != null)
                {
                    var primeLegalParty = primeLegalPartyRole.LegalParty;
                    assessmentHeader.LegalParty = new LegalParty
                    {
                        LegalPartyId             = primeLegalParty.Id,
                        DisplayName              = primeLegalParty.DisplayName,
                        FirstName                = primeLegalParty.FirstName,
                        MiddleName               = primeLegalParty.MiddleName,
                        LastName                 = primeLegalParty.LastName,
                        NameSfx                  = primeLegalParty.NameSfx,
                        RevenueAcct              = primeLegalPartyRole.AcctId,
                        LegalPartyRoleObjectType = primeLegalPartyRole.ObjectType
                    };
                }
            }

            if (assessmentRevisionDto != null)
            {
                assessmentHeader.AssessmentEvent.RevisionId      = assessmentRevisionDto.Id;
                assessmentHeader.AssessmentEvent.ReferenceNumber = assessmentRevisionDto.ReferenceNumber;
                assessmentHeader.AssessmentEvent.ChangeReason    = assessmentRevisionDto.ChangeReason;
                assessmentHeader.AssessmentEvent.Note            = assessmentRevisionDto.Note;
            }

            return(assessmentHeader);
        }