Эх сурвалжийг харах

初步完成所有所需功能

DFS_Shuo_Chen 2 сар өмнө
parent
commit
d6774c6354
28 өөрчлөгдсөн 443 нэмэгдсэн , 309 устгасан
  1. 2 0
      .gitignore
  2. BIN
      mCardSystem/.vs/mCardSystem/CopilotIndices/17.13.444.19527/CodeChunks.db
  3. BIN
      mCardSystem/.vs/mCardSystem/CopilotIndices/17.13.444.19527/SemanticSymbols.db
  4. BIN
      mCardSystem/.vs/mCardSystem/FileContentIndex/1f4c696a-9b7f-489b-bca7-e16e1d236273.vsidx
  5. BIN
      mCardSystem/.vs/mCardSystem/FileContentIndex/608ce149-8d0f-4d07-86c7-cabeb260875f.vsidx
  6. BIN
      mCardSystem/.vs/mCardSystem/FileContentIndex/b33c553c-267d-4677-b4ea-17a2b6f88d4f.vsidx
  7. BIN
      mCardSystem/.vs/mCardSystem/v17/.futdcache.v2
  8. BIN
      mCardSystem/.vs/mCardSystem/v17/.suo
  9. 112 117
      mCardSystem/.vs/mCardSystem/v17/DocumentLayout.backup.json
  10. 107 129
      mCardSystem/.vs/mCardSystem/v17/DocumentLayout.json
  11. 14 0
      mCardSystem/mCardSystem/CardCancel.Designer.cs
  12. 98 21
      mCardSystem/mCardSystem/CardCancel.cs
  13. 5 2
      mCardSystem/mCardSystem/CloudResponse.cs
  14. 56 17
      mCardSystem/mCardSystem/IssueCard.cs
  15. 41 15
      mCardSystem/mCardSystem/WebAPI.cs
  16. BIN
      mCardSystem/mCardSystem/bin/x86/Debug/net8.0-windows/mCardSystem.dll
  17. BIN
      mCardSystem/mCardSystem/bin/x86/Debug/net8.0-windows/mCardSystem.exe
  18. BIN
      mCardSystem/mCardSystem/bin/x86/Debug/net8.0-windows/mCardSystem.pdb
  19. BIN
      mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/apphost.exe
  20. 1 1
      mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/mCardSystem.AssemblyInfo.cs
  21. 1 1
      mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/mCardSystem.AssemblyInfoInputs.cache
  22. BIN
      mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/mCardSystem.csproj.GenerateResource.cache
  23. BIN
      mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/mCardSystem.dll
  24. BIN
      mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/mCardSystem.pdb
  25. BIN
      mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/ref/mCardSystem.dll
  26. BIN
      mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/refint/mCardSystem.dll
  27. 2 2
      文档/开发文档.docx
  28. 4 4
      文档/车载机协议.docx

+ 2 - 0
.gitignore

@@ -1,2 +1,4 @@
 mCardSystem/mCardSystem/bin/Release/
 mCardSystem/mCardSystem/obj/
+mCardSystem/mCardSystem/bin/x86/Debug/net8.0-windows/log/
+*.vsidx

BIN
mCardSystem/.vs/mCardSystem/CopilotIndices/17.13.444.19527/CodeChunks.db


BIN
mCardSystem/.vs/mCardSystem/CopilotIndices/17.13.444.19527/SemanticSymbols.db


BIN
mCardSystem/.vs/mCardSystem/FileContentIndex/1f4c696a-9b7f-489b-bca7-e16e1d236273.vsidx


BIN
mCardSystem/.vs/mCardSystem/FileContentIndex/608ce149-8d0f-4d07-86c7-cabeb260875f.vsidx


BIN
mCardSystem/.vs/mCardSystem/FileContentIndex/b33c553c-267d-4677-b4ea-17a2b6f88d4f.vsidx


BIN
mCardSystem/.vs/mCardSystem/v17/.futdcache.v2


BIN
mCardSystem/.vs/mCardSystem/v17/.suo


+ 112 - 117
mCardSystem/.vs/mCardSystem/v17/DocumentLayout.backup.json

