diff --git a/.vs/ProjectEvaluation/presence.metadata.v9.bin b/.vs/ProjectEvaluation/presence.metadata.v9.bin new file mode 100644 index 0000000..2c5591d Binary files /dev/null and b/.vs/ProjectEvaluation/presence.metadata.v9.bin differ diff --git a/.vs/ProjectEvaluation/presence.projects.v9.bin b/.vs/ProjectEvaluation/presence.projects.v9.bin new file mode 100644 index 0000000..6e34913 Binary files /dev/null and b/.vs/ProjectEvaluation/presence.projects.v9.bin differ diff --git a/.vs/ProjectEvaluation/presence.strings.v9.bin b/.vs/ProjectEvaluation/presence.strings.v9.bin new file mode 100644 index 0000000..76d5616 Binary files /dev/null and b/.vs/ProjectEvaluation/presence.strings.v9.bin differ diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..e7af1e3 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,7 @@ +{ + "ExpandedNodes": [ + "" + ], + "SelectedNode": "\\presence.sln", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/presence/DesignTimeBuild/.dtbcache.v2 b/.vs/presence/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 0000000..3ee7eff Binary files /dev/null and b/.vs/presence/DesignTimeBuild/.dtbcache.v2 differ diff --git a/.vs/presence/FileContentIndex/281a74d0-270a-409c-ac0e-4cd972444ca4.vsidx b/.vs/presence/FileContentIndex/281a74d0-270a-409c-ac0e-4cd972444ca4.vsidx new file mode 100644 index 0000000..5a50220 Binary files /dev/null and b/.vs/presence/FileContentIndex/281a74d0-270a-409c-ac0e-4cd972444ca4.vsidx differ diff --git a/.vs/presence/FileContentIndex/c6fe1fdf-5323-4f05-9e55-b0f56f37527a.vsidx b/.vs/presence/FileContentIndex/c6fe1fdf-5323-4f05-9e55-b0f56f37527a.vsidx new file mode 100644 index 0000000..e783ea3 Binary files /dev/null and b/.vs/presence/FileContentIndex/c6fe1fdf-5323-4f05-9e55-b0f56f37527a.vsidx differ diff --git a/.vs/presence/FileContentIndex/e4639bf2-a12f-4c50-bfae-0885bf469289.vsidx b/.vs/presence/FileContentIndex/e4639bf2-a12f-4c50-bfae-0885bf469289.vsidx new file mode 100644 index 0000000..2972d2c Binary files /dev/null and b/.vs/presence/FileContentIndex/e4639bf2-a12f-4c50-bfae-0885bf469289.vsidx differ diff --git a/.vs/presence/v17/.futdcache.v2 b/.vs/presence/v17/.futdcache.v2 new file mode 100644 index 0000000..cd140ba Binary files /dev/null and b/.vs/presence/v17/.futdcache.v2 differ diff --git a/.vs/presence/v17/.suo b/.vs/presence/v17/.suo new file mode 100644 index 0000000..dc2d244 Binary files /dev/null and b/.vs/presence/v17/.suo differ diff --git a/.vs/presence/v17/DocumentLayout.backup.json b/.vs/presence/v17/DocumentLayout.backup.json new file mode 100644 index 0000000..c28e883 --- /dev/null +++ b/.vs/presence/v17/DocumentLayout.backup.json @@ -0,0 +1,264 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\IVAN\\source\\repos\\presence_new\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{7E1D482B-6976-4984-85C3-AE6E789E7FC2}|data\\data.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\data\\repository\\igrouprepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{7E1D482B-6976-4984-85C3-AE6E789E7FC2}|data\\data.csproj|solutionrelative:data\\repository\\igrouprepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\views\\mainwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\views\\mainwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\views\\edituserdialog.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\views\\edituserdialog.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\views\\edituserdialog.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\views\\edituserdialog.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\app.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\app.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\views\\mainwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\views\\mainwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\viewmodels\\mainwindowviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\viewmodels\\mainwindowviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\di\\servicecollectionextensions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\di\\servicecollectionextensions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\viewmodels\\grouppresenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\viewmodels\\grouppresenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{53B2C28F-CCC6-4399-BA63-8A21E2D26B73}|domain\\domain.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\domain\\usecase\\groupusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{53B2C28F-CCC6-4399-BA63-8A21E2D26B73}|domain\\domain.csproj|solutionrelative:domain\\usecase\\groupusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{7E1D482B-6976-4984-85C3-AE6E789E7FC2}|data\\data.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\data\\repository\\sqlgrouprepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{7E1D482B-6976-4984-85C3-AE6E789E7FC2}|data\\data.csproj|solutionrelative:data\\repository\\sqlgrouprepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\viewmodels\\viewmodelbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\viewmodels\\viewmodelbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\viewmodels\\userpresenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\viewmodels\\userpresenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\presence.desktop.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\presence.desktop.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 4, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "App.axaml", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\App.axaml", + "RelativeDocumentMoniker": "Presence.Desktop\\App.axaml", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\App.axaml", + "RelativeToolTip": "Presence.Desktop\\App.axaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2024-12-13T15:02:35.067Z" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "GroupUseCase.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\domain\\UseCase\\GroupUseCase.cs", + "RelativeDocumentMoniker": "domain\\UseCase\\GroupUseCase.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\domain\\UseCase\\GroupUseCase.cs", + "RelativeToolTip": "domain\\UseCase\\GroupUseCase.cs", + "ViewState": "AgIAAMAAAAAAAAAAAAAiwMIAAAAsAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:47:04.208Z" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "SQLGroupRepositoryImpl.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\data\\Repository\\SQLGroupRepositoryImpl.cs", + "RelativeDocumentMoniker": "data\\Repository\\SQLGroupRepositoryImpl.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\data\\Repository\\SQLGroupRepositoryImpl.cs", + "RelativeToolTip": "data\\Repository\\SQLGroupRepositoryImpl.cs", + "ViewState": "AgIAAIgAAAAAAAAAAAAYwAcAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:45:43.361Z" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "IGroupRepository.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\data\\Repository\\IGroupRepository.cs", + "RelativeDocumentMoniker": "data\\Repository\\IGroupRepository.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\data\\Repository\\IGroupRepository.cs*", + "RelativeToolTip": "data\\Repository\\IGroupRepository.cs*", + "ViewState": "AgIAABIAAAAAAAAAAAAgwBwAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:45:03.98Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "MainWindow.axaml.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\MainWindow.axaml.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\Views\\MainWindow.axaml.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\MainWindow.axaml.cs", + "RelativeToolTip": "Presence.Desktop\\Views\\MainWindow.axaml.cs", + "ViewState": "AgIAAAIAAAAAAAAAAAAswBIAAAAqAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:37:01.361Z" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "EditUserDialog.axaml.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\EditUserDialog.axaml.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\Views\\EditUserDialog.axaml.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\EditUserDialog.axaml.cs", + "RelativeToolTip": "Presence.Desktop\\Views\\EditUserDialog.axaml.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAADgAAAABAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:36:41.729Z" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "EditUserDialog.axaml", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\EditUserDialog.axaml", + "RelativeDocumentMoniker": "Presence.Desktop\\Views\\EditUserDialog.axaml", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\EditUserDialog.axaml", + "RelativeToolTip": "Presence.Desktop\\Views\\EditUserDialog.axaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2024-12-13T14:36:31.945Z" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "App.axaml.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\App.axaml.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\App.axaml.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\App.axaml.cs", + "RelativeToolTip": "Presence.Desktop\\App.axaml.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAACUAAABAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:28:53.505Z" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "GroupPresenter.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\GroupPresenter.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\ViewModels\\GroupPresenter.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\GroupPresenter.cs", + "RelativeToolTip": "Presence.Desktop\\ViewModels\\GroupPresenter.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:14:43.738Z" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "ServiceCollectionExtensions.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\DI\\ServiceCollectionExtensions.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\DI\\ServiceCollectionExtensions.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\DI\\ServiceCollectionExtensions.cs", + "RelativeToolTip": "Presence.Desktop\\DI\\ServiceCollectionExtensions.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAABAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:21:03.301Z" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "ViewModelBase.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\ViewModelBase.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\ViewModels\\ViewModelBase.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\ViewModelBase.cs", + "RelativeToolTip": "Presence.Desktop\\ViewModels\\ViewModelBase.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:17:35.105Z" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "UserPresenter.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\UserPresenter.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\ViewModels\\UserPresenter.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\UserPresenter.cs", + "RelativeToolTip": "Presence.Desktop\\ViewModels\\UserPresenter.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:17:34.491Z" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "MainWindowViewModel.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\MainWindowViewModel.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\ViewModels\\MainWindowViewModel.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\MainWindowViewModel.cs", + "RelativeToolTip": "Presence.Desktop\\ViewModels\\MainWindowViewModel.cs", + "ViewState": "AgIAACwAAAAAAAAAAAA8wAwAAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:14:44.024Z" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "MainWindow.axaml", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\MainWindow.axaml", + "RelativeDocumentMoniker": "Presence.Desktop\\Views\\MainWindow.axaml", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\MainWindow.axaml", + "RelativeToolTip": "Presence.Desktop\\Views\\MainWindow.axaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2024-12-13T14:14:21.648Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "Presence.Desktop.csproj", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Presence.Desktop.csproj", + "RelativeDocumentMoniker": "Presence.Desktop\\Presence.Desktop.csproj", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Presence.Desktop.csproj", + "RelativeToolTip": "Presence.Desktop\\Presence.Desktop.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-12-13T14:14:11.546Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/presence/v17/DocumentLayout.json b/.vs/presence/v17/DocumentLayout.json new file mode 100644 index 0000000..657c049 --- /dev/null +++ b/.vs/presence/v17/DocumentLayout.json @@ -0,0 +1,265 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\IVAN\\source\\repos\\presence_new\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\views\\edituserdialog.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\views\\edituserdialog.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{7E1D482B-6976-4984-85C3-AE6E789E7FC2}|data\\data.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\data\\repository\\igrouprepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{7E1D482B-6976-4984-85C3-AE6E789E7FC2}|data\\data.csproj|solutionrelative:data\\repository\\igrouprepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\views\\mainwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\views\\mainwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\views\\edituserdialog.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\views\\edituserdialog.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\app.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\app.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\views\\mainwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\views\\mainwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\viewmodels\\mainwindowviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\viewmodels\\mainwindowviewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\di\\servicecollectionextensions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\di\\servicecollectionextensions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\viewmodels\\grouppresenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\viewmodels\\grouppresenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{53B2C28F-CCC6-4399-BA63-8A21E2D26B73}|domain\\domain.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\domain\\usecase\\groupusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{53B2C28F-CCC6-4399-BA63-8A21E2D26B73}|domain\\domain.csproj|solutionrelative:domain\\usecase\\groupusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{7E1D482B-6976-4984-85C3-AE6E789E7FC2}|data\\data.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\data\\repository\\sqlgrouprepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{7E1D482B-6976-4984-85C3-AE6E789E7FC2}|data\\data.csproj|solutionrelative:data\\repository\\sqlgrouprepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\viewmodels\\viewmodelbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\viewmodels\\viewmodelbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\viewmodels\\userpresenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\viewmodels\\userpresenter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|c:\\users\\ivan\\source\\repos\\presence_new\\presence.desktop\\presence.desktop.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{4A745F7C-B312-4411-AA95-5862597C7B0B}|Presence.Desktop\\Presence.Desktop.csproj|solutionrelative:presence.desktop\\presence.desktop.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 6, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "App.axaml", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\App.axaml", + "RelativeDocumentMoniker": "Presence.Desktop\\App.axaml", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\App.axaml", + "RelativeToolTip": "Presence.Desktop\\App.axaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2024-12-13T15:02:35.067Z" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "GroupUseCase.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\domain\\UseCase\\GroupUseCase.cs", + "RelativeDocumentMoniker": "domain\\UseCase\\GroupUseCase.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\domain\\UseCase\\GroupUseCase.cs", + "RelativeToolTip": "domain\\UseCase\\GroupUseCase.cs", + "ViewState": "AgIAAMAAAAAAAAAAAAAiwMIAAAAsAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:47:04.208Z" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "SQLGroupRepositoryImpl.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\data\\Repository\\SQLGroupRepositoryImpl.cs", + "RelativeDocumentMoniker": "data\\Repository\\SQLGroupRepositoryImpl.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\data\\Repository\\SQLGroupRepositoryImpl.cs", + "RelativeToolTip": "data\\Repository\\SQLGroupRepositoryImpl.cs", + "ViewState": "AgIAAIgAAAAAAAAAAAAYwAcAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:45:43.361Z" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "IGroupRepository.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\data\\Repository\\IGroupRepository.cs", + "RelativeDocumentMoniker": "data\\Repository\\IGroupRepository.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\data\\Repository\\IGroupRepository.cs", + "RelativeToolTip": "data\\Repository\\IGroupRepository.cs", + "ViewState": "AgIAAA0AAAAAAAAAAAAgwBwAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:45:03.98Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "MainWindow.axaml.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\MainWindow.axaml.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\Views\\MainWindow.axaml.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\MainWindow.axaml.cs", + "RelativeToolTip": "Presence.Desktop\\Views\\MainWindow.axaml.cs", + "ViewState": "AgIAAAIAAAAAAAAAAAAswBIAAAAqAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:37:01.361Z" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "EditUserDialog.axaml.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\EditUserDialog.axaml.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\Views\\EditUserDialog.axaml.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\EditUserDialog.axaml.cs", + "RelativeToolTip": "Presence.Desktop\\Views\\EditUserDialog.axaml.cs", + "ViewState": "AgIAACUAAAAAAAAAAAAgwDgAAAABAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:36:41.729Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "EditUserDialog.axaml", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\EditUserDialog.axaml", + "RelativeDocumentMoniker": "Presence.Desktop\\Views\\EditUserDialog.axaml", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\EditUserDialog.axaml", + "RelativeToolTip": "Presence.Desktop\\Views\\EditUserDialog.axaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2024-12-13T14:36:31.945Z" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "App.axaml.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\App.axaml.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\App.axaml.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\App.axaml.cs", + "RelativeToolTip": "Presence.Desktop\\App.axaml.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAACUAAABAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:28:53.505Z" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "GroupPresenter.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\GroupPresenter.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\ViewModels\\GroupPresenter.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\GroupPresenter.cs", + "RelativeToolTip": "Presence.Desktop\\ViewModels\\GroupPresenter.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:14:43.738Z" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "ServiceCollectionExtensions.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\DI\\ServiceCollectionExtensions.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\DI\\ServiceCollectionExtensions.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\DI\\ServiceCollectionExtensions.cs", + "RelativeToolTip": "Presence.Desktop\\DI\\ServiceCollectionExtensions.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAABAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:21:03.301Z" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "ViewModelBase.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\ViewModelBase.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\ViewModels\\ViewModelBase.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\ViewModelBase.cs", + "RelativeToolTip": "Presence.Desktop\\ViewModels\\ViewModelBase.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:17:35.105Z" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "UserPresenter.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\UserPresenter.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\ViewModels\\UserPresenter.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\UserPresenter.cs", + "RelativeToolTip": "Presence.Desktop\\ViewModels\\UserPresenter.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:17:34.491Z" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "MainWindowViewModel.cs", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\MainWindowViewModel.cs", + "RelativeDocumentMoniker": "Presence.Desktop\\ViewModels\\MainWindowViewModel.cs", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\ViewModels\\MainWindowViewModel.cs", + "RelativeToolTip": "Presence.Desktop\\ViewModels\\MainWindowViewModel.cs", + "ViewState": "AgIAACwAAAAAAAAAAAA8wAwAAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-12-13T14:14:44.024Z" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "MainWindow.axaml", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\MainWindow.axaml", + "RelativeDocumentMoniker": "Presence.Desktop\\Views\\MainWindow.axaml", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Views\\MainWindow.axaml", + "RelativeToolTip": "Presence.Desktop\\Views\\MainWindow.axaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2024-12-13T14:14:21.648Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "Presence.Desktop.csproj", + "DocumentMoniker": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Presence.Desktop.csproj", + "RelativeDocumentMoniker": "Presence.Desktop\\Presence.Desktop.csproj", + "ToolTip": "C:\\Users\\IVAN\\source\\repos\\presence_new\\Presence.Desktop\\Presence.Desktop.csproj", + "RelativeToolTip": "Presence.Desktop\\Presence.Desktop.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-12-13T14:14:11.546Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/presence_new/v17/.wsuo b/.vs/presence_new/v17/.wsuo new file mode 100644 index 0000000..644bf91 Binary files /dev/null and b/.vs/presence_new/v17/.wsuo differ diff --git a/.vs/presence_new/v17/DocumentLayout.json b/.vs/presence_new/v17/DocumentLayout.json new file mode 100644 index 0000000..6bb4aca --- /dev/null +++ b/.vs/presence_new/v17/DocumentLayout.json @@ -0,0 +1,23 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\IVAN\\source\\repos\\presence_new\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": -1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Presence.Desktop/App.axaml b/Presence.Desktop/App.axaml index eea6afa..6e40e93 100644 --- a/Presence.Desktop/App.axaml +++ b/Presence.Desktop/App.axaml @@ -3,13 +3,13 @@ x:Class="Presence.Desktop.App" xmlns:local="using:Presence.Desktop" RequestedThemeVariant="Default"> - + - - - - - - - + + + + + + + \ No newline at end of file diff --git a/Presence.Desktop/App.axaml.cs b/Presence.Desktop/App.axaml.cs index 3a44d18..dcc513c 100644 --- a/Presence.Desktop/App.axaml.cs +++ b/Presence.Desktop/App.axaml.cs @@ -5,6 +5,7 @@ using Microsoft.Extensions.DependencyInjection; using Presence.Desktop.DI; using Presence.Desktop.ViewModels; using Presence.Desktop.Views; +using domain.UseCase; namespace Presence.Desktop { @@ -14,19 +15,27 @@ namespace Presence.Desktop { AvaloniaXamlLoader.Load(this); } - - - public override void OnFrameworkInitializationCompleted() { var serviceCollection = new ServiceCollection(); serviceCollection.AddCommonService(); + + + serviceCollection.AddSingleton(); + + var services = serviceCollection.BuildServiceProvider(); var mainViewModel = services.GetRequiredService(); + + + var groupUseCase = services.GetRequiredService(); + + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { - desktop.MainWindow = new MainWindow + + desktop.MainWindow = new MainWindow(groupUseCase) { DataContext = mainViewModel, }; @@ -34,6 +43,5 @@ namespace Presence.Desktop base.OnFrameworkInitializationCompleted(); } - } -} \ No newline at end of file +} diff --git a/Presence.Desktop/DI/ServiceCollectionExtensions.cs b/Presence.Desktop/DI/ServiceCollectionExtensions.cs index 2dccf29..de132d4 100644 --- a/Presence.Desktop/DI/ServiceCollectionExtensions.cs +++ b/Presence.Desktop/DI/ServiceCollectionExtensions.cs @@ -1,9 +1,8 @@ -using Microsoft.Extensions.DependencyInjection; -using data; +using data.RemoteData.RemoteDataBase; using data.Repository; -using data.RemoteData.RemoteDataBase; -using Presence.Desktop.ViewModels; using domain.UseCase; +using Microsoft.Extensions.DependencyInjection; +using Presence.Desktop.ViewModels; namespace Presence.Desktop.DI { @@ -12,10 +11,14 @@ namespace Presence.Desktop.DI public static void AddCommonService(this IServiceCollection collection) { collection - .AddSingleton() .AddDbContext() - .AddTransient() - .AddTransient(); + .AddSingleton() + .AddSingleton() + .AddSingleton() + .AddSingleton() + .AddSingleton() + .AddTransient() + .AddTransient(); } } -} +} \ No newline at end of file diff --git a/Presence.Desktop/ViewModels/MainWindowViewModel.cs b/Presence.Desktop/ViewModels/MainWindowViewModel.cs index d9ea543..79ca60c 100644 --- a/Presence.Desktop/ViewModels/MainWindowViewModel.cs +++ b/Presence.Desktop/ViewModels/MainWindowViewModel.cs @@ -1,112 +1,235 @@ -using domain.UseCase; -using Presence.Desktop.ViewModels; +using Avalonia.Controls.ApplicationLifetimes; +using domain.Models; +using domain.UseCase; +using Presence.Desktop.Views; using ReactiveUI; -using System.Collections.ObjectModel; -using System.Windows.Input; -using System.Linq; -using System.Reactive.Linq; using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reactive; +using System.Reactive.Linq; +using System.Windows.Input; +using Avalonia; -public class MainWindowViewModel : ViewModelBase +namespace Presence.Desktop.ViewModels { - private readonly GroupUseCase _groupUseCase; - private ObservableCollection _groups; - public ObservableCollection Groups => _groups; - - private GroupPresenter? _selectedGroupItem; - public GroupPresenter? SelectedGroupItem + public class MainWindowViewModel : ViewModelBase { - get => _selectedGroupItem; - set => this.RaiseAndSetIfChanged(ref _selectedGroupItem, value); - } + private readonly GroupUseCase _groupUseCase; + private List groupPresentersDataSource = new List(); + private ObservableCollection _groups; + public ObservableCollection Groups => _groups; - private ObservableCollection _users; - public ObservableCollection Users => _users; + private GroupPresenter? _selectedGroupItem; + public GroupPresenter? SelectedGroupItem + { + get => _selectedGroupItem; + set => this.RaiseAndSetIfChanged(ref _selectedGroupItem, value); + } - public UserPresenter? SelectedUser - { - get => _selectedUser; - set => this.RaiseAndSetIfChanged(ref _selectedUser, value); - } - private UserPresenter? _selectedUser; + public ObservableCollection Users { get => _users; } + private ObservableCollection _users; - public ObservableCollection SelectedUsers { get; } = new ObservableCollection(); + // Список опций сортировки + public List SortOptions { get; } = new List { "По фамилии", "По убыванию" }; - public ICommand RemoveSelectedStudentsCommand { get; } - public ICommand EditStudentCommand { get; } - public ICommand RemoveSingleStudentCommand { get; } + private string _selectedSortOption; + public string SelectedSortOption + { + get => _selectedSortOption; + set => this.RaiseAndSetIfChanged(ref _selectedSortOption, value); + } - public MainWindowViewModel(GroupUseCase groupUseCase) - { - _groupUseCase = groupUseCase; + public bool CanDelete => SelectedUsers?.Count > 0; + public bool CanEdit => SelectedUsers?.Count == 1; - _groups = new ObservableCollection( - groupUseCase.GetAllGroupWithStident().Select(group => new GroupPresenter + public ObservableCollection SelectedUsers { get; set; } = new ObservableCollection(); + + public ReactiveCommand OnDeleteUserClicks { get; } + public ReactiveCommand EditUserCommand { get; } + public ICommand RemoveAllStudentsCommand { get; } + public ICommand AddStudentCommand { get; } + + public MainWindowViewModel(GroupUseCase groupUseCase) + { + _groupUseCase = groupUseCase; + + OnDeleteUserClicks = ReactiveCommand.Create(OnDeleteUserClick, this.WhenAnyValue(vm => vm.CanDelete)); + EditUserCommand = ReactiveCommand.Create(OnEditUserClick, this.WhenAnyValue(vm => vm.CanEdit)); + + RefreshGroups(); + + _groups = new ObservableCollection(groupPresentersDataSource); + _users = new ObservableCollection(); + + this.WhenAnyValue(vm => vm.SelectedGroupItem) + .Subscribe(vm => SetUsers()); + + this.WhenAnyValue(vm => vm.SelectedSortOption) + .Subscribe(_ => SortUsers()); + + RemoveAllStudentsCommand = ReactiveCommand.Create(RemoveAllStudents); + AddStudentCommand = ReactiveCommand.Create(AddStudent); + + SelectedUsers.CollectionChanged += (s, e) => { - Id = group.Id, - Name = group.Name, - users = group.Users?.Select(user => new UserPresenter + this.RaisePropertyChanged(nameof(CanDelete)); + this.RaisePropertyChanged(nameof(CanEdit)); + }; + } + + private void SetUsers() + { + if (SelectedGroupItem?.users == null) return; + + Users.Clear(); + foreach (var item in SelectedGroupItem.users) + { + Users.Add(item); + } + + SortUsers(); + } + + private void SortUsers() + { + if (SelectedGroupItem?.users == null) return; + + var sortedUsers = SelectedGroupItem.users.ToList(); + + switch (SelectedSortOption) + { + case "По фамилии": + sortedUsers = sortedUsers.OrderBy(u => u.Name).ToList(); + break; + case "По убыванию": + sortedUsers = sortedUsers.OrderByDescending(u => u.Name).ToList(); + break; + } + + Users.Clear(); + foreach (var item in sortedUsers) + { + Users.Add(item); + } + } + + private void RemoveAllStudents() + { + if (SelectedGroupItem == null) return; + + _groupUseCase.RemoveAllStudentsFromGroup(SelectedGroupItem.Id); + SelectedGroupItem.users = new List(); + SetUsers(); + } + + private void AddStudent() + { + if (SelectedGroupItem == null) return; + + var newStudent = new UserPresenter + { + Name = "Новый студент", + Guid = Guid.NewGuid(), + Group = SelectedGroupItem + }; + + _groupUseCase.AddStudentToGroup(SelectedGroupItem.Id, new User + { + Guid = newStudent.Guid, + FIO = newStudent.Name + }); + + var updatedUsers = SelectedGroupItem.users?.ToList() ?? new List(); + updatedUsers.Add(newStudent); + SelectedGroupItem.users = updatedUsers; + SetUsers(); + } + + public void OnDeleteUserClick() + { + if (SelectedUsers.Count == 0 || SelectedGroupItem?.users == null) + return; + + foreach (var user in SelectedUsers.ToList()) + { + _groupUseCase.RemoveUserByGuid(user.Guid); + + var updatedUsers = SelectedGroupItem.users.Where(u => u.Guid != user.Guid).ToList(); + SelectedGroupItem.users = new List(updatedUsers); + } + + SetUsers(); + SelectedUsers.Clear(); + this.RaisePropertyChanged(nameof(CanDelete)); + this.RaisePropertyChanged(nameof(CanEdit)); + } + + public async void OnEditUserClick() + { + var user = SelectedUsers.FirstOrDefault(); + if (user == null) return; + + var groups = _groupUseCase.GetAllGroups(); + + // Преобразуем группы из domain.Models.Group в GroupPresenter + var groupPresenters = groups.Select(g => new GroupPresenter + { + Id = g.Id, + Name = g.Name, + users = g.Users?.Select(u => new UserPresenter { - Name = user.FIO, - Guid = user.Guid, - Group = new GroupPresenter { Id = group.Id, Name = group.Name } + Name = u.FIO, + Guid = u.Guid, + Group = new GroupPresenter { Id = g.Id, Name = g.Name } }).ToList() - }) - ); + }).ToList(); - _users = new ObservableCollection(); + var editDialog = new EditUserDialog(user.Guid, user.Name, user.Group.Id, groupPresenters); - this.WhenAnyValue(vm => vm.SelectedGroupItem) - .ObserveOn(RxApp.MainThreadScheduler) - .Subscribe(_ => SetUsers(), ex => Console.WriteLine($"Ошибка: {ex.Message}")); + var mainWindow = (Application.Current.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime)?.MainWindow; + if (mainWindow == null) return; - EditStudentCommand = ReactiveCommand.Create(EditStudent); - RemoveSingleStudentCommand = ReactiveCommand.Create(RemoveSingleStudent); - RemoveSelectedStudentsCommand = ReactiveCommand.Create(RemoveSelectedStudents); - } + var result = await editDialog.ShowDialog(mainWindow); - private void RemoveSelectedStudents() - { - if (SelectedUsers.Count == 0) return; + if (result != (null, null)) + { + var newName = result.Item1; + var newGroup = result.Item2; - foreach (var user in SelectedUsers.ToList()) - { - _groupUseCase.RemoveStudentFromGroup(user.Group.Id, user.Guid); + user.Name = newName; + user.Group = newGroup; - // Удаляем из локального списка - SelectedGroupItem?.users?.ToList().Remove(user); + _groupUseCase.UpdateUser(user.Guid, user.Name, user.Group.Id); + + SetUsers(); + SelectedUsers.Clear(); + this.RaisePropertyChanged(nameof(CanEdit)); + this.RaisePropertyChanged(nameof(CanDelete)); + } + RefreshGroups(); } - SelectedUsers.Clear(); - SetUsers(); - } - - private void RemoveSingleStudent() - { - if (SelectedUser == null) return; - - _groupUseCase.RemoveStudentFromGroup(SelectedUser.Group.Id, SelectedUser.Guid); - - SelectedGroupItem?.users?.ToList().Remove(SelectedUser); - SetUsers(); - } - - private void EditStudent() - { - if (SelectedUser == null) return; - - // Пример изменения имени - SelectedUser.Name = "Изменённое имя"; - } - - private void SetUsers() - { - Users.Clear(); - if (SelectedGroupItem?.users == null) return; - - foreach (var user in SelectedGroupItem.users) + private void RefreshGroups() { - Users.Add(user); + groupPresentersDataSource.Clear(); + foreach (var item in _groupUseCase.GetAllGroups()) + { + GroupPresenter groupPresenter = new GroupPresenter + { + Id = item.Id, + Name = item.Name, + users = item.Users?.Select(user => new UserPresenter + { + Name = user.FIO, + Guid = user.Guid, + Group = new GroupPresenter { Id = item.Id, Name = item.Name } + }).ToList() + }; + groupPresentersDataSource.Add(groupPresenter); + } + _groups = new ObservableCollection(groupPresentersDataSource); } } -} +} \ No newline at end of file diff --git a/Presence.Desktop/Views/EditUserDialog.axaml b/Presence.Desktop/Views/EditUserDialog.axaml new file mode 100644 index 0000000..2b0633c --- /dev/null +++ b/Presence.Desktop/Views/EditUserDialog.axaml @@ -0,0 +1,6 @@ + + + diff --git a/Presence.Desktop/Views/EditUserDialog.axaml.cs b/Presence.Desktop/Views/EditUserDialog.axaml.cs new file mode 100644 index 0000000..afeb15e --- /dev/null +++ b/Presence.Desktop/Views/EditUserDialog.axaml.cs @@ -0,0 +1,57 @@ +using Avalonia.Controls; +using Avalonia.Controls.Templates; +using Presence.Desktop.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Presence.Desktop +{ + public partial class EditUserDialog : Window + { + private TextBox _nameTextBox; + private ComboBox _groupComboBox; + + public EditUserDialog(Guid currentUserId, string currentName, int currentGroupId, List groups) + { + _nameTextBox = new TextBox { Text = currentName }; + + _groupComboBox = new ComboBox + { + ItemsSource = groups, + SelectedItem = groups.FirstOrDefault(g => g.Id == currentGroupId), + ItemTemplate = new FuncDataTemplate((group, _) => + new TextBlock { Text = group.Name }) + }; + + var confirmButton = new Button { Content = "OK" }; + confirmButton.Click += (sender, args) => + { + var newFio = _nameTextBox.Text; + var selectedGroup = (GroupPresenter)_groupComboBox.SelectedItem; + + if (selectedGroup != null) + { + var newGroupId = selectedGroup.Id; + this.Close(); + } + }; + + Content = new StackPanel + { + Children = { _nameTextBox, _groupComboBox, confirmButton } + }; + } + + public async Task<(string, GroupPresenter)> ShowDialog(Window parent) + { + await base.ShowDialog(parent); + + var name = _nameTextBox.Text; + var groupId = (GroupPresenter)_groupComboBox.SelectedItem; + + return (name, groupId); + } + } +} \ No newline at end of file diff --git a/Presence.Desktop/Views/MainWindow.axaml b/Presence.Desktop/Views/MainWindow.axaml index 8595cbb..10a4eaa 100644 --- a/Presence.Desktop/Views/MainWindow.axaml +++ b/Presence.Desktop/Views/MainWindow.axaml @@ -7,13 +7,15 @@ x:Class="Presence.Desktop.Views.MainWindow" Icon="/Assets/avalonia-logo.ico" Title="Presence.Desktop" - x:DataType="vm:MainWindowViewModel"> + x:DataType="vm:MainWindowViewModel" + xmlns:local="clr-namespace:Presence.Desktop.ViewModels" + DataContext="{Binding RelativeSource={RelativeSource Self}}"> - + @@ -22,42 +24,42 @@ - + + +