Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Gallagher Re: Technical Interview

The project is an ASP.NET Core application with Angular to test basic technical skills of the candidates for Software Engineering positions.

Structure

Application uses ASP.NET Core 3.1
ClientApp inside uses Angular 8.2.12

The project does not use any database. Sample database items are stored in SanctionedEntities list in DatabaseService. For the purpose of this exercise this is sufficient, we do not expect candidates to embed ORM or CRUD functionality. However if candidates wish to mock a DAL that is acceptable - but the focus of the time spent here should be on C# and Angular development.

Requirements

  • Node.js version 10.9.0 or later
  • ASP.NET Core SDK 3.1
  • Visual Studio/VS Code IDE

Getting started

Open the solution in Visual Studio and run IIS Express. This will automatically install the required packages and will open the app in the browser. The Home page will provide you with the details about the content of the application and the tasks you are asked to tackle.

Scope of exercise

As an insurance organisation, we are prevented from doing business with certain organisations that are subject to sanctions by Government. These sanctioned entities are different across the globe and it is vital we keep track of which organisations are sanctioned in which countries.

This is a simple ASP.Net Core application with Angular, its goal is to keep a track of the number of organisations subject to sanctions in various countries and display these to the user. It includes following tabs:

Counter: simple counter which is incremented by pressing a button

Sanctioned Entities: table displaying sanctioned entities fetched from the server Please tackle the following problems - use whatever approaches you'd normally use in your day to day work:

  1. Display the counter on the home page
  • Number on the Counter page should always match the one on the Home page
  • The count should persist when switching between the tabs
  1. Add a capability to add a sanctioned entity
  • Add a form to provide details of a new sanctioned entity
  • The status should use a Bootstrap switch
  • No property of the sanctioned entity can be empty
  • The code needs to ensure that there cannot be more than one entity with the same name and domicile

Submitting your work

Please create a pull request for the code you have developed and submit no later than 2 hours before your scheduled interview time. If you have any issues submitting your PR, please contact your recruitment partner.

About

Short technical exercise for candidates for engineering roles @ GallagherRe, covering .net and Angular development

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Gallagher Re: Technical Interview

The project is an ASP.NET Core application with Angular to test basic technical skills of the candidates for Software Engineering positions.

Structure

Application uses ASP.NET Core 3.1
ClientApp inside uses Angular 8.2.12

The project does not use any database. Sample database items are stored in SanctionedEntities list in DatabaseService. For the purpose of this exercise this is sufficient, we do not expect candidates to embed ORM or CRUD functionality. However if candidates wish to mock a DAL that is acceptable - but the focus of the time spent here should be on C# and Angular development.

Requirements

  • Node.js version 10.9.0 or later
  • ASP.NET Core SDK 3.1
  • Visual Studio/VS Code IDE

Getting started

Open the solution in Visual Studio and run IIS Express. This will automatically install the required packages and will open the app in the browser. The Home page will provide you with the details about the content of the application and the tasks you are asked to tackle.

Scope of exercise

As an insurance organisation, we are prevented from doing business with certain organisations that are subject to sanctions by Government. These sanctioned entities are different across the globe and it is vital we keep track of which organisations are sanctioned in which countries.

This is a simple ASP.Net Core application with Angular, its goal is to keep a track of the number of organisations subject to sanctions in various countries and display these to the user. It includes following tabs:

Counter: simple counter which is incremented by pressing a button

Sanctioned Entities: table displaying sanctioned entities fetched from the server Please tackle the following problems - use whatever approaches you'd normally use in your day to day work:

  1. Display the counter on the home page
  • Number on the Counter page should always match the one on the Home page
  • The count should persist when switching between the tabs
  1. Add a capability to add a sanctioned entity
  • Add a form to provide details of a new sanctioned entity
  • The status should use a Bootstrap switch
  • No property of the sanctioned entity can be empty
  • The code needs to ensure that there cannot be more than one entity with the same name and domicile

Submitting your work

Please create a pull request for the code you have developed and submit no later than 2 hours before your scheduled interview time. If you have any issues submitting your PR, please contact your recruitment partner.

About

Short technical exercise for candidates for engineering roles @ GallagherRe, covering .net and Angular development

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Gallagher Re: Technical Interview

