Ejemplo n.º 1
0
        private SimpleUnrealisedGainsResponse GetCapitalGains(IEnumerable <IReadOnlyHolding> holdings, Date date)
        {
            var response = new SimpleUnrealisedGainsResponse();

            foreach (var holding in holdings)
            {
                foreach (var parcel in holding.Parcels(date))
                {
                    var properties = parcel.Properties[date];

                    var value          = properties.Units * holding.Stock.GetPrice(date);
                    var capitalGain    = value - properties.CostBase;
                    var discountMethod = CgtUtils.CgtMethodForParcel(parcel.AquisitionDate, date);
                    var discoutedGain  = (discountMethod == Domain.Portfolios.CgtMethod.Discount) ? CgtUtils.DiscountedCgt(capitalGain, Domain.Portfolios.CgtMethod.Discount) : capitalGain;

                    var unrealisedGain = new SimpleUnrealisedGainsItem()
                    {
                        Stock          = holding.Stock.ToSummaryResponse(date),
                        AquisitionDate = parcel.AquisitionDate,
                        Units          = properties.Units,
                        CostBase       = properties.CostBase,
                        MarketValue    = value,
                        CapitalGain    = capitalGain,
                        DiscoutedGain  = discoutedGain,
                        DiscountMethod = discountMethod.ToResponse()
                    };

                    response.UnrealisedGains.Add(unrealisedGain);
                }
            }

            return(response);
        }
Ejemplo n.º 2
0
        public void GetCapitalGainsForDate()
        {
            var mockRepository = new MockRepository(MockBehavior.Strict);

            var response = new SimpleUnrealisedGainsResponse();

            var service = mockRepository.Create <IPortfolioCapitalGainsService>();

            service.Setup(x => x.GetCapitalGains(new Date(2000, 01, 01))).Returns(ServiceResult <SimpleUnrealisedGainsResponse> .Ok(response)).Verifiable();

            var controller = new PortfolioController();
            var result     = controller.GetCapitalGains(service.Object, new DateTime(2000, 01, 01));

            result.Result.Should().BeOkObjectResult().Value.Should().Be(response);

            mockRepository.VerifyAll();
        }
        public void GetCapitalGainsNoDate()
        {
            var mockRepository = new MockRepository(MockBehavior.Strict);

            var stockId  = Guid.NewGuid();
            var response = new SimpleUnrealisedGainsResponse();

            var service = mockRepository.Create <IPortfolioCapitalGainsService>();

            service.Setup(x => x.GetCapitalGains(stockId, Date.Today)).Returns(ServiceResult <SimpleUnrealisedGainsResponse> .Ok(response)).Verifiable();

            var controller = new HoldingController();
            var result     = controller.GetCapitalGains(service.Object, stockId, null);

            result.Result.Should().BeOkObjectResult().Value.Should().Be(response);

            mockRepository.VerifyAll();
        }
Ejemplo n.º 4
0
        public async Task GetCapitalGains()
        {
            var mockRepository = new MockRepository(MockBehavior.Strict);

            var portfolioId = Guid.NewGuid();
            var date        = new Date(2001, 02, 03);
            var response    = new SimpleUnrealisedGainsResponse();

            var messageHandler = mockRepository.Create <IRestClientMessageHandler>();

            messageHandler.SetupProperty(x => x.Portfolio, portfolioId);
            messageHandler.Setup(x => x.GetAsync <SimpleUnrealisedGainsResponse>(It.Is <string>(x => x == "portfolio/" + portfolioId + "/capitalgains?date=2001-02-03")))
            .Returns(Task <SimpleUnrealisedGainsResponse> .FromResult(response))
            .Verifiable();

            var resource = new PortfolioResource(messageHandler.Object);

            var result = await resource.GetCapitalGains(date);

            result.Should().Be(response);

            mockRepository.Verify();
        }