public DisplayableCorrectedTradeStatement(AdjustedTradeStatement tradeStatement) { Date = tradeStatement.Date; TransactionDetail = tradeStatement.TransactionDetail; TransactionTax = tradeStatement.TransactionTax; Quanity = tradeStatement.Quanity; Cost = (tradeStatement.Value < 0) ? tradeStatement.Value * -1 : 0; Sale = (tradeStatement.Value >= 0) ? tradeStatement.Value : 0; Name = tradeStatement.Name; Reason = tradeStatement.Reason; }
public List <AdjustedTradeStatement> GetTradeStatements(ILogger logger, string sheetName) { using (ExcelReader reader = new ExcelReader(_inputFile, sheetName, logger)) { SheetHeadingVerifier.VerifyHeadingNames(logger, reader, _headings); var tradeStatements = reader.ReadAllLines(1, (r) => { if (!r.IsValueAvailable(SerialNumber)) { return(Tuple.Create(new AdjustedTradeStatement(), false)); } var isSaleAvailable = r.IsValueAvailable(Sale); var sale = isSaleAvailable ? r.ReadDouble(Sale) : 0; var isCostAvailable = r.IsValueAvailable(Cost); var cost = isCostAvailable ? r.ReadDouble(Cost) : 0; var reason = string.Empty; var value = sale - cost; if (isSaleAvailable && isCostAvailable) { if (!sale.IsZero() && !cost.IsZero()) { if (sale > cost) { reason = $"Both Sale(={sale}) and Cost(={cost}) has value. Setting Sale as {value}."; } else { reason = $"Both Sale(={sale}) and Cost(={cost}) has value. Setting Cost as {value * -1 }."; } } } var tradeStatement = new AdjustedTradeStatement() { Date = r.ReadDate(Date), Name = r.ReadString(Name), TransactionTax = r.ReadString(TransactionTax), TransactionDetail = r.ReadString(TransactionDetail), Quanity = r.ReadDouble(Quantity), Value = value, Reason = reason, }; return(Tuple.Create(tradeStatement, true)); }).ToList(); return(tradeStatements.Where(x => x.Item2).Select(x => x.Item1).ToList()); } }