The project is an ASP.NET Core application with Angular to test basic technical skills of the candidates for Software Engineering positions.

Structure

Application uses ASP.NET Core 3.1
ClientApp inside uses Angular 8.2.12

The project does not use any database. Sample database items are stored in SanctionedEntities list in DatabaseService. For the purpose of this exercise this is sufficient, we do not expect candidates to embed ORM or CRUD functionality. However if candidates wish to mock a DAL that is acceptable - but the focus of the time spent here should be on C# and Angular development.

Requirements

  • Node.js version 10.9.0 or later
  • ASP.NET Core SDK 3.1
  • Visual Studio/VS Code IDE

Getting started

Open the solution in Visual Studio and run IIS Express. This will automatically install the required packages and will open the app in the browser. The Home page will provide you with the details about the content of the application and the tasks you are asked to tackle.

Scope of exercise

As an insurance organisation, we are prevented from doing business with certain organisations that are subject to sanctions by Government. These sanctioned entities are different across the globe and it is vital we keep track of which organisations are sanctioned in which countries.

This is a simple ASP.Net Core application with Angular, its goal is to keep a track of the number of organisations subject to sanctions in various countries and display these to the user. It includes following tabs:

Counter: simple counter which is incremented by pressing a button

Sanctioned Entities: table displaying sanctioned entities fetched from the server Please tackle the following problems - use whatever approaches you'd normally use in your day to day work:

  1. Display the counter on the home page
  • Number on the Counter page should always match the one on the Home page
  • The count should persist when switching between the tabs
  1. Add a capability to add a sanctioned entity
  • Add a form to provide details of a new sanctioned entity
  • The status should use a Bootstrap switch
  • No property of the sanctioned entity can be empty
  • The code needs to ensure that there cannot be more than one entity with the same name and domicile

Submitting your work

Please create a pull request for the code you have developed and submit no later than 2 hours before your scheduled interview time. If you have any issues submitting your PR, please contact your recruitment partner.

About

Short technical exercise for candidates for engineering roles @ GallagherRe, covering .net and Angular development

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Gallagher Re: Technical Interview

The project is an ASP.NET Core application with Angular to test basic technical skills of the candidates for Software Engineering positions.

Structure

Application uses ASP.NET Core 3.1
ClientApp inside uses Angular 8.2.12

The project does not use any database. Sample database items are stored in SanctionedEntities list in DatabaseService. For the purpose of this exercise this is sufficient, we do not expect candidates to embed ORM or CRUD functionality. However if candidates wish to mock a DAL that is acceptable - but the focus of the time spent here should be on C# and Angular development.

Requirements

  • Node.js version 10.9.0 or later
  • ASP.NET Core SDK 3.1
  • Visual Studio/VS Code IDE

Getting started

Open the solution in Visual Studio and run IIS Express. This will automatically install the required packages and will open the app in the browser. The Home page will provide you with the details about the content of the application and the tasks you are asked to tackle.

Scope of exercise

As an insurance organisation, we are prevented from doing business with certain organisations that are subject to sanctions by Government. These sanctioned entities are different across the globe and it is vital we keep track of which organisations are sanctioned in which countries.

This is a simple ASP.Net Core application with Angular, its goal is to keep a track of the number of organisations subject to sanctions in various countries and display these to the user. It includes following tabs:

Counter: simple counter which is incremented by pressing a button

Sanctioned Entities: table displaying sanctioned entities fetched from the server Please tackle the following problems - use whatever approaches you'd normally use in your day to day work:

  1. Display the counter on the home page
  • Number on the Counter page should always match the one on the Home page
  • The count should persist when switching between the tabs
  1. Add a capability to add a sanctioned entity
  • Add a form to provide details of a new sanctioned entity
  • The status should use a Bootstrap switch
  • No property of the sanctioned entity can be empty
  • The code needs to ensure that there cannot be more than one entity with the same name and domicile

Submitting your work

Please create a pull request for the code you have developed and submit no later than 2 hours before your scheduled interview time. If you have any issues submitting your PR, please contact your recruitment partner.

About

Short technical exercise for candidates for engineering roles @ GallagherRe, covering .net and Angular development

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Gallagher Re: Technical Interview

