public async Task <ActionResult> DeleteDuplicatesConfirmed(int id, bool fuzzyMatch = false)
        {
            var currentClient = await GetCurrentClient();

            var account = await Db.Accounts.FirstOrDefaultAsync(x => x.ClientId == currentClient.Id && x.Id == id);

            var dedupService = new DeduplicateService(Db);
            IEnumerable <Duplicate> duplicates;

            if (!fuzzyMatch)
            {
                duplicates = await dedupService.FindExactDuplicates(account.Id);
            }
            else
            {
                duplicates = await dedupService.FindPossibleDuplicates(account.Id);
            }

            foreach (var line in duplicates.SelectMany(x => x.Duplicates))
            {
                Db.Lines.Remove(line);
            }
            await Db.SaveChangesAsync();

            return(RedirectToAction("Duplicates", new { id = account.Id, fuzzyMatch }));
        }
        public async Task <ActionResult> Duplicates(int id, bool fuzzyMatch = false)
        {
            var currentClient = await GetCurrentClient();

            var account = await Db.Accounts.FirstOrDefaultAsync(x => x.ClientId == currentClient.Id && x.Id == id);

            if (account != null)
            {
                var dedupService = new DeduplicateService(Db);
                var viewModel    = new DuplicatesViewModel();
                if (!fuzzyMatch)
                {
                    viewModel.Fill(account, await dedupService.FindExactDuplicates(account.Id), false);
                }
                else
                {
                    viewModel.Fill(account, await dedupService.FindPossibleDuplicates(account.Id), true);
                }
                return(View(viewModel));
            }
            return(HttpNotFound());
        }