@@ -3,45 +3,49 @@
   "WorkspaceRootPath": "C:\\bitbucket\\mCardSystem\\mCardSystem\\",
   "Documents": [
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\webapi.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\webapi.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
     },
     {
       "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\cardreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cardreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\webapi.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\webapi.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\cloudresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cloudresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
     },
     {
       "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
-    {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
-    },
     {
       "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\httpservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\httpservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@@ -66,10 +70,6 @@
       "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\homepage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\homepage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
-    {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
     {
       "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
     },
@@ -93,93 +93,80 @@
       "DocumentGroups": [
         {
           "DockedWidth": 307,
-          "SelectedChildIndex": 0,
+          "SelectedChildIndex": 2,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "WebAPI.cs",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\WebAPI.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\WebAPI.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\WebAPI.cs",
-              "RelativeToolTip": "mCardSystem\\WebAPI.cs",
-              "ViewState": "AgIAAAsAAAAAAAAAAAD4vxcAAABAAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-25T09:33:57.723Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 7,
-              "Title": "ChangePassword.cs [\u8BBE\u8BA1]",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\ChangePassword.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs [\u8BBE\u8BA1]",
-              "RelativeToolTip": "mCardSystem\\ChangePassword.cs [\u8BBE\u8BA1]",
+              "DocumentIndex": 2,
+              "Title": "IssueCard.cs [\u8BBE\u8BA1]",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\IssueCard.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs [\u8BBE\u8BA1]",
+              "RelativeToolTip": "mCardSystem\\IssueCard.cs [\u8BBE\u8BA1]",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-30T02:07:50.966Z",
+              "WhenOpened": "2025-12-17T08:02:24.037Z",
               "EditorCaption": " [\u8BBE\u8BA1]"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 8,
-              "Title": "ChangePassword.cs",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\ChangePassword.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
-              "RelativeToolTip": "mCardSystem\\ChangePassword.cs",
-              "ViewState": "AgIAAGAAAAAAAAAAAAAUwG8AAAAMAAAAAAAAAA==",
+              "DocumentIndex": 5,
+              "Title": "IssueCard.cs",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\IssueCard.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
+              "RelativeToolTip": "mCardSystem\\IssueCard.cs",
+              "ViewState": "AgIAANMAAAAAAAAAAAAqwOMAAAAWAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-18T03:52:43.831Z",
+              "WhenOpened": "2025-12-18T03:52:22.733Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
-              "Title": "Main.cs [\u8BBE\u8BA1]",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\Main.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs [\u8BBE\u8BA1]",
-              "RelativeToolTip": "mCardSystem\\Main.cs [\u8BBE\u8BA1]",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-30T06:48:51.973Z",
-              "EditorCaption": " [\u8BBE\u8BA1]"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "Main.cs",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\Main.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs",
-              "RelativeToolTip": "mCardSystem\\Main.cs",
-              "ViewState": "AgIAAAoAAAAAAAAAAAAjwBUAAAA0AAAAAAAAAA==",
+              "DocumentIndex": 0,
+              "Title": "CardCancel.cs",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\CardCancel.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs*",
+              "RelativeToolTip": "mCardSystem\\CardCancel.cs*",
+              "ViewState": "AgIAAIsAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-24T06:20:59.831Z",
+              "WhenOpened": "2025-12-18T03:52:52.665Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 3,
+              "DocumentIndex": 4,
               "Title": "CardReader.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardReader.cs",
               "RelativeDocumentMoniker": "mCardSystem\\CardReader.cs",
               "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardReader.cs",
               "RelativeToolTip": "mCardSystem\\CardReader.cs",
-              "ViewState": "AgIAAPEAAAAAAAAAAAD4v/gAAABAAAAAAAAAAA==",
+              "ViewState": "AgIAAE4AAAAAAAAAAAAqwFsAAAAYAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-12-18T06:15:48.158Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 4,
+              "DocumentIndex": 3,
+              "Title": "ChangePassword.cs [\u8BBE\u8BA1]",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\ChangePassword.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs [\u8BBE\u8BA1]",
+              "RelativeToolTip": "mCardSystem\\ChangePassword.cs [\u8BBE\u8BA1]",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-30T02:07:50.966Z",
+              "EditorCaption": " [\u8BBE\u8BA1]"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
               "Title": "Program.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Program.cs",
               "RelativeDocumentMoniker": "mCardSystem\\Program.cs",
               "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Program.cs",
               "RelativeToolTip": "mCardSystem\\Program.cs",
-              "ViewState": "AgIAABkAAAAAAAAAAAAEwCEAAAAQAAAAAAAAAA==",
+              "ViewState": "AgIAABQAAAAAAAAAAAAqwCEAAAAQAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-12-17T03:12:41.93Z",
               "EditorCaption": ""
@@ -187,44 +174,69 @@
             {
               "$type": "Document",
               "DocumentIndex": 1,
-              "Title": "IssueCard.cs",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\IssueCard.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
-              "RelativeToolTip": "mCardSystem\\IssueCard.cs",
-              "ViewState": "AgIAAEkAAAAAAAAAAAAEwFEAAAAQAAAAAAAAAA==",
+              "Title": "CardCancel.cs [\u8BBE\u8BA1]",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\CardCancel.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs [\u8BBE\u8BA1]*",
+              "RelativeToolTip": "mCardSystem\\CardCancel.cs [\u8BBE\u8BA1]*",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-18T03:52:22.733Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-30T09:53:09.382Z",
+              "EditorCaption": " [\u8BBE\u8BA1]"
             },
             {
               "$type": "Document",
               "DocumentIndex": 6,
+              "Title": "WebAPI.cs",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\WebAPI.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\WebAPI.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\WebAPI.cs",
+              "RelativeToolTip": "mCardSystem\\WebAPI.cs",
+              "ViewState": "AgIAAJQAAAAAAAAAAAAmwKQAAAAjAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-25T09:33:57.723Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
               "Title": "CloudResponse.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CloudResponse.cs",
               "RelativeDocumentMoniker": "mCardSystem\\CloudResponse.cs",
               "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CloudResponse.cs",
               "RelativeToolTip": "mCardSystem\\CloudResponse.cs",
-              "ViewState": "AgIAADMAAAAAAAAAAAAxwD8AAAAIAAAAAAAAAA==",
+              "ViewState": "AgIAAA4AAAAAAAAAAAAQwD8AAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-12-25T09:38:39.007Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "IssueCard.cs [\u8BBE\u8BA1]",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\IssueCard.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs [\u8BBE\u8BA1]",
-              "RelativeToolTip": "mCardSystem\\IssueCard.cs [\u8BBE\u8BA1]",
+              "DocumentIndex": 9,
+              "Title": "Main.cs [\u8BBE\u8BA1]",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\Main.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs [\u8BBE\u8BA1]",
+              "RelativeToolTip": "mCardSystem\\Main.cs [\u8BBE\u8BA1]",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-17T08:02:24.037Z",
+              "WhenOpened": "2025-12-30T06:48:51.973Z",
               "EditorCaption": " [\u8BBE\u8BA1]"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 11,
+              "DocumentIndex": 10,
+              "Title": "ChangePassword.cs",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\ChangePassword.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
+              "RelativeToolTip": "mCardSystem\\ChangePassword.cs",
+              "ViewState": "AgIAAGAAAAAAAAAAAAAUwG8AAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-18T03:52:43.831Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
               "Title": "Tool.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Tool.cs",
               "RelativeDocumentMoniker": "mCardSystem\\Tool.cs",
@@ -232,24 +244,22 @@
               "RelativeToolTip": "mCardSystem\\Tool.cs",
               "ViewState": "AgIAAAsAAAAAAAAAAAAzwBkAAAAgAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-19T02:33:11.3Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-19T02:33:11.3Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 12,
+              "DocumentIndex": 13,
               "Title": "LoginDlg.cs [\u8BBE\u8BA1]",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\LoginDlg.cs",
               "RelativeDocumentMoniker": "mCardSystem\\LoginDlg.cs",
               "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\LoginDlg.cs [\u8BBE\u8BA1]",
               "RelativeToolTip": "mCardSystem\\LoginDlg.cs [\u8BBE\u8BA1]",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-26T09:46:52.091Z",
-              "EditorCaption": " [\u8BBE\u8BA1]"
+              "WhenOpened": "2025-12-26T09:46:52.091Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 10,
+              "DocumentIndex": 11,
               "Title": "HttpService.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\HttpService.cs",
               "RelativeDocumentMoniker": "mCardSystem\\HttpService.cs",
@@ -257,12 +267,11 @@
               "RelativeToolTip": "mCardSystem\\HttpService.cs",
               "ViewState": "AgIAAAkAAAAAAAAAAAAiwBMAAAByAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-25T09:36:22.597Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-25T09:36:22.597Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 13,
+              "DocumentIndex": 14,
               "Title": "LoginDlg.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\LoginDlg.cs",
               "RelativeDocumentMoniker": "mCardSystem\\LoginDlg.cs",
@@ -270,12 +279,11 @@
               "RelativeToolTip": "mCardSystem\\LoginDlg.cs",
               "ViewState": "AgIAABgAAAAAAAAAAAAIwB0AAAAMAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-25T09:45:43.598Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-25T09:45:43.598Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 15,
+              "DocumentIndex": 16,
               "Title": "HomePage.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\HomePage.cs",
               "RelativeDocumentMoniker": "mCardSystem\\HomePage.cs",
@@ -287,7 +295,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 14,
+              "DocumentIndex": 15,
               "Title": "Logger.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Logger.cs",
               "RelativeDocumentMoniker": "mCardSystem\\Logger.cs",
@@ -297,18 +305,6 @@
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-12-29T07:24:57.529Z"
             },
-            {
-              "$type": "Document",
-              "DocumentIndex": 16,
-              "Title": "CardCancel.cs",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\CardCancel.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs",
-              "RelativeToolTip": "mCardSystem\\CardCancel.cs",
-              "ViewState": "AgIAADoAAAAAAAAAAADgv0MAAAAaAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-18T03:52:52.665Z"
-            },
             {
               "$type": "Document",
               "DocumentIndex": 17,
@@ -355,8 +351,7 @@
               "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\LoginDlg.resx",
               "RelativeToolTip": "mCardSystem\\LoginDlg.resx",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|",
-              "WhenOpened": "2025-12-17T08:07:28.92Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-17T08:07:28.92Z"
             }
           ]
         },

+ 107 - 129
mCardSystem/.vs/mCardSystem/v17/DocumentLayout.json

@@ -7,49 +7,45 @@
       "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\cardreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cardreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\webapi.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\webapi.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\cardreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cardreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cardcancel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
     },
     {
       "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
       "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
     },
-    {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\webapi.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\webapi.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
     {
       "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
-      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\issuecard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
     {
       "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\cloudresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\cloudresponse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
     },
+    {
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|C:\\bitbucket\\mCardSystem\\mCardSystem\\mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\main.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\changepassword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
     {
       "AbsoluteMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|c:\\bitbucket\\mcardsystem\\mcardsystem\\mcardsystem\\httpservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
       "RelativeMoniker": "D:0:0:{EE96F1AA-15E2-49A7-89AD-222A27655465}|mCardSystem\\mCardSystem.csproj|solutionrelative:mcardsystem\\httpservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@@ -97,36 +93,50 @@
       "DocumentGroups": [
         {
           "DockedWidth": 307,
-          "SelectedChildIndex": 7,
+          "SelectedChildIndex": 1,
           "Children": [
             {
               "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "CardCancel.cs [\u8BBE\u8BA1]",
+              "DocumentIndex": 6,
+              "Title": "IssueCard.cs",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\IssueCard.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
+              "RelativeToolTip": "mCardSystem\\IssueCard.cs",
+              "ViewState": "AgIAANMAAAAAAAAAAAAqwOMAAAAWAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-18T03:52:22.733Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "CardCancel.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs",
               "RelativeDocumentMoniker": "mCardSystem\\CardCancel.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs [\u8BBE\u8BA1]",
-              "RelativeToolTip": "mCardSystem\\CardCancel.cs [\u8BBE\u8BA1]",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs",
+              "RelativeToolTip": "mCardSystem\\CardCancel.cs",
+              "ViewState": "AgIAAIUAAAAAAAAAAAAuwJEAAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-30T09:53:09.382Z",
-              "EditorCaption": " [\u8BBE\u8BA1]"
+              "WhenOpened": "2025-12-18T03:52:52.665Z",
+              "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 7,
-              "Title": "WebAPI.cs",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\WebAPI.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\WebAPI.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\WebAPI.cs",
-              "RelativeToolTip": "mCardSystem\\WebAPI.cs",
-              "ViewState": "AgIAAKAAAAAAAAAAAAAAALEAAAANAAAAAAAAAA==",
+              "DocumentIndex": 3,
+              "Title": "CardReader.cs",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardReader.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\CardReader.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardReader.cs",
+              "RelativeToolTip": "mCardSystem\\CardReader.cs",
+              "ViewState": "AgIAAE4AAAAAAAAAAAAqwFsAAAAYAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-25T09:33:57.723Z",
+              "WhenOpened": "2025-12-18T06:15:48.158Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 6,
+              "DocumentIndex": 5,
               "Title": "ChangePassword.cs [\u8BBE\u8BA1]",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
               "RelativeDocumentMoniker": "mCardSystem\\ChangePassword.cs",
@@ -138,122 +148,95 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "ChangePassword.cs",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\ChangePassword.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
-              "RelativeToolTip": "mCardSystem\\ChangePassword.cs",
-              "ViewState": "AgIAAGAAAAAAAAAAAAAUwG8AAAAMAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-18T03:52:43.831Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "Main.cs [\u8BBE\u8BA1]",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\Main.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs [\u8BBE\u8BA1]",
-              "RelativeToolTip": "mCardSystem\\Main.cs [\u8BBE\u8BA1]",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-30T06:48:51.973Z",
-              "EditorCaption": " [\u8BBE\u8BA1]"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "CardReader.cs",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardReader.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\CardReader.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardReader.cs",
-              "RelativeToolTip": "mCardSystem\\CardReader.cs",
-              "ViewState": "AgIAAJAAAAAAAAAAAAAvwHwAAAAdAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-18T06:15:48.158Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
+              "DocumentIndex": 7,
               "Title": "Program.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Program.cs",
               "RelativeDocumentMoniker": "mCardSystem\\Program.cs",
               "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Program.cs",
               "RelativeToolTip": "mCardSystem\\Program.cs",
-              "ViewState": "AgIAABkAAAAAAAAAAAAEwCEAAAAQAAAAAAAAAA==",
+              "ViewState": "AgIAABQAAAAAAAAAAAAqwCEAAAAQAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-12-17T03:12:41.93Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "CardCancel.cs",
+              "DocumentIndex": 4,
+              "Title": "CardCancel.cs [\u8BBE\u8BA1]",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs",
               "RelativeDocumentMoniker": "mCardSystem\\CardCancel.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs",
-              "RelativeToolTip": "mCardSystem\\CardCancel.cs",
-              "ViewState": "AgIAACwAAAAAAAAAAAAtwDYAAAA4AAAAAAAAAA==",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CardCancel.cs [\u8BBE\u8BA1]",
+              "RelativeToolTip": "mCardSystem\\CardCancel.cs [\u8BBE\u8BA1]",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-18T03:52:52.665Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-30T09:53:09.382Z",
+              "EditorCaption": " [\u8BBE\u8BA1]"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 9,
-              "Title": "Main.cs",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\Main.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs",
-              "RelativeToolTip": "mCardSystem\\Main.cs",
-              "ViewState": "AgIAAAoAAAAAAAAAAAAjwBUAAAA0AAAAAAAAAA==",
+              "DocumentIndex": 2,
+              "Title": "WebAPI.cs",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\WebAPI.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\WebAPI.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\WebAPI.cs",
+              "RelativeToolTip": "mCardSystem\\WebAPI.cs",
+              "ViewState": "AgIAAA0AAAAAAAAAAAAmwBcAAAArAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-24T06:20:59.831Z",
+              "WhenOpened": "2025-12-25T09:33:57.723Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 8,
-              "Title": "IssueCard.cs",
+              "DocumentIndex": 1,
+              "Title": "IssueCard.cs [\u8BBE\u8BA1]",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
               "RelativeDocumentMoniker": "mCardSystem\\IssueCard.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
-              "RelativeToolTip": "mCardSystem\\IssueCard.cs",
-              "ViewState": "AgIAAEkAAAAAAAAAAAAEwFUAAAAAAAAAAAAAAA==",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs [\u8BBE\u8BA1]",
+              "RelativeToolTip": "mCardSystem\\IssueCard.cs [\u8BBE\u8BA1]",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-18T03:52:22.733Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-17T08:02:24.037Z",
+              "EditorCaption": " [\u8BBE\u8BA1]"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 11,
+              "DocumentIndex": 8,
               "Title": "CloudResponse.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CloudResponse.cs",
               "RelativeDocumentMoniker": "mCardSystem\\CloudResponse.cs",
               "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\CloudResponse.cs",
               "RelativeToolTip": "mCardSystem\\CloudResponse.cs",
-              "ViewState": "AgIAADMAAAAAAAAAAAAxwD8AAAAIAAAAAAAAAA==",
+              "ViewState": "AgIAAA4AAAAAAAAAAAAQwD8AAAAAAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2025-12-25T09:38:39.007Z",
               "EditorCaption": ""
             },
             {
               "$type": "Document",
-              "DocumentIndex": 10,
-              "Title": "IssueCard.cs [\u8BBE\u8BA1]",
-              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs",
-              "RelativeDocumentMoniker": "mCardSystem\\IssueCard.cs",
-              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\IssueCard.cs [\u8BBE\u8BA1]",
-              "RelativeToolTip": "mCardSystem\\IssueCard.cs [\u8BBE\u8BA1]",
+              "DocumentIndex": 9,
+              "Title": "Main.cs [\u8BBE\u8BA1]",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\Main.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.cs [\u8BBE\u8BA1]",
+              "RelativeToolTip": "mCardSystem\\Main.cs [\u8BBE\u8BA1]",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-17T08:02:24.037Z",
+              "WhenOpened": "2025-12-30T06:48:51.973Z",
               "EditorCaption": " [\u8BBE\u8BA1]"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 13,
+              "DocumentIndex": 10,
+              "Title": "ChangePassword.cs",
+              "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
+              "RelativeDocumentMoniker": "mCardSystem\\ChangePassword.cs",
+              "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ChangePassword.cs",
+              "RelativeToolTip": "mCardSystem\\ChangePassword.cs",
+              "ViewState": "AgIAAGAAAAAAAAAAAAAUwG8AAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2025-12-18T03:52:43.831Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
               "Title": "Tool.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Tool.cs",
               "RelativeDocumentMoniker": "mCardSystem\\Tool.cs",
@@ -261,24 +244,22 @@
               "RelativeToolTip": "mCardSystem\\Tool.cs",
               "ViewState": "AgIAAAsAAAAAAAAAAAAzwBkAAAAgAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-19T02:33:11.3Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-19T02:33:11.3Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 14,
+              "DocumentIndex": 13,
               "Title": "LoginDlg.cs [\u8BBE\u8BA1]",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\LoginDlg.cs",
               "RelativeDocumentMoniker": "mCardSystem\\LoginDlg.cs",
               "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\LoginDlg.cs [\u8BBE\u8BA1]",
               "RelativeToolTip": "mCardSystem\\LoginDlg.cs [\u8BBE\u8BA1]",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-26T09:46:52.091Z",
-              "EditorCaption": " [\u8BBE\u8BA1]"
+              "WhenOpened": "2025-12-26T09:46:52.091Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 12,
+              "DocumentIndex": 11,
               "Title": "HttpService.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\HttpService.cs",
               "RelativeDocumentMoniker": "mCardSystem\\HttpService.cs",
@@ -286,12 +267,11 @@
               "RelativeToolTip": "mCardSystem\\HttpService.cs",
               "ViewState": "AgIAAAkAAAAAAAAAAAAiwBMAAAByAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-25T09:36:22.597Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-25T09:36:22.597Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 15,
+              "DocumentIndex": 14,
               "Title": "LoginDlg.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\LoginDlg.cs",
               "RelativeDocumentMoniker": "mCardSystem\\LoginDlg.cs",
@@ -299,12 +279,11 @@
               "RelativeToolTip": "mCardSystem\\LoginDlg.cs",
               "ViewState": "AgIAABgAAAAAAAAAAAAIwB0AAAAMAAAAAAAAAA==",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2025-12-25T09:45:43.598Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-25T09:45:43.598Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 17,
+              "DocumentIndex": 16,
               "Title": "HomePage.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\HomePage.cs",
               "RelativeDocumentMoniker": "mCardSystem\\HomePage.cs",
@@ -316,7 +295,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 16,
+              "DocumentIndex": 15,
               "Title": "Logger.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Logger.cs",
               "RelativeDocumentMoniker": "mCardSystem\\Logger.cs",
@@ -328,7 +307,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 18,
+              "DocumentIndex": 17,
               "Title": "Microsoft.Common.CurrentVersion.targets",
               "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets",
               "RelativeDocumentMoniker": "..\\..\\..\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets",
@@ -340,7 +319,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 19,
+              "DocumentIndex": 18,
               "Title": "ToastNotification.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\ToastNotification.cs",
               "RelativeDocumentMoniker": "mCardSystem\\ToastNotification.cs",
@@ -352,7 +331,7 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 20,
+              "DocumentIndex": 19,
               "Title": "Main.Designer.cs",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\Main.Designer.cs",
               "RelativeDocumentMoniker": "mCardSystem\\Main.Designer.cs",
@@ -365,15 +344,14 @@
             },
             {
               "$type": "Document",
-              "DocumentIndex": 21,
+              "DocumentIndex": 20,
               "Title": "LoginDlg.resx",
               "DocumentMoniker": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\LoginDlg.resx",
               "RelativeDocumentMoniker": "mCardSystem\\LoginDlg.resx",
               "ToolTip": "C:\\bitbucket\\mCardSystem\\mCardSystem\\mCardSystem\\LoginDlg.resx",
               "RelativeToolTip": "mCardSystem\\LoginDlg.resx",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|",
-              "WhenOpened": "2025-12-17T08:07:28.92Z",
-              "EditorCaption": ""
+              "WhenOpened": "2025-12-17T08:07:28.92Z"
             }
           ]
         },

+ 14 - 0
mCardSystem/mCardSystem/CardCancel.Designer.cs

@@ -32,6 +32,7 @@
             label1 = new AntdUI.Label();
             button2 = new AntdUI.Button();
             button_cardCancel = new AntdUI.Button();
+            button_cardinit = new AntdUI.Button();
             SuspendLayout();
             // 
             // input_cardno
@@ -74,6 +75,17 @@
             button_cardCancel.Type = AntdUI.TTypeMini.Info;
             button_cardCancel.Click += button_cardCancel_Click;
             // 
+            // button_cardinit
+            // 
+            button_cardinit.Location = new Point(77, 427);
+            button_cardinit.Margin = new Padding(3, 4, 3, 4);
+            button_cardinit.Name = "button_cardinit";
+            button_cardinit.Size = new Size(159, 55);
+            button_cardinit.TabIndex = 3;
+            button_cardinit.Text = "卡初始化";
+            button_cardinit.Type = AntdUI.TTypeMini.Info;
+            button_cardinit.Click += button_cardinit_Click;
+            // 
             // CardCancel
             // 
             AutoScaleDimensions = new SizeF(8F, 20F);
@@ -82,6 +94,7 @@
             ClientSize = new Size(912, 523);
             Controls.Add(input_cardno);
             Controls.Add(label1);
+            Controls.Add(button_cardinit);
             Controls.Add(button_cardCancel);
             Controls.Add(button2);
             Font = new Font("Microsoft YaHei UI", 10.5F, FontStyle.Regular, GraphicsUnit.Point, 134);
@@ -100,5 +113,6 @@
         private AntdUI.Input input_cardno;
         private AntdUI.Button button_cardcancel;
         private AntdUI.Button button_cardCancel;
+        private AntdUI.Button button_cardinit;
     }
 }

+ 98 - 21
mCardSystem/mCardSystem/CardCancel.cs

@@ -49,42 +49,119 @@ namespace mCardSystem
             CardInfo info = cardreader.readCardInfo();
             if (info.readresult.result)
             {
-                OperateResult res = cardreader.clearCard(info);
-                if(res.result)
+                APIResponse<CardData> res = WebAPI.CanCancelCard("CARD1006", CardReader.phyNo);
+
+                if (!res.success)
                 {
-                    Tool.ShowAntdModal(window, "卡注销成功");
+                    Tool.ShowAntdModal(window, "请求销卡失败," + res.msg);
+                    return;
                 }
                 else
                 {
-                    Tool.ShowAntdModal(window, "卡注销失败,"+res.msg);
-                }
 
-                /*
-                bool clear = true;
-                info.cardtype = 0;
-                clear &= cardreader.writeCardInfo(info);
+                    string strcardtype = res.data.cardtype.ToString();
+                    if (Main.dic_cardtype.ContainsKey(res.data.cardtype))
+                    {
+                        strcardtype = Main.dic_cardtype[res.data.cardtype];
+                    }
+                    string msg = "卡号:" + info.cardno + ",卡类型:" + strcardtype + ",账号名称:" + res.data.accountname;
+                    if (Tool.ShowAntdModalConfirm(window, "是否确认销卡?" + msg) != DialogResult.OK)
+                    {
+                        return;
+                    }
 
-                clear &= cardreader.writedata(1, 1, "");
+                    Logger.WriteLog("申请销卡。"+msg);
 
-                CardPw pw = new CardPw();
-                pw.pwtype = 0;
-                clear &= cardreader.writeCardPw(pw);
 
-                if (!cardreader.changekey_reset(1))
-                {
-                    Tool.ShowAntdModal(window, "修改扇区密钥失败");
-                    return;
+                    //销卡是先向云端申请后写卡
+                    APIResponse<CardData> res2 = WebAPI.CancelCard("CARD1006", CardReader.phyNo);
+                    if (!res2.success)
+                    {
+                        Tool.ShowAntdModal(window, "请求销卡失败," + res2.msg);
+                        return;
+                    }
+                    else
+                    {
+                        OperateResult clearres = cardreader.clearCard(info);
+                        if (clearres.result)
+                        {
+                            Tool.ShowAntdModal(window, "卡注销成功");
+                        }
+                        else
+                        {
+                            string msg2 = "云端销卡成功但站级销卡失败:" + clearres.msg + ",请将该卡留存并做初始化处理";
+                            Tool.ShowAntdModal(window, msg2);
+                            Logger.WriteLog(msg2);
+                        }
+                    }
+
+                        
+
+                    /*
+                    bool clear = true;
+                    info.cardtype = 0;
+                    clear &= cardreader.writeCardInfo(info);
+
+                    clear &= cardreader.writedata(1, 1, "");
+
+                    CardPw pw = new CardPw();
+                    pw.pwtype = 0;
+                    clear &= cardreader.writeCardPw(pw);
+
+                    if (!cardreader.changekey_reset(1))
+                    {
+                        Tool.ShowAntdModal(window, "修改扇区密钥失败");
+                        return;
+                    }
+
+                    if (clear)
+                    {
+                        Tool.ShowAntdModal(window, "卡注销成功");
+                    }
+                    else
+                    {
+                        Tool.ShowAntdModal(window, "卡注销失败");
+                    }
+                    */
                 }
 
-                if (clear)
+            }
+            else
+            {
+                Tool.ShowAntdModal(window, info.readresult.msg);
+            }
+        }
+        private void button_cardinit_Click(object sender, EventArgs e)
+        {
+
+            CardInfo info = cardreader.readCardInfo();
+            if (info.readresult.result)
+            {
+                APIResponse<CardData> res = WebAPI.CanCancelCard("CARD1006", CardReader.phyNo);
+
+                //卡初始化的条件是查询云端不存在该卡
+                if (!res.success && res.data.code == WebAPI.CardOperate_NoCard)
                 {
-                    Tool.ShowAntdModal(window, "卡注销成功");
+                    string msg = "卡初始化操作。卡号:" + info.cardno;
+
+                    OperateResult clearres = cardreader.clearCard(info);
+                    if (clearres.result)
+                    {
+                        Tool.ShowAntdModal(window, "卡初始化成功");
+                        Logger.WriteLog("卡初始化成功");
+                    }
+                    else
+                    {
+                        string msg2 = "卡初始化失败," + clearres.msg + ",请将该卡留存";
+                        Tool.ShowAntdModal(window, msg2);
+                        Logger.WriteLog(msg2);
+                    }
+
                 }
                 else
                 {
-                    Tool.ShowAntdModal(window, "卡注销失败");
+                    Tool.ShowAntdModal(window, "云端存在该卡账号信息,请先走销卡流程");
                 }
-                */
 
             }
             else

+ 5 - 2
mCardSystem/mCardSystem/CloudResponse.cs

@@ -56,11 +56,13 @@ namespace mCardSystem
         public string msg { get; set; }
         public T data { get; set; }
 
-        public APIResponse()
+        public APIResponse(T tdata)
         {
             success = false;
             code = string.Empty;
             msg = string.Empty;
+
+            data = tdata;
         }
     }
 
@@ -75,9 +77,10 @@ namespace mCardSystem
     public class CardData
     {
         public bool result { get; set; }
+        public int code { get; set; }
         public string message { get; set; }
         public int cardtype { get; set; }
-        public string accoutname { get; set; }
+        public string accountname { get; set; }
     }
 
 

+ 56 - 17
mCardSystem/mCardSystem/IssueCard.cs

@@ -106,30 +106,32 @@ namespace mCardSystem
             if (info.readresult.result)
             {
 
-                APIResponse<CardData> res = WebAPI.IssueCard("CARD1001", WebAPI.CardOperType_NewCard,WebAPI.CardOperStep_Request);
+                APIResponse<CardData> res = WebAPI.CanIssueCard("CARD1006", CardReader.phyNo);
 
 
 
                 if (!res.success)
                 {
-                    Tool.ShowAntdModal(window, "请求发卡失败,"+res.msg);
+                    Tool.ShowAntdModal(window, "请求发卡失败," + res.msg);
                     return;
                 }
                 else
                 {
-                    string strcardtype = "未知";
-                    if(Main.dic_cardtype.ContainsKey(res.data.cardtype))
+                    string strcardtype = res.data.cardtype.ToString();
+                    if (Main.dic_cardtype.ContainsKey(res.data.cardtype))
                     {
                         strcardtype = Main.dic_cardtype[res.data.cardtype];
                     }
-                    string msg = "是否确认发卡?卡号:"+info.cardno + ",卡类型:" + strcardtype + ",账号名称:" + res.data.accoutname;
-                    if (Tool.ShowAntdModalConfirm(window,msg ) != DialogResult.OK)
+                    string msg = "卡号:" + info.cardno + ",卡类型:" + strcardtype + ",账号名称:" + res.data.accountname;
+                    if (Tool.ShowAntdModalConfirm(window, "是否确认发卡?"+ msg) != DialogResult.OK)
                     {
                         return;
                     }
-                }
 
+                    Logger.WriteLog("申请发卡"+msg);
+                }
 
+                //发卡是先写卡后向云端申请
                 if (!cardreader.changekey_user(1))
                 {
                     Tool.ShowAntdModal(window, "修改扇区密钥失败");
@@ -141,10 +143,10 @@ namespace mCardSystem
 
                 int pw_type = 0;
 
-                if (pw!=string.Empty || pw_c != string.Empty)
+                if (pw != string.Empty || pw_c != string.Empty)
                 {
                     pw_type = 1;
-                    if (pw.Length %2 != 0)
+                    if (pw.Length % 2 != 0)
                     {
                         Tool.ShowAntdModal(window, "密码长度必须为偶数位");
                         return;
@@ -156,12 +158,12 @@ namespace mCardSystem
                         return;
                     }
 
-                    if (pw.Length <4 || pw.Length>12)
+                    if (pw.Length < 4 || pw.Length > 12)
                     {
                         Tool.ShowAntdModal(window, "密码长度为4-12位");
                         return;
                     }
-                
+
                 }
 
                 info.cardtype = 1;
@@ -183,27 +185,64 @@ namespace mCardSystem
                 byte[] temp = cardreader.HexStringToByteArray(ss);
                 Program.rf_encrypt(mainKeyValue, temp, 16, mac1);
                 string s11 = cardreader.ByteArrayToHexString(mac1);
-                if (!cardreader.writedata(1, 1, s11)  )
+                if (!cardreader.writedata(1, 1, s11))
                 {
                     Tool.ShowAntdModal(window, "写验证文件失败");
+
+
+                    OperateResult cres = cardreader.clearCard(info);
+                    if (!cres.result)
+                    {
+                        Logger.WriteLog("清空卡信息失败");
+                    }
+
+                    return;
                 }
 
 
                 CardPw cpw = new CardPw();
                 cpw.pwtype = pw_type;
                 cpw.pw = pw;
-                
-                if(!cardreader.writeCardPw(cpw))
+
+                if (!cardreader.writeCardPw(cpw))
                 {
                     Tool.ShowAntdModal(window, "写密码失败");
+
+                    OperateResult cres = cardreader.clearCard(info);
+                    if (!cres.result)
+                    {
+                        Logger.WriteLog("清空卡信息失败");
+                    }
+
                     return;
                 }
 
-                APIResponse<CardData> res2 = WebAPI.IssueCard("CARD1001", WebAPI.CardOperType_NewCard, WebAPI.CardOperStep_Request);
+                APIResponse<CardData> res2 = WebAPI.IssueCard("CARD1006", CardReader.phyNo);//
+
+                if (!res2.success)
+                {
+                    Tool.ShowAntdModal(window, "请求发卡失败," + res2.msg);
+
+                    OperateResult cres = cardreader.clearCard(info);
+                    if (!cres.result)
+                    { 
+                        Logger.WriteLog("清空卡信息失败");
+                    }
 
+                    return;
+                }
+                else
+                {
+                    string strcardtype = res2.data.cardtype.ToString();
+                    if (Main.dic_cardtype.ContainsKey(res2.data.cardtype))
+                    {
+                        strcardtype = Main.dic_cardtype[res2.data.cardtype];
+                    }
+                    string msg2 = "发卡成功。卡号:" + info.cardno + ",卡类型:" + strcardtype + ",账号名称:" + res2.data.accountname;
 
-                Tool.ShowAntdModal(window, "发卡成功");
-                Logger.WriteLog("发卡成功");
+                    Tool.ShowAntdModal(window, msg2);
+                    Logger.WriteLog(msg2);
+                } 
             }
             else
             {

+ 41 - 15
mCardSystem/mCardSystem/WebAPI.cs

@@ -20,11 +20,10 @@ namespace mCardSystem
         public static string CloudsUrl = "http://10.153.140.3:5076/";
 
 
-        public const string CardOperType_NewCard = "newcard";
-        public const string CardOperType_Confirm = "cancelcard";
-
-        public const string CardOperStep_Request = "request";
-        public const string CardOperStep_Confirm = "confirm";
+        public const int CardOperate_Success = 200;//成功
+        public const int CardOperate_NoCard = 201;//账户中没有该卡
+        public const int CardOperate_HasIssued = 202;//该卡已发卡
+        public const int CardOperate_MoneyNotZero = 203;//卡账户余额不为零
 
 
         /// <summary>
@@ -114,16 +113,37 @@ namespace mCardSystem
         }
 
 
-        public static APIResponse<CardData> IssueCard(string cardno,string opertype,string operstep)
+        public static APIResponse<CardData> CanIssueCard(string cardno, string phyno)
+        {
+            return CardOperate(cardno, phyno, "CanIssueCard");
+        }
+        public static APIResponse<CardData> IssueCard(string cardno, string phyno)
+        {
+            return CardOperate(cardno, phyno, "ApplyForCard");
+        }
+        public static APIResponse<CardData> CanCancelCard(string cardno, string phyno)
+        {
+            return CardOperate(cardno, phyno, "CanCancelCard");
+        }
+        public static APIResponse<CardData> CancelCard(string cardno, string phyno)
+        {
+            return CardOperate(cardno, phyno, "ApplyForCardCancellation");
+        }
+
+
+        public static APIResponse<CardData> CardOperate(string cardno,string phyno,string path)
         {
             try
             {
+                CardData cd = new CardData();
+                APIResponse<CardData> res = new APIResponse<CardData>(cd);
+
+
 
                 string jsonData = "";
-                string sdata = "?CardNo=" + cardno + "&operatetype=" + opertype + "&operatestep=" + operstep;
-                string responseResult = HttpService.Post(jsonData, CloudsUrl + "api/Auth/IssueCard" +sdata, 60, token, buid);
+                string sdata = "?CardNo=" + cardno + "&PhyNo=" + phyno;
+                string responseResult = HttpService.Post(jsonData, CloudsUrl + "api/Auth/"+path + sdata, 60, token, buid);
 
-                APIResponse<CardData> res = new APIResponse<CardData>();
 
                 if (responseResult == "" || responseResult == null)
                 {
@@ -136,12 +156,18 @@ namespace mCardSystem
                 {
                     CloudResponse<CardData> rootObject = JsonConvert.DeserializeObject<CloudResponse<CardData>>(responseResult);
 
-                    res.data.cardtype = rootObject.data.cardtype;
-                    res.data.accoutname = rootObject.data.accoutname;
-
-
-                    res.success = true;
-                    return res;
+                    if (rootObject.data.result)
+                    {
+                        res.data.cardtype = rootObject.data.cardtype;
+                        res.data.accountname = rootObject.data.accountname;
+                        res.success = true;
+                        return res;
+                    }
+                    else
+                    {
+                        res.msg = rootObject.data.message;
+                        return res;
+                    }
                 }
                 else
                 {

BIN
mCardSystem/mCardSystem/bin/x86/Debug/net8.0-windows/mCardSystem.dll


BIN
mCardSystem/mCardSystem/bin/x86/Debug/net8.0-windows/mCardSystem.exe


BIN
mCardSystem/mCardSystem/bin/x86/Debug/net8.0-windows/mCardSystem.pdb


BIN
mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/apphost.exe


+ 1 - 1
mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/mCardSystem.AssemblyInfo.cs

@@ -14,7 +14,7 @@ using System.Reflection;
 [assembly: System.Reflection.AssemblyCompanyAttribute("mCardSystem")]
 [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
 [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+78ae8a42cc427fa9655bae2f840bd8ec2043fced")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bc88cf123f771dc96fd81e5f278437c7b061211c")]
 [assembly: System.Reflection.AssemblyProductAttribute("mCardSystem")]
 [assembly: System.Reflection.AssemblyTitleAttribute("mCardSystem")]
 [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

+ 1 - 1
mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/mCardSystem.AssemblyInfoInputs.cache

@@ -1 +1 @@
-15b5e6480b9ae31aab7e18b4b531b5d87c6c0fe9b13134fdfd5711d86e447219
+a64d311826f73869301cbf6d4fb06e2c51dfc7ba1017a17aea4251f914dd6788

BIN
mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/mCardSystem.csproj.GenerateResource.cache


BIN
mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/mCardSystem.dll


BIN
mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/mCardSystem.pdb


BIN
mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/ref/mCardSystem.dll


BIN
mCardSystem/mCardSystem/obj/x86/Debug/net8.0-windows/refint/mCardSystem.dll


+ 2 - 2
文档/开发文档.docx

@@ -59,6 +59,6 @@ public byte[] HexStringToByteArray(string hexstring)
 发卡和销卡的接口,都是先查询是否允许开卡或销卡,再申请开卡或销卡。
 但发卡时,可以在查询成功后,先写卡再向云端申请开卡,这样如果向云端申请失败,可以再把卡清空(即便清空卡失败,由于云端不存在卡已发信息,所以并没有实际影响)。而如果是先申请后写卡但写卡失败,此时云端是已发卡状态,就比较难处理。
 销卡就按照正常流程在查询和申请后再清空卡就行,而即便清空失败也跟上面的一样。
-发卡和销卡步骤顺序的原则就是优先保证云端的信息是正确的
-如果需要更加严格的判断,可以在销卡写卡失败后提示卡信息清除失败,需要人为去操作清除或者暂时不再使用,特别是员工卡,由于员工卡是可能需要脱机加油的(白名单预先下到油机中),而员工卡在销卡后,油机还没能联网下载到最新白名单,所以如果卡信息没有清空的话还是可以加油的,因此必须提示处理。
+发卡和销卡步骤顺序的原则就是以云端的信息为准
+如果需要更加严格的判断,可以在销卡写卡失败后提示卡信息清除失败,需要人为去操作清除或者暂时不再使用,特别是员工卡,由于员工卡是可能需要脱机加油的(白名单预先下到油机中),而员工卡在销卡后,油机还没能联网下载到最新白名单,所以如果卡信息没有清空的话还是可以加油的,因此必须提示处理。->提示进行初始化处理
 这里也引发了一个问题,就是如果员工卡是需要挂失而且油站使用了脱机模式,那么在挂失后就必须让云端提示所有油机必须在线重新下载白名单才行。

+ 4 - 4
文档/车载机协议.docx

@@ -146,7 +146,7 @@ phyno
 result
 回复结果。true/false
 code
-回复代码。成功:200;账户中没有该卡:201;该卡已经发过:202; 
+回复代码。成功-200。账户中没有该卡-201。该卡已经发过-202。 账户余额大于0-203。
 message
 失败信息
 
@@ -165,7 +165,7 @@ phyno
 result
 回复结果。true/false
 code
-回复代码。成功:200;账户中没有该卡:201;该卡已经发过:202;
+回复代码。成功-200。账户中没有该卡-201。该卡已经发过-202。 账户余额大于0-203。
 message
 失败信息
 
@@ -196,7 +196,7 @@ phyno
 result
 回复结果。true/false
 code
-回复代码。成功:200;账户中没有该卡:201; 
+回复代码。成功-200。账户中没有该卡-201。该卡已经发过-202。 账户余额大于0-203。
 message
 失败信息
 
@@ -215,7 +215,7 @@ phyno
 result
 回复结果。true/false
 code
-回复代码。成功:200;账户中没有该卡:201; 
+回复代码。成功-200。账户中没有该卡-201。该卡已经发过-202。 账户余额大于0-203。
 message
 失败信息