diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..88dbff1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vs/ diff --git a/ShopAPI/.vs/ProjectEvaluation/shopapi.metadata.v9.bin b/ShopAPI/.vs/ProjectEvaluation/shopapi.metadata.v9.bin deleted file mode 100644 index d9d2e0f..0000000 Binary files a/ShopAPI/.vs/ProjectEvaluation/shopapi.metadata.v9.bin and /dev/null differ diff --git a/ShopAPI/.vs/ProjectEvaluation/shopapi.projects.v9.bin b/ShopAPI/.vs/ProjectEvaluation/shopapi.projects.v9.bin deleted file mode 100644 index bb8ae48..0000000 Binary files a/ShopAPI/.vs/ProjectEvaluation/shopapi.projects.v9.bin and /dev/null differ diff --git a/ShopAPI/.vs/ProjectEvaluation/shopapi.strings.v9.bin b/ShopAPI/.vs/ProjectEvaluation/shopapi.strings.v9.bin deleted file mode 100644 index 99e47d4..0000000 Binary files a/ShopAPI/.vs/ProjectEvaluation/shopapi.strings.v9.bin and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1584.41681/CodeChunks.db b/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1584.41681/CodeChunks.db deleted file mode 100644 index 947660f..0000000 Binary files a/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1584.41681/CodeChunks.db and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1584.41681/SemanticSymbols.db b/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1584.41681/SemanticSymbols.db deleted file mode 100644 index 214786f..0000000 Binary files a/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1584.41681/SemanticSymbols.db and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1601.40145/CodeChunks.db b/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1601.40145/CodeChunks.db deleted file mode 100644 index 07bccf7..0000000 Binary files a/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1601.40145/CodeChunks.db and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1601.40145/SemanticSymbols.db b/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1601.40145/SemanticSymbols.db deleted file mode 100644 index e4a4780..0000000 Binary files a/ShopAPI/.vs/ShopAPI/CopilotIndices/17.14.1601.40145/SemanticSymbols.db and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/DesignTimeBuild/.dtbcache.v2 b/ShopAPI/.vs/ShopAPI/DesignTimeBuild/.dtbcache.v2 deleted file mode 100644 index 1b8f82a..0000000 Binary files a/ShopAPI/.vs/ShopAPI/DesignTimeBuild/.dtbcache.v2 and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/FileContentIndex/1e2204fb-099a-4c19-8b09-30083200737f.vsidx b/ShopAPI/.vs/ShopAPI/FileContentIndex/1e2204fb-099a-4c19-8b09-30083200737f.vsidx deleted file mode 100644 index 70aef67..0000000 Binary files a/ShopAPI/.vs/ShopAPI/FileContentIndex/1e2204fb-099a-4c19-8b09-30083200737f.vsidx and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/FileContentIndex/39315f35-23b9-4284-9beb-ab6e489cee9f.vsidx b/ShopAPI/.vs/ShopAPI/FileContentIndex/39315f35-23b9-4284-9beb-ab6e489cee9f.vsidx deleted file mode 100644 index 140efdd..0000000 Binary files a/ShopAPI/.vs/ShopAPI/FileContentIndex/39315f35-23b9-4284-9beb-ab6e489cee9f.vsidx and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/FileContentIndex/4a8f7e5d-5d38-45e3-b7d2-3d7410bf6a06.vsidx b/ShopAPI/.vs/ShopAPI/FileContentIndex/4a8f7e5d-5d38-45e3-b7d2-3d7410bf6a06.vsidx deleted file mode 100644 index 2bf7cdd..0000000 Binary files a/ShopAPI/.vs/ShopAPI/FileContentIndex/4a8f7e5d-5d38-45e3-b7d2-3d7410bf6a06.vsidx and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/FileContentIndex/9f526fe3-af3c-45ba-b3dc-de6ad8f850ad.vsidx b/ShopAPI/.vs/ShopAPI/FileContentIndex/9f526fe3-af3c-45ba-b3dc-de6ad8f850ad.vsidx deleted file mode 100644 index e3775b8..0000000 Binary files a/ShopAPI/.vs/ShopAPI/FileContentIndex/9f526fe3-af3c-45ba-b3dc-de6ad8f850ad.vsidx and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/FileContentIndex/a2bbe2f9-4b5e-4c2a-8855-61d2203dee50.vsidx b/ShopAPI/.vs/ShopAPI/FileContentIndex/a2bbe2f9-4b5e-4c2a-8855-61d2203dee50.vsidx deleted file mode 100644 index ed12cca..0000000 Binary files a/ShopAPI/.vs/ShopAPI/FileContentIndex/a2bbe2f9-4b5e-4c2a-8855-61d2203dee50.vsidx and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/config/applicationhost.config b/ShopAPI/.vs/ShopAPI/config/applicationhost.config deleted file mode 100644 index 0d88f0d..0000000 --- a/ShopAPI/.vs/ShopAPI/config/applicationhost.config +++ /dev/null @@ -1,1016 +0,0 @@ - - - - - - - -
-
-
-
-
-
-
-
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
- -
-
-
- -
-
- -
-
- -
-
-
- - -
-
-
-
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/207d265b-07fa-430f-aafd-2f0426b35c44 b/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/207d265b-07fa-430f-aafd-2f0426b35c44 deleted file mode 100644 index b4bf7df..0000000 Binary files a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/207d265b-07fa-430f-aafd-2f0426b35c44 and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/2d585096-b711-4e96-b29d-0677b62f7e90 b/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/2d585096-b711-4e96-b29d-0677b62f7e90 deleted file mode 100644 index cf5a77c..0000000 Binary files a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/2d585096-b711-4e96-b29d-0677b62f7e90 and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/6b05809f-c8e2-4206-8bdb-82486d224606 b/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/6b05809f-c8e2-4206-8bdb-82486d224606 deleted file mode 100644 index 33bb58b..0000000 Binary files a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/6b05809f-c8e2-4206-8bdb-82486d224606 and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/b74d9adb-96d6-45a9-9a6a-b26571fccdf0 b/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/b74d9adb-96d6-45a9-9a6a-b26571fccdf0 deleted file mode 100644 index a01c33d..0000000 Binary files a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/b74d9adb-96d6-45a9-9a6a-b26571fccdf0 and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/da5f55a2-7b20-4cab-aba4-9dbd67e9a178 b/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/da5f55a2-7b20-4cab-aba4-9dbd67e9a178 deleted file mode 100644 index eb68366..0000000 Binary files a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/da5f55a2-7b20-4cab-aba4-9dbd67e9a178 and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/f137d978-6e7a-4641-8162-fc0f54683491 b/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/f137d978-6e7a-4641-8162-fc0f54683491 deleted file mode 100644 index b2353b2..0000000 Binary files a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/f137d978-6e7a-4641-8162-fc0f54683491 and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/f764c44e-b942-4f27-a8f7-8e4b5e93203e b/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/f764c44e-b942-4f27-a8f7-8e4b5e93203e deleted file mode 100644 index ae2006b..0000000 Binary files a/ShopAPI/.vs/ShopAPI/copilot-chat/0b385e7e/sessions/f764c44e-b942-4f27-a8f7-8e4b5e93203e and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/v17/.futdcache.v2 b/ShopAPI/.vs/ShopAPI/v17/.futdcache.v2 deleted file mode 100644 index e80f3bc..0000000 Binary files a/ShopAPI/.vs/ShopAPI/v17/.futdcache.v2 and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/v17/.suo b/ShopAPI/.vs/ShopAPI/v17/.suo deleted file mode 100644 index d94dfa3..0000000 Binary files a/ShopAPI/.vs/ShopAPI/v17/.suo and /dev/null differ diff --git a/ShopAPI/.vs/ShopAPI/v17/DocumentLayout.backup.json b/ShopAPI/.vs/ShopAPI/v17/DocumentLayout.backup.json deleted file mode 100644 index e9c4fc6..0000000 --- a/ShopAPI/.vs/ShopAPI/v17/DocumentLayout.backup.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "Version": 1, - "WorkspaceRootPath": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\", - "Documents": [ - { - "AbsoluteMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|c:\\users\\bib\\desktop\\projekt-fluxon\\shop_fluxon\\shopapi\\shopapi\\controllers\\authcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|solutionrelative:shopapi\\controllers\\authcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|c:\\users\\bib\\desktop\\projekt-fluxon\\shop_fluxon\\shopapi\\shopapi\\services\\authservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|solutionrelative:shopapi\\services\\authservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|c:\\users\\bib\\desktop\\projekt-fluxon\\shop_fluxon\\shopapi\\shopapi\\dtos\\registerdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|solutionrelative:shopapi\\dtos\\registerdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|c:\\users\\bib\\desktop\\projekt-fluxon\\shop_fluxon\\shopapi\\shopapi\\dtos\\logindto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|solutionrelative:shopapi\\dtos\\logindto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|c:\\users\\bib\\desktop\\projekt-fluxon\\shop_fluxon\\shopapi\\shopapi\\data\\appdbcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|solutionrelative:shopapi\\data\\appdbcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|c:\\users\\bib\\desktop\\projekt-fluxon\\shop_fluxon\\shopapi\\shopapi\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|solutionrelative:shopapi\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - } - ], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [ - { - "DockedWidth": 200, - "SelectedChildIndex": 2, - "Children": [ - { - "$type": "Bookmark", - "Name": "ST:0:0:{b1e99781-ab81-11d0-b683-00aa00a3ee26}" - }, - { - "$type": "Document", - "DocumentIndex": 5, - "Title": "Program.cs", - "DocumentMoniker": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Program.cs", - "RelativeDocumentMoniker": "ShopAPI\\Program.cs", - "ToolTip": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Program.cs", - "RelativeToolTip": "ShopAPI\\Program.cs", - "ViewState": "AgIAAA4AAAAAAAAAAAAAACYAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-03-15T15:50:24.918Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "AuthController.cs", - "DocumentMoniker": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Controllers\\AuthController.cs", - "RelativeDocumentMoniker": "ShopAPI\\Controllers\\AuthController.cs", - "ToolTip": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Controllers\\AuthController.cs", - "RelativeToolTip": "ShopAPI\\Controllers\\AuthController.cs", - "ViewState": "AgIAAAgAAAAAAAAAAAAxwBYAAABCAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-03-15T00:14:13.509Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "AuthService.cs", - "DocumentMoniker": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Services\\AuthService.cs", - "RelativeDocumentMoniker": "ShopAPI\\Services\\AuthService.cs", - "ToolTip": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Services\\AuthService.cs", - "RelativeToolTip": "ShopAPI\\Services\\AuthService.cs", - "ViewState": "AgIAABYAAAAAAAAAAAAQwFQAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-03-14T23:14:57.991Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "RegisterDto.cs", - "DocumentMoniker": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\DTOs\\RegisterDto.cs", - "RelativeDocumentMoniker": "ShopAPI\\DTOs\\RegisterDto.cs", - "ToolTip": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\DTOs\\RegisterDto.cs", - "RelativeToolTip": "ShopAPI\\DTOs\\RegisterDto.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-03-14T23:13:07.276Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "LoginDto.cs", - "DocumentMoniker": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\DTOs\\LoginDto.cs", - "RelativeDocumentMoniker": "ShopAPI\\DTOs\\LoginDto.cs", - "ToolTip": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\DTOs\\LoginDto.cs", - "RelativeToolTip": "ShopAPI\\DTOs\\LoginDto.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAbAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-03-14T23:14:22.424Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "AppDbContext.cs", - "DocumentMoniker": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Data\\AppDbContext.cs", - "RelativeDocumentMoniker": "ShopAPI\\Data\\AppDbContext.cs", - "ToolTip": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Data\\AppDbContext.cs", - "RelativeToolTip": "ShopAPI\\Data\\AppDbContext.cs", - "ViewState": "AgIAAAwAAAAAAAAAAAAYwBcAAAAoAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-03-13T23:17:21.987Z", - "EditorCaption": "" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/ShopAPI/.vs/ShopAPI/v17/DocumentLayout.json b/ShopAPI/.vs/ShopAPI/v17/DocumentLayout.json deleted file mode 100644 index 94c6160..0000000 --- a/ShopAPI/.vs/ShopAPI/v17/DocumentLayout.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "Version": 1, - "WorkspaceRootPath": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\", - "Documents": [ - { - "AbsoluteMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|c:\\users\\bib\\desktop\\projekt-fluxon\\shop_fluxon\\shopapi\\shopapi\\services\\categoryservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|solutionrelative:shopapi\\services\\categoryservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|c:\\users\\bib\\desktop\\projekt-fluxon\\shop_fluxon\\shopapi\\shopapi\\services\\productservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|solutionrelative:shopapi\\services\\productservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|c:\\users\\bib\\desktop\\projekt-fluxon\\shop_fluxon\\shopapi\\shopapi\\dtos\\productdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{154C8A2E-F4A9-49D0-B845-3319E9C04489}|ShopAPI\\ShopAPI.csproj|solutionrelative:shopapi\\dtos\\productdto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - } - ], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [ - { - "DockedWidth": 200, - "SelectedChildIndex": 1, - "Children": [ - { - "$type": "Bookmark", - "Name": "ST:0:0:{b1e99781-ab81-11d0-b683-00aa00a3ee26}" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "CategoryService.cs", - "DocumentMoniker": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Services\\CategoryService.cs", - "RelativeDocumentMoniker": "ShopAPI\\Services\\CategoryService.cs", - "ToolTip": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Services\\CategoryService.cs", - "RelativeToolTip": "ShopAPI\\Services\\CategoryService.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-03-16T13:59:04.565Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "ProductDto.cs", - "DocumentMoniker": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\DTOs\\ProductDto.cs", - "RelativeDocumentMoniker": "ShopAPI\\DTOs\\ProductDto.cs", - "ToolTip": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\DTOs\\ProductDto.cs", - "RelativeToolTip": "ShopAPI\\DTOs\\ProductDto.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAIAAAASAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-03-16T12:53:52.497Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "ProductService.cs", - "DocumentMoniker": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Services\\ProductService.cs", - "RelativeDocumentMoniker": "ShopAPI\\Services\\ProductService.cs", - "ToolTip": "C:\\Users\\bib\\Desktop\\Projekt-Fluxon\\shop_Fluxon\\ShopAPI\\ShopAPI\\Services\\ProductService.cs", - "RelativeToolTip": "ShopAPI\\Services\\ProductService.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-03-16T12:36:13.39Z", - "EditorCaption": "" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/ShopAPI/ShopAPI/.gitignore b/ShopAPI/ShopAPI/.gitignore new file mode 100644 index 0000000..88dbff1 --- /dev/null +++ b/ShopAPI/ShopAPI/.gitignore @@ -0,0 +1 @@ +.vs/ diff --git a/ShopAPI/ShopAPI/Controllers/CategoryController.cs b/ShopAPI/ShopAPI/Controllers/CategoryController.cs index f00b801..1b6b2d5 100644 --- a/ShopAPI/ShopAPI/Controllers/CategoryController.cs +++ b/ShopAPI/ShopAPI/Controllers/CategoryController.cs @@ -1,6 +1,67 @@ -namespace ShopAPI.Controllers +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using ShopAPI.DTOs; +using ShopAPI.Services; +namespace ShopAPI.Controllers { - public class CategoryController + [Authorize] + [ApiController] + [Route("api/[controller]")] + public class CategoryController : ControllerBase { + public readonly CategoryService _categoryService; + + public CategoryController(CategoryService categoryService) + { + _categoryService = categoryService; + } + + // Get api/category + [HttpGet] + [AllowAnonymous] + public async Task GetAll() + { + var categories = await _categoryService.GetAllAsync(); + return Ok(categories); + } + + // Get api/category/{id} + [HttpGet("{id}")] + [AllowAnonymous] + public async Task GetById(int id) + { + var category = await _categoryService.GetByIdAsync(id); + if (category == null) return NotFound(new { message = "Kategorie nicht gefunden" }); + return Ok(category); + + } + [HttpPost] + [Authorize(Roles = "Admin")] + // post api/category + public async Task Create(CategoryDto dto) + { + var category = await _categoryService.CreateAsync(dto); + return CreatedAtAction(nameof(GetById), new { id = category.Id }, category); + } + + // put api/category/{id} + [HttpPut("{id}")] + [Authorize(Roles = "Admin")] + public async Task Update(int id, CategoryDto dto) + { + var category = await _categoryService.UpdateAsync(id, dto); + if(category == null) return NotFound(new { message = "Kategorie nicht gefunden" }); + return Ok(category); + } + + // delete api/category/{id} + [HttpDelete("{id}")] + [Authorize(Roles = "Admin")] + public async Task Delete(int id) + { + var result = await _categoryService.DeleteAsync(id); + if (!result) return NotFound(new { message = "Kategorie nicht gefunden" }); + return Ok(new {message = "Kategorie gelöscht"}); + } } } diff --git a/ShopAPI/ShopAPI/Controllers/ProductController.cs b/ShopAPI/ShopAPI/Controllers/ProductController.cs index 08c65a6..9ac382e 100644 --- a/ShopAPI/ShopAPI/Controllers/ProductController.cs +++ b/ShopAPI/ShopAPI/Controllers/ProductController.cs @@ -1,6 +1,69 @@ -namespace ShopAPI.Controllers +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using ShopAPI.DTOs; +using ShopAPI.Services; + +namespace ShopAPI.Controllers { - public class ProductController + [Authorize] + [ApiController] + [Route("api/[controller]")] + public class ProductController : ControllerBase { + private readonly ProductService _productService; + + public ProductController(ProductService productService) + { + _productService = productService; + } + // Get api/product + [HttpGet] + [AllowAnonymous] + public async Task GetAll() + { + var products = await _productService.GetALLAsync(); + return Ok(products); + } + + // Get api/product/{id} + [HttpGet("{id}")] + [AllowAnonymous] + public async Task GetById(int id) + { + var product = await _productService.GetByAsync(id); + if (product == null) return NotFound(new {message = "Produkt nicht gefunden" }); + return Ok(product); + } + + // post api/product + [HttpPost] + [Authorize(Roles = "Admin")] + public async Task Create(ProductDto dto) + { + var product = await _productService.CreateAsync(dto); + return CreatedAtAction(nameof(GetById), new { id = product.Id }, product); + } + + // put api/product/{id} + [HttpPut("{id}")] + [Authorize(Roles = "Admin")] + public async Task Update(int id, ProductDto dto) + { + var product = await _productService.UpdateAsync(id, dto); + if (product == null) return NotFound(new { message = "Produkt nicht gefunden" }); + return Ok(product); + } + + // delete api/product/{id} + [HttpDelete("{id}")] + [Authorize(Roles = "Admin")] + public async Task Delete(int id) + { + var result = await _productService.DeleteAsync(id); + if (!result) return NotFound(new { message = "Produkt nciht gefunden" }); + return Ok(new {message = "Produkt gelöscht" }); + + } + } } diff --git a/ShopAPI/ShopAPI/DTOs/CategoryDto.cs b/ShopAPI/ShopAPI/DTOs/CategoryDto.cs new file mode 100644 index 0000000..dace1b3 --- /dev/null +++ b/ShopAPI/ShopAPI/DTOs/CategoryDto.cs @@ -0,0 +1,7 @@ +namespace ShopAPI.DTOs +{ + public class CategoryDto + { + public string Name { get; set; } = string.Empty; + } +} diff --git a/ShopAPI/ShopAPI/Program.cs b/ShopAPI/ShopAPI/Program.cs index 2ee946e..37c9a6c 100644 --- a/ShopAPI/ShopAPI/Program.cs +++ b/ShopAPI/ShopAPI/Program.cs @@ -42,6 +42,11 @@ namespace ShopAPI builder.Services.AddAuthorization(); builder.Services.AddControllers(); + // Hier: jeder benutzer bekommt nur seine Daten , und keine vermischung zwischen Requests + builder.Services.AddScoped(); + builder.Services.AddScoped(); + builder.Services.AddScoped(); + var app = builder.Build(); app.UseAuthentication(); app.UseAuthorization(); diff --git a/ShopAPI/ShopAPI/Services/AuthService.cs b/ShopAPI/ShopAPI/Services/AuthService.cs index c8d8ff0..0d11a9a 100644 --- a/ShopAPI/ShopAPI/Services/AuthService.cs +++ b/ShopAPI/ShopAPI/Services/AuthService.cs @@ -68,7 +68,7 @@ namespace ShopAPI.Services new Claim(ClaimTypes.Role, user.Role) }; - var key = new SymmetricSecurityKey( + var key = new SymmetricSecurityKey( Encoding.UTF8.GetBytes(_config["Jwt:Secret"]!)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); diff --git a/ShopAPI/ShopAPI/Services/CategoryService.cs b/ShopAPI/ShopAPI/Services/CategoryService.cs index b0a6183..4c92dc0 100644 --- a/ShopAPI/ShopAPI/Services/CategoryService.cs +++ b/ShopAPI/ShopAPI/Services/CategoryService.cs @@ -13,5 +13,49 @@ namespace ShopAPI.Services { _db = db; } + + public async Task> GetAllAsync() + { + return await _db.Categories + .Include(c => c.Products) + .ToListAsync(); + } + + + public async Task GetByIdAsync(int id) + { + return await _db.Categories + .Include(c => c.Products) + .FirstOrDefaultAsync(c => c.Id == id); + } + + public async Task CreateAsync(CategoryDto dto) + { + var category = new Category { Name = dto.Name }; + _db.Categories.Add(category); + await _db.SaveChangesAsync(); + return category; + } + + public async Task UpdateAsync(int id, CategoryDto dto) + { + var category = await _db.Categories.FindAsync(id); + if (category == null) return null; + + category.Name = dto.Name; + await _db.SaveChangesAsync(); + return category; + } + + public async Task DeleteAsync(int id) + { + var category = await _db.Categories.FindAsync(id); + if (category == null) return false; + + _db.Categories.Remove(category); + await _db.SaveChangesAsync(); + return true; + } + } } diff --git a/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.dll b/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.dll index 9f16ddc..86ce899 100644 Binary files a/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.dll and b/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.dll differ diff --git a/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.exe b/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.exe index d4b5c26..d593a7f 100644 Binary files a/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.exe and b/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.exe differ diff --git a/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.pdb b/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.pdb index 1904dd2..f2b0973 100644 Binary files a/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.pdb and b/ShopAPI/ShopAPI/bin/Debug/net8.0/ShopAPI.pdb differ diff --git a/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.AssemblyInfo.cs b/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.AssemblyInfo.cs index d42b909..4d14d52 100644 --- a/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.AssemblyInfo.cs +++ b/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.AssemblyInfo.cs @@ -15,7 +15,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("ShopAPI")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c4468dc74b1949de53923f9d96c4a82df7a7b10b")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+384d7e0287f40c1ce9e61d3123377dc5917ef6b6")] [assembly: System.Reflection.AssemblyProductAttribute("ShopAPI")] [assembly: System.Reflection.AssemblyTitleAttribute("ShopAPI")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.AssemblyInfoInputs.cache b/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.AssemblyInfoInputs.cache index 3dff8c4..4f9432b 100644 --- a/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.AssemblyInfoInputs.cache +++ b/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.AssemblyInfoInputs.cache @@ -1 +1 @@ -314f6ea8298063e592f04d2bb86fdfdf35b5fe4b964315aa2eb8f9cd9f54aa63 +e04359f0bf9216ce6ea4f06fefbd8b64b5dbf14e78bc9a52d8c538097c953810 diff --git a/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.csproj.CoreCompileInputs.cache b/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.csproj.CoreCompileInputs.cache index e0aa153..9f60069 100644 --- a/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.csproj.CoreCompileInputs.cache +++ b/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -e359bd7b8b0e1a3edf29245ca19f3d8953c35486fad3d014e10e1d8cce021bd6 +76e1eaf859bca5d672b1fac1789f7abe6bda99f7cc154bb78899e5780554f7a0 diff --git a/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.dll b/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.dll index 9f16ddc..86ce899 100644 Binary files a/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.dll and b/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.dll differ diff --git a/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.pdb b/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.pdb index 1904dd2..f2b0973 100644 Binary files a/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.pdb and b/ShopAPI/ShopAPI/obj/Debug/net8.0/ShopAPI.pdb differ diff --git a/ShopAPI/ShopAPI/obj/Debug/net8.0/apphost.exe b/ShopAPI/ShopAPI/obj/Debug/net8.0/apphost.exe index d4b5c26..d593a7f 100644 Binary files a/ShopAPI/ShopAPI/obj/Debug/net8.0/apphost.exe and b/ShopAPI/ShopAPI/obj/Debug/net8.0/apphost.exe differ diff --git a/ShopAPI/ShopAPI/obj/Debug/net8.0/ref/ShopAPI.dll b/ShopAPI/ShopAPI/obj/Debug/net8.0/ref/ShopAPI.dll index b55d36b..6437771 100644 Binary files a/ShopAPI/ShopAPI/obj/Debug/net8.0/ref/ShopAPI.dll and b/ShopAPI/ShopAPI/obj/Debug/net8.0/ref/ShopAPI.dll differ diff --git a/ShopAPI/ShopAPI/obj/Debug/net8.0/refint/ShopAPI.dll b/ShopAPI/ShopAPI/obj/Debug/net8.0/refint/ShopAPI.dll index b55d36b..6437771 100644 Binary files a/ShopAPI/ShopAPI/obj/Debug/net8.0/refint/ShopAPI.dll and b/ShopAPI/ShopAPI/obj/Debug/net8.0/refint/ShopAPI.dll differ diff --git a/ShopAPI/ShopAPI/obj/Debug/net8.0/rjsmcshtml.dswa.cache.json b/ShopAPI/ShopAPI/obj/Debug/net8.0/rjsmcshtml.dswa.cache.json index 523c053..75fed3d 100644 --- a/ShopAPI/ShopAPI/obj/Debug/net8.0/rjsmcshtml.dswa.cache.json +++ b/ShopAPI/ShopAPI/obj/Debug/net8.0/rjsmcshtml.dswa.cache.json @@ -1 +1 @@ -{"GlobalPropertiesHash":"UbUS1vR6wGATGwMhgD7zMeswN1vTEJ19YTFurt+qa38=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["qXK9XBukmOKR4bC0/OSWUQmD7NVDnODrTNbVfODoSOA=","RsfaIcSdxUsyxkHT0X7TBDvWAE\u002BekQ7N\u002BCKYPxhpGog=","q4x5tw5ZdEVI3wN3ORljilxzvA3pVT3snlXNH\u002Bh3MZw=","hqxvnAagyda0d6U9WqiUEHNFsi/9qmMo9aedinq8ZQA=","TRUWKVmfrqI3Da5OlFteES1pBI/d\u002Bef88\u002BcbmmwH4mw=","AMewKZACPMF34A9M/c\u002BnjYkuddQPOVXhAdpXf\u002BloS2s=","pDYMbjVyNyvCtfuomzL9SJHwQJUdUJF/Z2QDZF8ls2k="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file +{"GlobalPropertiesHash":"UbUS1vR6wGATGwMhgD7zMeswN1vTEJ19YTFurt+qa38=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["qXK9XBukmOKR4bC0/OSWUQmD7NVDnODrTNbVfODoSOA=","RsfaIcSdxUsyxkHT0X7TBDvWAE\u002BekQ7N\u002BCKYPxhpGog=","q4x5tw5ZdEVI3wN3ORljilxzvA3pVT3snlXNH\u002Bh3MZw=","hqxvnAagyda0d6U9WqiUEHNFsi/9qmMo9aedinq8ZQA=","TRUWKVmfrqI3Da5OlFteES1pBI/d\u002Bef88\u002BcbmmwH4mw=","AMewKZACPMF34A9M/c\u002BnjYkuddQPOVXhAdpXf\u002BloS2s=","GrwxjTxxr29ICyUcOpweOHua4V5l\u002BtKseEVsI30NOeU="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/ShopAPI/ShopAPI/obj/Debug/net8.0/rjsmrazor.dswa.cache.json b/ShopAPI/ShopAPI/obj/Debug/net8.0/rjsmrazor.dswa.cache.json index 98b5680..f398fcd 100644 --- a/ShopAPI/ShopAPI/obj/Debug/net8.0/rjsmrazor.dswa.cache.json +++ b/ShopAPI/ShopAPI/obj/Debug/net8.0/rjsmrazor.dswa.cache.json @@ -1 +1 @@ -{"GlobalPropertiesHash":"8Bes/LQh4hq2du9moDLYcP3dWOcm8118awBX2grZ2jA=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["qXK9XBukmOKR4bC0/OSWUQmD7NVDnODrTNbVfODoSOA=","RsfaIcSdxUsyxkHT0X7TBDvWAE\u002BekQ7N\u002BCKYPxhpGog=","q4x5tw5ZdEVI3wN3ORljilxzvA3pVT3snlXNH\u002Bh3MZw=","hqxvnAagyda0d6U9WqiUEHNFsi/9qmMo9aedinq8ZQA=","TRUWKVmfrqI3Da5OlFteES1pBI/d\u002Bef88\u002BcbmmwH4mw=","AMewKZACPMF34A9M/c\u002BnjYkuddQPOVXhAdpXf\u002BloS2s=","pDYMbjVyNyvCtfuomzL9SJHwQJUdUJF/Z2QDZF8ls2k="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file +{"GlobalPropertiesHash":"8Bes/LQh4hq2du9moDLYcP3dWOcm8118awBX2grZ2jA=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["qXK9XBukmOKR4bC0/OSWUQmD7NVDnODrTNbVfODoSOA=","RsfaIcSdxUsyxkHT0X7TBDvWAE\u002BekQ7N\u002BCKYPxhpGog=","q4x5tw5ZdEVI3wN3ORljilxzvA3pVT3snlXNH\u002Bh3MZw=","hqxvnAagyda0d6U9WqiUEHNFsi/9qmMo9aedinq8ZQA=","TRUWKVmfrqI3Da5OlFteES1pBI/d\u002Bef88\u002BcbmmwH4mw=","AMewKZACPMF34A9M/c\u002BnjYkuddQPOVXhAdpXf\u002BloS2s=","GrwxjTxxr29ICyUcOpweOHua4V5l\u002BtKseEVsI30NOeU="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file