diff --git a/src/RealCV.Application/Data/UKInstitutions.cs b/src/RealCV.Application/Data/UKInstitutions.cs index ca1b42a..c43a284 100644 --- a/src/RealCV.Application/Data/UKInstitutions.cs +++ b/src/RealCV.Application/Data/UKInstitutions.cs @@ -156,6 +156,24 @@ public static class UKInstitutions "University for the Creative Arts", "Ravensbourne University London", + // Professional Bodies (accredited qualification-awarding) + "CIPD", + "Chartered Institute of Personnel and Development", + "CIMA", + "Chartered Institute of Management Accountants", + "ACCA", + "Association of Chartered Certified Accountants", + "ICAEW", + "Institute of Chartered Accountants in England and Wales", + "ICAS", + "Institute of Chartered Accountants of Scotland", + "CII", + "Chartered Insurance Institute", + "CIPS", + "Chartered Institute of Procurement and Supply", + "CMI", + "Chartered Management Institute", + // Business Schools (accredited) "Henley Business School", "Warwick Business School", @@ -231,6 +249,77 @@ public static class UKInstitutions ["Queen Mary"] = "Queen Mary University of London", ["Royal Holloway University"] = "Royal Holloway, University of London", ["RHUL"] = "Royal Holloway, University of London", + ["Hull University"] = "University of Hull", + ["Hull"] = "University of Hull", + + // Additional "X University" variations for "University of X" institutions + ["Birmingham University"] = "University of Birmingham", + ["Bristol University"] = "University of Bristol", + ["Edinburgh University"] = "University of Edinburgh", + ["Exeter University"] = "University of Exeter", + ["Glasgow University"] = "University of Glasgow", + ["Leeds University"] = "University of Leeds", + ["Leicester University"] = "University of Leicester", + ["Liverpool University"] = "University of Liverpool", + ["Manchester University"] = "University of Manchester", + ["Nottingham University"] = "University of Nottingham", + ["Sheffield University"] = "University of Sheffield", + ["Southampton University"] = "University of Southampton", + ["Warwick University"] = "University of Warwick", + ["York University"] = "University of York", + ["Bath University"] = "University of Bath", + ["Bradford University"] = "University of Bradford", + ["Brighton University"] = "University of Brighton", + ["Derby University"] = "University of Derby", + ["Dundee University"] = "University of Dundee", + ["Essex University"] = "University of Essex", + ["Greenwich University"] = "University of Greenwich", + ["Hertfordshire University"] = "University of Hertfordshire", + ["Huddersfield University"] = "University of Huddersfield", + ["Kent University"] = "University of Kent", + ["Lincoln University"] = "University of Lincoln", + ["Plymouth University"] = "University of Plymouth", + ["Portsmouth University"] = "University of Portsmouth", + ["Reading University"] = "University of Reading", + ["Salford University"] = "University of Salford", + ["Surrey University"] = "University of Surrey", + ["Sussex University"] = "University of Sussex", + ["Westminster University"] = "University of Westminster", + ["Winchester University"] = "University of Winchester", + ["Wolverhampton University"] = "University of Wolverhampton", + ["Worcester University"] = "University of Worcester", + ["Aberdeen University"] = "University of Aberdeen", + ["Stirling University"] = "University of Stirling", + ["Strathclyde University"] = "University of Strathclyde", + ["Aberystwyth University"] = "Aberystwyth University", + ["Bangor University"] = "Bangor University", + ["Swansea University"] = "Swansea University", + + // London university variations + ["UCL"] = "University College London", + ["University College, London"] = "University College London", + ["East London University"] = "University of East London", + ["London Metropolitan"] = "London Metropolitan University", + ["London Met"] = "London Metropolitan University", + ["South Bank University"] = "London South Bank University", + ["LSBU"] = "London South Bank University", + + // Other common variations + ["Open University"] = "The Open University", + ["OU"] = "The Open University", + ["Northumbria"] = "Northumbria University", + ["De Montfort"] = "De Montfort University", + ["DMU"] = "De Montfort University", + ["Sheffield Hallam"] = "Sheffield Hallam University", + ["Nottingham Trent"] = "Nottingham Trent University", + ["NTU"] = "Nottingham Trent University", + ["Oxford Brookes"] = "Oxford Brookes University", + ["MMU"] = "Manchester Metropolitan University", + ["Manchester Met"] = "Manchester Metropolitan University", + ["Liverpool John Moores"] = "Liverpool John Moores University", + ["LJMU"] = "Liverpool John Moores University", + ["UWE"] = "University of the West of England", + ["West of England"] = "University of the West of England", }; /// @@ -283,6 +372,11 @@ public static class UKInstitutions if (NameVariations.TryGetValue(normalised, out var officialName)) return officialName; + // Try automatic "X University" ↔ "University of X" transformation + var transformed = TryTransformUniversityName(normalised); + if (transformed != null && RecognisedInstitutions.Contains(transformed)) + return transformed; + // Handle compound names (e.g., "Loughborough College/Motorsport UK Academy") // Split by common separators and check each part var separators = new[] { '/', '&', '-', '–', '—', ',' }; @@ -323,4 +417,27 @@ public static class UKInstitutions return null; } + + /// + /// Attempts to transform university name between common formats: + /// "X University" ↔ "University of X" + /// + private static string? TryTransformUniversityName(string name) + { + // Try "X University" → "University of X" + if (name.EndsWith(" University", StringComparison.OrdinalIgnoreCase)) + { + var place = name[..^11].Trim(); // Remove " University" + return $"University of {place}"; + } + + // Try "University of X" → "X University" + if (name.StartsWith("University of ", StringComparison.OrdinalIgnoreCase)) + { + var place = name[14..].Trim(); // Remove "University of " + return $"{place} University"; + } + + return null; + } }