From 69206a9db8fdd2823afcadc8d58089cf00d698e5 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Tue, 1 Nov 2022 11:29:55 +0000 Subject: [PATCH] feat: add local authorities enum to location.rb --- app/controllers/locations_controller.rb | 3 +- app/helpers/locations_helper.rb | 5 + app/models/location.rb | 321 ++++++++++++++++++ .../locations/edit_local_authority.html.erb | 6 +- 4 files changed, 328 insertions(+), 7 deletions(-) diff --git a/app/controllers/locations_controller.rb b/app/controllers/locations_controller.rb index 1d84850b3..532ab915a 100644 --- a/app/controllers/locations_controller.rb +++ b/app/controllers/locations_controller.rb @@ -63,8 +63,7 @@ class LocationsController < ApplicationController render :edit_local_authority, status: :unprocessable_entity else if page == "edit-local-authority" - la_list = FormHandler.instance.current_lettings_form.get_question("la", nil).answer_options - params[:location][:location_code] = la_list.key(params[:location][:location_admin_district]) + params[:location][:location_code] = Location.local_authorities.key(params[:location][:location_admin_district]) end if @location.update(location_params) case page diff --git a/app/helpers/locations_helper.rb b/app/helpers/locations_helper.rb index 1d2412184..e0fe9d18c 100644 --- a/app/helpers/locations_helper.rb +++ b/app/helpers/locations_helper.rb @@ -12,6 +12,11 @@ module LocationsHelper selection_options(Location.type_of_units) end + def local_authorities_selection + null_option = [OpenStruct.new(id: "", name: "Select an option")] + null_option + Location.local_authorities.map { |code, name| OpenStruct.new(code:, name:) } + end + def selection_options(resource) return [] if resource.blank? diff --git a/app/models/location.rb b/app/models/location.rb index c89ff0236..40a115d43 100644 --- a/app/models/location.rb +++ b/app/models/location.rb @@ -17,6 +17,327 @@ class Location < ApplicationRecord scope :started, -> { where("startdate <= ?", Time.zone.today).or(where(startdate: nil)) } scope :active, -> { where(confirmed: true).and(started) } + LOCAL_AUTHORITIES = { + "E07000223": "Adur", + "E07000026": "Allerdale", + "E07000032": "Amber Valley", + "E07000224": "Arun", + "E07000170": "Ashfield", + "E07000105": "Ashford", + "E07000200": "Babergh", + "E09000002": "Barking and Dagenham", + "E09000003": "Barnet", + "E08000016": "Barnsley", + "E07000027": "Barrow-in-Furness", + "E07000066": "Basildon", + "E07000084": "Basingstoke and Deane", + "E07000171": "Bassetlaw", + "E06000022": "Bath and North East Somerset", + "E06000055": "Bedford", + "E09000004": "Bexley", + "E08000025": "Birmingham", + "E07000129": "Blaby", + "E06000008": "Blackburn with Darwen", + "E06000009": "Blackpool", + "E07000033": "Bolsover", + "E08000001": "Bolton", + "E07000136": "Boston", + "E06000058": "Bournemouth, Christchurch and Poole", + "E06000036": "Bracknell Forest", + "E08000032": "Bradford", + "E07000067": "Braintree", + "E07000143": "Breckland", + "E09000005": "Brent", + "E07000068": "Brentwood", + "E06000043": "Brighton and Hove", + "E06000023": "Bristol, City of", + "E07000144": "Broadland", + "E09000006": "Bromley", + "E07000234": "Bromsgrove", + "E07000095": "Broxbourne", + "E07000172": "Broxtowe", + "E06000060": "Buckinghamshire", + "E07000117": "Burnley", + "E08000002": "Bury", + "E08000033": "Calderdale", + "E07000008": "Cambridge", + "E09000007": "Camden", + "E07000192": "Cannock Chase", + "E07000106": "Canterbury", + "E07000028": "Carlisle", + "E07000069": "Castle Point", + "E06000056": "Central Bedfordshire", + "E07000130": "Charnwood", + "E07000070": "Chelmsford", + "E07000078": "Cheltenham", + "E07000177": "Cherwell", + "E06000049": "Cheshire East", + "E06000050": "Cheshire West and Chester", + "E07000034": "Chesterfield", + "E07000225": "Chichester", + "E07000118": "Chorley", + "E09000001": "City of London", + "E07000071": "Colchester", + "E07000029": "Copeland", + "E07000150": "Corby", + "E06000052": "Cornwall", + "E07000079": "Cotswold", + "E06000047": "County Durham", + "E08000026": "Coventry", + "E07000163": "Craven", + "E07000226": "Crawley", + "E09000008": "Croydon", + "E07000096": "Dacorum", + "E06000005": "Darlington", + "E07000107": "Dartford", + "E07000151": "Daventry", + "E06000015": "Derby", + "E07000035": "Derbyshire Dales", + "E08000017": "Doncaster", + "E06000059": "Dorset", + "E07000108": "Dover", + "E08000027": "Dudley", + "E09000009": "Ealing", + "E07000009": "East Cambridgeshire", + "E07000040": "East Devon", + "E07000085": "East Hampshire", + "E07000242": "East Hertfordshire", + "E07000137": "East Lindsey", + "E07000152": "East Northamptonshire", + "E06000011": "East Riding of Yorkshire", + "E07000193": "East Staffordshire", + "E07000244": "East Suffolk", + "E07000061": "Eastbourne", + "E07000086": "Eastleigh", + "E07000030": "Eden", + "E07000207": "Elmbridge", + "E09000010": "Enfield", + "E07000072": "Epping Forest", + "E07000208": "Epsom and Ewell", + "E07000036": "Erewash", + "E07000041": "Exeter", + "E07000087": "Fareham", + "E07000010": "Fenland", + "E07000112": "Folkestone and Hythe", + "E07000080": "Forest of Dean", + "E07000119": "Fylde", + "E08000037": "Gateshead", + "E07000173": "Gedling", + "E07000081": "Gloucester", + "E07000088": "Gosport", + "E07000109": "Gravesham", + "E07000145": "Great Yarmouth", + "E09000011": "Greenwich", + "E07000209": "Guildford", + "W06000002": "Gwynedd", + "E09000012": "Hackney", + "E06000006": "Halton", + "E07000164": "Hambleton", + "E09000013": "Hammersmith and Fulham", + "E07000131": "Harborough", + "E09000014": "Haringey", + "E07000073": "Harlow", + "E07000165": "Harrogate", + "E09000015": "Harrow", + "E07000089": "Hart", + "E06000001": "Hartlepool", + "E07000062": "Hastings", + "E07000090": "Havant", + "E09000016": "Havering", + "E06000019": "Herefordshire, County of", + "E07000098": "Hertsmere", + "E07000037": "High Peak", + "S12000017": "Highland", + "E09000017": "Hillingdon", + "E07000132": "Hinckley and Bosworth", + "E07000227": "Horsham", + "E09000018": "Hounslow", + "E07000011": "Huntingdonshire", + "E07000120": "Hyndburn", + "E07000202": "Ipswich", + "E06000046": "Isle of Wight", + "E06000053": "Isles of Scilly", + "E09000019": "Islington", + "E09000020": "Kensington and Chelsea", + "E07000153": "Kettering", + "E07000146": "King’s Lynn and West Norfolk", + "E06000010": "Kingston upon Hull, City of", + "E09000021": "Kingston upon Thames", + "E08000034": "Kirklees", + "E08000011": "Knowsley", + "E09000022": "Lambeth", + "E07000121": "Lancaster", + "E08000035": "Leeds", + "E06000016": "Leicester", + "E07000063": "Lewes", + "E09000023": "Lewisham", + "E07000194": "Lichfield", + "E07000138": "Lincoln", + "E08000012": "Liverpool", + "E06000032": "Luton", + "E07000110": "Maidstone", + "E07000074": "Maldon", + "E07000235": "Malvern Hills", + "E08000003": "Manchester", + "E07000174": "Mansfield", + "E06000035": "Medway", + "E07000133": "Melton", + "E07000187": "Mendip", + "E09000024": "Merton", + "E07000042": "Mid Devon", + "E07000203": "Mid Suffolk", + "E07000228": "Mid Sussex", + "E06000002": "Middlesbrough", + "E06000042": "Milton Keynes", + "E07000210": "Mole Valley", + "E07000091": "New Forest", + "E07000175": "Newark and Sherwood", + "E08000021": "Newcastle upon Tyne", + "E07000195": "Newcastle-under-Lyme", + "E09000025": "Newham", + "E07000043": "North Devon", + "E07000038": "North East Derbyshire", + "E06000012": "North East Lincolnshire", + "E07000099": "North Hertfordshire", + "E07000139": "North Kesteven", + "E06000013": "North Lincolnshire", + "E07000147": "North Norfolk", + "E06000024": "North Somerset", + "E08000022": "North Tyneside", + "E07000218": "North Warwickshire", + "E07000134": "North West Leicestershire", + "E07000154": "Northampton", + "E06000057": "Northumberland", + "E07000148": "Norwich", + "E06000018": "Nottingham", + "E07000219": "Nuneaton and Bedworth", + "E07000135": "Oadby and Wigston", + "E08000004": "Oldham", + "E07000178": "Oxford", + "E07000122": "Pendle", + "E06000031": "Peterborough", + "E06000026": "Plymouth", + "E06000044": "Portsmouth", + "E07000123": "Preston", + "E06000038": "Reading", + "E09000026": "Redbridge", + "E06000003": "Redcar and Cleveland", + "E07000236": "Redditch", + "E07000211": "Reigate and Banstead", + "E07000124": "Ribble Valley", + "E09000027": "Richmond upon Thames", + "E07000166": "Richmondshire", + "E08000005": "Rochdale", + "E07000075": "Rochford", + "E07000125": "Rossendale", + "E07000064": "Rother", + "E08000018": "Rotherham", + "E07000220": "Rugby", + "E07000212": "Runnymede", + "E07000176": "Rushcliffe", + "E07000092": "Rushmoor", + "E06000017": "Rutland", + "E07000167": "Ryedale", + "E08000006": "Salford", + "E08000028": "Sandwell", + "E07000168": "Scarborough", + "E07000188": "Sedgemoor", + "E08000014": "Sefton", + "E07000169": "Selby", + "E07000111": "Sevenoaks", + "E08000019": "Sheffield", + "E06000051": "Shropshire", + "E06000039": "Slough", + "E08000029": "Solihull", + "E07000246": "Somerset West and Taunton", + "E07000012": "South Cambridgeshire", + "E07000039": "South Derbyshire", + "E06000025": "South Gloucestershire", + "E07000044": "South Hams", + "E07000140": "South Holland", + "E07000141": "South Kesteven", + "E07000031": "South Lakeland", + "E07000149": "South Norfolk", + "E07000155": "South Northamptonshire", + "E07000179": "South Oxfordshire", + "E07000126": "South Ribble", + "E07000189": "South Somerset", + "E07000196": "South Staffordshire", + "E08000023": "South Tyneside", + "E06000045": "Southampton", + "E06000033": "Southend-on-Sea", + "E09000028": "Southwark", + "E07000213": "Spelthorne", + "E07000240": "St Albans", + "E08000013": "St. Helens", + "E07000197": "Stafford", + "E07000198": "Staffordshire Moorlands", + "E07000243": "Stevenage", + "E08000007": "Stockport", + "E06000004": "Stockton-on-Tees", + "E06000021": "Stoke-on-Trent", + "E07000221": "Stratford-on-Avon", + "E07000082": "Stroud", + "E08000024": "Sunderland", + "E07000214": "Surrey Heath", + "E09000029": "Sutton", + "E07000113": "Swale", + "E06000030": "Swindon", + "E08000008": "Tameside", + "E07000199": "Tamworth", + "E07000215": "Tandridge", + "E07000045": "Teignbridge", + "E06000020": "Telford and Wrekin", + "E07000076": "Tendring", + "E07000093": "Test Valley", + "E07000083": "Tewkesbury", + "E07000114": "Thanet", + "E07000102": "Three Rivers", + "E06000034": "Thurrock", + "E07000115": "Tonbridge and Malling", + "E06000027": "Torbay", + "E07000046": "Torridge", + "E09000030": "Tower Hamlets", + "E08000009": "Trafford", + "E07000116": "Tunbridge Wells", + "E07000077": "Uttlesford", + "E07000180": "Vale of White Horse", + "E08000036": "Wakefield", + "E08000030": "Walsall", + "E09000031": "Waltham Forest", + "E09000032": "Wandsworth", + "E06000007": "Warrington", + "E07000222": "Warwick", + "E07000103": "Watford", + "E07000216": "Waverley", + "E07000065": "Wealden", + "E07000156": "Wellingborough", + "E07000241": "Welwyn Hatfield", + "E06000037": "West Berkshire", + "E07000047": "West Devon", + "E07000127": "West Lancashire", + "E07000142": "West Lindsey", + "E07000181": "West Oxfordshire", + "E07000245": "West Suffolk", + "E09000033": "Westminster", + "E08000010": "Wigan", + "E06000054": "Wiltshire", + "E07000094": "Winchester", + "E06000040": "Windsor and Maidenhead", + "E08000015": "Wirral", + "E07000217": "Woking", + "E06000041": "Wokingham", + "E08000031": "Wolverhampton", + "E07000237": "Worcester", + "E07000229": "Worthing", + "E07000238": "Wychavon", + "E07000128": "Wyre", + "E07000239": "Wyre Forest", + "E06000014": "York", + }.freeze + + enum local_authorities: LOCAL_AUTHORITIES + MOBILITY_TYPE = { "Wheelchair-user standard": "W", "Fitted with equipment and adaptations": "A", diff --git a/app/views/locations/edit_local_authority.html.erb b/app/views/locations/edit_local_authority.html.erb index 41cf74f1b..43c351d28 100644 --- a/app/views/locations/edit_local_authority.html.erb +++ b/app/views/locations/edit_local_authority.html.erb @@ -12,12 +12,8 @@ <%= render partial: "organisations/headings", locals: { main: "What is the local authority of #{@location.postcode}?", sub: @scheme.service_name } %> - <% la_list = FormHandler.instance.current_lettings_form.get_question("la", nil).answer_options.values %> - - <% las = la_list.map { |la| OpenStruct.new(name: la) } %> - <%= f.govuk_collection_select :location_admin_district, - las, + local_authorities_selection, :name, :name, label: { hidden: true },