File size: 4,993 Bytes
fc06b79 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | @using ContactManagementAPI.Services
@model List<ContactDuplicate>
@{
ViewData["Title"] = "Find Duplicates";
}
<div class="container mt-4">
<div class="row mb-4">
<div class="col-12">
<h2><i class="fas fa-copy"></i> Potential Duplicate Contacts</h2>
<p class="text-muted">Automatically detected similar contacts based on name, email, and phone matching</p>
</div>
</div>
@if (Model.Count == 0)
{
<div class="alert alert-success" role="alert">
<i class="fas fa-check-circle"></i> <strong>Great!</strong> No duplicate contacts found.
</div>
}
else
{
<div class="alert alert-info" role="alert">
<i class="fas fa-info-circle"></i> Found <strong>@Model.Count</strong> potential duplicate pair(s).
</div>
<div class="row">
@foreach (var duplicate in Model.OrderByDescending(x => x.SimilarityScore))
{
<div class="col-md-6 mb-4">
<div class="card shadow-sm border-warning">
<div class="card-header bg-warning text-dark">
<h5 class="mb-0">
Similarity: <span class="badge bg-danger">@($"{(duplicate.SimilarityScore * 100):F0}%")</span>
</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<div class="card bg-light">
<div class="card-body">
<h6 class="card-title">Contact 1</h6>
<p class="mb-2">
<strong>@duplicate.Contact1Name</strong>
</p>
<a href="@Url.Action("Details", new { id = duplicate.Contact1Id })"
class="btn btn-sm btn-outline-primary">
<i class="fas fa-eye"></i> View
</a>
<a href="@Url.Action("Edit", new { id = duplicate.Contact1Id })"
class="btn btn-sm btn-outline-secondary">
<i class="fas fa-edit"></i> Edit
</a>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card bg-light">
<div class="card-body">
<h6 class="card-title">Contact 2</h6>
<p class="mb-2">
<strong>@duplicate.Contact2Name</strong>
</p>
<a href="@Url.Action("Details", new { id = duplicate.Contact2Id })"
class="btn btn-sm btn-outline-primary">
<i class="fas fa-eye"></i> View
</a>
<a href="@Url.Action("Edit", new { id = duplicate.Contact2Id })"
class="btn btn-sm btn-outline-secondary">
<i class="fas fa-edit"></i> Edit
</a>
</div>
</div>
</div>
</div>
<div class="alert alert-light mt-3 mb-0">
<strong>Action:</strong> Please review these contacts and decide whether to keep or delete one of them.
</div>
</div>
</div>
</div>
}
</div>
}
<div class="mt-4">
<a href="@Url.Action("Dashboard")" class="btn btn-secondary">
<i class="fas fa-arrow-left"></i> Back to Dashboard
</a>
</div>
</div>
@section Scripts {
<script>
// Alert user about duplicates on page load
@if (Model.Count > 0)
{
<text>
// Show notification about duplicates found
const alertBox = document.querySelector('.alert-info');
if (alertBox) {
alertBox.scrollIntoView({ behavior: 'smooth' }
}
</script>
}
|