diff --git a/.vs/ProjectEvaluation/interview-integrationstask.metadata.v9.bin b/.vs/ProjectEvaluation/interview-integrationstask.metadata.v9.bin new file mode 100644 index 0000000..1815e7a Binary files /dev/null and b/.vs/ProjectEvaluation/interview-integrationstask.metadata.v9.bin differ diff --git a/.vs/ProjectEvaluation/interview-integrationstask.projects.v9.bin b/.vs/ProjectEvaluation/interview-integrationstask.projects.v9.bin new file mode 100644 index 0000000..495127b Binary files /dev/null and b/.vs/ProjectEvaluation/interview-integrationstask.projects.v9.bin differ diff --git a/.vs/ProjectEvaluation/interview-integrationstask.strings.v9.bin b/.vs/ProjectEvaluation/interview-integrationstask.strings.v9.bin new file mode 100644 index 0000000..d1ad9e8 Binary files /dev/null and b/.vs/ProjectEvaluation/interview-integrationstask.strings.v9.bin differ diff --git a/.vs/interview-integrationstask/DesignTimeBuild/.dtbcache.v2 b/.vs/interview-integrationstask/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 0000000..94a57e8 Binary files /dev/null and b/.vs/interview-integrationstask/DesignTimeBuild/.dtbcache.v2 differ diff --git a/.vs/interview-integrationstask/FileContentIndex/01983fa3-3ad7-434f-b6e7-9264b809d657.vsidx b/.vs/interview-integrationstask/FileContentIndex/01983fa3-3ad7-434f-b6e7-9264b809d657.vsidx new file mode 100644 index 0000000..fda9557 Binary files /dev/null and b/.vs/interview-integrationstask/FileContentIndex/01983fa3-3ad7-434f-b6e7-9264b809d657.vsidx differ diff --git a/.vs/interview-integrationstask/FileContentIndex/10b794ec-de61-4210-a3ae-be0c082e874d.vsidx b/.vs/interview-integrationstask/FileContentIndex/10b794ec-de61-4210-a3ae-be0c082e874d.vsidx new file mode 100644 index 0000000..305ac98 Binary files /dev/null and b/.vs/interview-integrationstask/FileContentIndex/10b794ec-de61-4210-a3ae-be0c082e874d.vsidx differ diff --git a/.vs/interview-integrationstask/FileContentIndex/8435d6b8-55c1-489e-9789-4430c7c6774f.vsidx b/.vs/interview-integrationstask/FileContentIndex/8435d6b8-55c1-489e-9789-4430c7c6774f.vsidx new file mode 100644 index 0000000..bfa276a Binary files /dev/null and b/.vs/interview-integrationstask/FileContentIndex/8435d6b8-55c1-489e-9789-4430c7c6774f.vsidx differ diff --git a/.vs/interview-integrationstask/FileContentIndex/e78ecd4c-7f11-4c75-b8a1-04bb389fcd60.vsidx b/.vs/interview-integrationstask/FileContentIndex/e78ecd4c-7f11-4c75-b8a1-04bb389fcd60.vsidx new file mode 100644 index 0000000..1591295 Binary files /dev/null and b/.vs/interview-integrationstask/FileContentIndex/e78ecd4c-7f11-4c75-b8a1-04bb389fcd60.vsidx differ diff --git a/.vs/interview-integrationstask/FileContentIndex/fd4ba989-f841-4422-9dec-ce4e35b791b3.vsidx b/.vs/interview-integrationstask/FileContentIndex/fd4ba989-f841-4422-9dec-ce4e35b791b3.vsidx new file mode 100644 index 0000000..b556325 Binary files /dev/null and b/.vs/interview-integrationstask/FileContentIndex/fd4ba989-f841-4422-9dec-ce4e35b791b3.vsidx differ diff --git a/.vs/interview-integrationstask/config/applicationhost.config b/.vs/interview-integrationstask/config/applicationhost.config new file mode 100644 index 0000000..e4243d8 --- /dev/null +++ b/.vs/interview-integrationstask/config/applicationhost.config @@ -0,0 +1,999 @@ + + + + + + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.vs/interview-integrationstask/v17/.futdcache.v2 b/.vs/interview-integrationstask/v17/.futdcache.v2 new file mode 100644 index 0000000..8d7c751 Binary files /dev/null and b/.vs/interview-integrationstask/v17/.futdcache.v2 differ diff --git a/.vs/interview-integrationstask/v17/.suo b/.vs/interview-integrationstask/v17/.suo new file mode 100644 index 0000000..cd3767c Binary files /dev/null and b/.vs/interview-integrationstask/v17/.suo differ diff --git a/.vs/interview-integrationstask/v17/DocumentLayout.backup.json b/.vs/interview-integrationstask/v17/DocumentLayout.backup.json new file mode 100644 index 0000000..43e52dd --- /dev/null +++ b/.vs/interview-integrationstask/v17/DocumentLayout.backup.json @@ -0,0 +1,140 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\models\\halftime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\models\\halftime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\models\\fulltime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\models\\fulltime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\models\\score.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\models\\score.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\models\\match.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\models\\match.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\services\\footballservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\services\\footballservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\models\\matchinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\models\\matchinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\controllers\\footballcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\controllers\\footballcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 1, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "FootballService.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Services\\FootballService.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Services\\FootballService.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Services\\FootballService.cs", + "RelativeToolTip": "interview-integrationstask\\Services\\FootballService.cs", + "ViewState": "AgIAABkAAAAAAAAAAAApwCcAAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T12:43:39.311Z", + "IsPinned": true, + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "HalfTime.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\HalfTime.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Models\\HalfTime.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\HalfTime.cs", + "RelativeToolTip": "interview-integrationstask\\Models\\HalfTime.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T23:24:33.342Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "FullTime.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\FullTime.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Models\\FullTime.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\FullTime.cs", + "RelativeToolTip": "interview-integrationstask\\Models\\FullTime.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAmAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T23:24:25.649Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "Match.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\Match.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Models\\Match.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\Match.cs", + "RelativeToolTip": "interview-integrationstask\\Models\\Match.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABoAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T23:23:43.885Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "Score.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\Score.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Models\\Score.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\Score.cs", + "RelativeToolTip": "interview-integrationstask\\Models\\Score.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T23:23:21.961Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "FootballController.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Controllers\\FootballController.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Controllers\\FootballController.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Controllers\\FootballController.cs", + "RelativeToolTip": "interview-integrationstask\\Controllers\\FootballController.cs", + "ViewState": "AgIAABsAAAAAAAAAAAAUwC8AAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T23:16:27.148Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "MatchInfo.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\MatchInfo.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Models\\MatchInfo.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\MatchInfo.cs", + "RelativeToolTip": "interview-integrationstask\\Models\\MatchInfo.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAuwAQAAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T22:23:14.594Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/interview-integrationstask/v17/DocumentLayout.json b/.vs/interview-integrationstask/v17/DocumentLayout.json new file mode 100644 index 0000000..f4c9fa8 --- /dev/null +++ b/.vs/interview-integrationstask/v17/DocumentLayout.json @@ -0,0 +1,140 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\services\\footballservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\services\\footballservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\models\\halftime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\models\\halftime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\models\\fulltime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\models\\fulltime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\models\\score.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\models\\score.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\models\\match.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\models\\match.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\models\\matchinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\models\\matchinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|c:\\users\\lapee\\documents\\github\\interview-integrationstask\\interview-integrationstask\\controllers\\footballcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{AF1AD1DE-A671-0966-1476-F38C71F00BE9}|interview-integrationstask\\interview-integrationstask.csproj|solutionrelative:interview-integrationstask\\controllers\\footballcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 0, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "FootballService.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Services\\FootballService.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Services\\FootballService.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Services\\FootballService.cs", + "RelativeToolTip": "interview-integrationstask\\Services\\FootballService.cs", + "ViewState": "AgIAAB4AAAAAAAAAAAAYwJgAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T12:43:39.311Z", + "IsPinned": true, + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "HalfTime.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\HalfTime.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Models\\HalfTime.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\HalfTime.cs", + "RelativeToolTip": "interview-integrationstask\\Models\\HalfTime.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T23:24:33.342Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "FullTime.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\FullTime.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Models\\FullTime.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\FullTime.cs", + "RelativeToolTip": "interview-integrationstask\\Models\\FullTime.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAmAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T23:24:25.649Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "Match.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\Match.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Models\\Match.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\Match.cs", + "RelativeToolTip": "interview-integrationstask\\Models\\Match.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABoAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T23:23:43.885Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "Score.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\Score.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Models\\Score.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\Score.cs", + "RelativeToolTip": "interview-integrationstask\\Models\\Score.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T23:23:21.961Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "FootballController.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Controllers\\FootballController.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Controllers\\FootballController.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Controllers\\FootballController.cs", + "RelativeToolTip": "interview-integrationstask\\Controllers\\FootballController.cs", + "ViewState": "AgIAABsAAAAAAAAAAAAUwC8AAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T23:16:27.148Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "MatchInfo.cs", + "DocumentMoniker": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\MatchInfo.cs", + "RelativeDocumentMoniker": "interview-integrationstask\\Models\\MatchInfo.cs", + "ToolTip": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\Models\\MatchInfo.cs", + "RelativeToolTip": "interview-integrationstask\\Models\\MatchInfo.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAuwAQAAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-27T22:23:14.594Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/interview-integrationstask/Controllers/FootballController.cs b/interview-integrationstask/Controllers/FootballController.cs index 3d0bc35..6939d71 100644 --- a/interview-integrationstask/Controllers/FootballController.cs +++ b/interview-integrationstask/Controllers/FootballController.cs @@ -1,43 +1,60 @@ +using interview_integrationstask.Interfaces.Services; using Microsoft.AspNetCore.Mvc; namespace interview_integrationstask.Controllers { - [ApiController] [Route("api/[controller]")] - public class FootballController: ControllerBase + public class FootballController : ControllerBase { + private readonly IFootballService _footballService; - [HttpGet("teams")] - public IActionResult GetTeams() - { - return Ok("Teams:"); - } - - [HttpGet("teams/{name}")] - public IActionResult GetTeamByName() + public FootballController(IFootballService footballService) { - return Ok("Team:"); + _footballService = footballService; } - [HttpGet("league/{name}")] - public IActionResult GetLeagueByName() + [HttpGet("team/{teamId}")] + public async Task GetTeamById(int teamId, int? season = null) { - return Ok("League:"); + try + { + var teamInfo = await _footballService.GetTeamById(teamId, season); + + return Ok(teamInfo); + } + catch (Exception ex) + { + return BadRequest(new { Message = ex.Message }); + } } - [HttpGet("fixtures")] - public IActionResult GetFixtures() + [HttpGet("matches/recent/{teamId}")] + public async Task GetRecentMatches(int teamId, DateTime? dateFrom = null, DateTime? dateTo = null, int? season = null, string? venue = null, int? limit = null) { - return Ok("Fixtures:"); + try + { + var matches = await _footballService.GetRecentMatchesByTeam(teamId, dateFrom, dateTo, season, venue, limit); + return Ok(matches); + } + catch (Exception ex) + { + return BadRequest(new { Message = ex.Message }); + } } - [HttpGet("scores")] - public IActionResult GetScores() + [HttpGet("matches/upcoming/{teamId}")] + public async Task GetUpcomingFixturesByTeam(int teamId, DateTime? dateFrom = null, DateTime? dateTo = null, int? season = null, string? venue = null, int? limit = null) { - return Ok("Scores:"); + try + { + var fixtures = await _footballService.GetUpcomingFixturesByTeam(teamId, dateFrom, dateTo, season, venue, limit); + return Ok(fixtures); + } + catch (Exception ex) + { + return BadRequest(new { Message = ex.Message }); + } } - } - -} \ No newline at end of file +} diff --git a/interview-integrationstask/Interfaces/Services/IFootballService.cs b/interview-integrationstask/Interfaces/Services/IFootballService.cs new file mode 100644 index 0000000..868027c --- /dev/null +++ b/interview-integrationstask/Interfaces/Services/IFootballService.cs @@ -0,0 +1,11 @@ +using interview_integrationstask.Models; + +namespace interview_integrationstask.Interfaces.Services +{ + public interface IFootballService + { + Task GetTeamById(int teamId, int? season = null); + Task GetRecentMatchesByTeam(int teamId, DateTime? dateFrom = null, DateTime? dateTo = null, int? season = null, string? venue = null, int? limit = null); + Task GetUpcomingFixturesByTeam(int teamId, DateTime? dateFrom = null, DateTime? dateTo = null, int? season = null, string? venue = null, int? limit = null); + } +} diff --git a/interview-integrationstask/Models/Area.cs b/interview-integrationstask/Models/Area.cs new file mode 100644 index 0000000..b02edfe --- /dev/null +++ b/interview-integrationstask/Models/Area.cs @@ -0,0 +1,20 @@ +using System.Text.Json.Serialization; +using Newtonsoft.Json; + +namespace interview_integrationstask.Models +{ + public class Area + { + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("code")] + public string Code { get; set; } + + [JsonPropertyName("flag")] + public string Flag { get; set; } + } +} diff --git a/interview-integrationstask/Models/Coach.cs b/interview-integrationstask/Models/Coach.cs new file mode 100644 index 0000000..d63fcbe --- /dev/null +++ b/interview-integrationstask/Models/Coach.cs @@ -0,0 +1,29 @@ +using System.Text.Json.Serialization; +using Newtonsoft.Json; + +namespace interview_integrationstask.Models +{ + public class Coach + { + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("firstName")] + public string FirstName { get; set; } + + [JsonPropertyName("lastName")] + public string LastName { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("dateOfBirth")] + public string DateOfBirth { get; set; } + + [JsonPropertyName("nationality")] + public string Nationality { get; set; } + + [JsonPropertyName("contract")] + public Contract Contract { get; set; } + } +} diff --git a/interview-integrationstask/Models/Competition.cs b/interview-integrationstask/Models/Competition.cs new file mode 100644 index 0000000..4e9e443 --- /dev/null +++ b/interview-integrationstask/Models/Competition.cs @@ -0,0 +1,35 @@ +using System.Text.Json.Serialization; +using Newtonsoft.Json; + +namespace interview_integrationstask.Models +{ + public class Competition + { + [JsonPropertyName("id")] + public int? Id { get; set; } + + [JsonPropertyName("name")] + public string? Name { get; set; } + + [JsonPropertyName("code")] + public string? Code { get; set; } + + [JsonPropertyName("type")] + public string? Type { get; set; } + + [JsonPropertyName("emblem")] + public string? EmblemUrl { get; set; } + + [JsonPropertyName("area")] + public Area? Area { get; set; } + + [JsonPropertyName("currentSeason")] + public Season? CurrentSeason { get; init; } + + [JsonPropertyName("seasons")] + public List? Seasons { get; init; } + + [JsonPropertyName("lastUpdated")] + public DateTime? LastUpdated { get; init; } + } +} diff --git a/interview-integrationstask/Models/CompetitionInfo.cs b/interview-integrationstask/Models/CompetitionInfo.cs new file mode 100644 index 0000000..6998af8 --- /dev/null +++ b/interview-integrationstask/Models/CompetitionInfo.cs @@ -0,0 +1,31 @@ +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class CompetitionInfo + { + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("code")] + public string? Code { get; set; } + + [JsonPropertyName("type")] + public string? Type { get; set; } + + [JsonPropertyName("emblem")] + public string? EmblemUrl { get; set; } + + [JsonPropertyName("currentSeason")] + public Season? Season { get; set; } + + [JsonPropertyName("seasons")] + public List? Seasons { get; set; } + + [JsonPropertyName("lastUpdated")] + public DateTime? LastUpdated { get; set; } + } +} diff --git a/interview-integrationstask/Models/Contract.cs b/interview-integrationstask/Models/Contract.cs new file mode 100644 index 0000000..234e330 --- /dev/null +++ b/interview-integrationstask/Models/Contract.cs @@ -0,0 +1,14 @@ +using System.Text.Json.Serialization; +using Newtonsoft.Json; + +namespace interview_integrationstask.Models +{ + public class Contract + { + [JsonPropertyName("start")] + public string Start { get; set; } + + [JsonPropertyName("until")] + public string Until { get; set; } + } +} diff --git a/interview-integrationstask/Models/Filters.cs b/interview-integrationstask/Models/Filters.cs new file mode 100644 index 0000000..a4bab15 --- /dev/null +++ b/interview-integrationstask/Models/Filters.cs @@ -0,0 +1,19 @@ +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class Filters + { + [JsonPropertyName("competitions")] + public string Competitions { get; set; } + + [JsonPropertyName("permission")] + public string Permission { get; set; } + + [JsonPropertyName("status")] + public List Status { get; set; } + + [JsonPropertyName("limit")] + public int Limit { get; set; } + } +} diff --git a/interview-integrationstask/Models/FootballData.cs b/interview-integrationstask/Models/FootballData.cs new file mode 100644 index 0000000..04487c2 --- /dev/null +++ b/interview-integrationstask/Models/FootballData.cs @@ -0,0 +1,9 @@ +namespace interview_integrationstask.Models +{ + public class FootballData + { + public string ApiKey { get; set; } + public string ApiUrl { get; set; } + + } +} diff --git a/interview-integrationstask/Models/FullTime.cs b/interview-integrationstask/Models/FullTime.cs new file mode 100644 index 0000000..53a4913 --- /dev/null +++ b/interview-integrationstask/Models/FullTime.cs @@ -0,0 +1,14 @@ + +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class FullTime + { + [JsonPropertyName("home")] + public int? Home { get; set; } + + [JsonPropertyName("away")] + public int? Away { get; set; } + } +} diff --git a/interview-integrationstask/Models/HalfTime.cs b/interview-integrationstask/Models/HalfTime.cs new file mode 100644 index 0000000..460d135 --- /dev/null +++ b/interview-integrationstask/Models/HalfTime.cs @@ -0,0 +1,14 @@ + +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class HalfTime + { + [JsonPropertyName("home")] + public int? Home { get; set; } + + [JsonPropertyName("away")] + public int? Away { get; set; } + } +} \ No newline at end of file diff --git a/interview-integrationstask/Models/Match.cs b/interview-integrationstask/Models/Match.cs new file mode 100644 index 0000000..de3a19d --- /dev/null +++ b/interview-integrationstask/Models/Match.cs @@ -0,0 +1,53 @@ +using System.Security.Cryptography.Xml; +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class Match + { + [JsonPropertyName("area")] + public Area Area { get; set; } + + [JsonPropertyName("competition")] + public Competition Competition { get; set; } + + [JsonPropertyName("season")] + public Season Season { get; set; } + + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("utcDate")] + public DateTime UtcDate { get; set; } + + [JsonPropertyName("status")] + public string Status { get; set; } + + [JsonPropertyName("matchday")] + public int Matchday { get; set; } + + [JsonPropertyName("stage")] + public string Stage { get; set; } + + [JsonPropertyName("group")] + public object Group { get; set; } + + [JsonPropertyName("lastUpdated")] + public DateTime LastUpdated { get; set; } + + [JsonPropertyName("homeTeam")] + public TeamInfo HomeTeam { get; set; } + + [JsonPropertyName("awayTeam")] + public TeamInfo AwayTeam { get; set; } + + [JsonPropertyName("score")] + public Score? Score { get; set; } + + [JsonPropertyName("odds")] + public Odds? Odds { get; set; } + + [JsonPropertyName("referees")] + public List? Referees { get; set; } + } +} diff --git a/interview-integrationstask/Models/MatchInfo.cs b/interview-integrationstask/Models/MatchInfo.cs new file mode 100644 index 0000000..fe6e302 --- /dev/null +++ b/interview-integrationstask/Models/MatchInfo.cs @@ -0,0 +1,16 @@ +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class MatchInfo + { + [JsonPropertyName("filters")] + public Filters Filters { get; set; } + + [JsonPropertyName("resultSet")] + public ResultSet ResultSet { get; set; } + + [JsonPropertyName("matches")] + public List Matches { get; set; } + } +} diff --git a/interview-integrationstask/Models/Odds.cs b/interview-integrationstask/Models/Odds.cs new file mode 100644 index 0000000..cecc321 --- /dev/null +++ b/interview-integrationstask/Models/Odds.cs @@ -0,0 +1,10 @@ +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class Odds + { + [JsonPropertyName("msg")] + public string Msg { get; set; } + } +} diff --git a/interview-integrationstask/Models/Referee.cs b/interview-integrationstask/Models/Referee.cs new file mode 100644 index 0000000..a9dff16 --- /dev/null +++ b/interview-integrationstask/Models/Referee.cs @@ -0,0 +1,19 @@ +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class Referee + { + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("type")] + public string Type { get; set; } + + [JsonPropertyName("nationality")] + public string Nationality { get; set; } + } +} diff --git a/interview-integrationstask/Models/ResultSet.cs b/interview-integrationstask/Models/ResultSet.cs new file mode 100644 index 0000000..3e4149c --- /dev/null +++ b/interview-integrationstask/Models/ResultSet.cs @@ -0,0 +1,31 @@ +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class ResultSet + { + [JsonPropertyName("count")] + public int Count { get; set; } + + [JsonPropertyName("competitions")] + public string Competitions { get; set; } + + [JsonPropertyName("first")] + public string First { get; set; } + + [JsonPropertyName("last")] + public string Last { get; set; } + + [JsonPropertyName("played")] + public int Played { get; set; } + + [JsonPropertyName("wins")] + public int Wins { get; set; } + + [JsonPropertyName("draws")] + public int Draws { get; set; } + + [JsonPropertyName("losses")] + public int Losses { get; set; } + } +} diff --git a/interview-integrationstask/Models/Score.cs b/interview-integrationstask/Models/Score.cs new file mode 100644 index 0000000..3e9240a --- /dev/null +++ b/interview-integrationstask/Models/Score.cs @@ -0,0 +1,20 @@ + +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class Score + { + [JsonPropertyName("winner")] + public string? Winner { get; set; } + + [JsonPropertyName("duration")] + public string? Duration { get; set; } + + [JsonPropertyName("fullTime")] + public FullTime? FullTime { get; set; } + + [JsonPropertyName("halfTime")] + public HalfTime? HalfTime { get; set; } + } +} diff --git a/interview-integrationstask/Models/Season.cs b/interview-integrationstask/Models/Season.cs new file mode 100644 index 0000000..f17ea85 --- /dev/null +++ b/interview-integrationstask/Models/Season.cs @@ -0,0 +1,26 @@ +using System.Text.Json.Serialization; +using Newtonsoft.Json; + +namespace interview_integrationstask.Models +{ + public class Season + { + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("startDate")] + public DateTime StartDate { get; set; } + + [JsonPropertyName("endDate")] + public DateTime EndDate { get; set; } + + [JsonPropertyName("currentMatchday")] + public int? CurrentMatchday { get; set; } + + [JsonPropertyName("winner")] + public TeamInfo? Winner { get; set; } + + [JsonPropertyName("stages")] + public List Stages { get; set; } = new List(); + } +} diff --git a/interview-integrationstask/Models/Squad.cs b/interview-integrationstask/Models/Squad.cs new file mode 100644 index 0000000..5bec828 --- /dev/null +++ b/interview-integrationstask/Models/Squad.cs @@ -0,0 +1,23 @@ +using System.Text.Json.Serialization; +using Newtonsoft.Json; + +namespace interview_integrationstask.Models +{ + public class Squad + { + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("position")] + public string Position { get; set; } + + [JsonPropertyName("dateOfBirth")] + public string DateOfBirth { get; set; } + + [JsonPropertyName("nationality")] + public string Nationality { get; set; } + } +} diff --git a/interview-integrationstask/Models/TeamInfo.cs b/interview-integrationstask/Models/TeamInfo.cs new file mode 100644 index 0000000..266b5f1 --- /dev/null +++ b/interview-integrationstask/Models/TeamInfo.cs @@ -0,0 +1,47 @@ +using System.Text.Json.Serialization; + +namespace interview_integrationstask.Models +{ + public class TeamInfo + { + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("shortName")] + public string? ShortName { get; set; } + + [JsonPropertyName("tla")] + public string? Tla { get; set; } + + [JsonPropertyName("crest")] + public string? CrestUrl { get; set; } + + [JsonPropertyName("founded")] + public int? Founded { get; set; } + + [JsonPropertyName("venue")] + public string? Venue { get; set; } + + [JsonPropertyName("runningCompetitions")] + public List? RunningCompetitions { get; set; } = new List(); + + [JsonPropertyName("area")] + public Area? Area { get; set; } + + [JsonPropertyName("coach")] + public Coach? Coach { get; set; } + + [JsonPropertyName("squad")] + public List? Squad { get; set; } + + [JsonPropertyName("staff")] + public List? Staff { get; set; } + + [JsonPropertyName("lastUpdated")] + public DateTime? LastUpdated { get; set; } + + } +} diff --git a/interview-integrationstask/Program.cs b/interview-integrationstask/Program.cs index 54c8212..51c9195 100644 --- a/interview-integrationstask/Program.cs +++ b/interview-integrationstask/Program.cs @@ -1,3 +1,7 @@ +using interview_integrationstask.Interfaces.Services; +using interview_integrationstask.Models; +using interview_integrationstask.Services; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. @@ -5,6 +9,9 @@ builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.AddControllers(); +builder.Services.AddHttpClient(); +builder.Services.AddScoped(); +builder.Services.Configure(builder.Configuration.GetSection("FootballData")); var app = builder.Build(); diff --git a/interview-integrationstask/Services/FootballService.cs b/interview-integrationstask/Services/FootballService.cs new file mode 100644 index 0000000..e90fb73 --- /dev/null +++ b/interview-integrationstask/Services/FootballService.cs @@ -0,0 +1,169 @@ +using System; +using System.Collections.Generic; +using System.Net.Http.Headers; +using System.Text.Json; +using interview_integrationstask.Interfaces.Services; +using interview_integrationstask.Models; +using Microsoft.Extensions.Options; + +namespace interview_integrationstask.Services +{ + public class FootballService : IFootballService + { + private readonly HttpClient _httpClient; + private readonly string _apiKey; + private readonly string _apiUrl; + private readonly ILogger _logger; + + public FootballService(HttpClient httpClient, IOptions footballData, ILogger logger) + { + _httpClient = httpClient; + _apiKey = footballData.Value.ApiKey; + _apiUrl = footballData.Value.ApiUrl; + _logger = logger; + } + + private async Task GetAsync(string endpoint) + { + try + { + _httpClient.DefaultRequestHeaders.Add("X-Auth-Token", _apiKey); + + var response = await _httpClient.GetAsync($"{_apiUrl}{endpoint}"); + + if (!response.IsSuccessStatusCode) + { + throw new Exception($"Failed to fetch data: {response.ReasonPhrase}"); + } + + var content = await response.Content.ReadAsStringAsync(); + var data = JsonSerializer.Deserialize(content); + return data; + } + catch (Exception ex) + { + _logger.LogError($"Encountered an error during API Call: {ex.Message}", ex); + throw; + } + } + + + public async Task GetTeamById(int teamId, int? season = null) + { + var endpoint = $"teams/{teamId}"; + + var queryParamaters = new List(); + + if (season.HasValue) + { + queryParamaters.Add($"season={season}"); + } + + if (queryParamaters.Any()) + { + endpoint += "?" + string.Join("&", queryParamaters); + } + var data = await GetAsync(endpoint); + return data; + } + + public async Task GetRecentMatchesByTeam(int teamId, DateTime? dateFrom = null, DateTime? dateTo = null, int? season = null, string? venue = null, int? limit = null) + { + var endpoint = $"teams/{teamId}/matches?status=FINISHED"; + + if (limit == null || limit > 50) + { + limit = 50; + } + + if (season == null) + { + if (dateFrom == null) + { + dateFrom = DateTime.Now.Date.AddDays(-30); + } + + if (dateTo == null) + { + dateTo = DateTime.Now.Date; + } + } + + var queryParamaters = new List(); + + queryParamaters.Add($"dateFrom={dateFrom:yyyy-MM-dd}"); + queryParamaters.Add($"dateTo={dateTo:yyyy-MM-dd}"); + + + if (season.HasValue) + { + queryParamaters.Add($"season={season}"); + } + + if (!string.IsNullOrEmpty(venue)) + { + queryParamaters.Add($"venue={venue}"); + } + + queryParamaters.Add($"limit={limit}"); + + + if (queryParamaters.Any()) + { + endpoint += "&" + string.Join("&", queryParamaters); + } + var data = await GetAsync(endpoint); + return data; + } + + public async Task GetUpcomingFixturesByTeam(int teamId, DateTime? dateFrom = null, DateTime? dateTo = null, int? season = null, string? venue = null, int? limit = null) + { + var endpoint = $"teams/{teamId}/matches?status=SCHEDULED"; + + if (limit == null || limit > 50) + { + limit = 50; + } + + if (season == null) + { + if (dateFrom == null) + { + dateFrom = DateTime.Now.Date; + } + + if (dateTo == null) + { + dateTo = DateTime.Now.Date.AddDays(30); + } + } + + var queryParamaters = new List(); + + queryParamaters.Add($"dateFrom={dateFrom:yyyy-MM-dd}"); + + queryParamaters.Add($"dateTo={dateTo:yyyy-MM-dd}"); + + + if (season.HasValue) + { + queryParamaters.Add($"season={season}"); + } + + if (!string.IsNullOrEmpty(venue)) + { + queryParamaters.Add($"venue={venue}"); + } + + queryParamaters.Add($"limit={limit}"); + + + if (queryParamaters.Any()) + { + endpoint += "&" + string.Join("&", queryParamaters); + } + var data = await GetAsync(endpoint); + return data; + } + } +} diff --git a/interview-integrationstask/appsettings.json b/interview-integrationstask/appsettings.json index 10f68b8..89ac540 100644 --- a/interview-integrationstask/appsettings.json +++ b/interview-integrationstask/appsettings.json @@ -1,9 +1,13 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "FootballData": { + "ApiUrl": "https://api.football-data.org/v4/", + "ApiKey": "ea9a51bd333b4ca499d02024cb515ccf" + }, + "AllowedHosts": "*" +} diff --git a/interview-integrationstask/bin/Debug/net8.0/Castle.Core.dll b/interview-integrationstask/bin/Debug/net8.0/Castle.Core.dll new file mode 100644 index 0000000..eb7fd3b Binary files /dev/null and b/interview-integrationstask/bin/Debug/net8.0/Castle.Core.dll differ diff --git a/interview-integrationstask/bin/Debug/net8.0/Moq.dll b/interview-integrationstask/bin/Debug/net8.0/Moq.dll new file mode 100644 index 0000000..7b87495 Binary files /dev/null and b/interview-integrationstask/bin/Debug/net8.0/Moq.dll differ diff --git a/interview-integrationstask/bin/Debug/net8.0/Newtonsoft.Json.dll b/interview-integrationstask/bin/Debug/net8.0/Newtonsoft.Json.dll new file mode 100644 index 0000000..d035c38 Binary files /dev/null and b/interview-integrationstask/bin/Debug/net8.0/Newtonsoft.Json.dll differ diff --git a/interview-integrationstask/bin/Debug/net8.0/appsettings.json b/interview-integrationstask/bin/Debug/net8.0/appsettings.json index 10f68b8..89ac540 100644 --- a/interview-integrationstask/bin/Debug/net8.0/appsettings.json +++ b/interview-integrationstask/bin/Debug/net8.0/appsettings.json @@ -1,9 +1,13 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "FootballData": { + "ApiUrl": "https://api.football-data.org/v4/", + "ApiKey": "ea9a51bd333b4ca499d02024cb515ccf" + }, + "AllowedHosts": "*" +} diff --git a/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.deps.json b/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.deps.json index 6b5b0e8..46fc6e0 100644 --- a/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.deps.json +++ b/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.deps.json @@ -9,12 +9,27 @@ "interview-integrationstask/1.0.0": { "dependencies": { "Microsoft.AspNetCore.OpenApi": "8.0.10", - "Swashbuckle.AspNetCore": "6.6.2" + "Moq": "4.20.72", + "Newtonsoft.Json": "13.0.3", + "Swashbuckle.AspNetCore": "6.6.2", + "xunit.assert": "2.9.3", + "xunit.extensibility.core": "2.9.3" }, "runtime": { "interview-integrationstask.dll": {} } }, + "Castle.Core/5.1.1": { + "dependencies": { + "System.Diagnostics.EventLog": "6.0.0" + }, + "runtime": { + "lib/net6.0/Castle.Core.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.1.1.0" + } + } + }, "Microsoft.AspNetCore.OpenApi/8.0.10": { "dependencies": { "Microsoft.OpenApi": "1.6.14" @@ -35,6 +50,25 @@ } } }, + "Moq/4.20.72": { + "dependencies": { + "Castle.Core": "5.1.1" + }, + "runtime": { + "lib/net6.0/Moq.dll": { + "assemblyVersion": "4.20.72.0", + "fileVersion": "4.20.72.0" + } + } + }, + "Newtonsoft.Json/13.0.3": { + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.3.27908" + } + } + }, "Swashbuckle.AspNetCore/6.6.2": { "dependencies": { "Microsoft.Extensions.ApiDescription.Server": "6.0.5", @@ -72,6 +106,34 @@ "fileVersion": "6.6.2.401" } } + }, + "System.Diagnostics.EventLog/6.0.0": {}, + "xunit.abstractions/2.0.3": { + "runtime": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "xunit.assert/2.9.3": { + "runtime": { + "lib/net6.0/xunit.assert.dll": { + "assemblyVersion": "2.9.3.0", + "fileVersion": "2.9.3.0" + } + } + }, + "xunit.extensibility.core/2.9.3": { + "dependencies": { + "xunit.abstractions": "2.0.3" + }, + "runtime": { + "lib/netstandard1.1/xunit.core.dll": { + "assemblyVersion": "2.9.3.0", + "fileVersion": "2.9.3.0" + } + } } } }, @@ -81,6 +143,13 @@ "serviceable": false, "sha512": "" }, + "Castle.Core/5.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", + "path": "castle.core/5.1.1", + "hashPath": "castle.core.5.1.1.nupkg.sha512" + }, "Microsoft.AspNetCore.OpenApi/8.0.10": { "type": "package", "serviceable": true, @@ -102,6 +171,20 @@ "path": "microsoft.openapi/1.6.14", "hashPath": "microsoft.openapi.1.6.14.nupkg.sha512" }, + "Moq/4.20.72": { + "type": "package", + "serviceable": true, + "sha512": "sha512-EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", + "path": "moq/4.20.72", + "hashPath": "moq.4.20.72.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" + }, "Swashbuckle.AspNetCore/6.6.2": { "type": "package", "serviceable": true, @@ -129,6 +212,34 @@ "sha512": "sha512-mBBb+/8Hm2Q3Wygag+hu2jj69tZW5psuv0vMRXY07Wy+Rrj40vRP8ZTbKBhs91r45/HXT4aY4z0iSBYx1h6JvA==", "path": "swashbuckle.aspnetcore.swaggerui/6.6.2", "hashPath": "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512" + }, + "System.Diagnostics.EventLog/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==", + "path": "system.diagnostics.eventlog/6.0.0", + "hashPath": "system.diagnostics.eventlog.6.0.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.assert/2.9.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==", + "path": "xunit.assert/2.9.3", + "hashPath": "xunit.assert.2.9.3.nupkg.sha512" + }, + "xunit.extensibility.core/2.9.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", + "path": "xunit.extensibility.core/2.9.3", + "hashPath": "xunit.extensibility.core.2.9.3.nupkg.sha512" } } } \ No newline at end of file diff --git a/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.dll b/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.dll index b42739c..9262808 100644 Binary files a/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.dll and b/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.dll differ diff --git a/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.exe b/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.exe index abec1a4..bf81937 100644 Binary files a/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.exe and b/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.exe differ diff --git a/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.pdb b/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.pdb index 2d99e39..b6779db 100644 Binary files a/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.pdb and b/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.pdb differ diff --git a/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.staticwebassets.endpoints.json b/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.staticwebassets.endpoints.json new file mode 100644 index 0000000..2b6c535 --- /dev/null +++ b/interview-integrationstask/bin/Debug/net8.0/interview-integrationstask.staticwebassets.endpoints.json @@ -0,0 +1,5 @@ +{ + "Version": 1, + "ManifestType": "Build", + "Endpoints": [] +} \ No newline at end of file diff --git a/interview-integrationstask/bin/Debug/net8.0/xunit.abstractions.dll b/interview-integrationstask/bin/Debug/net8.0/xunit.abstractions.dll new file mode 100644 index 0000000..d1e90bf Binary files /dev/null and b/interview-integrationstask/bin/Debug/net8.0/xunit.abstractions.dll differ diff --git a/interview-integrationstask/bin/Debug/net8.0/xunit.assert.dll b/interview-integrationstask/bin/Debug/net8.0/xunit.assert.dll new file mode 100644 index 0000000..99bc34c Binary files /dev/null and b/interview-integrationstask/bin/Debug/net8.0/xunit.assert.dll differ diff --git a/interview-integrationstask/bin/Debug/net8.0/xunit.core.dll b/interview-integrationstask/bin/Debug/net8.0/xunit.core.dll new file mode 100644 index 0000000..d56aa16 Binary files /dev/null and b/interview-integrationstask/bin/Debug/net8.0/xunit.core.dll differ diff --git a/interview-integrationstask/interview-integrationstask.csproj b/interview-integrationstask/interview-integrationstask.csproj index 7f8436e..7155803 100644 --- a/interview-integrationstask/interview-integrationstask.csproj +++ b/interview-integrationstask/interview-integrationstask.csproj @@ -9,7 +9,11 @@ + + + + diff --git a/interview-integrationstask/interview-integrationstask.csproj.user b/interview-integrationstask/interview-integrationstask.csproj.user new file mode 100644 index 0000000..5a03a04 --- /dev/null +++ b/interview-integrationstask/interview-integrationstask.csproj.user @@ -0,0 +1,11 @@ + + + + http + RazorViewEmptyScaffolder + root/Common/MVC/View + + + ProjectDebugger + + \ No newline at end of file diff --git a/interview-integrationstask/obj/Debug/net8.0/ApiEndpoints.json b/interview-integrationstask/obj/Debug/net8.0/ApiEndpoints.json new file mode 100644 index 0000000..9d9b08b --- /dev/null +++ b/interview-integrationstask/obj/Debug/net8.0/ApiEndpoints.json @@ -0,0 +1,105 @@ +[ + { + "ContainingType": "interview_integrationstask.Controllers.FootballController", + "Method": "GetRecentMatches", + "RelativePath": "api/Football/matches/recent/{teamId}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "teamId", + "Type": "System.Int32", + "IsRequired": true + }, + { + "Name": "dateFrom", + "Type": "System.Nullable\u00601[[System.DateTime, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]", + "IsRequired": false + }, + { + "Name": "dateTo", + "Type": "System.Nullable\u00601[[System.DateTime, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]", + "IsRequired": false + }, + { + "Name": "season", + "Type": "System.Nullable\u00601[[System.Int32, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]", + "IsRequired": false + }, + { + "Name": "venue", + "Type": "System.String", + "IsRequired": false + }, + { + "Name": "limit", + "Type": "System.Nullable\u00601[[System.Int32, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]", + "IsRequired": false + } + ], + "ReturnTypes": [] + }, + { + "ContainingType": "interview_integrationstask.Controllers.FootballController", + "Method": "GetUpcomingFixturesByTeam", + "RelativePath": "api/Football/matches/upcoming/{teamId}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "teamId", + "Type": "System.Int32", + "IsRequired": true + }, + { + "Name": "dateFrom", + "Type": "System.Nullable\u00601[[System.DateTime, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]", + "IsRequired": false + }, + { + "Name": "dateTo", + "Type": "System.Nullable\u00601[[System.DateTime, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]", + "IsRequired": false + }, + { + "Name": "season", + "Type": "System.Nullable\u00601[[System.Int32, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]", + "IsRequired": false + }, + { + "Name": "venue", + "Type": "System.String", + "IsRequired": false + }, + { + "Name": "limit", + "Type": "System.Nullable\u00601[[System.Int32, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]", + "IsRequired": false + } + ], + "ReturnTypes": [] + }, + { + "ContainingType": "interview_integrationstask.Controllers.FootballController", + "Method": "GetTeamById", + "RelativePath": "api/Football/team/{teamId}", + "HttpMethod": "GET", + "IsController": true, + "Order": 0, + "Parameters": [ + { + "Name": "teamId", + "Type": "System.Int32", + "IsRequired": true + }, + { + "Name": "season", + "Type": "System.Nullable\u00601[[System.Int32, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]", + "IsRequired": false + } + ], + "ReturnTypes": [] + } +] \ No newline at end of file diff --git a/interview-integrationstask/obj/Debug/net8.0/EndpointInfo/interview-integrationstask.OpenApiFiles.cache b/interview-integrationstask/obj/Debug/net8.0/EndpointInfo/interview-integrationstask.OpenApiFiles.cache new file mode 100644 index 0000000..d1707ab --- /dev/null +++ b/interview-integrationstask/obj/Debug/net8.0/EndpointInfo/interview-integrationstask.OpenApiFiles.cache @@ -0,0 +1 @@ +interview-integrationstask.json diff --git a/interview-integrationstask/obj/Debug/net8.0/EndpointInfo/interview-integrationstask.json b/interview-integrationstask/obj/Debug/net8.0/EndpointInfo/interview-integrationstask.json new file mode 100644 index 0000000..186193e --- /dev/null +++ b/interview-integrationstask/obj/Debug/net8.0/EndpointInfo/interview-integrationstask.json @@ -0,0 +1,165 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "interview-integrationstask", + "version": "1.0" + }, + "paths": { + "/api/Football/team/{teamId}": { + "get": { + "tags": [ + "Football" + ], + "parameters": [ + { + "name": "teamId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "season", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/Football/matches/recent/{teamId}": { + "get": { + "tags": [ + "Football" + ], + "parameters": [ + { + "name": "teamId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateFrom", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "dateTo", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "season", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "venue", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/Football/matches/upcoming/{teamId}": { + "get": { + "tags": [ + "Football" + ], + "parameters": [ + { + "name": "teamId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "dateFrom", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "dateTo", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "season", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "venue", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + } + }, + "components": { } +} \ No newline at end of file diff --git a/interview-integrationstask/obj/Debug/net8.0/apphost.exe b/interview-integrationstask/obj/Debug/net8.0/apphost.exe index abec1a4..bf81937 100644 Binary files a/interview-integrationstask/obj/Debug/net8.0/apphost.exe and b/interview-integrationstask/obj/Debug/net8.0/apphost.exe differ diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.AssemblyInfo.cs b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.AssemblyInfo.cs index d3e1dd9..6f0ff06 100644 --- a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.AssemblyInfo.cs +++ b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.AssemblyInfo.cs @@ -1,6 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -13,7 +14,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("interview-integrationstask")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a35998608d7ca5719b2ac74a9f0b5034e1eccbfa")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8cf8c664fc3b4a66ba109176774a41cd7ee6c6db")] [assembly: System.Reflection.AssemblyProductAttribute("interview-integrationstask")] [assembly: System.Reflection.AssemblyTitleAttribute("interview-integrationstask")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.AssemblyInfoInputs.cache b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.AssemblyInfoInputs.cache index 85a7906..6ad1ae8 100644 --- a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.AssemblyInfoInputs.cache +++ b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.AssemblyInfoInputs.cache @@ -1 +1 @@ -7ff7b0dafcffa8d878790ea7f6caf2c39d34817334711371c41f05912b8e4312 +478bfc46ff45c4685ac5d85bd693b8857c7c60fea48e8168152e8c598b2ca756 diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.GeneratedMSBuildEditorConfig.editorconfig b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.GeneratedMSBuildEditorConfig.editorconfig index 5ce4738..447c1c0 100644 --- a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.GeneratedMSBuildEditorConfig.editorconfig +++ b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.GeneratedMSBuildEditorConfig.editorconfig @@ -9,11 +9,13 @@ build_property.EnforceExtendedAnalyzerRules = build_property._SupportedPlatformList = Linux,macOS,Windows build_property.RootNamespace = interview_integrationstask build_property.RootNamespace = interview_integrationstask -build_property.ProjectDir = C:\Users\NeilH\Projects\interview-integrationstask\interview-integrationstask\interview-integrationstask\ +build_property.ProjectDir = C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\ build_property.EnableComHosting = build_property.EnableGeneratedComInterfaceComImportInterop = build_property.RazorLangVersion = 8.0 build_property.SupportLocalizedComponentNames = build_property.GenerateRazorMetadataSourceChecksumAttributes = -build_property.MSBuildProjectDirectory = C:\Users\NeilH\Projects\interview-integrationstask\interview-integrationstask\interview-integrationstask +build_property.MSBuildProjectDirectory = C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask build_property._RazorSourceGeneratorDebug = +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.MvcApplicationPartsAssemblyInfo.cs b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.MvcApplicationPartsAssemblyInfo.cs index 7a8df11..f9ccf61 100644 --- a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.MvcApplicationPartsAssemblyInfo.cs +++ b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.MvcApplicationPartsAssemblyInfo.cs @@ -1,6 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.assets.cache b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.assets.cache index e5488ec..c183648 100644 Binary files a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.assets.cache and b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.assets.cache differ diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.AssemblyReference.cache b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.AssemblyReference.cache index ebf3b62..1d18b13 100644 Binary files a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.AssemblyReference.cache and b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.AssemblyReference.cache differ diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.BuildWithSkipAnalyzers b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.BuildWithSkipAnalyzers new file mode 100644 index 0000000..e69de29 diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.CoreCompileInputs.cache b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.CoreCompileInputs.cache index 75faadf..06bb840 100644 --- a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.CoreCompileInputs.cache +++ b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -909ca90026a0a29d9e8a6db778fdaf2a7ec8d281e9c589cb927b29d317a43690 +c11f3cf2586cb217c074f482846e94d38c0aa98c488b92f8e2ca530ea2ceea13 diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.FileListAbsolute.txt b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.FileListAbsolute.txt index 393388a..50bf2a0 100644 --- a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.FileListAbsolute.txt +++ b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.csproj.FileListAbsolute.txt @@ -32,3 +32,47 @@ C:\Users\NeilH\Projects\interview-integrationstask\interview-integrationstask\in C:\Users\NeilH\Projects\interview-integrationstask\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.pdb C:\Users\NeilH\Projects\interview-integrationstask\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.genruntimeconfig.cache C:\Users\NeilH\Projects\interview-integrationstask\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\ref\interview-integrationstask.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\appsettings.Development.json +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\appsettings.json +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\interview-integrationstask.staticwebassets.endpoints.json +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\interview-integrationstask.exe +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\interview-integrationstask.deps.json +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\interview-integrationstask.runtimeconfig.json +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\interview-integrationstask.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\interview-integrationstask.pdb +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\Microsoft.AspNetCore.OpenApi.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\Microsoft.OpenApi.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\Swashbuckle.AspNetCore.Swagger.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerGen.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\Swashbuckle.AspNetCore.SwaggerUI.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.csproj.AssemblyReference.cache +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.AssemblyInfoInputs.cache +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.AssemblyInfo.cs +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.csproj.CoreCompileInputs.cache +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.MvcApplicationPartsAssemblyInfo.cs +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.MvcApplicationPartsAssemblyInfo.cache +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.sourcelink.json +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\scopedcss\bundle\interview-integrationstask.styles.css +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\staticwebassets.build.json +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\staticwebassets.development.json +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\staticwebassets.build.endpoints.json +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\staticwebassets\msbuild.interview-integrationstask.Microsoft.AspNetCore.StaticWebAssets.props +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\staticwebassets\msbuild.interview-integrationstask.Microsoft.AspNetCore.StaticWebAssetEndpoints.props +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\staticwebassets\msbuild.build.interview-integrationstask.props +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\staticwebassets\msbuild.buildMultiTargeting.interview-integrationstask.props +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\staticwebassets\msbuild.buildTransitive.interview-integrationstask.props +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\staticwebassets.pack.json +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\staticwebassets.upToDateCheck.txt +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\intervie.90A53E16.Up2Date +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\refint\interview-integrationstask.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.pdb +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\interview-integrationstask.genruntimeconfig.cache +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\obj\Debug\net8.0\ref\interview-integrationstask.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\Castle.Core.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\Moq.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\xunit.abstractions.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\xunit.assert.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\xunit.core.dll +C:\Users\lapee\Documents\GitHub\interview-integrationstask\interview-integrationstask\bin\Debug\net8.0\Newtonsoft.Json.dll diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.dll b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.dll index b42739c..9262808 100644 Binary files a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.dll and b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.dll differ diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.genruntimeconfig.cache b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.genruntimeconfig.cache index 32decfd..88d7a80 100644 --- a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.genruntimeconfig.cache +++ b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.genruntimeconfig.cache @@ -1 +1 @@ -7736b0184e6db6a07f350b90a2360667235b4c1f23207ab427f58d0dc289730c +e147e1f953381319fa80b8c726bdab36d38ab23b8e6fa9a09c14c128ced4aab2 diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.pdb b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.pdb index 2d99e39..b6779db 100644 Binary files a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.pdb and b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.pdb differ diff --git a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.sourcelink.json b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.sourcelink.json index f66c8ae..714274f 100644 --- a/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.sourcelink.json +++ b/interview-integrationstask/obj/Debug/net8.0/interview-integrationstask.sourcelink.json @@ -1 +1 @@ -{"documents":{"C:\\Users\\NeilH\\Projects\\interview-integrationstask\\interview-integrationstask\\*":"https://raw.githubusercontent.com/kaizenticketing/interview-integrationstask/a35998608d7ca5719b2ac74a9f0b5034e1eccbfa/*"}} \ No newline at end of file +{"documents":{"C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\*":"https://raw.githubusercontent.com/LAP17796/interview-integrationstask/8cf8c664fc3b4a66ba109176774a41cd7ee6c6db/*"}} \ No newline at end of file diff --git a/interview-integrationstask/obj/Debug/net8.0/ref/interview-integrationstask.dll b/interview-integrationstask/obj/Debug/net8.0/ref/interview-integrationstask.dll index fd24078..880e5d8 100644 Binary files a/interview-integrationstask/obj/Debug/net8.0/ref/interview-integrationstask.dll and b/interview-integrationstask/obj/Debug/net8.0/ref/interview-integrationstask.dll differ diff --git a/interview-integrationstask/obj/Debug/net8.0/refint/interview-integrationstask.dll b/interview-integrationstask/obj/Debug/net8.0/refint/interview-integrationstask.dll index fd24078..880e5d8 100644 Binary files a/interview-integrationstask/obj/Debug/net8.0/refint/interview-integrationstask.dll and b/interview-integrationstask/obj/Debug/net8.0/refint/interview-integrationstask.dll differ diff --git a/interview-integrationstask/obj/Debug/net8.0/staticwebassets.build.endpoints.json b/interview-integrationstask/obj/Debug/net8.0/staticwebassets.build.endpoints.json new file mode 100644 index 0000000..2b6c535 --- /dev/null +++ b/interview-integrationstask/obj/Debug/net8.0/staticwebassets.build.endpoints.json @@ -0,0 +1,5 @@ +{ + "Version": 1, + "ManifestType": "Build", + "Endpoints": [] +} \ No newline at end of file diff --git a/interview-integrationstask/obj/Debug/net8.0/staticwebassets.build.json b/interview-integrationstask/obj/Debug/net8.0/staticwebassets.build.json index 1e1e710..0d5e79d 100644 --- a/interview-integrationstask/obj/Debug/net8.0/staticwebassets.build.json +++ b/interview-integrationstask/obj/Debug/net8.0/staticwebassets.build.json @@ -1,11 +1,12 @@ { "Version": 1, - "Hash": "H1d2a4+hcJhVKIiqFanLcjLTDuMKIGFv0M4qgDMLu5c=", + "Hash": "2IoCeetoyaTPQv28fc7wqO3CfB/TV082oRHS/ecU6To=", "Source": "interview-integrationstask", "BasePath": "_content/interview-integrationstask", "Mode": "Default", "ManifestType": "Build", "ReferencedProjectsConfiguration": [], "DiscoveryPatterns": [], - "Assets": [] + "Assets": [], + "Endpoints": [] } \ No newline at end of file diff --git a/interview-integrationstask/obj/Debug/net8.0/staticwebassets.references.upToDateCheck.txt b/interview-integrationstask/obj/Debug/net8.0/staticwebassets.references.upToDateCheck.txt new file mode 100644 index 0000000..e69de29 diff --git a/interview-integrationstask/obj/Debug/net8.0/staticwebassets.removed.txt b/interview-integrationstask/obj/Debug/net8.0/staticwebassets.removed.txt new file mode 100644 index 0000000..e69de29 diff --git a/interview-integrationstask/obj/Debug/net8.0/staticwebassets/msbuild.build.interview-integrationstask.props b/interview-integrationstask/obj/Debug/net8.0/staticwebassets/msbuild.build.interview-integrationstask.props index 5a6032a..ddaed44 100644 --- a/interview-integrationstask/obj/Debug/net8.0/staticwebassets/msbuild.build.interview-integrationstask.props +++ b/interview-integrationstask/obj/Debug/net8.0/staticwebassets/msbuild.build.interview-integrationstask.props @@ -1,3 +1,4 @@  + \ No newline at end of file diff --git a/interview-integrationstask/obj/interview-integrationstask.csproj.nuget.dgspec.json b/interview-integrationstask/obj/interview-integrationstask.csproj.nuget.dgspec.json index 7a95556..633dd4f 100644 --- a/interview-integrationstask/obj/interview-integrationstask.csproj.nuget.dgspec.json +++ b/interview-integrationstask/obj/interview-integrationstask.csproj.nuget.dgspec.json @@ -1,25 +1,31 @@ { "format": 1, "restore": { - "C:\\Users\\NeilH\\Projects\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj": {} + "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj": {} }, "projects": { - "C:\\Users\\NeilH\\Projects\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj": { + "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\NeilH\\Projects\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj", + "projectUniqueName": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj", "projectName": "interview-integrationstask", - "projectPath": "C:\\Users\\NeilH\\Projects\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj", - "packagesPath": "C:\\Users\\NeilH\\.nuget\\packages\\", - "outputPath": "C:\\Users\\NeilH\\Projects\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask\\obj\\", + "projectPath": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj", + "packagesPath": "C:\\Users\\lapee\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\obj\\", "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], "configFilePaths": [ - "C:\\Users\\NeilH\\AppData\\Roaming\\NuGet\\NuGet.Config" + "C:\\Users\\lapee\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -37,7 +43,8 @@ "enableAudit": "true", "auditLevel": "low", "auditMode": "direct" - } + }, + "SdkAnalysisLevel": "9.0.100" }, "frameworks": { "net8.0": { @@ -47,9 +54,25 @@ "target": "Package", "version": "[8.0.10, )" }, + "Moq": { + "target": "Package", + "version": "[4.20.72, )" + }, + "Newtonsoft.Json": { + "target": "Package", + "version": "[13.0.3, )" + }, "Swashbuckle.AspNetCore": { "target": "Package", "version": "[6.6.2, )" + }, + "xunit.assert": { + "target": "Package", + "version": "[2.9.3, )" + }, + "xunit.extensibility.core": { + "target": "Package", + "version": "[2.9.3, )" } }, "imports": [ @@ -71,7 +94,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.102/PortableRuntimeIdentifierGraph.json" } } } diff --git a/interview-integrationstask/obj/interview-integrationstask.csproj.nuget.g.props b/interview-integrationstask/obj/interview-integrationstask.csproj.nuget.g.props index f22e42b..ede518a 100644 --- a/interview-integrationstask/obj/interview-integrationstask.csproj.nuget.g.props +++ b/interview-integrationstask/obj/interview-integrationstask.csproj.nuget.g.props @@ -5,18 +5,19 @@ NuGet $(MSBuildThisFileDirectory)project.assets.json $(UserProfile)\.nuget\packages\ - C:\Users\NeilH\.nuget\packages\ + C:\Users\lapee\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages PackageReference - 6.11.1 + 6.12.3 - + + - C:\Users\NeilH\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5 + C:\Users\lapee\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5 \ No newline at end of file diff --git a/interview-integrationstask/obj/project.assets.json b/interview-integrationstask/obj/project.assets.json index c004c66..bb032e0 100644 --- a/interview-integrationstask/obj/project.assets.json +++ b/interview-integrationstask/obj/project.assets.json @@ -2,6 +2,22 @@ "version": 3, "targets": { "net8.0": { + "Castle.Core/5.1.1": { + "type": "package", + "dependencies": { + "System.Diagnostics.EventLog": "6.0.0" + }, + "compile": { + "lib/net6.0/Castle.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Castle.Core.dll": { + "related": ".xml" + } + } + }, "Microsoft.AspNetCore.OpenApi/8.0.10": { "type": "package", "dependencies": { @@ -45,6 +61,31 @@ } } }, + "Moq/4.20.72": { + "type": "package", + "dependencies": { + "Castle.Core": "5.1.1" + }, + "compile": { + "lib/net6.0/Moq.dll": {} + }, + "runtime": { + "lib/net6.0/Moq.dll": {} + } + }, + "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" + } + } + }, "Swashbuckle.AspNetCore/6.6.2": { "type": "package", "dependencies": { @@ -107,10 +148,102 @@ "frameworkReferences": [ "Microsoft.AspNetCore.App" ] + }, + "System.Diagnostics.EventLog/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll": { + "assetType": "runtime", + "rid": "win" + }, + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "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.assert/2.9.3": { + "type": "package", + "compile": { + "lib/net6.0/xunit.assert.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/xunit.assert.dll": { + "related": ".xml" + } + } + }, + "xunit.extensibility.core/2.9.3": { + "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" + } + } } } }, "libraries": { + "Castle.Core/5.1.1": { + "sha512": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", + "type": "package", + "path": "castle.core/5.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ASL - Apache Software Foundation License.txt", + "CHANGELOG.md", + "LICENSE", + "castle-logo.png", + "castle.core.5.1.1.nupkg.sha512", + "castle.core.nuspec", + "lib/net462/Castle.Core.dll", + "lib/net462/Castle.Core.xml", + "lib/net6.0/Castle.Core.dll", + "lib/net6.0/Castle.Core.xml", + "lib/netstandard2.0/Castle.Core.dll", + "lib/netstandard2.0/Castle.Core.xml", + "lib/netstandard2.1/Castle.Core.dll", + "lib/netstandard2.1/Castle.Core.xml", + "readme.txt" + ] + }, "Microsoft.AspNetCore.OpenApi/8.0.10": { "sha512": "kzYiW/IbSN0xittjplA8eN1wrNcRi3DMalYRrEuF2xyf2Y5u7cGCfgN1oNZ+g3aBQzMKTQwYsY1PeNmC+P0WnA==", "type": "package", @@ -372,6 +505,53 @@ "microsoft.openapi.nuspec" ] }, + "Moq/4.20.72": { + "sha512": "EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", + "type": "package", + "path": "moq/4.20.72", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "lib/net462/Moq.dll", + "lib/net6.0/Moq.dll", + "lib/netstandard2.0/Moq.dll", + "lib/netstandard2.1/Moq.dll", + "moq.4.20.72.nupkg.sha512", + "moq.nuspec", + "readme.md" + ] + }, + "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" + ] + }, "Swashbuckle.AspNetCore/6.6.2": { "sha512": "+NB4UYVYN6AhDSjW0IJAd1AGD8V33gemFNLPaxKTtPkHB+HaKAKf9MGAEUPivEWvqeQfcKIw8lJaHq6LHljRuw==", "type": "package", @@ -473,33 +653,129 @@ "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512", "swashbuckle.aspnetcore.swaggerui.nuspec" ] + }, + "System.Diagnostics.EventLog/6.0.0": { + "sha512": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==", + "type": "package", + "path": "system.diagnostics.eventlog/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Diagnostics.EventLog.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Diagnostics.EventLog.dll", + "lib/net461/System.Diagnostics.EventLog.xml", + "lib/net6.0/System.Diagnostics.EventLog.dll", + "lib/net6.0/System.Diagnostics.EventLog.xml", + "lib/netcoreapp3.1/System.Diagnostics.EventLog.dll", + "lib/netcoreapp3.1/System.Diagnostics.EventLog.xml", + "lib/netstandard2.0/System.Diagnostics.EventLog.dll", + "lib/netstandard2.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/netcoreapp3.1/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/netcoreapp3.1/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/netcoreapp3.1/System.Diagnostics.EventLog.xml", + "system.diagnostics.eventlog.6.0.0.nupkg.sha512", + "system.diagnostics.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "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.assert/2.9.3": { + "sha512": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==", + "type": "package", + "path": "xunit.assert/2.9.3", + "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.3.nupkg.sha512", + "xunit.assert.nuspec" + ] + }, + "xunit.extensibility.core/2.9.3": { + "sha512": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", + "type": "package", + "path": "xunit.extensibility.core/2.9.3", + "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.3.nupkg.sha512", + "xunit.extensibility.core.nuspec" + ] } }, "projectFileDependencyGroups": { "net8.0": [ "Microsoft.AspNetCore.OpenApi >= 8.0.10", - "Swashbuckle.AspNetCore >= 6.6.2" + "Moq >= 4.20.72", + "Newtonsoft.Json >= 13.0.3", + "Swashbuckle.AspNetCore >= 6.6.2", + "xunit.assert >= 2.9.3", + "xunit.extensibility.core >= 2.9.3" ] }, "packageFolders": { - "C:\\Users\\NeilH\\.nuget\\packages\\": {} + "C:\\Users\\lapee\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} }, "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "C:\\Users\\NeilH\\Projects\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj", + "projectUniqueName": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj", "projectName": "interview-integrationstask", - "projectPath": "C:\\Users\\NeilH\\Projects\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj", - "packagesPath": "C:\\Users\\NeilH\\.nuget\\packages\\", - "outputPath": "C:\\Users\\NeilH\\Projects\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask\\obj\\", + "projectPath": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj", + "packagesPath": "C:\\Users\\lapee\\.nuget\\packages\\", + "outputPath": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\obj\\", "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], "configFilePaths": [ - "C:\\Users\\NeilH\\AppData\\Roaming\\NuGet\\NuGet.Config" + "C:\\Users\\lapee\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -517,7 +793,8 @@ "enableAudit": "true", "auditLevel": "low", "auditMode": "direct" - } + }, + "SdkAnalysisLevel": "9.0.100" }, "frameworks": { "net8.0": { @@ -527,9 +804,25 @@ "target": "Package", "version": "[8.0.10, )" }, + "Moq": { + "target": "Package", + "version": "[4.20.72, )" + }, + "Newtonsoft.Json": { + "target": "Package", + "version": "[13.0.3, )" + }, "Swashbuckle.AspNetCore": { "target": "Package", "version": "[6.6.2, )" + }, + "xunit.assert": { + "target": "Package", + "version": "[2.9.3, )" + }, + "xunit.extensibility.core": { + "target": "Package", + "version": "[2.9.3, )" } }, "imports": [ @@ -551,7 +844,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.102/PortableRuntimeIdentifierGraph.json" } } } diff --git a/interview-integrationstask/obj/project.nuget.cache b/interview-integrationstask/obj/project.nuget.cache index bda802b..e6709fd 100644 --- a/interview-integrationstask/obj/project.nuget.cache +++ b/interview-integrationstask/obj/project.nuget.cache @@ -1,16 +1,23 @@ { "version": 2, - "dgSpecHash": "fb/O7fVk9Wo=", + "dgSpecHash": "hyx80a+0Pkk=", "success": true, - "projectFilePath": "C:\\Users\\NeilH\\Projects\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj", + "projectFilePath": "C:\\Users\\lapee\\Documents\\GitHub\\interview-integrationstask\\interview-integrationstask\\interview-integrationstask.csproj", "expectedPackageFiles": [ - "C:\\Users\\NeilH\\.nuget\\packages\\microsoft.aspnetcore.openapi\\8.0.10\\microsoft.aspnetcore.openapi.8.0.10.nupkg.sha512", - "C:\\Users\\NeilH\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", - "C:\\Users\\NeilH\\.nuget\\packages\\microsoft.openapi\\1.6.14\\microsoft.openapi.1.6.14.nupkg.sha512", - "C:\\Users\\NeilH\\.nuget\\packages\\swashbuckle.aspnetcore\\6.6.2\\swashbuckle.aspnetcore.6.6.2.nupkg.sha512", - "C:\\Users\\NeilH\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.6.2\\swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512", - "C:\\Users\\NeilH\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.6.2\\swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512", - "C:\\Users\\NeilH\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.6.2\\swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512" + "C:\\Users\\lapee\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\microsoft.aspnetcore.openapi\\8.0.10\\microsoft.aspnetcore.openapi.8.0.10.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\microsoft.openapi\\1.6.14\\microsoft.openapi.1.6.14.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\moq\\4.20.72\\moq.4.20.72.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\swashbuckle.aspnetcore\\6.6.2\\swashbuckle.aspnetcore.6.6.2.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.6.2\\swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.6.2\\swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.6.2\\swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\system.diagnostics.eventlog\\6.0.0\\system.diagnostics.eventlog.6.0.0.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\xunit.assert\\2.9.3\\xunit.assert.2.9.3.nupkg.sha512", + "C:\\Users\\lapee\\.nuget\\packages\\xunit.extensibility.core\\2.9.3\\xunit.extensibility.core.2.9.3.nupkg.sha512" ], "logs": [] } \ No newline at end of file