refactor: Rename TrueCV to RealCV throughout codebase
- Renamed all directories (TrueCV.* -> RealCV.*) - Renamed all project files (.csproj) - Renamed solution file (TrueCV.sln -> RealCV.sln) - Updated all namespaces in C# and Razor files - Updated project references - Updated CSS variable names 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
210
src/RealCV.Application/Data/DiplomaMills.cs
Normal file
210
src/RealCV.Application/Data/DiplomaMills.cs
Normal file
@@ -0,0 +1,210 @@
|
||||
namespace RealCV.Application.Data;
|
||||
|
||||
/// <summary>
|
||||
/// Known diploma mills and fake educational institutions.
|
||||
/// Sources: HEDD, Oregon ODA, UNESCO warnings, Michigan AG list
|
||||
/// </summary>
|
||||
public static class DiplomaMills
|
||||
{
|
||||
/// <summary>
|
||||
/// Known diploma mills and unaccredited institutions that sell fake degrees.
|
||||
/// This list includes institutions identified by various regulatory bodies.
|
||||
/// </summary>
|
||||
public static readonly HashSet<string> KnownDiplomaMills = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
// Well-known diploma mills
|
||||
"Almeda University",
|
||||
"Ashwood University",
|
||||
"Belford University",
|
||||
"Bircham University",
|
||||
"Breyer State University",
|
||||
"Brighton University (not Brighton UK)",
|
||||
"Buxton University",
|
||||
"Cambridge State University",
|
||||
"Chadwick University",
|
||||
"Clayton University",
|
||||
"Columbus University",
|
||||
"Corllins University",
|
||||
"Dartington University",
|
||||
"Dickinson State University Online",
|
||||
"Fairfax University",
|
||||
"Glendale University",
|
||||
"Greenleaf University",
|
||||
"Hamilton University",
|
||||
"Harrington University",
|
||||
"Hill University",
|
||||
"Hollywood University",
|
||||
"International University (generic)",
|
||||
"Irish International University",
|
||||
"James Monroe University",
|
||||
"Jamestown University",
|
||||
"Kennedy-Western University",
|
||||
"Kensington University",
|
||||
"Knightsbridge University",
|
||||
"LaSalle University (Louisiana)",
|
||||
"Lexington University",
|
||||
"Lincoln University (if not Pennsylvania)",
|
||||
"Madison University",
|
||||
"Metropolitan University (generic)",
|
||||
"Middletown University",
|
||||
"Monticello University",
|
||||
"Northern University",
|
||||
"Northfield University",
|
||||
"Pacific Southern University",
|
||||
"Pacific Western University",
|
||||
"Paramount University",
|
||||
"Parkwood University",
|
||||
"Preston University",
|
||||
"Redding University",
|
||||
"Richmond University (not American Intl)",
|
||||
"Robertstown University",
|
||||
"Rochdale University",
|
||||
"Rochville University",
|
||||
"Saint Regis University",
|
||||
"St Regis University",
|
||||
"Shaftesbury University",
|
||||
"Shelbourne University",
|
||||
"Stanton University",
|
||||
"Stratford University (if unaccredited)",
|
||||
"Suffield University",
|
||||
"Summit University (diploma mill)",
|
||||
"Sussex College of Technology",
|
||||
"Trinity College and University",
|
||||
"Trinity Southern University",
|
||||
"University Degree Program",
|
||||
"University of Atlanta",
|
||||
"University of Berkley",
|
||||
"University of Devonshire",
|
||||
"University of Dunham",
|
||||
"University of England",
|
||||
"University of Northern Washington",
|
||||
"University of Palmers Green",
|
||||
"University of San Moritz",
|
||||
"University of Sussex (fake - not real Sussex)",
|
||||
"University of Wexford",
|
||||
"Vocational University",
|
||||
"Warnborough University",
|
||||
"Washington International University",
|
||||
"Weston Reserve University",
|
||||
"Westbourne University",
|
||||
"Western States University",
|
||||
"Woodfield University",
|
||||
"Yorker International University",
|
||||
|
||||
// Pakistani diploma mills commonly seen in UK
|
||||
"Axact University",
|
||||
"Brooklyn Park University",
|
||||
"Columbiana University",
|
||||
"Hillford University",
|
||||
"Nixon University",
|
||||
"Oxbridge University",
|
||||
"University of Newford",
|
||||
|
||||
// Online diploma mills
|
||||
"American World University",
|
||||
"Ashford University (pre-2005)",
|
||||
"Concordia College and University",
|
||||
"Columbus State University (fake)",
|
||||
"Frederick Taylor University",
|
||||
"International Theological University",
|
||||
"Nations University",
|
||||
"Paramount California University",
|
||||
"University of Ancient Studies",
|
||||
"University of Asia",
|
||||
"Virtual University (unaccredited)",
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Suspicious patterns in institution names that often indicate diploma mills.
|
||||
/// </summary>
|
||||
public static readonly string[] SuspiciousPatterns =
|
||||
[
|
||||
"online university",
|
||||
"virtual university",
|
||||
"life experience",
|
||||
"no classes required",
|
||||
"degree in days",
|
||||
"accredited by", // followed by fake accreditor
|
||||
"internationally recognised",
|
||||
"worldwide university",
|
||||
"global university",
|
||||
"premier university",
|
||||
"elite university",
|
||||
"executive university",
|
||||
"professional university",
|
||||
"distance learning university", // be careful - some are legit
|
||||
];
|
||||
|
||||
/// <summary>
|
||||
/// Fake accreditation bodies used by diploma mills.
|
||||
/// </summary>
|
||||
public static readonly HashSet<string> FakeAccreditors = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
"World Association of Universities and Colleges",
|
||||
"WAUC",
|
||||
"International Accreditation Agency",
|
||||
"Universal Accreditation Council",
|
||||
"Board of Online Universities Accreditation",
|
||||
"International Council for Open and Distance Education",
|
||||
"World Online Education Accrediting Commission",
|
||||
"Central States Consortium of Colleges and Schools",
|
||||
"American Council of Private Colleges and Universities",
|
||||
"Association of Distance Learning Programs",
|
||||
"International Distance Education Certification Agency",
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Check if an institution is a known diploma mill.
|
||||
/// </summary>
|
||||
public static bool IsDiplomaMill(string institutionName)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(institutionName))
|
||||
return false;
|
||||
|
||||
var normalised = institutionName.Trim();
|
||||
|
||||
// Direct match
|
||||
if (KnownDiplomaMills.Contains(normalised))
|
||||
return true;
|
||||
|
||||
// Check if name contains known diploma mill
|
||||
foreach (var mill in KnownDiplomaMills)
|
||||
{
|
||||
if (normalised.Contains(mill, StringComparison.OrdinalIgnoreCase))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if institution name has suspicious patterns common in diploma mills.
|
||||
/// Returns true if suspicious (but not confirmed fake).
|
||||
/// </summary>
|
||||
public static bool HasSuspiciousPattern(string institutionName)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(institutionName))
|
||||
return false;
|
||||
|
||||
var lower = institutionName.ToLowerInvariant();
|
||||
|
||||
foreach (var pattern in SuspiciousPatterns)
|
||||
{
|
||||
if (lower.Contains(pattern))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if an accreditor is known to be fake.
|
||||
/// </summary>
|
||||
public static bool IsFakeAccreditor(string accreditorName)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(accreditorName))
|
||||
return false;
|
||||
|
||||
return FakeAccreditors.Contains(accreditorName.Trim());
|
||||
}
|
||||
}
|
||||
285
src/RealCV.Application/Data/UKInstitutions.cs
Normal file
285
src/RealCV.Application/Data/UKInstitutions.cs
Normal file
@@ -0,0 +1,285 @@
|
||||
namespace RealCV.Application.Data;
|
||||
|
||||
/// <summary>
|
||||
/// List of recognised UK higher education institutions.
|
||||
/// Source: GOV.UK Register of Higher Education Providers
|
||||
/// </summary>
|
||||
public static class UKInstitutions
|
||||
{
|
||||
/// <summary>
|
||||
/// Recognised UK universities and higher education providers.
|
||||
/// These are legitimate degree-awarding institutions.
|
||||
/// </summary>
|
||||
public static readonly HashSet<string> RecognisedInstitutions = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
// Russell Group Universities
|
||||
"University of Birmingham",
|
||||
"University of Bristol",
|
||||
"University of Cambridge",
|
||||
"Cardiff University",
|
||||
"Durham University",
|
||||
"University of Edinburgh",
|
||||
"University of Exeter",
|
||||
"University of Glasgow",
|
||||
"Imperial College London",
|
||||
"King's College London",
|
||||
"University of Leeds",
|
||||
"University of Liverpool",
|
||||
"London School of Economics",
|
||||
"London School of Economics and Political Science",
|
||||
"LSE",
|
||||
"University of Manchester",
|
||||
"Newcastle University",
|
||||
"University of Nottingham",
|
||||
"University of Oxford",
|
||||
"Queen Mary University of London",
|
||||
"Queen's University Belfast",
|
||||
"University of Sheffield",
|
||||
"University of Southampton",
|
||||
"University College London",
|
||||
"UCL",
|
||||
"University of Warwick",
|
||||
"University of York",
|
||||
|
||||
// Other Major Universities
|
||||
"Aston University",
|
||||
"University of Bath",
|
||||
"Birkbeck, University of London",
|
||||
"Bournemouth University",
|
||||
"University of Bradford",
|
||||
"University of Brighton",
|
||||
"Brunel University London",
|
||||
"University of Buckingham",
|
||||
"Canterbury Christ Church University",
|
||||
"City, University of London",
|
||||
"Coventry University",
|
||||
"Cranfield University",
|
||||
"De Montfort University",
|
||||
"University of Derby",
|
||||
"University of Dundee",
|
||||
"University of East Anglia",
|
||||
"UEA",
|
||||
"University of East London",
|
||||
"Edge Hill University",
|
||||
"University of Essex",
|
||||
"Falmouth University",
|
||||
"University of Greenwich",
|
||||
"Heriot-Watt University",
|
||||
"University of Hertfordshire",
|
||||
"University of Huddersfield",
|
||||
"University of Hull",
|
||||
"Keele University",
|
||||
"University of Kent",
|
||||
"Kingston University",
|
||||
"Lancaster University",
|
||||
"University of Leicester",
|
||||
"University of Lincoln",
|
||||
"Liverpool John Moores University",
|
||||
"Liverpool Hope University",
|
||||
"University of London",
|
||||
"London Metropolitan University",
|
||||
"London South Bank University",
|
||||
"Loughborough University",
|
||||
"Manchester Metropolitan University",
|
||||
"Middlesex University",
|
||||
"Northumbria University",
|
||||
"Norwich University of the Arts",
|
||||
"Nottingham Trent University",
|
||||
"Open University",
|
||||
"The Open University",
|
||||
"Oxford Brookes University",
|
||||
"University of Plymouth",
|
||||
"University of Portsmouth",
|
||||
"Queen Margaret University",
|
||||
"University of Reading",
|
||||
"Robert Gordon University",
|
||||
"Roehampton University",
|
||||
"Royal Holloway, University of London",
|
||||
"Royal Holloway",
|
||||
"University of Salford",
|
||||
"SOAS University of London",
|
||||
"SOAS",
|
||||
"Sheffield Hallam University",
|
||||
"University of South Wales",
|
||||
"University of St Andrews",
|
||||
"St Andrews",
|
||||
"Staffordshire University",
|
||||
"University of Stirling",
|
||||
"University of Strathclyde",
|
||||
"University of Sunderland",
|
||||
"University of Surrey",
|
||||
"University of Sussex",
|
||||
"Swansea University",
|
||||
"Teesside University",
|
||||
"Ulster University",
|
||||
"University of the West of England",
|
||||
"UWE Bristol",
|
||||
"University of the West of Scotland",
|
||||
"University of Westminster",
|
||||
"University of Winchester",
|
||||
"University of Wolverhampton",
|
||||
"University of Worcester",
|
||||
"Wrexham University",
|
||||
"York St John University",
|
||||
|
||||
// Scottish Universities
|
||||
"University of Aberdeen",
|
||||
"Abertay University",
|
||||
"Edinburgh Napier University",
|
||||
"Glasgow Caledonian University",
|
||||
"University of the Highlands and Islands",
|
||||
|
||||
// Welsh Universities
|
||||
"Aberystwyth University",
|
||||
"Bangor University",
|
||||
"University of South Wales",
|
||||
"Wrexham Glyndwr University",
|
||||
|
||||
// Northern Ireland
|
||||
"Ulster University",
|
||||
"Queen's University Belfast",
|
||||
|
||||
// Specialist Institutions
|
||||
"Royal Academy of Music",
|
||||
"Royal College of Art",
|
||||
"Royal College of Music",
|
||||
"Royal Northern College of Music",
|
||||
"Royal Veterinary College",
|
||||
"Goldsmiths, University of London",
|
||||
"Goldsmiths",
|
||||
"Courtauld Institute of Art",
|
||||
"London Business School",
|
||||
"LBS",
|
||||
"Guildhall School of Music and Drama",
|
||||
"Trinity Laban Conservatoire of Music and Dance",
|
||||
"Arts University Bournemouth",
|
||||
"University for the Creative Arts",
|
||||
"Ravensbourne University London",
|
||||
|
||||
// Business Schools (accredited)
|
||||
"Henley Business School",
|
||||
"Warwick Business School",
|
||||
"Manchester Business School",
|
||||
"Said Business School",
|
||||
"Judge Business School",
|
||||
"Cass Business School",
|
||||
"Bayes Business School",
|
||||
"Imperial College Business School",
|
||||
"Cranfield School of Management",
|
||||
"Ashridge Business School",
|
||||
"Alliance Manchester Business School",
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Common name variations and abbreviations mapped to official names.
|
||||
/// </summary>
|
||||
public static readonly Dictionary<string, string> NameVariations = new(StringComparer.OrdinalIgnoreCase)
|
||||
{
|
||||
["Cambridge"] = "University of Cambridge",
|
||||
["Oxford"] = "University of Oxford",
|
||||
["Cambridge University"] = "University of Cambridge",
|
||||
["Oxford University"] = "University of Oxford",
|
||||
["Imperial"] = "Imperial College London",
|
||||
["Imperial College"] = "Imperial College London",
|
||||
["Kings College London"] = "King's College London",
|
||||
["Kings London"] = "King's College London",
|
||||
["KCL"] = "King's College London",
|
||||
["Edinburgh"] = "University of Edinburgh",
|
||||
["Manchester"] = "University of Manchester",
|
||||
["Bristol"] = "University of Bristol",
|
||||
["Warwick"] = "University of Warwick",
|
||||
["Durham"] = "Durham University",
|
||||
["Bath"] = "University of Bath",
|
||||
["Exeter"] = "University of Exeter",
|
||||
["York"] = "University of York",
|
||||
["Leeds"] = "University of Leeds",
|
||||
["Sheffield"] = "University of Sheffield",
|
||||
["Birmingham"] = "University of Birmingham",
|
||||
["Nottingham"] = "University of Nottingham",
|
||||
["Southampton"] = "University of Southampton",
|
||||
["Glasgow"] = "University of Glasgow",
|
||||
["Liverpool"] = "University of Liverpool",
|
||||
["Lancaster"] = "Lancaster University",
|
||||
["Leicester"] = "University of Leicester",
|
||||
["Surrey"] = "University of Surrey",
|
||||
["Sussex"] = "University of Sussex",
|
||||
["Reading"] = "University of Reading",
|
||||
["Loughborough"] = "Loughborough University",
|
||||
["Brunel"] = "Brunel University London",
|
||||
["Kent"] = "University of Kent",
|
||||
["Essex"] = "University of Essex",
|
||||
["Strathclyde"] = "University of Strathclyde",
|
||||
["Heriot Watt"] = "Heriot-Watt University",
|
||||
["Heriot-Watt"] = "Heriot-Watt University",
|
||||
["St Andrews University"] = "University of St Andrews",
|
||||
["Saint Andrews"] = "University of St Andrews",
|
||||
["Birkbeck"] = "Birkbeck, University of London",
|
||||
["QMUL"] = "Queen Mary University of London",
|
||||
["Queen Mary"] = "Queen Mary University of London",
|
||||
["Royal Holloway University"] = "Royal Holloway, University of London",
|
||||
["RHUL"] = "Royal Holloway, University of London",
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Check if an institution is recognised. Handles common variations.
|
||||
/// </summary>
|
||||
public static bool IsRecognised(string institutionName)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(institutionName))
|
||||
return false;
|
||||
|
||||
var normalised = institutionName.Trim();
|
||||
|
||||
// Direct match
|
||||
if (RecognisedInstitutions.Contains(normalised))
|
||||
return true;
|
||||
|
||||
// Check variations
|
||||
if (NameVariations.TryGetValue(normalised, out var officialName))
|
||||
return RecognisedInstitutions.Contains(officialName);
|
||||
|
||||
// Fuzzy match - check if any recognised institution contains the search term
|
||||
// or if the search term contains a recognised institution
|
||||
foreach (var institution in RecognisedInstitutions)
|
||||
{
|
||||
if (institution.Contains(normalised, StringComparison.OrdinalIgnoreCase) ||
|
||||
normalised.Contains(institution, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the official name of an institution if found.
|
||||
/// </summary>
|
||||
public static string? GetOfficialName(string institutionName)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(institutionName))
|
||||
return null;
|
||||
|
||||
var normalised = institutionName.Trim();
|
||||
|
||||
// Direct match
|
||||
if (RecognisedInstitutions.Contains(normalised))
|
||||
return normalised;
|
||||
|
||||
// Check variations
|
||||
if (NameVariations.TryGetValue(normalised, out var officialName))
|
||||
return officialName;
|
||||
|
||||
// Fuzzy match
|
||||
foreach (var institution in RecognisedInstitutions)
|
||||
{
|
||||
if (institution.Contains(normalised, StringComparison.OrdinalIgnoreCase) ||
|
||||
normalised.Contains(institution, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return institution;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user