public Task <ExpenseDetail> GetExpenseDetail(string expenseDetailText) { ExtractedExpenseDetail parsedData = _messageParser.ExtractExpenseData(expenseDetailText); if (!parsedData.Success) { throw new ApplicationException(parsedData.ValidationMessage); } //cost decimal total; if (!decimal.TryParse(parsedData.Total, out total)) { throw new ApplicationException("Total is not a valid decimal amount"); } //Get Details GstDetail gstDetail = Calculation.Calculator.CalculateGstDetailFromGstInclusiveAmount(total); return(Task.FromResult(new ExpenseDetail { CostCentre = parsedData.CostCentre ?? ServiceConstants.DefaultCostCentre, Total = gstDetail.AmountIncludingGst, TotalExcludingGst = gstDetail.AmountExcludingGst, Gst = gstDetail.GstAmount, Description = parsedData.Description, Date = parsedData.Date, PaymentMethod = parsedData.PaymentMethod, Vendor = parsedData.Vendor })); }
private ExtractedExpenseDetail ExtractData(List <string> fieldsToExtract, string text) { var extractedDetail = new ExtractedExpenseDetail(); if (fieldsToExtract.Contains(Constants.TotalTag)) { extractedDetail.Total = DoDataExtraction(Constants.TotalTag, text); } if (fieldsToExtract.Contains(Constants.CostCentreTag)) { extractedDetail.CostCentre = DoDataExtraction(Constants.CostCentreTag, text); } if (fieldsToExtract.Contains(Constants.PaymentMethodTag)) { extractedDetail.PaymentMethod = DoDataExtraction(Constants.PaymentMethodTag, text); } if (fieldsToExtract.Contains(Constants.VendorTag)) { extractedDetail.Vendor = DoDataExtraction(Constants.VendorTag, text); } if (fieldsToExtract.Contains(Constants.DescriptionTag)) { extractedDetail.Description = DoDataExtraction(Constants.DescriptionTag, text); } if (fieldsToExtract.Contains(Constants.DateTag)) { extractedDetail.Date = DoDataExtraction(Constants.DateTag, text); } extractedDetail.Success = true; return(extractedDetail); }