The project is an ASP.NET Core application with Angular to test basic technical skills of the candidates for Software Engineering positions.

Structure

Application uses ASP.NET Core 3.1
ClientApp inside uses Angular 8.2.12

The project does not use any database. Sample database items are stored in SanctionedEntities list in DatabaseService. For the purpose of this exercise this is sufficient, we do not expect candidates to embed ORM or CRUD functionality. However if candidates wish to mock a DAL that is acceptable - but the focus of the time spent here should be on C# and Angular development.

Requirements

  • Node.js version 10.9.0 or later
  • ASP.NET Core SDK 3.1
  • Visual Studio/VS Code IDE

Getting started

Open the solution in Visual Studio and run IIS Express. This will automatically install the required packages and will open the app in the browser. The Home page will provide you with the details about the content of the application and the tasks you are asked to tackle.

Scope of exercise

As an insurance organisation, we are prevented from doing business with certain organisations that are subject to sanctions by Government. These sanctioned entities are different across the globe and it is vital we keep track of which organisations are sanctioned in which countries.

This is a simple ASP.Net Core application with Angular, its goal is to keep a track of the number of organisations subject to sanctions in various countries and display these to the user. It includes following tabs:

Counter: simple counter which is incremented by pressing a button

Sanctioned Entities: table displaying sanctioned entities fetched from the server Please tackle the following problems - use whatever approaches you'd normally use in your day to day work:

  1. Display the counter on the home page
  • Number on the Counter page should always match the one on the Home page
  • The count should persist when switching between the tabs
  1. Add a capability to add a sanctioned entity
  • Add a form to provide details of a new sanctioned entity
  • The status should use a Bootstrap switch
  • No property of the sanctioned entity can be empty
  • The code needs to ensure that there cannot be more than one entity with the same name and domicile

Submitting your work

Please create a pull request for the code you have developed and submit no later than 2 hours before your scheduled interview time. If you have any issues submitting your PR, please contact your recruitment partner.

About

Short technical exercise for candidates for engineering roles @ GallagherRe, covering .net and Angular development

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Gallagher Re: Technical Interview

The project is an ASP.NET Core application with Angular to test basic technical skills of the candidates for Software Engineering positions.

Structure

Application uses ASP.NET Core 3.1
ClientApp inside uses Angular 8.2.12

The project does not use any database. Sample database items are stored in SanctionedEntities list in DatabaseService. For the purpose of this exercise this is sufficient, we do not expect candidates to embed ORM or CRUD functionality. However if candidates wish to mock a DAL that is acceptable - but the focus of the time spent here should be on C# and Angular development.

Requirements

  • Node.js version 10.9.0 or later
  • ASP.NET Core SDK 3.1
  • Visual Studio/VS Code IDE

Getting started

Open the solution in Visual Studio and run IIS Express. This will automatically install the required packages and will open the app in the browser. The Home page will provide you with the details about the content of the application and the tasks you are asked to tackle.

Scope of exercise

As an insurance organisation, we are prevented from doing business with certain organisations that are subject to sanctions by Government. These sanctioned entities are different across the globe and it is vital we keep track of which organisations are sanctioned in which countries.

This is a simple ASP.Net Core application with Angular, its goal is to keep a track of the number of organisations subject to sanctions in various countries and display these to the user. It includes following tabs:

Counter: simple counter which is incremented by pressing a button

Sanctioned Entities: table displaying sanctioned entities fetched from the server Please tackle the following problems - use whatever approaches you'd normally use in your day to day work:

  1. Display the counter on the home page
  • Number on the Counter page should always match the one on the Home page
  • The count should persist when switching between the tabs
  1. Add a capability to add a sanctioned entity
  • Add a form to provide details of a new sanctioned entity
  • The status should use a Bootstrap switch
  • No property of the sanctioned entity can be empty
  • The code needs to ensure that there cannot be more than one entity with the same name and domicile

Submitting your work

Please create a pull request for the code you have developed and submit no later than 2 hours before your scheduled interview time. If you have any issues submitting your PR, please contact your recruitment partner.

About

Short technical exercise for candidates for engineering roles @ GallagherRe, covering .net and Angular development

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Gallagher Re: Technical Interview

