diff --git a/Controllers/SupportRequestController.cs b/Controllers/SupportRequestController.cs deleted file mode 100644 index 3c1c332..0000000 --- a/Controllers/SupportRequestController.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using SupportApp.Models; -using System.Collections.Generic; -using System.Linq; - -namespace SupportApp.Controllers -{ - public class SupportRequestController : Controller - { - private static List requests = new List(); - - public IActionResult Index() - { - return View(requests); - } - - [HttpPost] - public IActionResult AddRequest(string customerName, string description) - { - var newRequest = new SupportRequest - { - Id = requests.Count + 1, - CustomerName = customerName, - Description = description, - IsResolved = false - }; - requests.Insert(0, newRequest); // Insert at the beginning of the list - return Json(newRequest); // Return JSON instead of redirecting - } - - [HttpPost] - public IActionResult ResolveRequest(int id) - { - var request = requests.FirstOrDefault(r => r.Id == id); - if (request != null) - { - request.IsResolved = true; - } - return Json(new { success = true, id = id }); // Return JSON response - } - } -} \ No newline at end of file diff --git a/Models/SupportRequest.cs b/Models/SupportRequest.cs deleted file mode 100644 index 3c14a7f..0000000 --- a/Models/SupportRequest.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace SupportApp.Models -{ - public class SupportRequest - { - public int Id { get; set; } - public string CustomerName { get; set; } = string.Empty; // Initialize with default value - public string Description { get; set; } = string.Empty; // Initialize with default value - public bool IsResolved { get; set; } // Add this property - } -} \ No newline at end of file diff --git a/Program.cs b/Program.cs deleted file mode 100644 index 980fb2e..0000000 --- a/Program.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; - -namespace SupportApp -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} \ No newline at end of file diff --git a/Startup.cs b/Startup.cs deleted file mode 100644 index f8cc40b..0000000 --- a/Startup.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Newtonsoft.Json; // Import Newtonsoft.Json - -namespace SupportApp -{ - public class Startup - { - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - public void ConfigureServices(IServiceCollection services) - { - services.AddControllersWithViews() - .AddNewtonsoftJson(); // Add this line - } - - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - else - { - app.UseExceptionHandler("/Home/Error"); - app.UseHsts(); - } - - app.UseHttpsRedirection(); - app.UseStaticFiles(); - - app.UseRouting(); - - app.UseAuthorization(); - - app.UseEndpoints(endpoints => - { - endpoints.MapControllerRoute( - name: "default", - pattern: "{controller=SupportRequest}/{action=Index}/{id?}"); - }); - } - } -} \ No newline at end of file diff --git a/SupportApp.csproj b/SupportApp.csproj deleted file mode 100644 index 48071d7..0000000 --- a/SupportApp.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - net8.0 - enable - enable - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - \ No newline at end of file diff --git a/SupportRequestControllerTests.cs b/SupportRequestControllerTests.cs deleted file mode 100644 index 00e06e4..0000000 --- a/SupportRequestControllerTests.cs +++ /dev/null @@ -1,64 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using SupportApp.Controllers; -using SupportApp.Models; -using System.Collections.Generic; -using System.Linq; -using Xunit; - -namespace SupportApp.Tests -{ - public class SupportRequestControllerTests - { - [Fact] - public void Index_ReturnsViewResult_WithListOfRequests() - { - // Arrange - var controller = new SupportRequestController(); - - // Act - var result = controller.Index() as ViewResult; - - // Assert - Assert.NotNull(result); - var viewData = result?.ViewData; // Access ViewData after casting to ViewResult - var model = Assert.IsAssignableFrom>(viewData?.Model); - Assert.NotNull(model); - } - - [Fact] - public void AddRequest_AddsNewRequest_AndRedirectsToIndex() - { - // Arrange - var controller = new SupportRequestController(); - string customerName = "John Doe"; - string description = "Need help with product"; - - // Act - var result = controller.AddRequest(customerName, description); - - // Assert - var redirectToActionResult = Assert.IsType(result); - Assert.Equal("Index", redirectToActionResult.ActionName); - } - - [Fact] - public void ResolveRequest_ResolvesRequest_AndRedirectsToIndex() - { - // Arrange - var controller = new SupportRequestController(); - controller.AddRequest("John Doe", "Need help with product"); - int requestId = 1; - - // Act - var result = controller.ResolveRequest(requestId) as RedirectToActionResult; - - // Assert - Assert.NotNull(result); - Assert.Equal("Index", result.ActionName); - var viewResult = controller.Index() as ViewResult; - var request = viewResult?.ViewData.Model as List; - Assert.NotNull(request); - Assert.True(request.First().IsResolved); - } - } -} \ No newline at end of file diff --git a/Views/SupportRequest/Index.cshtml b/Views/SupportRequest/Index.cshtml deleted file mode 100644 index 4754699..0000000 --- a/Views/SupportRequest/Index.cshtml +++ /dev/null @@ -1,67 +0,0 @@ - - - - Support Requests - - - -

Support Requests

-
- - - -
-
    - @foreach (var request in Model) - { -
  • - @request.CustomerName: @request.Description - @if (!request.IsResolved) - { - - } - else - { - (Resolved) - } -
  • - } -
- - - - \ No newline at end of file diff --git a/assets/Rosefield.drawio.xml b/assets/Rosefield.drawio.xml new file mode 100644 index 0000000..908e84a --- /dev/null +++ b/assets/Rosefield.drawio.xml @@ -0,0 +1,453 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/current-state.png b/assets/current-state.png new file mode 100644 index 0000000..241a257 Binary files /dev/null and b/assets/current-state.png differ diff --git a/assets/future-state.png b/assets/future-state.png new file mode 100644 index 0000000..aa6b919 Binary files /dev/null and b/assets/future-state.png differ diff --git a/bin/Debug/net6.0/Microsoft.AspNetCore.JsonPatch.dll b/bin/Debug/net6.0/Microsoft.AspNetCore.JsonPatch.dll deleted file mode 100755 index d652748..0000000 Binary files a/bin/Debug/net6.0/Microsoft.AspNetCore.JsonPatch.dll and /dev/null differ diff --git a/bin/Debug/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll b/bin/Debug/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll deleted file mode 100755 index 057c84c..0000000 Binary files a/bin/Debug/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll and /dev/null differ diff --git a/bin/Debug/net6.0/Newtonsoft.Json.Bson.dll b/bin/Debug/net6.0/Newtonsoft.Json.Bson.dll deleted file mode 100755 index e9b1dd2..0000000 Binary files a/bin/Debug/net6.0/Newtonsoft.Json.Bson.dll and /dev/null differ diff --git a/bin/Debug/net6.0/Newtonsoft.Json.dll b/bin/Debug/net6.0/Newtonsoft.Json.dll deleted file mode 100755 index 1ffeabe..0000000 Binary files a/bin/Debug/net6.0/Newtonsoft.Json.dll and /dev/null differ diff --git a/bin/Debug/net6.0/SupportApp b/bin/Debug/net6.0/SupportApp deleted file mode 100755 index 843eae1..0000000 Binary files a/bin/Debug/net6.0/SupportApp and /dev/null differ diff --git a/bin/Debug/net6.0/SupportApp.deps.json b/bin/Debug/net6.0/SupportApp.deps.json deleted file mode 100644 index 8c0f0f8..0000000 --- a/bin/Debug/net6.0/SupportApp.deps.json +++ /dev/null @@ -1,217 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v6.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v6.0": { - "SupportApp/1.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Mvc.NewtonsoftJson": "6.0.0", - "xunit": "2.9.0", - "xunit.runner.visualstudio": "2.8.2" - }, - "runtime": { - "SupportApp.dll": {} - } - }, - "Microsoft.AspNetCore.JsonPatch/6.0.0": { - "dependencies": { - "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "13.0.1" - }, - "runtime": { - "lib/net6.0/Microsoft.AspNetCore.JsonPatch.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52608" - } - } - }, - "Microsoft.AspNetCore.Mvc.NewtonsoftJson/6.0.0": { - "dependencies": { - "Microsoft.AspNetCore.JsonPatch": "6.0.0", - "Newtonsoft.Json": "13.0.1", - "Newtonsoft.Json.Bson": "1.0.2" - }, - "runtime": { - "lib/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": { - "assemblyVersion": "6.0.0.0", - "fileVersion": "6.0.21.52608" - } - } - }, - "Microsoft.CSharp/4.7.0": {}, - "Newtonsoft.Json/13.0.1": { - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.dll": { - "assemblyVersion": "13.0.0.0", - "fileVersion": "13.0.1.25517" - } - } - }, - "Newtonsoft.Json.Bson/1.0.2": { - "dependencies": { - "Newtonsoft.Json": "13.0.1" - }, - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": { - "assemblyVersion": "1.0.0.0", - "fileVersion": "1.0.2.22727" - } - } - }, - "xunit/2.9.0": { - "dependencies": { - "xunit.analyzers": "1.15.0", - "xunit.assert": "2.9.0", - "xunit.core": "2.9.0" - } - }, - "xunit.abstractions/2.0.3": { - "runtime": { - "lib/netstandard2.0/xunit.abstractions.dll": { - "assemblyVersion": "2.0.0.0", - "fileVersion": "0.0.0.0" - } - } - }, - "xunit.analyzers/1.15.0": {}, - "xunit.assert/2.9.0": { - "runtime": { - "lib/net6.0/xunit.assert.dll": { - "assemblyVersion": "2.9.0.0", - "fileVersion": "2.9.0.0" - } - } - }, - "xunit.core/2.9.0": { - "dependencies": { - "xunit.extensibility.core": "2.9.0", - "xunit.extensibility.execution": "2.9.0" - } - }, - "xunit.extensibility.core/2.9.0": { - "dependencies": { - "xunit.abstractions": "2.0.3" - }, - "runtime": { - "lib/netstandard1.1/xunit.core.dll": { - "assemblyVersion": "2.9.0.0", - "fileVersion": "2.9.0.0" - } - } - }, - "xunit.extensibility.execution/2.9.0": { - "dependencies": { - "xunit.extensibility.core": "2.9.0" - }, - "runtime": { - "lib/netstandard1.1/xunit.execution.dotnet.dll": { - "assemblyVersion": "2.9.0.0", - "fileVersion": "2.9.0.0" - } - } - }, - "xunit.runner.visualstudio/2.8.2": {} - } - }, - "libraries": { - "SupportApp/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.JsonPatch/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-SUiwg0XQ5NtmnELHXSdX4mAwawFnAOwSx2Zz6NIhQnEN1tZDoAWEHc8dS/S7y8cE52+9bHj+XbYZuLGF7OrQPA==", - "path": "microsoft.aspnetcore.jsonpatch/6.0.0", - "hashPath": "microsoft.aspnetcore.jsonpatch.6.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Mvc.NewtonsoftJson/6.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-YMwSWgBuwkVn9k4/2wWxfwEbx8T5Utj13UH/zmUm5lbkKcY+tJyt9w9P4rY5pO1XtCitoh1+L+Feqz9qxG/CvA==", - "path": "microsoft.aspnetcore.mvc.newtonsoftjson/6.0.0", - "hashPath": "microsoft.aspnetcore.mvc.newtonsoftjson.6.0.0.nupkg.sha512" - }, - "Microsoft.CSharp/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", - "path": "microsoft.csharp/4.7.0", - "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" - }, - "Newtonsoft.Json/13.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==", - "path": "newtonsoft.json/13.0.1", - "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512" - }, - "Newtonsoft.Json.Bson/1.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QYFyxhaABwmq3p/21VrZNYvCg3DaEoN/wUuw5nmfAf0X3HLjgupwhkEWdgfb9nvGAUIv3osmZoD3kKl4jxEmYQ==", - "path": "newtonsoft.json.bson/1.0.2", - "hashPath": "newtonsoft.json.bson.1.0.2.nupkg.sha512" - }, - "xunit/2.9.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-PtU3rZ0ThdmdJqTbK7GkgFf6iBaCR6Q0uvJHznID+XEYk2v6O/b7sRxqnbi3B2gRDXxjTqMkVNayzwsqsFUxRw==", - "path": "xunit/2.9.0", - "hashPath": "xunit.2.9.0.nupkg.sha512" - }, - "xunit.abstractions/2.0.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", - "path": "xunit.abstractions/2.0.3", - "hashPath": "xunit.abstractions.2.0.3.nupkg.sha512" - }, - "xunit.analyzers/1.15.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-s+M8K/Rtlgr6CmD7AYQKrNTvT5sh0l0ZKDoZ3Z/ExhlIwfV9mGAMR4f7KqIB7SSK7ZOhqDTgTUMYPmKfmvWUWQ==", - "path": "xunit.analyzers/1.15.0", - "hashPath": "xunit.analyzers.1.15.0.nupkg.sha512" - }, - "xunit.assert/2.9.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Z/1pyia//860wEYTKn6Q5dmgikJdRjgE4t5AoxJkK8oTmidzPLEPG574kmm7LFkMLbH6Frwmgb750kcyR+hwoA==", - "path": "xunit.assert/2.9.0", - "hashPath": "xunit.assert.2.9.0.nupkg.sha512" - }, - "xunit.core/2.9.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-uRaop9tZsZMCaUS4AfbSPGYHtvywWnm8XXFNUqII7ShWyDBgdchY6gyDNgO4AK1Lv/1NNW61Zq63CsDV6oH6Jg==", - "path": "xunit.core/2.9.0", - "hashPath": "xunit.core.2.9.0.nupkg.sha512" - }, - "xunit.extensibility.core/2.9.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zjDEUSxsr6UNij4gIwCgMqQox+oLDPRZ+mubwWLci+SssPBFQD1xeRR4SvgBuXqbE0QXCJ/STVTp+lxiB5NLVA==", - "path": "xunit.extensibility.core/2.9.0", - "hashPath": "xunit.extensibility.core.2.9.0.nupkg.sha512" - }, - "xunit.extensibility.execution/2.9.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5ZTQZvmPLlBw6QzCOwM0KnMsZw6eGjbmC176QHZlcbQoMhGIeGcYzYwn5w9yXxf+4phtplMuVqTpTbFDQh2bqQ==", - "path": "xunit.extensibility.execution/2.9.0", - "hashPath": "xunit.extensibility.execution.2.9.0.nupkg.sha512" - }, - "xunit.runner.visualstudio/2.8.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-vm1tbfXhFmjFMUmS4M0J0ASXz3/U5XvXBa6DOQUL3fEz4Vt6YPhv+ESCarx6M6D+9kJkJYZKCNvJMas1+nVfmQ==", - "path": "xunit.runner.visualstudio/2.8.2", - "hashPath": "xunit.runner.visualstudio.2.8.2.nupkg.sha512" - } - } -} \ No newline at end of file diff --git a/bin/Debug/net6.0/SupportApp.dll b/bin/Debug/net6.0/SupportApp.dll deleted file mode 100644 index 369e010..0000000 Binary files a/bin/Debug/net6.0/SupportApp.dll and /dev/null differ diff --git a/bin/Debug/net6.0/SupportApp.pdb b/bin/Debug/net6.0/SupportApp.pdb deleted file mode 100644 index a356e94..0000000 Binary files a/bin/Debug/net6.0/SupportApp.pdb and /dev/null differ diff --git a/bin/Debug/net6.0/SupportApp.runtimeconfig.json b/bin/Debug/net6.0/SupportApp.runtimeconfig.json deleted file mode 100644 index dfb1b77..0000000 --- a/bin/Debug/net6.0/SupportApp.runtimeconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net6.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "6.0.0" - }, - { - "name": "Microsoft.AspNetCore.App", - "version": "6.0.0" - } - ], - "configProperties": { - "System.GC.Server": true, - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false - } - } -} \ No newline at end of file diff --git a/bin/Debug/net6.0/SupportApp.staticwebassets.runtime.json b/bin/Debug/net6.0/SupportApp.staticwebassets.runtime.json deleted file mode 100644 index fb50a12..0000000 --- a/bin/Debug/net6.0/SupportApp.staticwebassets.runtime.json +++ /dev/null @@ -1 +0,0 @@ -{"ContentRoots":["/Users/sean/Desktop/dev/customer-support/wwwroot/"],"Root":{"Children":{"js":{"Children":{"site.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/site.js"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}} \ No newline at end of file diff --git a/bin/Debug/net6.0/xunit.abstractions.dll b/bin/Debug/net6.0/xunit.abstractions.dll deleted file mode 100755 index d1e90bf..0000000 Binary files a/bin/Debug/net6.0/xunit.abstractions.dll and /dev/null differ diff --git a/bin/Debug/net6.0/xunit.assert.dll b/bin/Debug/net6.0/xunit.assert.dll deleted file mode 100755 index a09cb40..0000000 Binary files a/bin/Debug/net6.0/xunit.assert.dll and /dev/null differ diff --git a/bin/Debug/net6.0/xunit.core.dll b/bin/Debug/net6.0/xunit.core.dll deleted file mode 100755 index 1a2cb59..0000000 Binary files a/bin/Debug/net6.0/xunit.core.dll and /dev/null differ diff --git a/bin/Debug/net6.0/xunit.execution.dotnet.dll b/bin/Debug/net6.0/xunit.execution.dotnet.dll deleted file mode 100755 index 38ee394..0000000 Binary files a/bin/Debug/net6.0/xunit.execution.dotnet.dll and /dev/null differ diff --git a/bin/Debug/net6.0/xunit.runner.reporters.netcoreapp10.dll b/bin/Debug/net6.0/xunit.runner.reporters.netcoreapp10.dll deleted file mode 100755 index ca76232..0000000 Binary files a/bin/Debug/net6.0/xunit.runner.reporters.netcoreapp10.dll and /dev/null differ diff --git a/bin/Debug/net6.0/xunit.runner.utility.netcoreapp10.dll b/bin/Debug/net6.0/xunit.runner.utility.netcoreapp10.dll deleted file mode 100755 index c247a4e..0000000 Binary files a/bin/Debug/net6.0/xunit.runner.utility.netcoreapp10.dll and /dev/null differ diff --git a/bin/Debug/net6.0/xunit.runner.visualstudio.testadapter.dll b/bin/Debug/net6.0/xunit.runner.visualstudio.testadapter.dll deleted file mode 100755 index 2c4b812..0000000 Binary files a/bin/Debug/net6.0/xunit.runner.visualstudio.testadapter.dll and /dev/null differ diff --git a/bin/Debug/net8.0/Microsoft.AspNetCore.JsonPatch.dll b/bin/Debug/net8.0/Microsoft.AspNetCore.JsonPatch.dll deleted file mode 100755 index 5f9168b..0000000 Binary files a/bin/Debug/net8.0/Microsoft.AspNetCore.JsonPatch.dll and /dev/null differ diff --git a/bin/Debug/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll b/bin/Debug/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll deleted file mode 100755 index 898bdde..0000000 Binary files a/bin/Debug/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll and /dev/null differ diff --git a/bin/Debug/net8.0/Newtonsoft.Json.Bson.dll b/bin/Debug/net8.0/Newtonsoft.Json.Bson.dll deleted file mode 100755 index e9b1dd2..0000000 Binary files a/bin/Debug/net8.0/Newtonsoft.Json.Bson.dll and /dev/null differ diff --git a/bin/Debug/net8.0/Newtonsoft.Json.dll b/bin/Debug/net8.0/Newtonsoft.Json.dll deleted file mode 100755 index d035c38..0000000 Binary files a/bin/Debug/net8.0/Newtonsoft.Json.dll and /dev/null differ diff --git a/bin/Debug/net8.0/SupportApp b/bin/Debug/net8.0/SupportApp deleted file mode 100755 index 57bc082..0000000 Binary files a/bin/Debug/net8.0/SupportApp and /dev/null differ diff --git a/bin/Debug/net8.0/SupportApp.deps.json b/bin/Debug/net8.0/SupportApp.deps.json deleted file mode 100644 index 6d524a6..0000000 --- a/bin/Debug/net8.0/SupportApp.deps.json +++ /dev/null @@ -1,217 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": { - "SupportApp/1.0.0": { - "dependencies": { - "Microsoft.AspNetCore.Mvc.NewtonsoftJson": "8.0.0", - "xunit": "2.9.0", - "xunit.runner.visualstudio": "2.8.2" - }, - "runtime": { - "SupportApp.dll": {} - } - }, - "Microsoft.AspNetCore.JsonPatch/8.0.0": { - "dependencies": { - "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "13.0.3" - }, - "runtime": { - "lib/net8.0/Microsoft.AspNetCore.JsonPatch.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.23.53112" - } - } - }, - "Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.0": { - "dependencies": { - "Microsoft.AspNetCore.JsonPatch": "8.0.0", - "Newtonsoft.Json": "13.0.3", - "Newtonsoft.Json.Bson": "1.0.2" - }, - "runtime": { - "lib/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.23.53112" - } - } - }, - "Microsoft.CSharp/4.7.0": {}, - "Newtonsoft.Json/13.0.3": { - "runtime": { - "lib/net6.0/Newtonsoft.Json.dll": { - "assemblyVersion": "13.0.0.0", - "fileVersion": "13.0.3.27908" - } - } - }, - "Newtonsoft.Json.Bson/1.0.2": { - "dependencies": { - "Newtonsoft.Json": "13.0.3" - }, - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": { - "assemblyVersion": "1.0.0.0", - "fileVersion": "1.0.2.22727" - } - } - }, - "xunit/2.9.0": { - "dependencies": { - "xunit.analyzers": "1.15.0", - "xunit.assert": "2.9.0", - "xunit.core": "2.9.0" - } - }, - "xunit.abstractions/2.0.3": { - "runtime": { - "lib/netstandard2.0/xunit.abstractions.dll": { - "assemblyVersion": "2.0.0.0", - "fileVersion": "0.0.0.0" - } - } - }, - "xunit.analyzers/1.15.0": {}, - "xunit.assert/2.9.0": { - "runtime": { - "lib/net6.0/xunit.assert.dll": { - "assemblyVersion": "2.9.0.0", - "fileVersion": "2.9.0.0" - } - } - }, - "xunit.core/2.9.0": { - "dependencies": { - "xunit.extensibility.core": "2.9.0", - "xunit.extensibility.execution": "2.9.0" - } - }, - "xunit.extensibility.core/2.9.0": { - "dependencies": { - "xunit.abstractions": "2.0.3" - }, - "runtime": { - "lib/netstandard1.1/xunit.core.dll": { - "assemblyVersion": "2.9.0.0", - "fileVersion": "2.9.0.0" - } - } - }, - "xunit.extensibility.execution/2.9.0": { - "dependencies": { - "xunit.extensibility.core": "2.9.0" - }, - "runtime": { - "lib/netstandard1.1/xunit.execution.dotnet.dll": { - "assemblyVersion": "2.9.0.0", - "fileVersion": "2.9.0.0" - } - } - }, - "xunit.runner.visualstudio/2.8.2": {} - } - }, - "libraries": { - "SupportApp/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.AspNetCore.JsonPatch/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-klQdb/9+j0u8MDjoqHEgDCPz8GRhfsbRVvZIM3glFqjs8uY7S1hS9RvKZuz8o4dS9NsEpFp4Jccd8CQuIYHK0g==", - "path": "microsoft.aspnetcore.jsonpatch/8.0.0", - "hashPath": "microsoft.aspnetcore.jsonpatch.8.0.0.nupkg.sha512" - }, - "Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/e5+eBvY759xiZJO+y1lHi4VzXqbDzTJSyCtKpaj3Ko2JAFQjiCOJ0ZHk2i4g4HpoSdXmzEXQsjr6dUX9U0/JA==", - "path": "microsoft.aspnetcore.mvc.newtonsoftjson/8.0.0", - "hashPath": "microsoft.aspnetcore.mvc.newtonsoftjson.8.0.0.nupkg.sha512" - }, - "Microsoft.CSharp/4.7.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", - "path": "microsoft.csharp/4.7.0", - "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" - }, - "Newtonsoft.Json/13.0.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", - "path": "newtonsoft.json/13.0.3", - "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512" - }, - "Newtonsoft.Json.Bson/1.0.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QYFyxhaABwmq3p/21VrZNYvCg3DaEoN/wUuw5nmfAf0X3HLjgupwhkEWdgfb9nvGAUIv3osmZoD3kKl4jxEmYQ==", - "path": "newtonsoft.json.bson/1.0.2", - "hashPath": "newtonsoft.json.bson.1.0.2.nupkg.sha512" - }, - "xunit/2.9.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-PtU3rZ0ThdmdJqTbK7GkgFf6iBaCR6Q0uvJHznID+XEYk2v6O/b7sRxqnbi3B2gRDXxjTqMkVNayzwsqsFUxRw==", - "path": "xunit/2.9.0", - "hashPath": "xunit.2.9.0.nupkg.sha512" - }, - "xunit.abstractions/2.0.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", - "path": "xunit.abstractions/2.0.3", - "hashPath": "xunit.abstractions.2.0.3.nupkg.sha512" - }, - "xunit.analyzers/1.15.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-s+M8K/Rtlgr6CmD7AYQKrNTvT5sh0l0ZKDoZ3Z/ExhlIwfV9mGAMR4f7KqIB7SSK7ZOhqDTgTUMYPmKfmvWUWQ==", - "path": "xunit.analyzers/1.15.0", - "hashPath": "xunit.analyzers.1.15.0.nupkg.sha512" - }, - "xunit.assert/2.9.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Z/1pyia//860wEYTKn6Q5dmgikJdRjgE4t5AoxJkK8oTmidzPLEPG574kmm7LFkMLbH6Frwmgb750kcyR+hwoA==", - "path": "xunit.assert/2.9.0", - "hashPath": "xunit.assert.2.9.0.nupkg.sha512" - }, - "xunit.core/2.9.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-uRaop9tZsZMCaUS4AfbSPGYHtvywWnm8XXFNUqII7ShWyDBgdchY6gyDNgO4AK1Lv/1NNW61Zq63CsDV6oH6Jg==", - "path": "xunit.core/2.9.0", - "hashPath": "xunit.core.2.9.0.nupkg.sha512" - }, - "xunit.extensibility.core/2.9.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zjDEUSxsr6UNij4gIwCgMqQox+oLDPRZ+mubwWLci+SssPBFQD1xeRR4SvgBuXqbE0QXCJ/STVTp+lxiB5NLVA==", - "path": "xunit.extensibility.core/2.9.0", - "hashPath": "xunit.extensibility.core.2.9.0.nupkg.sha512" - }, - "xunit.extensibility.execution/2.9.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5ZTQZvmPLlBw6QzCOwM0KnMsZw6eGjbmC176QHZlcbQoMhGIeGcYzYwn5w9yXxf+4phtplMuVqTpTbFDQh2bqQ==", - "path": "xunit.extensibility.execution/2.9.0", - "hashPath": "xunit.extensibility.execution.2.9.0.nupkg.sha512" - }, - "xunit.runner.visualstudio/2.8.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-vm1tbfXhFmjFMUmS4M0J0ASXz3/U5XvXBa6DOQUL3fEz4Vt6YPhv+ESCarx6M6D+9kJkJYZKCNvJMas1+nVfmQ==", - "path": "xunit.runner.visualstudio/2.8.2", - "hashPath": "xunit.runner.visualstudio.2.8.2.nupkg.sha512" - } - } -} \ No newline at end of file diff --git a/bin/Debug/net8.0/SupportApp.dll b/bin/Debug/net8.0/SupportApp.dll deleted file mode 100644 index b3cf738..0000000 Binary files a/bin/Debug/net8.0/SupportApp.dll and /dev/null differ diff --git a/bin/Debug/net8.0/SupportApp.pdb b/bin/Debug/net8.0/SupportApp.pdb deleted file mode 100644 index 5a19b5e..0000000 Binary files a/bin/Debug/net8.0/SupportApp.pdb and /dev/null differ diff --git a/bin/Debug/net8.0/SupportApp.runtimeconfig.json b/bin/Debug/net8.0/SupportApp.runtimeconfig.json deleted file mode 100644 index 5e604c7..0000000 --- a/bin/Debug/net8.0/SupportApp.runtimeconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net8.0", - "frameworks": [ - { - "name": "Microsoft.NETCore.App", - "version": "8.0.0" - }, - { - "name": "Microsoft.AspNetCore.App", - "version": "8.0.0" - } - ], - "configProperties": { - "System.GC.Server": true, - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false - } - } -} \ No newline at end of file diff --git a/bin/Debug/net8.0/SupportApp.staticwebassets.runtime.json b/bin/Debug/net8.0/SupportApp.staticwebassets.runtime.json deleted file mode 100644 index fb50a12..0000000 --- a/bin/Debug/net8.0/SupportApp.staticwebassets.runtime.json +++ /dev/null @@ -1 +0,0 @@ -{"ContentRoots":["/Users/sean/Desktop/dev/customer-support/wwwroot/"],"Root":{"Children":{"js":{"Children":{"site.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/site.js"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}} \ No newline at end of file diff --git a/bin/Debug/net8.0/xunit.abstractions.dll b/bin/Debug/net8.0/xunit.abstractions.dll deleted file mode 100755 index d1e90bf..0000000 Binary files a/bin/Debug/net8.0/xunit.abstractions.dll and /dev/null differ diff --git a/bin/Debug/net8.0/xunit.assert.dll b/bin/Debug/net8.0/xunit.assert.dll deleted file mode 100755 index a09cb40..0000000 Binary files a/bin/Debug/net8.0/xunit.assert.dll and /dev/null differ diff --git a/bin/Debug/net8.0/xunit.core.dll b/bin/Debug/net8.0/xunit.core.dll deleted file mode 100755 index 1a2cb59..0000000 Binary files a/bin/Debug/net8.0/xunit.core.dll and /dev/null differ diff --git a/bin/Debug/net8.0/xunit.execution.dotnet.dll b/bin/Debug/net8.0/xunit.execution.dotnet.dll deleted file mode 100755 index 38ee394..0000000 Binary files a/bin/Debug/net8.0/xunit.execution.dotnet.dll and /dev/null differ diff --git a/bin/Debug/net8.0/xunit.runner.reporters.netcoreapp10.dll b/bin/Debug/net8.0/xunit.runner.reporters.netcoreapp10.dll deleted file mode 100755 index ca76232..0000000 Binary files a/bin/Debug/net8.0/xunit.runner.reporters.netcoreapp10.dll and /dev/null differ diff --git a/bin/Debug/net8.0/xunit.runner.utility.netcoreapp10.dll b/bin/Debug/net8.0/xunit.runner.utility.netcoreapp10.dll deleted file mode 100755 index c247a4e..0000000 Binary files a/bin/Debug/net8.0/xunit.runner.utility.netcoreapp10.dll and /dev/null differ diff --git a/bin/Debug/net8.0/xunit.runner.visualstudio.testadapter.dll b/bin/Debug/net8.0/xunit.runner.visualstudio.testadapter.dll deleted file mode 100755 index 2c4b812..0000000 Binary files a/bin/Debug/net8.0/xunit.runner.visualstudio.testadapter.dll and /dev/null differ diff --git a/case.md b/case.md deleted file mode 100644 index 13d2a46..0000000 --- a/case.md +++ /dev/null @@ -1,225 +0,0 @@ -Whenever I, as a leader, have asked myself 'how did I let this happen!' the answer is often 'one day at a time'. A great deal of technical leadership is recognising the subtle signs that something is awry and proactively managing it. - -There's a tool for training this called a Decision Making Exercise. They can also be pretty fun! Here's one: - -**Meet Simo: lead engineer, steady hand, tea enthusiast.** - -Simo has been with the company for 14 years — a long time by any measure. He’s worked on it all, from the big legacy codebases that underpin the business to the modern satellite tech stacks that now orbit the central platforms, providing new features and products. - -He’s been leading his current team for 6 months, prototyping a new CRM for high-value business customers that integrates via an API layer with 2 other existing tools and a third-party SaaS platform. The tech stack is primarily C# in the back end with two small services written in Java, and a React front end. The prototype has been a huge success and is being ramped up into a full production product, with Simo at the helm. - -So far, the team has been relatively small and senior. Simo has been working closely with: - -**Jack:** a senior frontend engineer. - -**Marissa:** a very experienced full-stack engineer who has been primarily focused on API integrations. - -They’ve been supported by a BA and a shared PM resource. Because of the seniority in the team, they’ve been able to work relatively closely and quickly, with two particular advantages: two members of the team (Simo and Jack) have permissions to review and merge PRs, and they’ve built a test suite with very high coverage, which has ensured their defect rate and cycle time have been pleasingly low, even with reliance on external test resources. Because of this, they’ve built up a reliable cadence of work, committing to ambitious sprints and generally meeting their commitments. - ---- - -### **The Ramp Up** - -In order to scale up the application and integrate it properly with the rest of the ecosystem, the team is being expanded with 3 new engineers: - -**Jedd:** a junior C# engineer who joined through a grad scheme and has been with the business for 18 months. - -**Eva:** a junior front-end developer and bootcamp grad who has just joined the company after 12 months at a startup. - -**Vaidas:** a mid-level Java engineer that Simo has been line-managing for the last 18 months. - -What follows are events that occur during the first 5 months of the expanded team working on the project. Your task is to read each event in sequential order — without skipping ahead! As you do, mark down on paper or digitally which events seem significant to the successful completion of Simo's project. Put yourself in Simo's shoes: what would you do in response to the events that appear significant to you? How can you ensure the best possible chance of success? Note those thoughts down. - ---- - -### **Sprint 1** - -
Event 1 -
-The expanded team commits tickets to their first sprint. They include some easy starters for the new team members and some more complex work that Jack and Marissa are excited to get stuck into. -
- -
Event 2 -
-Jedd submits his first PR, a simple update. Simo reviews it and notices some inconsistencies with the team's coding style as well as some missing tests. He leaves a list of comments for Jedd to fix and assigns it back to him. -
- - ---- - -### **Sprint 2** - -
Event 3 - -As the sprint progresses, Eva is struggling setting up her local development environment reliably and spends most of her time on Stack Overflow and ChatGPT, falling behind on her tickets. -
- - -
Event 4 -
-Marissa is asked to urgently fix a critical bug in another project, pulling her away from her assigned tasks for the sprint. The team still manages to meet their commitment, just. -
- - ---- - -### **Sprint 3** - -
Event 5 -
- -Jedd privately complains to Eva that Simo’s tone on pull request reviews is rude and that he feels some imposter syndrome. Eva mentions she’s struggling too and hasn’t been able to focus much on coding because of her setup issues. -
- - -
Event 6 -
- -The impact of Eva's setup issues and Marissa's absence becomes clear as the team misses their sprint commitment for the first time, completing 80% of planned work. -
- - ---- - -### **Sprint 4** - -
Event 7 -
- -Marissa returns to find Eva has picked up one of her in-progress tickets but has struggled to make much progress, left some requirements half finished and abandoned it again. She hides her frustration. -
- - -
Event 8 -
- -Vaidas opens a PR, and one test unexpectedly causes the suite to fail. When he re-runs the suite a third time, it passes. The PR gets approved and merged. -
- - -
Event 9 -
- -Simo notices that the cycle time for tickets with the external QA team has increased. The delays are minor but he’s worried. -
- - -
Event 10 -
- -At the end of the sprint, Jack mentions in a standup that he’s blocked on three tickets that are waiting for review and will need to carry them over. Simo has to carry the meeting as the rest of the team are quiet. -
- ---- - -### **Sprint 5** - -
Event 11 -
- -At the midpoint of the sprint, two of Jack’s tickets are still in review. The third goes to QA, but the cycle time has increased even more. -
- - -
Event 12 -
- -Simo spends three evenings in a row staying late to catch up on code reviews and project management tasks. He’s careful not to share this with the team. -
- - -
Event 13 -
- -The team completes 85% of their tickets. -
- - ---- - -### **Sprint 6** - -
Event 14 -
- -The team releases their work into production, and the application falls over. Simo and Marissa spend a late night debugging and discover a subtle timezone discrepancy that has caused a 500 error in the API, bringing the whole app down. -
- - -
Event 15 -
- -Following a washup, Simo implements a new code review policy, requiring at least two reviewers per PR in order to catch bugs before they’re merged. -
- - ---- - -### **Sprint 7** - -
Event 16 -
- -Jack and Eva have a disagreement over the best approach to a complex UI problem. The debate gets heated, and Simo has to step in to mediate. -
- - -
Event 17 -
- -Jack reports in standup that he has 4 tickets in QA, all waiting for feedback. Simo suggests he use the time to add reviews to PRs that are mounting up. -
- ---- - -### **Sprint 8** - -
Event 18 -
- -Mid-sprint, the team gets a last-minute request from upper management to add a new feature for a client demo. They reprioritise the sprint to allow time for Marissa and Jack to work on it. -
- ---- - -### **Sprint 9** - -
Event 19 -
- -Jedd accidentally commits his work directly to main, causing both Marissa and Jack to end up with unexpected conflicts in their feature branches that need resolving. Marissa seems particularly frustrated, and the rework pushes the sprint timeline dangerously close to the deadline. -
- - -
Event 20 -
- -Jack's disengagement becomes more apparent as he spends less time on reviews and more time on what seems to be personal projects or distractions. -
- ---- - -### **Sprint 10** - -
Event 21 -
- -Jack drops a bombshell: he's accepted a job offer elsewhere and will be leaving the company in four weeks. Simo immediately thinks about how much of the frontend work depends on Jack. -
- - -
Event 22 -
- -The team misses their sprint commitment, completing only 60% of the points committed. -
- ---- - -
Questions -
- -What are the prospects for the project now? - -Look back on your notes — when did you first notice the risks? And when did you realise they were going to be this damaging? Were your responses proportionate? -
diff --git a/games-and-roles.md b/games-and-roles.md new file mode 100644 index 0000000..82dc85e --- /dev/null +++ b/games-and-roles.md @@ -0,0 +1,62 @@ +# Architecture Games + +In this module we'll play a series of architecture games. In the process you +will: + +* Produce designs to solve problems. +* See how others solve problems. +* Explain your designs to others. +* Be challenged on your decisions. +* Have your architectures tested against potential scenarios. + +Through this, I hope you will gain an appreciation for what it means to do +architecture well, and in the process build a body of knowledge and skill to +solve problems in the real world. + +## Roles + +#### Leader + +The leader leads the team. They're responsible for making decisions +as to what the architecture or design is or isn't going to be. + +They have the final say on all matters in the team. They also lead and chair the +discussion amongst the group, calling on people they want to hear from, setting +research tasks, and the discussion on when they see fit. + +They also need to be mindful of the team's workload, particularly the documenter +who may end up with lots to do late on in the discussion. + +They are the person to present the design and respond to the challenges. + +#### Ideator + +Ideators propose ideas and solutions. They're responsible for bringing and +articulating to the team potential designs and their characteristics. They +will likely need to research as part of this. + +#### Challenger + +The challenger points out flaws, potential failures, and tradeoffs. They are +responsible for discovering the deficiencies of the design and +articulating them to the team. + +Done well, this role frees the rest of the team to find solutions and be optimistic. The challenger must be mindful to balance allowing ideas to germinate and bad ideas to be improved, with providing the team constructive challenge. + +#### Documenter + +The documenter describes the design. They are responsible for producing the diagrams and pieces of text used to present the proposed architecture. + +The documenter will likely need to delegate certain parts of this to rest of the team — for example, one piece of the architecture diagram could be delegated to the ideator who proposed it. + +They should rely on the leader to supervise this delegation. + +#### Judge + +Judges challenge and make judgements about the architectures presented. They are responsible for satisfying themselves of the architecture's behaviour during the gameshow's challenging events. + +In the first part of the day they will circulate amongst the teams and observe the discussion without participating. They may also spend some time researching to improve their ability to challenge. + +#### Host + +The host manages the event and makes final decisions about procedural matters or disputes to the rules of the game. They also introduce the scenarios and answer the questions posed in advance. \ No newline at end of file diff --git a/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs b/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs deleted file mode 100644 index 0e18c2b..0000000 --- a/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] diff --git a/obj/Debug/net6.0/SupportApp.AssemblyInfo.cs b/obj/Debug/net6.0/SupportApp.AssemblyInfo.cs deleted file mode 100644 index d12e4fc..0000000 --- a/obj/Debug/net6.0/SupportApp.AssemblyInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("SupportApp")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5a0e13cc5d3b5d78699b9d9ddc46ce6bc3013855")] -[assembly: System.Reflection.AssemblyProductAttribute("SupportApp")] -[assembly: System.Reflection.AssemblyTitleAttribute("SupportApp")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/obj/Debug/net6.0/SupportApp.AssemblyInfoInputs.cache b/obj/Debug/net6.0/SupportApp.AssemblyInfoInputs.cache deleted file mode 100644 index d7100bf..0000000 --- a/obj/Debug/net6.0/SupportApp.AssemblyInfoInputs.cache +++ /dev/null @@ -1 +0,0 @@ -e7b6fcc842e9d50a118d9eeeaf9b30112b5dc0486c3a9eee148a5bb04d1295ba diff --git a/obj/Debug/net6.0/SupportApp.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net6.0/SupportApp.GeneratedMSBuildEditorConfig.editorconfig deleted file mode 100644 index 96f25e0..0000000 --- a/obj/Debug/net6.0/SupportApp.GeneratedMSBuildEditorConfig.editorconfig +++ /dev/null @@ -1,27 +0,0 @@ -is_global = true -build_property.TargetFramework = net6.0 -build_property.TargetPlatformMinVersion = -build_property.UsingMicrosoftNETSdkWeb = true -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = SupportApp -build_property.RootNamespace = SupportApp -build_property.ProjectDir = /Users/sean/Desktop/dev/customer-support/ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = -build_property.RazorLangVersion = 6.0 -build_property.SupportLocalizedComponentNames = -build_property.GenerateRazorMetadataSourceChecksumAttributes = -build_property.MSBuildProjectDirectory = /Users/sean/Desktop/dev/customer-support -build_property._RazorSourceGeneratorDebug = - -[/Users/sean/Desktop/dev/customer-support/Views/SupportRequest/Index.cshtml] -build_metadata.AdditionalFiles.TargetPath = Vmlld3MvU3VwcG9ydFJlcXVlc3QvSW5kZXguY3NodG1s -build_metadata.AdditionalFiles.CssScope = - -[/Users/sean/Desktop/dev/customer-support/Views/Task/Index.cshtml] -build_metadata.AdditionalFiles.TargetPath = Vmlld3MvVGFzay9JbmRleC5jc2h0bWw= -build_metadata.AdditionalFiles.CssScope = diff --git a/obj/Debug/net6.0/SupportApp.GlobalUsings.g.cs b/obj/Debug/net6.0/SupportApp.GlobalUsings.g.cs deleted file mode 100644 index 025530a..0000000 --- a/obj/Debug/net6.0/SupportApp.GlobalUsings.g.cs +++ /dev/null @@ -1,17 +0,0 @@ -// -global using global::Microsoft.AspNetCore.Builder; -global using global::Microsoft.AspNetCore.Hosting; -global using global::Microsoft.AspNetCore.Http; -global using global::Microsoft.AspNetCore.Routing; -global using global::Microsoft.Extensions.Configuration; -global using global::Microsoft.Extensions.DependencyInjection; -global using global::Microsoft.Extensions.Hosting; -global using global::Microsoft.Extensions.Logging; -global using global::System; -global using global::System.Collections.Generic; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Net.Http.Json; -global using global::System.Threading; -global using global::System.Threading.Tasks; diff --git a/obj/Debug/net6.0/SupportApp.MvcApplicationPartsAssemblyInfo.cache b/obj/Debug/net6.0/SupportApp.MvcApplicationPartsAssemblyInfo.cache deleted file mode 100644 index e69de29..0000000 diff --git a/obj/Debug/net6.0/SupportApp.RazorAssemblyInfo.cache b/obj/Debug/net6.0/SupportApp.RazorAssemblyInfo.cache deleted file mode 100644 index ecb9c97..0000000 --- a/obj/Debug/net6.0/SupportApp.RazorAssemblyInfo.cache +++ /dev/null @@ -1 +0,0 @@ -d5ac7ab69059af111e9d7125adeb7b174ca570725d4b64a544cca7bd11ac7ca0 diff --git a/obj/Debug/net6.0/SupportApp.RazorAssemblyInfo.cs b/obj/Debug/net6.0/SupportApp.RazorAssemblyInfo.cs deleted file mode 100644 index 31c8eab..0000000 --- a/obj/Debug/net6.0/SupportApp.RazorAssemblyInfo.cs +++ /dev/null @@ -1,17 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ProvideApplicationPartFactoryAttribute("Microsoft.AspNetCore.Mvc.ApplicationParts.ConsolidatedAssemblyApplicationPartFact" + - "ory, Microsoft.AspNetCore.Mvc.Razor")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/obj/Debug/net6.0/SupportApp.assets.cache b/obj/Debug/net6.0/SupportApp.assets.cache deleted file mode 100644 index 6cb0c85..0000000 Binary files a/obj/Debug/net6.0/SupportApp.assets.cache and /dev/null differ diff --git a/obj/Debug/net6.0/SupportApp.csproj.AssemblyReference.cache b/obj/Debug/net6.0/SupportApp.csproj.AssemblyReference.cache deleted file mode 100644 index 67e113e..0000000 Binary files a/obj/Debug/net6.0/SupportApp.csproj.AssemblyReference.cache and /dev/null differ diff --git a/obj/Debug/net6.0/SupportApp.csproj.CoreCompileInputs.cache b/obj/Debug/net6.0/SupportApp.csproj.CoreCompileInputs.cache deleted file mode 100644 index 066cb84..0000000 --- a/obj/Debug/net6.0/SupportApp.csproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -4c8ef366fcd9366fa9952d1d51e8c8fafbb9057aed0a1e3839eb1c29d63b9c21 diff --git a/obj/Debug/net6.0/SupportApp.csproj.FileListAbsolute.txt b/obj/Debug/net6.0/SupportApp.csproj.FileListAbsolute.txt deleted file mode 100644 index 76830a7..0000000 --- a/obj/Debug/net6.0/SupportApp.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,39 +0,0 @@ -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.csproj.AssemblyReference.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.GeneratedMSBuildEditorConfig.editorconfig -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.AssemblyInfoInputs.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.AssemblyInfo.cs -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.csproj.CoreCompileInputs.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.MvcApplicationPartsAssemblyInfo.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.RazorAssemblyInfo.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.RazorAssemblyInfo.cs -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/SupportApp.staticwebassets.runtime.json -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/xunit.runner.visualstudio.testadapter.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/xunit.runner.reporters.netcoreapp10.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/xunit.runner.utility.netcoreapp10.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/SupportApp -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/SupportApp.deps.json -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/SupportApp.runtimeconfig.json -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/SupportApp.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/SupportApp.pdb -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/Microsoft.AspNetCore.JsonPatch.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/Newtonsoft.Json.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/Newtonsoft.Json.Bson.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/xunit.abstractions.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/xunit.assert.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/xunit.core.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net6.0/xunit.execution.dotnet.dll -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/staticwebassets.build.json -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/staticwebassets.development.json -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/staticwebassets/msbuild.SupportApp.Microsoft.AspNetCore.StaticWebAssets.props -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/staticwebassets/msbuild.build.SupportApp.props -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/staticwebassets/msbuild.buildMultiTargeting.SupportApp.props -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/staticwebassets/msbuild.buildTransitive.SupportApp.props -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/staticwebassets.pack.json -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/scopedcss/bundle/SupportApp.styles.css -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.csproj.Up2Date -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.dll -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/refint/SupportApp.dll -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.pdb -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/SupportApp.genruntimeconfig.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net6.0/ref/SupportApp.dll diff --git a/obj/Debug/net6.0/SupportApp.csproj.Up2Date b/obj/Debug/net6.0/SupportApp.csproj.Up2Date deleted file mode 100644 index e69de29..0000000 diff --git a/obj/Debug/net6.0/SupportApp.dll b/obj/Debug/net6.0/SupportApp.dll deleted file mode 100644 index 369e010..0000000 Binary files a/obj/Debug/net6.0/SupportApp.dll and /dev/null differ diff --git a/obj/Debug/net6.0/SupportApp.genruntimeconfig.cache b/obj/Debug/net6.0/SupportApp.genruntimeconfig.cache deleted file mode 100644 index bc11a4f..0000000 --- a/obj/Debug/net6.0/SupportApp.genruntimeconfig.cache +++ /dev/null @@ -1 +0,0 @@ -5c16c2559df7107c48aa1192e5d9e967eeca0bb9cbba761ed83b1a21a859d214 diff --git a/obj/Debug/net6.0/SupportApp.pdb b/obj/Debug/net6.0/SupportApp.pdb deleted file mode 100644 index a356e94..0000000 Binary files a/obj/Debug/net6.0/SupportApp.pdb and /dev/null differ diff --git a/obj/Debug/net6.0/apphost b/obj/Debug/net6.0/apphost deleted file mode 100755 index 843eae1..0000000 Binary files a/obj/Debug/net6.0/apphost and /dev/null differ diff --git a/obj/Debug/net6.0/ref/SupportApp.dll b/obj/Debug/net6.0/ref/SupportApp.dll deleted file mode 100644 index 6cdbc0c..0000000 Binary files a/obj/Debug/net6.0/ref/SupportApp.dll and /dev/null differ diff --git a/obj/Debug/net6.0/refint/SupportApp.dll b/obj/Debug/net6.0/refint/SupportApp.dll deleted file mode 100644 index 6cdbc0c..0000000 Binary files a/obj/Debug/net6.0/refint/SupportApp.dll and /dev/null differ diff --git a/obj/Debug/net6.0/staticwebassets.build.json b/obj/Debug/net6.0/staticwebassets.build.json deleted file mode 100644 index e84d345..0000000 --- a/obj/Debug/net6.0/staticwebassets.build.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "Version": 1, - "Hash": "3AqSuGUvZvLp8BMtCYaDUNw9+0X+H7LF5mYVu435nTw=", - "Source": "SupportApp", - "BasePath": "_content/SupportApp", - "Mode": "Default", - "ManifestType": "Build", - "ReferencedProjectsConfiguration": [], - "DiscoveryPatterns": [ - { - "Name": "SupportApp/wwwroot", - "Source": "SupportApp", - "ContentRoot": "/Users/sean/Desktop/dev/customer-support/wwwroot/", - "BasePath": "_content/SupportApp", - "Pattern": "**" - } - ], - "Assets": [ - { - "Identity": "/Users/sean/Desktop/dev/customer-support/wwwroot/js/site.js", - "SourceId": "SupportApp", - "SourceType": "Discovered", - "ContentRoot": "/Users/sean/Desktop/dev/customer-support/wwwroot/", - "BasePath": "_content/SupportApp", - "RelativePath": "js/site.js", - "AssetKind": "All", - "AssetMode": "All", - "AssetRole": "Primary", - "AssetMergeBehavior": "PreferTarget", - "AssetMergeSource": "", - "RelatedAsset": "", - "AssetTraitName": "", - "AssetTraitValue": "", - "CopyToOutputDirectory": "Never", - "CopyToPublishDirectory": "PreserveNewest", - "OriginalItemSpec": "wwwroot/js/site.js" - } - ] -} \ No newline at end of file diff --git a/obj/Debug/net6.0/staticwebassets.development.json b/obj/Debug/net6.0/staticwebassets.development.json deleted file mode 100644 index fb50a12..0000000 --- a/obj/Debug/net6.0/staticwebassets.development.json +++ /dev/null @@ -1 +0,0 @@ -{"ContentRoots":["/Users/sean/Desktop/dev/customer-support/wwwroot/"],"Root":{"Children":{"js":{"Children":{"site.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/site.js"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}} \ No newline at end of file diff --git a/obj/Debug/net6.0/staticwebassets.pack.json b/obj/Debug/net6.0/staticwebassets.pack.json deleted file mode 100644 index 7dcce60..0000000 --- a/obj/Debug/net6.0/staticwebassets.pack.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "Files": [ - { - "Id": "/Users/sean/Desktop/dev/customer-support/wwwroot/js/site.js", - "PackagePath": "staticwebassets/js/site.js" - }, - { - "Id": "obj/Debug/net6.0/staticwebassets/msbuild.SupportApp.Microsoft.AspNetCore.StaticWebAssets.props", - "PackagePath": "build\\Microsoft.AspNetCore.StaticWebAssets.props" - }, - { - "Id": "obj/Debug/net6.0/staticwebassets/msbuild.build.SupportApp.props", - "PackagePath": "build\\SupportApp.props" - }, - { - "Id": "obj/Debug/net6.0/staticwebassets/msbuild.buildMultiTargeting.SupportApp.props", - "PackagePath": "buildMultiTargeting\\SupportApp.props" - }, - { - "Id": "obj/Debug/net6.0/staticwebassets/msbuild.buildTransitive.SupportApp.props", - "PackagePath": "buildTransitive\\SupportApp.props" - } - ], - "ElementsToRemove": [] -} \ No newline at end of file diff --git a/obj/Debug/net6.0/staticwebassets/msbuild.SupportApp.Microsoft.AspNetCore.StaticWebAssets.props b/obj/Debug/net6.0/staticwebassets/msbuild.SupportApp.Microsoft.AspNetCore.StaticWebAssets.props deleted file mode 100644 index 3474cd2..0000000 --- a/obj/Debug/net6.0/staticwebassets/msbuild.SupportApp.Microsoft.AspNetCore.StaticWebAssets.props +++ /dev/null @@ -1,20 +0,0 @@ - - - - Package - SupportApp - $(MSBuildThisFileDirectory)..\staticwebassets\ - _content/SupportApp - js/site.js - All - All - Primary - - - - Never - PreserveNewest - $([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\js\site.js)) - - - \ No newline at end of file diff --git a/obj/Debug/net6.0/staticwebassets/msbuild.build.SupportApp.props b/obj/Debug/net6.0/staticwebassets/msbuild.build.SupportApp.props deleted file mode 100644 index 5a6032a..0000000 --- a/obj/Debug/net6.0/staticwebassets/msbuild.build.SupportApp.props +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/obj/Debug/net6.0/staticwebassets/msbuild.buildMultiTargeting.SupportApp.props b/obj/Debug/net6.0/staticwebassets/msbuild.buildMultiTargeting.SupportApp.props deleted file mode 100644 index 127079f..0000000 --- a/obj/Debug/net6.0/staticwebassets/msbuild.buildMultiTargeting.SupportApp.props +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/obj/Debug/net6.0/staticwebassets/msbuild.buildTransitive.SupportApp.props b/obj/Debug/net6.0/staticwebassets/msbuild.buildTransitive.SupportApp.props deleted file mode 100644 index f07df27..0000000 --- a/obj/Debug/net6.0/staticwebassets/msbuild.buildTransitive.SupportApp.props +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs deleted file mode 100644 index dca70aa..0000000 --- a/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs +++ /dev/null @@ -1,4 +0,0 @@ -// -using System; -using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/obj/Debug/net8.0/SupportApp.AssemblyInfo.cs b/obj/Debug/net8.0/SupportApp.AssemblyInfo.cs deleted file mode 100644 index d12e4fc..0000000 --- a/obj/Debug/net8.0/SupportApp.AssemblyInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: System.Reflection.AssemblyCompanyAttribute("SupportApp")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5a0e13cc5d3b5d78699b9d9ddc46ce6bc3013855")] -[assembly: System.Reflection.AssemblyProductAttribute("SupportApp")] -[assembly: System.Reflection.AssemblyTitleAttribute("SupportApp")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/obj/Debug/net8.0/SupportApp.AssemblyInfoInputs.cache b/obj/Debug/net8.0/SupportApp.AssemblyInfoInputs.cache deleted file mode 100644 index d7100bf..0000000 --- a/obj/Debug/net8.0/SupportApp.AssemblyInfoInputs.cache +++ /dev/null @@ -1 +0,0 @@ -e7b6fcc842e9d50a118d9eeeaf9b30112b5dc0486c3a9eee148a5bb04d1295ba diff --git a/obj/Debug/net8.0/SupportApp.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net8.0/SupportApp.GeneratedMSBuildEditorConfig.editorconfig deleted file mode 100644 index 1112621..0000000 --- a/obj/Debug/net8.0/SupportApp.GeneratedMSBuildEditorConfig.editorconfig +++ /dev/null @@ -1,23 +0,0 @@ -is_global = true -build_property.TargetFramework = net8.0 -build_property.TargetPlatformMinVersion = -build_property.UsingMicrosoftNETSdkWeb = true -build_property.ProjectTypeGuids = -build_property.InvariantGlobalization = -build_property.PlatformNeutralAssembly = -build_property.EnforceExtendedAnalyzerRules = -build_property._SupportedPlatformList = Linux,macOS,Windows -build_property.RootNamespace = SupportApp -build_property.RootNamespace = SupportApp -build_property.ProjectDir = /Users/sean/Desktop/dev/customer-support/ -build_property.EnableComHosting = -build_property.EnableGeneratedComInterfaceComImportInterop = -build_property.RazorLangVersion = 8.0 -build_property.SupportLocalizedComponentNames = -build_property.GenerateRazorMetadataSourceChecksumAttributes = -build_property.MSBuildProjectDirectory = /Users/sean/Desktop/dev/customer-support -build_property._RazorSourceGeneratorDebug = - -[/Users/sean/Desktop/dev/customer-support/Views/SupportRequest/Index.cshtml] -build_metadata.AdditionalFiles.TargetPath = Vmlld3MvU3VwcG9ydFJlcXVlc3QvSW5kZXguY3NodG1s -build_metadata.AdditionalFiles.CssScope = diff --git a/obj/Debug/net8.0/SupportApp.GlobalUsings.g.cs b/obj/Debug/net8.0/SupportApp.GlobalUsings.g.cs deleted file mode 100644 index 025530a..0000000 --- a/obj/Debug/net8.0/SupportApp.GlobalUsings.g.cs +++ /dev/null @@ -1,17 +0,0 @@ -// -global using global::Microsoft.AspNetCore.Builder; -global using global::Microsoft.AspNetCore.Hosting; -global using global::Microsoft.AspNetCore.Http; -global using global::Microsoft.AspNetCore.Routing; -global using global::Microsoft.Extensions.Configuration; -global using global::Microsoft.Extensions.DependencyInjection; -global using global::Microsoft.Extensions.Hosting; -global using global::Microsoft.Extensions.Logging; -global using global::System; -global using global::System.Collections.Generic; -global using global::System.IO; -global using global::System.Linq; -global using global::System.Net.Http; -global using global::System.Net.Http.Json; -global using global::System.Threading; -global using global::System.Threading.Tasks; diff --git a/obj/Debug/net8.0/SupportApp.MvcApplicationPartsAssemblyInfo.cache b/obj/Debug/net8.0/SupportApp.MvcApplicationPartsAssemblyInfo.cache deleted file mode 100644 index e69de29..0000000 diff --git a/obj/Debug/net8.0/SupportApp.RazorAssemblyInfo.cache b/obj/Debug/net8.0/SupportApp.RazorAssemblyInfo.cache deleted file mode 100644 index ecb9c97..0000000 --- a/obj/Debug/net8.0/SupportApp.RazorAssemblyInfo.cache +++ /dev/null @@ -1 +0,0 @@ -d5ac7ab69059af111e9d7125adeb7b174ca570725d4b64a544cca7bd11ac7ca0 diff --git a/obj/Debug/net8.0/SupportApp.RazorAssemblyInfo.cs b/obj/Debug/net8.0/SupportApp.RazorAssemblyInfo.cs deleted file mode 100644 index 31c8eab..0000000 --- a/obj/Debug/net8.0/SupportApp.RazorAssemblyInfo.cs +++ /dev/null @@ -1,17 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using System; -using System.Reflection; - -[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ProvideApplicationPartFactoryAttribute("Microsoft.AspNetCore.Mvc.ApplicationParts.ConsolidatedAssemblyApplicationPartFact" + - "ory, Microsoft.AspNetCore.Mvc.Razor")] - -// Generated by the MSBuild WriteCodeFragment class. - diff --git a/obj/Debug/net8.0/SupportApp.assets.cache b/obj/Debug/net8.0/SupportApp.assets.cache deleted file mode 100644 index b62850f..0000000 Binary files a/obj/Debug/net8.0/SupportApp.assets.cache and /dev/null differ diff --git a/obj/Debug/net8.0/SupportApp.csproj.AssemblyReference.cache b/obj/Debug/net8.0/SupportApp.csproj.AssemblyReference.cache deleted file mode 100644 index 57e3ba6..0000000 Binary files a/obj/Debug/net8.0/SupportApp.csproj.AssemblyReference.cache and /dev/null differ diff --git a/obj/Debug/net8.0/SupportApp.csproj.CoreCompileInputs.cache b/obj/Debug/net8.0/SupportApp.csproj.CoreCompileInputs.cache deleted file mode 100644 index 94c10ca..0000000 --- a/obj/Debug/net8.0/SupportApp.csproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -d0e5743fa281e68a92b8b947c1898b15611b715d27cd30040a7a9ac41df77016 diff --git a/obj/Debug/net8.0/SupportApp.csproj.FileListAbsolute.txt b/obj/Debug/net8.0/SupportApp.csproj.FileListAbsolute.txt deleted file mode 100644 index 02c885d..0000000 --- a/obj/Debug/net8.0/SupportApp.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,39 +0,0 @@ -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/SupportApp.staticwebassets.runtime.json -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/xunit.runner.visualstudio.testadapter.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/xunit.runner.reporters.netcoreapp10.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/xunit.runner.utility.netcoreapp10.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/SupportApp -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/SupportApp.deps.json -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/SupportApp.runtimeconfig.json -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/SupportApp.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/SupportApp.pdb -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/Microsoft.AspNetCore.JsonPatch.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/Newtonsoft.Json.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/Newtonsoft.Json.Bson.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/xunit.abstractions.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/xunit.assert.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/xunit.core.dll -/Users/sean/Desktop/dev/customer-support/bin/Debug/net8.0/xunit.execution.dotnet.dll -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.csproj.AssemblyReference.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.GeneratedMSBuildEditorConfig.editorconfig -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.AssemblyInfoInputs.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.AssemblyInfo.cs -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.csproj.CoreCompileInputs.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.MvcApplicationPartsAssemblyInfo.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.RazorAssemblyInfo.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.RazorAssemblyInfo.cs -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/staticwebassets.build.json -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/staticwebassets.development.json -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/staticwebassets/msbuild.SupportApp.Microsoft.AspNetCore.StaticWebAssets.props -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/staticwebassets/msbuild.build.SupportApp.props -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/staticwebassets/msbuild.buildMultiTargeting.SupportApp.props -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/staticwebassets/msbuild.buildTransitive.SupportApp.props -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/staticwebassets.pack.json -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/scopedcss/bundle/SupportApp.styles.css -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.csproj.Up2Date -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.dll -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/refint/SupportApp.dll -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.pdb -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/SupportApp.genruntimeconfig.cache -/Users/sean/Desktop/dev/customer-support/obj/Debug/net8.0/ref/SupportApp.dll diff --git a/obj/Debug/net8.0/SupportApp.csproj.Up2Date b/obj/Debug/net8.0/SupportApp.csproj.Up2Date deleted file mode 100644 index e69de29..0000000 diff --git a/obj/Debug/net8.0/SupportApp.dll b/obj/Debug/net8.0/SupportApp.dll deleted file mode 100644 index b3cf738..0000000 Binary files a/obj/Debug/net8.0/SupportApp.dll and /dev/null differ diff --git a/obj/Debug/net8.0/SupportApp.genruntimeconfig.cache b/obj/Debug/net8.0/SupportApp.genruntimeconfig.cache deleted file mode 100644 index 523c0d4..0000000 --- a/obj/Debug/net8.0/SupportApp.genruntimeconfig.cache +++ /dev/null @@ -1 +0,0 @@ -8b1e436a87dc3cc5d4003b3dea33f57a9a754423a1f2c4e3af5dd8ef180b0f9a diff --git a/obj/Debug/net8.0/SupportApp.pdb b/obj/Debug/net8.0/SupportApp.pdb deleted file mode 100644 index 5a19b5e..0000000 Binary files a/obj/Debug/net8.0/SupportApp.pdb and /dev/null differ diff --git a/obj/Debug/net8.0/apphost b/obj/Debug/net8.0/apphost deleted file mode 100755 index 57bc082..0000000 Binary files a/obj/Debug/net8.0/apphost and /dev/null differ diff --git a/obj/Debug/net8.0/ref/SupportApp.dll b/obj/Debug/net8.0/ref/SupportApp.dll deleted file mode 100644 index 3eeaf35..0000000 Binary files a/obj/Debug/net8.0/ref/SupportApp.dll and /dev/null differ diff --git a/obj/Debug/net8.0/refint/SupportApp.dll b/obj/Debug/net8.0/refint/SupportApp.dll deleted file mode 100644 index 3eeaf35..0000000 Binary files a/obj/Debug/net8.0/refint/SupportApp.dll and /dev/null differ diff --git a/obj/Debug/net8.0/staticwebassets.build.json b/obj/Debug/net8.0/staticwebassets.build.json deleted file mode 100644 index e84d345..0000000 --- a/obj/Debug/net8.0/staticwebassets.build.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "Version": 1, - "Hash": "3AqSuGUvZvLp8BMtCYaDUNw9+0X+H7LF5mYVu435nTw=", - "Source": "SupportApp", - "BasePath": "_content/SupportApp", - "Mode": "Default", - "ManifestType": "Build", - "ReferencedProjectsConfiguration": [], - "DiscoveryPatterns": [ - { - "Name": "SupportApp/wwwroot", - "Source": "SupportApp", - "ContentRoot": "/Users/sean/Desktop/dev/customer-support/wwwroot/", - "BasePath": "_content/SupportApp", - "Pattern": "**" - } - ], - "Assets": [ - { - "Identity": "/Users/sean/Desktop/dev/customer-support/wwwroot/js/site.js", - "SourceId": "SupportApp", - "SourceType": "Discovered", - "ContentRoot": "/Users/sean/Desktop/dev/customer-support/wwwroot/", - "BasePath": "_content/SupportApp", - "RelativePath": "js/site.js", - "AssetKind": "All", - "AssetMode": "All", - "AssetRole": "Primary", - "AssetMergeBehavior": "PreferTarget", - "AssetMergeSource": "", - "RelatedAsset": "", - "AssetTraitName": "", - "AssetTraitValue": "", - "CopyToOutputDirectory": "Never", - "CopyToPublishDirectory": "PreserveNewest", - "OriginalItemSpec": "wwwroot/js/site.js" - } - ] -} \ No newline at end of file diff --git a/obj/Debug/net8.0/staticwebassets.development.json b/obj/Debug/net8.0/staticwebassets.development.json deleted file mode 100644 index fb50a12..0000000 --- a/obj/Debug/net8.0/staticwebassets.development.json +++ /dev/null @@ -1 +0,0 @@ -{"ContentRoots":["/Users/sean/Desktop/dev/customer-support/wwwroot/"],"Root":{"Children":{"js":{"Children":{"site.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/site.js"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}} \ No newline at end of file diff --git a/obj/Debug/net8.0/staticwebassets.pack.json b/obj/Debug/net8.0/staticwebassets.pack.json deleted file mode 100644 index 9cbdda5..0000000 --- a/obj/Debug/net8.0/staticwebassets.pack.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "Files": [ - { - "Id": "/Users/sean/Desktop/dev/customer-support/wwwroot/js/site.js", - "PackagePath": "staticwebassets/js/site.js" - }, - { - "Id": "obj/Debug/net8.0/staticwebassets/msbuild.SupportApp.Microsoft.AspNetCore.StaticWebAssets.props", - "PackagePath": "build\\Microsoft.AspNetCore.StaticWebAssets.props" - }, - { - "Id": "obj/Debug/net8.0/staticwebassets/msbuild.build.SupportApp.props", - "PackagePath": "build\\SupportApp.props" - }, - { - "Id": "obj/Debug/net8.0/staticwebassets/msbuild.buildMultiTargeting.SupportApp.props", - "PackagePath": "buildMultiTargeting\\SupportApp.props" - }, - { - "Id": "obj/Debug/net8.0/staticwebassets/msbuild.buildTransitive.SupportApp.props", - "PackagePath": "buildTransitive\\SupportApp.props" - } - ], - "ElementsToRemove": [] -} \ No newline at end of file diff --git a/obj/Debug/net8.0/staticwebassets/msbuild.SupportApp.Microsoft.AspNetCore.StaticWebAssets.props b/obj/Debug/net8.0/staticwebassets/msbuild.SupportApp.Microsoft.AspNetCore.StaticWebAssets.props deleted file mode 100644 index 3474cd2..0000000 --- a/obj/Debug/net8.0/staticwebassets/msbuild.SupportApp.Microsoft.AspNetCore.StaticWebAssets.props +++ /dev/null @@ -1,20 +0,0 @@ - - - - Package - SupportApp - $(MSBuildThisFileDirectory)..\staticwebassets\ - _content/SupportApp - js/site.js - All - All - Primary - - - - Never - PreserveNewest - $([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\js\site.js)) - - - \ No newline at end of file diff --git a/obj/Debug/net8.0/staticwebassets/msbuild.build.SupportApp.props b/obj/Debug/net8.0/staticwebassets/msbuild.build.SupportApp.props deleted file mode 100644 index 5a6032a..0000000 --- a/obj/Debug/net8.0/staticwebassets/msbuild.build.SupportApp.props +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/obj/Debug/net8.0/staticwebassets/msbuild.buildMultiTargeting.SupportApp.props b/obj/Debug/net8.0/staticwebassets/msbuild.buildMultiTargeting.SupportApp.props deleted file mode 100644 index 127079f..0000000 --- a/obj/Debug/net8.0/staticwebassets/msbuild.buildMultiTargeting.SupportApp.props +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/obj/Debug/net8.0/staticwebassets/msbuild.buildTransitive.SupportApp.props b/obj/Debug/net8.0/staticwebassets/msbuild.buildTransitive.SupportApp.props deleted file mode 100644 index f07df27..0000000 --- a/obj/Debug/net8.0/staticwebassets/msbuild.buildTransitive.SupportApp.props +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/obj/SupportApp.csproj.nuget.dgspec.json b/obj/SupportApp.csproj.nuget.dgspec.json deleted file mode 100644 index bbb4b8d..0000000 --- a/obj/SupportApp.csproj.nuget.dgspec.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "format": 1, - "restore": { - "/Users/sean/Desktop/dev/customer-support/SupportApp.csproj": {} - }, - "projects": { - "/Users/sean/Desktop/dev/customer-support/SupportApp.csproj": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/Users/sean/Desktop/dev/customer-support/SupportApp.csproj", - "projectName": "SupportApp", - "projectPath": "/Users/sean/Desktop/dev/customer-support/SupportApp.csproj", - "packagesPath": "/Users/sean/.nuget/packages/", - "outputPath": "/Users/sean/Desktop/dev/customer-support/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/Users/sean/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "net8.0" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "dependencies": { - "Microsoft.AspNetCore.Mvc.NewtonsoftJson": { - "target": "Package", - "version": "[8.0.0, )" - }, - "xunit": { - "target": "Package", - "version": "[2.9.0, )" - }, - "xunit.runner.visualstudio": { - "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", - "suppressParent": "All", - "target": "Package", - "version": "[2.8.2, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.AspNetCore.App": { - "privateAssets": "none" - }, - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.401/PortableRuntimeIdentifierGraph.json" - } - } - } - } -} \ No newline at end of file diff --git a/obj/SupportApp.csproj.nuget.g.props b/obj/SupportApp.csproj.nuget.g.props deleted file mode 100644 index 22caf74..0000000 --- a/obj/SupportApp.csproj.nuget.g.props +++ /dev/null @@ -1,22 +0,0 @@ - - - - True - NuGet - $(MSBuildThisFileDirectory)project.assets.json - /Users/sean/.nuget/packages/ - /Users/sean/.nuget/packages/ - PackageReference - 6.11.0 - - - - - - - - - - /Users/sean/.nuget/packages/xunit.analyzers/1.15.0 - - \ No newline at end of file diff --git a/obj/SupportApp.csproj.nuget.g.targets b/obj/SupportApp.csproj.nuget.g.targets deleted file mode 100644 index e08fd5d..0000000 --- a/obj/SupportApp.csproj.nuget.g.targets +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/obj/project.assets.json b/obj/project.assets.json deleted file mode 100644 index b2dd63e..0000000 --- a/obj/project.assets.json +++ /dev/null @@ -1,566 +0,0 @@ -{ - "version": 3, - "targets": { - "net8.0": { - "Microsoft.AspNetCore.JsonPatch/8.0.0": { - "type": "package", - "dependencies": { - "Microsoft.CSharp": "4.7.0", - "Newtonsoft.Json": "13.0.3" - }, - "compile": { - "lib/net8.0/Microsoft.AspNetCore.JsonPatch.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.AspNetCore.JsonPatch.dll": { - "related": ".xml" - } - } - }, - "Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.0": { - "type": "package", - "dependencies": { - "Microsoft.AspNetCore.JsonPatch": "8.0.0", - "Newtonsoft.Json": "13.0.3", - "Newtonsoft.Json.Bson": "1.0.2" - }, - "compile": { - "lib/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": { - "related": ".xml" - } - }, - "frameworkReferences": [ - "Microsoft.AspNetCore.App" - ] - }, - "Microsoft.CSharp/4.7.0": { - "type": "package", - "compile": { - "ref/netcoreapp2.0/_._": {} - }, - "runtime": { - "lib/netcoreapp2.0/_._": {} - } - }, - "Newtonsoft.Json/13.0.3": { - "type": "package", - "compile": { - "lib/net6.0/Newtonsoft.Json.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net6.0/Newtonsoft.Json.dll": { - "related": ".xml" - } - } - }, - "Newtonsoft.Json.Bson/1.0.2": { - "type": "package", - "dependencies": { - "Newtonsoft.Json": "12.0.1" - }, - "compile": { - "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": { - "related": ".pdb;.xml" - } - }, - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": { - "related": ".pdb;.xml" - } - } - }, - "xunit/2.9.0": { - "type": "package", - "dependencies": { - "xunit.analyzers": "1.15.0", - "xunit.assert": "2.9.0", - "xunit.core": "[2.9.0]" - } - }, - "xunit.abstractions/2.0.3": { - "type": "package", - "compile": { - "lib/netstandard2.0/xunit.abstractions.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard2.0/xunit.abstractions.dll": { - "related": ".xml" - } - } - }, - "xunit.analyzers/1.15.0": { - "type": "package" - }, - "xunit.assert/2.9.0": { - "type": "package", - "compile": { - "lib/net6.0/xunit.assert.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/net6.0/xunit.assert.dll": { - "related": ".xml" - } - } - }, - "xunit.core/2.9.0": { - "type": "package", - "dependencies": { - "xunit.extensibility.core": "[2.9.0]", - "xunit.extensibility.execution": "[2.9.0]" - }, - "build": { - "build/xunit.core.props": {}, - "build/xunit.core.targets": {} - }, - "buildMultiTargeting": { - "buildMultiTargeting/xunit.core.props": {}, - "buildMultiTargeting/xunit.core.targets": {} - } - }, - "xunit.extensibility.core/2.9.0": { - "type": "package", - "dependencies": { - "xunit.abstractions": "2.0.3" - }, - "compile": { - "lib/netstandard1.1/xunit.core.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.1/xunit.core.dll": { - "related": ".xml" - } - } - }, - "xunit.extensibility.execution/2.9.0": { - "type": "package", - "dependencies": { - "xunit.extensibility.core": "[2.9.0]" - }, - "compile": { - "lib/netstandard1.1/xunit.execution.dotnet.dll": { - "related": ".xml" - } - }, - "runtime": { - "lib/netstandard1.1/xunit.execution.dotnet.dll": { - "related": ".xml" - } - } - }, - "xunit.runner.visualstudio/2.8.2": { - "type": "package", - "compile": { - "lib/net6.0/_._": {} - }, - "runtime": { - "lib/net6.0/_._": {} - }, - "build": { - "build/net6.0/xunit.runner.visualstudio.props": {} - } - } - } - }, - "libraries": { - "Microsoft.AspNetCore.JsonPatch/8.0.0": { - "sha512": "klQdb/9+j0u8MDjoqHEgDCPz8GRhfsbRVvZIM3glFqjs8uY7S1hS9RvKZuz8o4dS9NsEpFp4Jccd8CQuIYHK0g==", - "type": "package", - "path": "microsoft.aspnetcore.jsonpatch/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net462/Microsoft.AspNetCore.JsonPatch.dll", - "lib/net462/Microsoft.AspNetCore.JsonPatch.xml", - "lib/net8.0/Microsoft.AspNetCore.JsonPatch.dll", - "lib/net8.0/Microsoft.AspNetCore.JsonPatch.xml", - "lib/netstandard2.0/Microsoft.AspNetCore.JsonPatch.dll", - "lib/netstandard2.0/Microsoft.AspNetCore.JsonPatch.xml", - "microsoft.aspnetcore.jsonpatch.8.0.0.nupkg.sha512", - "microsoft.aspnetcore.jsonpatch.nuspec" - ] - }, - "Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.0": { - "sha512": "/e5+eBvY759xiZJO+y1lHi4VzXqbDzTJSyCtKpaj3Ko2JAFQjiCOJ0ZHk2i4g4HpoSdXmzEXQsjr6dUX9U0/JA==", - "type": "package", - "path": "microsoft.aspnetcore.mvc.newtonsoftjson/8.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "THIRD-PARTY-NOTICES.TXT", - "lib/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll", - "lib/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.xml", - "microsoft.aspnetcore.mvc.newtonsoftjson.8.0.0.nupkg.sha512", - "microsoft.aspnetcore.mvc.newtonsoftjson.nuspec" - ] - }, - "Microsoft.CSharp/4.7.0": { - "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", - "type": "package", - "path": "microsoft.csharp/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/Microsoft.CSharp.dll", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.3/Microsoft.CSharp.dll", - "lib/netstandard2.0/Microsoft.CSharp.dll", - "lib/netstandard2.0/Microsoft.CSharp.xml", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/uap10.0.16299/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "microsoft.csharp.4.7.0.nupkg.sha512", - "microsoft.csharp.nuspec", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/Microsoft.CSharp.dll", - "ref/netcore50/Microsoft.CSharp.xml", - "ref/netcore50/de/Microsoft.CSharp.xml", - "ref/netcore50/es/Microsoft.CSharp.xml", - "ref/netcore50/fr/Microsoft.CSharp.xml", - "ref/netcore50/it/Microsoft.CSharp.xml", - "ref/netcore50/ja/Microsoft.CSharp.xml", - "ref/netcore50/ko/Microsoft.CSharp.xml", - "ref/netcore50/ru/Microsoft.CSharp.xml", - "ref/netcore50/zh-hans/Microsoft.CSharp.xml", - "ref/netcore50/zh-hant/Microsoft.CSharp.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.0/Microsoft.CSharp.dll", - "ref/netstandard1.0/Microsoft.CSharp.xml", - "ref/netstandard1.0/de/Microsoft.CSharp.xml", - "ref/netstandard1.0/es/Microsoft.CSharp.xml", - "ref/netstandard1.0/fr/Microsoft.CSharp.xml", - "ref/netstandard1.0/it/Microsoft.CSharp.xml", - "ref/netstandard1.0/ja/Microsoft.CSharp.xml", - "ref/netstandard1.0/ko/Microsoft.CSharp.xml", - "ref/netstandard1.0/ru/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", - "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", - "ref/netstandard2.0/Microsoft.CSharp.dll", - "ref/netstandard2.0/Microsoft.CSharp.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/uap10.0.16299/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Newtonsoft.Json/13.0.3": { - "sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", - "type": "package", - "path": "newtonsoft.json/13.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "README.md", - "lib/net20/Newtonsoft.Json.dll", - "lib/net20/Newtonsoft.Json.xml", - "lib/net35/Newtonsoft.Json.dll", - "lib/net35/Newtonsoft.Json.xml", - "lib/net40/Newtonsoft.Json.dll", - "lib/net40/Newtonsoft.Json.xml", - "lib/net45/Newtonsoft.Json.dll", - "lib/net45/Newtonsoft.Json.xml", - "lib/net6.0/Newtonsoft.Json.dll", - "lib/net6.0/Newtonsoft.Json.xml", - "lib/netstandard1.0/Newtonsoft.Json.dll", - "lib/netstandard1.0/Newtonsoft.Json.xml", - "lib/netstandard1.3/Newtonsoft.Json.dll", - "lib/netstandard1.3/Newtonsoft.Json.xml", - "lib/netstandard2.0/Newtonsoft.Json.dll", - "lib/netstandard2.0/Newtonsoft.Json.xml", - "newtonsoft.json.13.0.3.nupkg.sha512", - "newtonsoft.json.nuspec", - "packageIcon.png" - ] - }, - "Newtonsoft.Json.Bson/1.0.2": { - "sha512": "QYFyxhaABwmq3p/21VrZNYvCg3DaEoN/wUuw5nmfAf0X3HLjgupwhkEWdgfb9nvGAUIv3osmZoD3kKl4jxEmYQ==", - "type": "package", - "path": "newtonsoft.json.bson/1.0.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.md", - "lib/net45/Newtonsoft.Json.Bson.dll", - "lib/net45/Newtonsoft.Json.Bson.pdb", - "lib/net45/Newtonsoft.Json.Bson.xml", - "lib/netstandard1.3/Newtonsoft.Json.Bson.dll", - "lib/netstandard1.3/Newtonsoft.Json.Bson.pdb", - "lib/netstandard1.3/Newtonsoft.Json.Bson.xml", - "lib/netstandard2.0/Newtonsoft.Json.Bson.dll", - "lib/netstandard2.0/Newtonsoft.Json.Bson.pdb", - "lib/netstandard2.0/Newtonsoft.Json.Bson.xml", - "newtonsoft.json.bson.1.0.2.nupkg.sha512", - "newtonsoft.json.bson.nuspec" - ] - }, - "xunit/2.9.0": { - "sha512": "PtU3rZ0ThdmdJqTbK7GkgFf6iBaCR6Q0uvJHznID+XEYk2v6O/b7sRxqnbi3B2gRDXxjTqMkVNayzwsqsFUxRw==", - "type": "package", - "path": "xunit/2.9.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "xunit.2.9.0.nupkg.sha512", - "xunit.nuspec" - ] - }, - "xunit.abstractions/2.0.3": { - "sha512": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", - "type": "package", - "path": "xunit.abstractions/2.0.3", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net35/xunit.abstractions.dll", - "lib/net35/xunit.abstractions.xml", - "lib/netstandard1.0/xunit.abstractions.dll", - "lib/netstandard1.0/xunit.abstractions.xml", - "lib/netstandard2.0/xunit.abstractions.dll", - "lib/netstandard2.0/xunit.abstractions.xml", - "xunit.abstractions.2.0.3.nupkg.sha512", - "xunit.abstractions.nuspec" - ] - }, - "xunit.analyzers/1.15.0": { - "sha512": "s+M8K/Rtlgr6CmD7AYQKrNTvT5sh0l0ZKDoZ3Z/ExhlIwfV9mGAMR4f7KqIB7SSK7ZOhqDTgTUMYPmKfmvWUWQ==", - "type": "package", - "path": "xunit.analyzers/1.15.0", - "hasTools": true, - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "analyzers/dotnet/cs/xunit.analyzers.dll", - "analyzers/dotnet/cs/xunit.analyzers.fixes.dll", - "tools/install.ps1", - "tools/uninstall.ps1", - "xunit.analyzers.1.15.0.nupkg.sha512", - "xunit.analyzers.nuspec" - ] - }, - "xunit.assert/2.9.0": { - "sha512": "Z/1pyia//860wEYTKn6Q5dmgikJdRjgE4t5AoxJkK8oTmidzPLEPG574kmm7LFkMLbH6Frwmgb750kcyR+hwoA==", - "type": "package", - "path": "xunit.assert/2.9.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "lib/net6.0/xunit.assert.dll", - "lib/net6.0/xunit.assert.xml", - "lib/netstandard1.1/xunit.assert.dll", - "lib/netstandard1.1/xunit.assert.xml", - "xunit.assert.2.9.0.nupkg.sha512", - "xunit.assert.nuspec" - ] - }, - "xunit.core/2.9.0": { - "sha512": "uRaop9tZsZMCaUS4AfbSPGYHtvywWnm8XXFNUqII7ShWyDBgdchY6gyDNgO4AK1Lv/1NNW61Zq63CsDV6oH6Jg==", - "type": "package", - "path": "xunit.core/2.9.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "build/xunit.core.props", - "build/xunit.core.targets", - "buildMultiTargeting/xunit.core.props", - "buildMultiTargeting/xunit.core.targets", - "xunit.core.2.9.0.nupkg.sha512", - "xunit.core.nuspec" - ] - }, - "xunit.extensibility.core/2.9.0": { - "sha512": "zjDEUSxsr6UNij4gIwCgMqQox+oLDPRZ+mubwWLci+SssPBFQD1xeRR4SvgBuXqbE0QXCJ/STVTp+lxiB5NLVA==", - "type": "package", - "path": "xunit.extensibility.core/2.9.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "lib/net452/xunit.core.dll", - "lib/net452/xunit.core.dll.tdnet", - "lib/net452/xunit.core.xml", - "lib/net452/xunit.runner.tdnet.dll", - "lib/net452/xunit.runner.utility.net452.dll", - "lib/netstandard1.1/xunit.core.dll", - "lib/netstandard1.1/xunit.core.xml", - "xunit.extensibility.core.2.9.0.nupkg.sha512", - "xunit.extensibility.core.nuspec" - ] - }, - "xunit.extensibility.execution/2.9.0": { - "sha512": "5ZTQZvmPLlBw6QzCOwM0KnMsZw6eGjbmC176QHZlcbQoMhGIeGcYzYwn5w9yXxf+4phtplMuVqTpTbFDQh2bqQ==", - "type": "package", - "path": "xunit.extensibility.execution/2.9.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "lib/net452/xunit.execution.desktop.dll", - "lib/net452/xunit.execution.desktop.xml", - "lib/netstandard1.1/xunit.execution.dotnet.dll", - "lib/netstandard1.1/xunit.execution.dotnet.xml", - "xunit.extensibility.execution.2.9.0.nupkg.sha512", - "xunit.extensibility.execution.nuspec" - ] - }, - "xunit.runner.visualstudio/2.8.2": { - "sha512": "vm1tbfXhFmjFMUmS4M0J0ASXz3/U5XvXBa6DOQUL3fEz4Vt6YPhv+ESCarx6M6D+9kJkJYZKCNvJMas1+nVfmQ==", - "type": "package", - "path": "xunit.runner.visualstudio/2.8.2", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "_content/README.md", - "_content/logo-128-transparent.png", - "build/net462/xunit.abstractions.dll", - "build/net462/xunit.runner.reporters.net452.dll", - "build/net462/xunit.runner.utility.net452.dll", - "build/net462/xunit.runner.visualstudio.props", - "build/net462/xunit.runner.visualstudio.testadapter.dll", - "build/net6.0/xunit.abstractions.dll", - "build/net6.0/xunit.runner.reporters.netcoreapp10.dll", - "build/net6.0/xunit.runner.utility.netcoreapp10.dll", - "build/net6.0/xunit.runner.visualstudio.props", - "build/net6.0/xunit.runner.visualstudio.testadapter.dll", - "lib/net462/_._", - "lib/net6.0/_._", - "xunit.runner.visualstudio.2.8.2.nupkg.sha512", - "xunit.runner.visualstudio.nuspec" - ] - } - }, - "projectFileDependencyGroups": { - "net8.0": [ - "Microsoft.AspNetCore.Mvc.NewtonsoftJson >= 8.0.0", - "xunit >= 2.9.0", - "xunit.runner.visualstudio >= 2.8.2" - ] - }, - "packageFolders": { - "/Users/sean/.nuget/packages/": {} - }, - "project": { - "version": "1.0.0", - "restore": { - "projectUniqueName": "/Users/sean/Desktop/dev/customer-support/SupportApp.csproj", - "projectName": "SupportApp", - "projectPath": "/Users/sean/Desktop/dev/customer-support/SupportApp.csproj", - "packagesPath": "/Users/sean/.nuget/packages/", - "outputPath": "/Users/sean/Desktop/dev/customer-support/obj/", - "projectStyle": "PackageReference", - "configFilePaths": [ - "/Users/sean/.nuget/NuGet/NuGet.Config" - ], - "originalTargetFrameworks": [ - "net8.0" - ], - "sources": { - "https://api.nuget.org/v3/index.json": {} - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "projectReferences": {} - } - }, - "warningProperties": { - "warnAsError": [ - "NU1605" - ] - }, - "restoreAuditProperties": { - "enableAudit": "true", - "auditLevel": "low", - "auditMode": "direct" - } - }, - "frameworks": { - "net8.0": { - "targetAlias": "net8.0", - "dependencies": { - "Microsoft.AspNetCore.Mvc.NewtonsoftJson": { - "target": "Package", - "version": "[8.0.0, )" - }, - "xunit": { - "target": "Package", - "version": "[2.9.0, )" - }, - "xunit.runner.visualstudio": { - "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", - "suppressParent": "All", - "target": "Package", - "version": "[2.8.2, )" - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48", - "net481" - ], - "assetTargetFallback": true, - "warn": true, - "frameworkReferences": { - "Microsoft.AspNetCore.App": { - "privateAssets": "none" - }, - "Microsoft.NETCore.App": { - "privateAssets": "all" - } - }, - "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/8.0.401/PortableRuntimeIdentifierGraph.json" - } - } - } -} \ No newline at end of file diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache deleted file mode 100644 index 76885df..0000000 --- a/obj/project.nuget.cache +++ /dev/null @@ -1,22 +0,0 @@ -{ - "version": 2, - "dgSpecHash": "h3rUVTChJ1M=", - "success": true, - "projectFilePath": "/Users/sean/Desktop/dev/customer-support/SupportApp.csproj", - "expectedPackageFiles": [ - "/Users/sean/.nuget/packages/microsoft.aspnetcore.jsonpatch/8.0.0/microsoft.aspnetcore.jsonpatch.8.0.0.nupkg.sha512", - "/Users/sean/.nuget/packages/microsoft.aspnetcore.mvc.newtonsoftjson/8.0.0/microsoft.aspnetcore.mvc.newtonsoftjson.8.0.0.nupkg.sha512", - "/Users/sean/.nuget/packages/microsoft.csharp/4.7.0/microsoft.csharp.4.7.0.nupkg.sha512", - "/Users/sean/.nuget/packages/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkg.sha512", - "/Users/sean/.nuget/packages/newtonsoft.json.bson/1.0.2/newtonsoft.json.bson.1.0.2.nupkg.sha512", - "/Users/sean/.nuget/packages/xunit/2.9.0/xunit.2.9.0.nupkg.sha512", - "/Users/sean/.nuget/packages/xunit.abstractions/2.0.3/xunit.abstractions.2.0.3.nupkg.sha512", - "/Users/sean/.nuget/packages/xunit.analyzers/1.15.0/xunit.analyzers.1.15.0.nupkg.sha512", - "/Users/sean/.nuget/packages/xunit.assert/2.9.0/xunit.assert.2.9.0.nupkg.sha512", - "/Users/sean/.nuget/packages/xunit.core/2.9.0/xunit.core.2.9.0.nupkg.sha512", - "/Users/sean/.nuget/packages/xunit.extensibility.core/2.9.0/xunit.extensibility.core.2.9.0.nupkg.sha512", - "/Users/sean/.nuget/packages/xunit.extensibility.execution/2.9.0/xunit.extensibility.execution.2.9.0.nupkg.sha512", - "/Users/sean/.nuget/packages/xunit.runner.visualstudio/2.8.2/xunit.runner.visualstudio.2.8.2.nupkg.sha512" - ], - "logs": [] -} \ No newline at end of file diff --git a/rosefield.md b/rosefield.md new file mode 100644 index 0000000..e436d15 --- /dev/null +++ b/rosefield.md @@ -0,0 +1,159 @@ +Rosefield is an award-winning, highly regarded luxury hotel chain with 22 properties in the UK and North America. Over the last 20 years the brand has increasingly used new technology to manage their properties and serve their guests, who expect the very highest level of service. + +Over that time the Rosefield ecosystem has grown to include the following: + +**Redshank: Brand-level Property Management System (PMS)** + +Redshank PMS is an on-premise software solution widely used in the hospitality industry to manage hotel operations. Redshank PMS manages reservations, check-ins, room assignments, billing, reporting, and guest profile management. The brand-level instance of Redshank deployed on servers in their own data centre in North America where guest data from all properties is stored. + +**Plover: Per-Property PMS** + +Each property also has its own instance of a PMS hosted on premise in the hotel. This is commonly what the front-desk staff use day-to-day to check guests in and out and manage their data. Data is then synced nightly via a service layer to the central Redshank instance. + +**A website** + +Hosted on-premise in their data centre. The website includes the booking flow through which guests book stays in different properties. Bookings are made into the shared instance of Redshank and then synced to the property-level PMS. + +**In-room Controls** + +Each property has a server on-premise that provides in-room controls for guests to control things like lights, blinds and air conditioning. This system currently uses Telnet. Front-desk staff are able to control this via an interface so that rooms are set up appropriately for each guest when they check in. + +Rosefield also have a set of newer applications hosted in Azure: + +**YouChat** + +YouChat is a messaging service that allows guests at any stage of their experience with Rosefield — pre-stay, in-stay and post-stay — to start a conversation with concierge staff at a specific property or a central office. Guests can use their messaging channel of choice — including WhatsApp, SMS, and Facebook Messenger — and staff can reply and manage conversations in a single unified web view. + +**SeeMe** + +SeeMe is a simple guest recognition and preferences tool which provides hotel staff with names, photos and useful details about VIP guests allowing them to provide highly personalised service. An example: Simon likes a vodka martini to be ready at the bar half an hour after he’s checked in to any property. + +**MyTime** + +MyTime is a request management tool through which staff can manage requests made by guests via the mobile app. Requests include things like room service, housekeeping and spa treatments. Requests in MyTime are synced to YouChat so that they appear in people’s conversations. + +**A Mobile App (iOS and Android)** + +The mobile app allows guests to access information, send messages and make requests. The mobile app is backed by its own API. + +You can view an architecture diagram of the current state below: + +![Rosefield-Current State (High Level)](/current-state.png) + +You can also access [an XML version](/Rosefield.drawio.xml). + +The current ecosystem has grown organically over time, and poses some big challenges in its current state: + +- The Redshank PMS is what you might call a Big Ball of Mud. Over time it has become sprawling and difficult to maintain. +- There is data duplicated and disjointed in many places — guest data is distributed between two versions of Redshank as well as a number of PostgreSQL databases behind the bespoke apps in Azure. +- In-property PMS platforms are becoming expensive to maintain. +- The website and PMS instances are extremely cumbersome to deploy, and are currently released on a monthly schedule, delaying critical fixes and introducing new features. +- The API for YouChat was originally built as a PoC and it’s beginning to show signs of strain under the weight of hundreds of thousands of guest messages. +- There is a strong push in the business to move everything to the cloud to save costs, normalise ways of working and remain open to future features like digital room keys. + +### The Future + +Rosefield’s principal architect Geoff has designed a desired future state for the platform that aims to solve these issues and open the door to more integrations and a unified view of the guest. It includes the following: + +**Migrating to Opera Cloud** + +Opera Cloud is an industry-standard PMS offered as a multi-tenanted SaaS platform. Opera Cloud has a well-documented restful API which allows customers to programmatically migrate data into the system. + +**Consolidating and stabilising applications in Azure** + +Nic Evans, Rosefield’s Chief Product Officer, collaborated with Geoff on a design that involves consolidating the Guest Experience applications into a service-oriented architecture with a single interface through which staff can manage bookings, guest conversations, requests and guest recognition. + +This will involve: + +- Refactoring and improving the existing React front end to consume a series of APIs for each service. +- Refactoring the existing applications into discrete APIs. +- Implementing a set of queues for messages and requests, improving both performance and redundancy. + +The main benefit of this from a hotel staff perspective is reducing the number of systems hotel staff interact with from four to one unified interface. This currently includes the property-level PMS as well as YouChat, SeeMe and MyTime. This causes a lot of headaches, and makes it challenging for staff to give guests a truly excellent service. + +**Leveraging new technology** + +There is an existing plan to retire the Telnet-based in-room controls in favour of a new version of the system that uses a modern RESTful JSON API. This will allow an integration with the mobile app and PMS, meaning guests can control their rooms from their own device and rooms can be automated based on check-in and check-out. + +You can view an architecture diagram of the proposed future state below: + +![Rosefield-Proposed Future State (High Level)](/future-state.png) + +You can also access [an XML version](/Rosefield.drawio.xml). + +The business is aiming to complete the migration to the cloud and retire the on-prem and on-property services in 10 months' time, when the current expensive contract with the external networking team expires. Rosefield has an established engineering function largely split into functional squads: + +- The Guest Engineering Squad builds and maintains YouChat, SeeMe, MyTime and the mobile API. +- The Booking and Website Squad are responsible for the website and booking flow. +- The PMS Integration Squad builds and maintains Redshank and Plover. + +Here’s a breakdown of the team: + +| **Name** | **Role** | **Team** | **Type** | +| --- | --- | --- | --- | +| Sarah Thompson | Engineering Manager | Leadership | FTE | +| Geoff Sandpiper | Principal Architect | Leadership | FTE | +| James Carter | Product Manager | Guest Experience Squad | FTE | +| Priya Malhotra | Tech Lead | Guest Experience Squad | FTE | +| Emily Davis | Software Engineer | Guest Experience Squad | FTE | +| Liam Nguyen | Software Engineer | Guest Experience Squad | Contractor | +| Olivia Green | QA Engineer | Guest Experience Squad | FTE | +| Rachel Adams | Tech Lead | Booking & Website Squad | FTE | +| Lucas Martinez | Software Engineer | Booking & Website Squad | FTE | +| Ava Brown | QA Engineer | Booking & Website Squad | Contractor | +| Michael Scott | Product Manager | PMS Integration Squad | FTE | +| Zoe Walker | Tech Lead | PMS Integration Squad | FTE | +| Jacob White | Software Engineer | PMS Integration Squad | Contractor | +| Ethan Garcia | Software Engineer | PMS Integration Squad | FTE | +| Mia Rodriguez | QA Engineer | PMS Integration Squad | FTE | +| Laura Bell | UX/UI Designer | Shared Across Squads | FTE | +| Noah Bennett | UX/UI Designer | Shared Across Squads | Contractor | +| Alexander Moore | Delivery Manager | Shared Across Squads | FTE | +| Sophia Harris | Delivery Manager | Shared Across Squads | Contractor | +| Benjamin Taylor | Cloud Engineer | Platform and Operations | FTE | +| Victoria King | Cloud Engineer | Platform and Operations | Contractor | +| Grace Wilson | Data Engineer | Platform and Operations | Contractor | +| Daniel Lee | iOS Developer | Guest Experience Squad | Contractor | +| Maria Lopez | Android Developer | Guest Experience Squad | Contractor | + +### Your Assignment + +Your team has been tasked with the next stage of planning to support the transformation of the Rosefield ecosystem towards Geoff’s plan, and ensuring the migration is a success. In particular you need to produce: + +**A Migration Plan** + +This should include: + +- a plan for migrating the data from the various PMS platforms into Opera Cloud with zero data loss. +- a plan to migrate the public-facing website and booking flow into the cloud with zero downtime for guest-facing applications. +- a plan to refactor the existing Guest Experience applications. +- a very high-level plan for how the teams might work. +- a high-level plan to up-skill or re-skill the team. +- any feedback or push-back on the proposed architecture. + +**A Risk Register** + +The migration will involve some high-risk steps to ensure data integrity is maintained and high-value guests don’t experience a degradation in service. Produce a high-level risk register outlining where the key risks are together with any mitigations. + +You can use whatever tools you like to create your plans. You might consider +using [draw.io](https://www.draw.io), [Excalidraw](https://www.excalidraw.com/), +[Miro](https://www.miro.com), [Archi](https://www.archimatetool.com), or +something else. + +### Your Stakeholders + +**Geoff Sandpiper: Principal Architect** + +Geoff will want to see that you’ve thought carefully about the future plan and will be focussed particularly on data integrity in the migration. He will be open to feedback on his plan if there are elements that you disagree with. + +**Nic Evans: Rosefield Chief Product Officer** + +Nic will want to understand the impact of the migration on the product from a staff perspective. He’ll be delighted if the migration involves minimal impact on hotel staff’s ability to deliver their famous high-touch service. + +**Caroline Bryant: Rosefield Director of Guest Experience** + +Caroline will be focussed on any guest impact. From her perspective this must stay at zero. She’ll be particularly focussed on any loss of data or service that negatively impacts a guest’s stay. + +**Teams and Roles** + +Teams will be announced on the day. [You can read more about your role here.](/games-and-roles) \ No newline at end of file diff --git a/the-great-migration.md b/the-great-migration.md new file mode 100644 index 0000000..3a30309 --- /dev/null +++ b/the-great-migration.md @@ -0,0 +1,56 @@ +**Project Overview** + +The Payments Manager is a legacy on-prem monolith that handles late payments and payment plans. It integrates with three external SOAP services and one external RESTful JSON API. The application’s codebase is a mix of messy, undocumented “big ball of mud” sections and clean, well-documented modules. It’s generally well-tested but suffers from intermittent performance issues: occasional lost or timed-out requests and a lack of consistent monitoring. Payments Manager is consumed by another, user-facing system. A new version of this is due to go live in 6 months, and stakeholders are pressuring Tech Lead Maya to consider migrating the project to Azure before this happens to address current challenges. + +**The Team** + +- **Maya (Tech Lead):** Competent and motivated, alternates between optimism and worry about the project. Maya is under pressure to deliver and struggles to balance stakeholder expectations with team capacity. +- **Zane (Full Stack, Mid-level):** Enthusiastic about tools and new technologies but can underestimate complexities. Likes to get on with things. +- **Priya (Front End, Mid-level):** Pragmatic leaning to cautious, worries about workload and her preparedness. +- **Carlos (Back End, Senior):** Deeply knowledgeable about the on-prem system, can seem resistant to change. Confident in improving the current setup. + +**Tuesday 12 June, 3.30pm, a Teams call:** + +[…] + +**Maya:** OK, let’s chat migration now. I'll give you a bit of an update on where we are and then it would be good to hear from everyone. Delivery have confirmed the new platform is going live in November. We’re under some pressure now to figure out the best path forward for Payments Manager. Let’s use this time to discuss our options. The big question is whether to migrate it to Azure now, improve it on-prem, or…something else. Let’s hear your thoughts. + +**Zane:** I’ll start. You guys know what I think. Azure is a no-brainer. We can leverage stuff like Azure Functions for event-driven workflows, Logic Apps to streamline the integrations, and Cosmos for the database. These tools will fix our scaling issues and reduce latency. Plus, Azure Monitor and Application Insights would hugely improve our observability, which is something we’re lacking right now. Six months isn't even tight, it’s totally doable. + +**Carlos:** Zane, that sounds nice, but have you really thought this through? In my experience re-architecting a monolith isn’t just flipping a switch—it’s a minefield. We’d risk breaking the integrations, losing data, and blowing the timeline. We’d be dealing with migration risks, compatibility issues, and the learning curve. I’m not convinced it’s worth the gamble, especially when the on-prem setup can be tuned up. + +**Zane:** Tuned up? It’s a patchwork of spaghetti code in places! Migrating would force us to clean it up. Plus, we’d be future-proofing. On-prem is a dead end. + +**Priya:** I’m with Carlos on the risks. Migration sounds exciting, but we can’t underestimate the effort. I’ve seen a migration project like this at my last job fall apart because we underestimated how much work it would take to refactor legacy integrations. We spent months chasing compatibility issues and still ended up with performance hiccups. Six months isn’t just tight—it feels impossible without cutting corners. The front end alone might need major changes. Do we even know how the integrations will hold up? And what about testing? Six months feels like a pipe dream. + +We don’t have a clear roadmap. We need to map dependencies, test migration paths, and account for surprises. The timeline worries me. + +**Maya:** Good points. Are we sure we even understand the full scope of the current issues? Without better data on what’s causing the timeouts and lost requests, how do we confidently propose any path forward? If we jump into the migration without clarity, we’re maybe just setting ourselves up to fail. I know monitoring is still patchy, what data do we have on timeouts and lost requests? + +**Carlos:** Not enough, honestly. That’s why I think we should fix the monitoring first. Improve visibility, address bottlenecks, and optimize performance on-prem. The system isn’t perfect, but it’s functional. We’d be taking a huge risk by tearing it down without understanding the root problems. + +**Zane:** But fixing monitoring doesn’t solve the bigger issue: scalability. The new product’s load will cripple the app. We need elasticity, and the cloud gives us that. + +**Priya:** Assuming we have time to re-architect and test under load. I’m worried about the integrations. Those SOAP services…are we even sure they’ll work seamlessly in Azure? + +**Maya:** A phased approach might work, but that doesn’t answer the cost question. Stakeholders want a decision soon because of renewal costs. Can we justify staying on-prem if we’re about to invest in upgrades? + +**Carlos:** We’d spend less improving monitoring and tuning performance than migrating everything. Azure has costs too—not just migration, but ongoing expenses. Plus, I’m skeptical we can meet the timeline. + +**Zane:** Costs aside, we’re setting ourselves up for future agility. Staying on-prem is short-sighted. We’d be solving today’s problems but creating tomorrow’s. + +**Priya:** Tomorrow’s problems sound a lot like today’s if the migration fails. We need to ask ourselves what's actually feasible in six months. + +**Maya:** That’s the big question. I have to run to another meeting — I'll follow up on Teams later. + +--- + +**Questions** + +Where do your sympathies lie? Do you find yourself leaning one way or another? + +Put yourself in Maya's shoes: what would your next steps be? + +Where are the risks in the team's thinking? + +Where are the risks in the project as a whole? \ No newline at end of file diff --git a/wwwroot/js/site.js b/wwwroot/js/site.js deleted file mode 100644 index 033b6a9..0000000 --- a/wwwroot/js/site.js +++ /dev/null @@ -1,42 +0,0 @@ -document.addEventListener('DOMContentLoaded', function () { - const addRequestForm = document.getElementById('addRequestForm'); - const requestList = document.getElementById('requestList'); - - addRequestForm.addEventListener('submit', function (e) { - e.preventDefault(); - const formData = new FormData(addRequestForm); - fetch('/SupportRequest/AddRequest', { - method: 'POST', - body: formData - }).then(response => response.text()) - .then(html => { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = html; - const newRequest = tempDiv.querySelector('.request-item'); - if (newRequest) { - requestList.prepend(newRequest); - } - addRequestForm.reset(); - }); - }); - - requestList.addEventListener('submit', function (e) { - if (e.target.matches('form')) { - e.preventDefault(); - const formData = new FormData(e.target); - fetch('/SupportRequest/ResolveRequest', { - method: 'POST', - body: formData - }).then(response => response.text()) - .then(html => { - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = html; - const updatedRequests = tempDiv.querySelectorAll('.request-item'); - requestList.innerHTML = ''; - updatedRequests.forEach(request => { - requestList.appendChild(request); - }); - }); - } - }); -}); \ No newline at end of file