46 lines
1.7 KiB
C#
46 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using MarketData.Utils;
|
|
|
|
namespace MarketData.MarketDataModel
|
|
{
|
|
public class DividendPayments : List<DividendPayment>
|
|
{
|
|
public DividendPayments()
|
|
{
|
|
}
|
|
public DividendPayments(List<DividendPayment> dividendPayments)
|
|
{
|
|
foreach(DividendPayment dividendPayment in dividendPayments)Add(dividendPayment);
|
|
}
|
|
public double GetDividendPaymentsToDate(DateTime date)
|
|
{
|
|
return (from DividendPayment dividendPayment in this where dividendPayment.PaymentDate<=date select dividendPayment.Amount).Sum();
|
|
}
|
|
public DividendPayments FilterAccounts(String filterAccounts)
|
|
{
|
|
if(null==filterAccounts)return this;
|
|
List<String> accountsToInclude=Utility.ToList(filterAccounts);
|
|
DividendPayments dividendPayments=new DividendPayments((from DividendPayment dividendPayment in this where accountsToInclude.Any(x=>x.Equals(dividendPayment.Account)) select dividendPayment).ToList());
|
|
return dividendPayments;
|
|
}
|
|
public DividendPayments FilterSymbols(String filterSymbols)
|
|
{
|
|
if(null==filterSymbols) return this;
|
|
List<String> symbolsToInclude=Utility.ToList(filterSymbols);
|
|
DividendPayments dividendPayments=new DividendPayments((from DividendPayment dividendPayment in this where symbolsToInclude.Any(x => x.Equals(dividendPayment.Symbol)) select dividendPayment).ToList());
|
|
return dividendPayments;
|
|
}
|
|
}
|
|
public class DividendPayment
|
|
{
|
|
public String Account{get;set;}
|
|
public String Symbol{get;set;}
|
|
public DateTime PaymentDate{get;set;}
|
|
public double Amount{get;set;}
|
|
}
|
|
}
|