The project is an ASP.NET Core application with Angular to test basic technical skills of the candidates for Software Engineering positions.

Structure

Application uses ASP.NET Core 3.1
ClientApp inside uses Angular 8.2.12

The project does not use any database. Sample database items are stored in SanctionedEntities list in DatabaseService. For the purpose of this exercise this is sufficient, we do not expect candidates to embed ORM or CRUD functionality. However if candidates wish to mock a DAL that is acceptable - but the focus of the time spent here should be on C# and Angular development.

Requirements

  • Node.js version 10.9.0 or later
  • ASP.NET Core SDK 3.1
  • Visual Studio/VS Code IDE

Getting started

Open the solution in Visual Studio and run IIS Express. This will automatically install the required packages and will open the app in the browser. The Home page will provide you with the details about the content of the application and the tasks you are asked to tackle.

Scope of exercise

As an insurance organisation, we are prevented from doing business with certain organisations that are subject to sanctions by Government. These sanctioned entities are different across the globe and it is vital we keep track of which organisations are sanctioned in which countries.

This is a simple ASP.Net Core application with Angular, its goal is to keep a track of the number of organisations subject to sanctions in various countries and display these to the user. It includes following tabs:

Counter: simple counter which is incremented by pressing a button

Sanctioned Entities: table displaying sanctioned entities fetched from the server Please tackle the following problems - use whatever approaches you'd normally use in your day to day work:

  1. Display the counter on the home page
  • Number on the Counter page should always match the one on the Home page
  • The count should persist when switching between the tabs
  1. Add a capability to add a sanctioned entity
  • Add a form to provide details of a new sanctioned entity
  • The status should use a Bootstrap switch
  • No property of the sanctioned entity can be empty
  • The code needs to ensure that there cannot be more than one entity with the same name and domicile

Submitting your work

Please create a pull request for the code you have developed and submit no later than 2 hours before your scheduled interview time. If you have any issues submitting your PR, please contact your recruitment partner.

About

Short technical exercise for candidates for engineering roles @ GallagherRe, covering .net and Angular development

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Gallagher Re: Technical Interview

The project is an ASP.NET Core application with Angular to test basic technical skills of the candidates for Software Engineering positions.

Structure

Application uses ASP.NET Core 3.1
ClientApp inside uses Angular 8.2.12

The project does not use any database. Sample database items are stored in SanctionedEntities list in DatabaseService. For the purpose of this exercise this is sufficient, we do not expect candidates to embed ORM or CRUD functionality. However if candidates wish to mock a DAL that is acceptable - but the focus of the time spent here should be on C# and Angular development.

Requirements

  • Node.js version 10.9.0 or later
  • ASP.NET Core SDK 3.1
  • Visual Studio/VS Code IDE

Getting started

Open the solution in Visual Studio and run IIS Express. This will automatically install the required packages and will open the app in the browser. The Home page will provide you with the details about the content of the application and the tasks you are asked to tackle.

Scope of exercise

As an insurance organisation, we are prevented from doing business with certain organisations that are subject to sanctions by Government. These sanctioned entities are different across the globe and it is vital we keep track of which organisations are sanctioned in which countries.

This is a simple ASP.Net Core application with Angular, its goal is to keep a track of the number of organisations subject to sanctions in various countries and display these to the user. It includes following tabs:

Counter: simple counter which is incremented by pressing a button

Sanctioned Entities: table displaying sanctioned entities fetched from the server Please tackle the following problems - use whatever approaches you'd normally use in your day to day work:

  1. Display the counter on the home page
  • Number on the Counter page should always match the one on the Home page
  • The count should persist when switching between the tabs
  1. Add a capability to add a sanctioned entity
  • Add a form to provide details of a new sanctioned entity
  • The status should use a Bootstrap switch
  • No property of the sanctioned entity can be empty
  • The code needs to ensure that there cannot be more than one entity with the same name and domicile

Submitting your work

Please create a pull request for the code you have developed and submit no later than 2 hours before your scheduled interview time. If you have any issues submitting your PR, please contact your recruitment partner.

About

Short technical exercise for candidates for engineering roles @ GallagherRe, covering .net and Angular development

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages