Я хотел бы внедрить источник событий в имеющееся у меня веб-приложение. Моя реализация - .NET Core WEB API, но это не должно иметь значения. Веб-приложение импортирует файл CSV, содержащий транзакции с банковского счета (аналогично экспорту с вашего банковского счета) в API.
API получает все транзакции, проверяет их и удаляет все ранее импортированные, а затем сохраняет их в таблице транзакций. Затем на основе этих данных создаются отчеты, такие как общее количество газа, приобретенного в прошлом месяце, общее количество, потраченное на обеды в 2017 году и т. Д.
Мне кажется, что этот тип приложения идеально подходит для поиска событий (или наоборот), но мне трудно понять, как его реализовать. Я пытаюсь реализовать что-то вроде в этом простом примере . У него есть совокупность учетных записей, в которой есть события транзакций, аналогичные тому, что я хотел бы сделать.
Мой первый вопрос: как мне обрабатывать пакетные транзакции, где не все они сохранены, поскольку некоторые могут быть дубликатами? Этот вопрос касается этой темы, но это отличается тем, что в некоторых случаях никакие транзакции не могут быть сохранены после повторной проверки, так как файл может быть тем же самым, или просто не было новых транзакций с момента последнего импорта ,
Во-вторых, как мне проверить, является ли транзакция дубликатом? В настоящее время мой дубликат проверки выглядит так:
var all = await _transactionRepository.GetAll(-1);
var lookup = all.ToLookup(x => Tuple.Create(x.PostingDate, x.Description, x.Amount, x.Balance));
foreach (var o in original)
{
o.Created = DateTime.Now;
if (!lookup.Contains(Tuple.Create(o.PostingDate, o.Description, o.Amount, o.Balance)))
{
// does not currently exist in the db so add to clean list
final.Add(o);
}
}
Буду ли я создавать проекцию в поисках этого конкретного события? У меня проблемы с пониманием того, как проверить существующие данные.
Заранее спасибо за любую помощь в понимании этого.