This commit is contained in:
adm 2024-11-11 12:11:33 +03:00
commit 921cd9d9bc
99 changed files with 8913 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.vs/presnce/v17/.suo Normal file

Binary file not shown.

View File

@ -0,0 +1,598 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\adm\\source\\repos\\presence\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|c:\\users\\adm\\source\\repos\\presence\\ui\\groupconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|solutionrelative:ui\\groupconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{F798197F-432C-4AFF-AAC1-EB1664094999}|console_ui\\console_ui.csproj|c:\\users\\adm\\source\\repos\\presence\\console_ui\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{F798197F-432C-4AFF-AAC1-EB1664094999}|console_ui\\console_ui.csproj|solutionrelative:console_ui\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|c:\\users\\adm\\source\\repos\\presence\\ui\\userconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|solutionrelative:ui\\userconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|c:\\users\\adm\\source\\repos\\presence\\ui\\presenceconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|solutionrelative:ui\\presenceconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|c:\\users\\adm\\source\\repos\\presence\\ui\\mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|solutionrelative:ui\\mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\usecase\\userusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\usecase\\userusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\usecase\\usecasegeneratepresence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\usecase\\usecasegeneratepresence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\usecase\\groupusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\usecase\\groupusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\models\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\models\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\models\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\models\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\models\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\models\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\sqluserrepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\sqluserrepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\exceptions\\groupnotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\exceptions\\groupnotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\exceptions\\usernotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\exceptions\\usernotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\exceptions\\reposiyoryexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\exceptions\\reposiyoryexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\exceptions\\presencenotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\exceptions\\presencenotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\sqlpresencerepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\sqlpresencerepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\sqlgrouprepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\sqlgrouprepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\iuserrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\iuserrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\ipresencerepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\ipresencerepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\igrouprepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\igrouprepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\attendancerecord.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\attendancerecord.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\userattendance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\userattendance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\groupattendancestatistics.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\groupattendancestatistics.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\remotedatabasecontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\remotedatabasecontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\remotedatabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\remotedatabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\data.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\data.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\localdata\\localstaticdata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\localdata\\localstaticdata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\localdata\\entity\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\localdata\\entity\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\localdata\\entity\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\localdata\\entity\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\localdata\\entity\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\localdata\\entity\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 4,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Program.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\Program.cs",
"RelativeDocumentMoniker": "console_ui\\Program.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\Program.cs",
"RelativeToolTip": "console_ui\\Program.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:09:41.684Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "UserConsole.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\ui\\UserConsole.cs",
"RelativeDocumentMoniker": "ui\\UserConsole.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\ui\\UserConsole.cs",
"RelativeToolTip": "ui\\UserConsole.cs",
"ViewState": "AgIAACwAAAAAAAAAAAAswEIAAAAuAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:09:28.168Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "PresenceConsole.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\ui\\PresenceConsole.cs",
"RelativeDocumentMoniker": "ui\\PresenceConsole.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\ui\\PresenceConsole.cs",
"RelativeToolTip": "ui\\PresenceConsole.cs",
"ViewState": "AgIAAJgAAAAAAAAAAADwv7sAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:09:06.917Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "MainMenu.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\ui\\MainMenu.cs",
"RelativeDocumentMoniker": "ui\\MainMenu.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\ui\\MainMenu.cs",
"RelativeToolTip": "ui\\MainMenu.cs",
"ViewState": "AgIAALoAAAAAAAAAAADwv98AAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:08:48.7Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "GroupConsole.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\ui\\GroupConsole.cs",
"RelativeDocumentMoniker": "ui\\GroupConsole.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\ui\\GroupConsole.cs",
"RelativeToolTip": "ui\\GroupConsole.cs",
"ViewState": "AgIAABUAAAAAAAAAAADwvxwAAAANAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:07:40.217Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "UserUseCase.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\UserUseCase.cs",
"RelativeDocumentMoniker": "domain\\UseCase\\UserUseCase.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\UserUseCase.cs",
"RelativeToolTip": "domain\\UseCase\\UserUseCase.cs",
"ViewState": "AgIAAG0AAAAAAAAAAADwv5IAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:00:40.546Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "UseCaseGeneratePresence.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\UseCaseGeneratePresence.cs",
"RelativeDocumentMoniker": "domain\\UseCase\\UseCaseGeneratePresence.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\UseCaseGeneratePresence.cs",
"RelativeToolTip": "domain\\UseCase\\UseCaseGeneratePresence.cs",
"ViewState": "AgIAAJsAAAAAAAAAAADwv8AAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:00:21.887Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "GroupUseCase.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\GroupUseCase.cs",
"RelativeDocumentMoniker": "domain\\UseCase\\GroupUseCase.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\GroupUseCase.cs",
"RelativeToolTip": "domain\\UseCase\\GroupUseCase.cs",
"ViewState": "AgIAADIAAAAAAAAAAADwv1cAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:00:07.44Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "User.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\User.cs",
"RelativeDocumentMoniker": "domain\\Models\\User.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\User.cs",
"RelativeToolTip": "domain\\Models\\User.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:59:54.585Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "Presence.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\Presence.cs",
"RelativeDocumentMoniker": "domain\\Models\\Presence.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\Presence.cs",
"RelativeToolTip": "domain\\Models\\Presence.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:59:36.998Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 10,
"Title": "Group.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\Group.cs",
"RelativeDocumentMoniker": "domain\\Models\\Group.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\Group.cs",
"RelativeToolTip": "domain\\Models\\Group.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:59:26.921Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 13,
"Title": "UserNotFoundException.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\UserNotFoundException.cs",
"RelativeDocumentMoniker": "data\\Exceptions\\UserNotFoundException.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\UserNotFoundException.cs",
"RelativeToolTip": "data\\Exceptions\\UserNotFoundException.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:57:51.123Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 14,
"Title": "ReposiyoryException.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\ReposiyoryException.cs",
"RelativeDocumentMoniker": "data\\Exceptions\\ReposiyoryException.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\ReposiyoryException.cs",
"RelativeToolTip": "data\\Exceptions\\ReposiyoryException.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:57:33.519Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 15,
"Title": "PresenceNotFoundException.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\PresenceNotFoundException.cs",
"RelativeDocumentMoniker": "data\\Exceptions\\PresenceNotFoundException.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\PresenceNotFoundException.cs",
"RelativeToolTip": "data\\Exceptions\\PresenceNotFoundException.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:57:13.497Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 12,
"Title": "GroupNotFoundException.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\GroupNotFoundException.cs",
"RelativeDocumentMoniker": "data\\Exceptions\\GroupNotFoundException.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\GroupNotFoundException.cs",
"RelativeToolTip": "data\\Exceptions\\GroupNotFoundException.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:56:51.379Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 11,
"Title": "SQLUserRepositoryImpl.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLUserRepositoryImpl.cs",
"RelativeDocumentMoniker": "data\\Repository\\SQLUserRepositoryImpl.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLUserRepositoryImpl.cs",
"RelativeToolTip": "data\\Repository\\SQLUserRepositoryImpl.cs",
"ViewState": "AgIAABgAAAAAAAAAAADwvycAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:55:51.634Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 16,
"Title": "SQLPresenceRepositoryImpl.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLPresenceRepositoryImpl.cs",
"RelativeDocumentMoniker": "data\\Repository\\SQLPresenceRepositoryImpl.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLPresenceRepositoryImpl.cs",
"RelativeToolTip": "data\\Repository\\SQLPresenceRepositoryImpl.cs",
"ViewState": "AgIAALcAAAAAAAAAAADwv9wAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:55:31.55Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 17,
"Title": "SQLGroupRepositoryImpl.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLGroupRepositoryImpl.cs",
"RelativeDocumentMoniker": "data\\Repository\\SQLGroupRepositoryImpl.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLGroupRepositoryImpl.cs",
"RelativeToolTip": "data\\Repository\\SQLGroupRepositoryImpl.cs",
"ViewState": "AgIAAE8AAAAAAAAAAADwv3QAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:55:02.968Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 18,
"Title": "IUserRepository.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IUserRepository.cs",
"RelativeDocumentMoniker": "data\\Repository\\IUserRepository.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IUserRepository.cs",
"RelativeToolTip": "data\\Repository\\IUserRepository.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:54:39.935Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 19,
"Title": "IPresenceRepository.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IPresenceRepository.cs",
"RelativeDocumentMoniker": "data\\Repository\\IPresenceRepository.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IPresenceRepository.cs",
"RelativeToolTip": "data\\Repository\\IPresenceRepository.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:54:16.851Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 20,
"Title": "IGroupRepository.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IGroupRepository.cs",
"RelativeDocumentMoniker": "data\\Repository\\IGroupRepository.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IGroupRepository.cs",
"RelativeToolTip": "data\\Repository\\IGroupRepository.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:54:00.966Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 22,
"Title": "UserAttendance.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\UserAttendance.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\UserAttendance.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\UserAttendance.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\UserAttendance.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:52:23.249Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 23,
"Title": "User.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\User.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\User.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\User.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\User.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:52:07.915Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 24,
"Title": "Presence.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\Presence.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\Presence.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\Presence.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\Presence.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:51:56.442Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 25,
"Title": "GroupAttendanceStatistics.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\GroupAttendanceStatistics.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\GroupAttendanceStatistics.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\GroupAttendanceStatistics.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\GroupAttendanceStatistics.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:51:41.354Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 26,
"Title": "Group.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\Group.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\Group.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\Group.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\Group.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:51:13.615Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 21,
"Title": "AttendanceRecord.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\AttendanceRecord.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\AttendanceRecord.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\AttendanceRecord.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\AttendanceRecord.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:50:55.345Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 27,
"Title": "RemoteDatabaseContext.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\RemoteDatabaseContext.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\RemoteDatabaseContext.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\RemoteDatabaseContext.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\RemoteDatabaseContext.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:50:28.515Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 28,
"Title": "RemoteDatabase.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\RemoteDatabase.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\RemoteDatabase.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\RemoteDatabase.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\RemoteDatabase.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:50:06.431Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 29,
"Title": "data",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"RelativeDocumentMoniker": "data\\data.csproj",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"RelativeToolTip": "data\\data.csproj",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
"WhenOpened": "2024-11-11T08:49:23.959Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 31,
"Title": "Presence.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\Presence.cs",
"RelativeDocumentMoniker": "data\\LocalData\\Entity\\Presence.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\Presence.cs",
"RelativeToolTip": "data\\LocalData\\Entity\\Presence.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:48:59.906Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 32,
"Title": "User.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\User.cs",
"RelativeDocumentMoniker": "data\\LocalData\\Entity\\User.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\User.cs",
"RelativeToolTip": "data\\LocalData\\Entity\\User.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:48:47.35Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 33,
"Title": "Group.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\Group.cs",
"RelativeDocumentMoniker": "data\\LocalData\\Entity\\Group.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\Group.cs",
"RelativeToolTip": "data\\LocalData\\Entity\\Group.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:48:36.844Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 30,
"Title": "LocalStaticData.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\LocalStaticData.cs",
"RelativeDocumentMoniker": "data\\LocalData\\LocalStaticData.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\LocalStaticData.cs",
"RelativeToolTip": "data\\LocalData\\LocalStaticData.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:47:50.999Z",
"EditorCaption": ""
}
]
}
]
}
]
}

View File

@ -0,0 +1,598 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\adm\\source\\repos\\presence\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|c:\\users\\adm\\source\\repos\\presence\\ui\\groupconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|solutionrelative:ui\\groupconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{F798197F-432C-4AFF-AAC1-EB1664094999}|console_ui\\console_ui.csproj|c:\\users\\adm\\source\\repos\\presence\\console_ui\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{F798197F-432C-4AFF-AAC1-EB1664094999}|console_ui\\console_ui.csproj|solutionrelative:console_ui\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|c:\\users\\adm\\source\\repos\\presence\\ui\\userconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|solutionrelative:ui\\userconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|c:\\users\\adm\\source\\repos\\presence\\ui\\presenceconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|solutionrelative:ui\\presenceconsole.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|c:\\users\\adm\\source\\repos\\presence\\ui\\mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{8CAAF4C4-09A3-419C-B232-56A150F0F30D}|ui\\ui.csproj|solutionrelative:ui\\mainmenu.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\usecase\\userusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\usecase\\userusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\usecase\\usecasegeneratepresence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\usecase\\usecasegeneratepresence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\usecase\\groupusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\usecase\\groupusecase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\models\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\models\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\models\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\models\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|c:\\users\\adm\\source\\repos\\presence\\domain\\models\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{4C6194FF-B704-406B-89A7-03C2EE38A899}|domain\\domain.csproj|solutionrelative:domain\\models\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\sqluserrepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\sqluserrepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\exceptions\\groupnotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\exceptions\\groupnotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\exceptions\\usernotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\exceptions\\usernotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\exceptions\\reposiyoryexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\exceptions\\reposiyoryexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\exceptions\\presencenotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\exceptions\\presencenotfoundexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\sqlpresencerepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\sqlpresencerepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\sqlgrouprepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\sqlgrouprepositoryimpl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\iuserrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\iuserrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\ipresencerepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\ipresencerepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\repository\\igrouprepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\repository\\igrouprepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\attendancerecord.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\attendancerecord.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\userattendance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\userattendance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\groupattendancestatistics.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\groupattendancestatistics.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\dao\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\dao\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\remotedatabasecontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\remotedatabasecontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\remotedata\\remotedatabase\\remotedatabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\remotedata\\remotedatabase\\remotedatabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\data.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\data.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\localdata\\localstaticdata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\localdata\\localstaticdata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\localdata\\entity\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\localdata\\entity\\presence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\localdata\\entity\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\localdata\\entity\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|c:\\users\\adm\\source\\repos\\presence\\data\\localdata\\entity\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{B61AE661-CF04-46B2-9862-386DD078A071}|data\\data.csproj|solutionrelative:data\\localdata\\entity\\group.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 4,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Program.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\Program.cs",
"RelativeDocumentMoniker": "console_ui\\Program.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\Program.cs",
"RelativeToolTip": "console_ui\\Program.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:09:41.684Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "UserConsole.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\ui\\UserConsole.cs",
"RelativeDocumentMoniker": "ui\\UserConsole.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\ui\\UserConsole.cs",
"RelativeToolTip": "ui\\UserConsole.cs",
"ViewState": "AgIAACwAAAAAAAAAAAAswEIAAAAuAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:09:28.168Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "PresenceConsole.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\ui\\PresenceConsole.cs",
"RelativeDocumentMoniker": "ui\\PresenceConsole.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\ui\\PresenceConsole.cs",
"RelativeToolTip": "ui\\PresenceConsole.cs",
"ViewState": "AgIAAJgAAAAAAAAAAADwv7sAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:09:06.917Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "MainMenu.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\ui\\MainMenu.cs",
"RelativeDocumentMoniker": "ui\\MainMenu.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\ui\\MainMenu.cs",
"RelativeToolTip": "ui\\MainMenu.cs",
"ViewState": "AgIAALoAAAAAAAAAAADwv98AAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:08:48.7Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "GroupConsole.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\ui\\GroupConsole.cs",
"RelativeDocumentMoniker": "ui\\GroupConsole.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\ui\\GroupConsole.cs",
"RelativeToolTip": "ui\\GroupConsole.cs",
"ViewState": "AgIAABUAAAAAAAAAAADwvxwAAAANAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:07:40.217Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "UserUseCase.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\UserUseCase.cs",
"RelativeDocumentMoniker": "domain\\UseCase\\UserUseCase.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\UserUseCase.cs",
"RelativeToolTip": "domain\\UseCase\\UserUseCase.cs",
"ViewState": "AgIAAG0AAAAAAAAAAADwv5IAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:00:40.546Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "UseCaseGeneratePresence.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\UseCaseGeneratePresence.cs",
"RelativeDocumentMoniker": "domain\\UseCase\\UseCaseGeneratePresence.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\UseCaseGeneratePresence.cs",
"RelativeToolTip": "domain\\UseCase\\UseCaseGeneratePresence.cs",
"ViewState": "AgIAAJsAAAAAAAAAAADwv8AAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:00:21.887Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "GroupUseCase.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\GroupUseCase.cs",
"RelativeDocumentMoniker": "domain\\UseCase\\GroupUseCase.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\UseCase\\GroupUseCase.cs",
"RelativeToolTip": "domain\\UseCase\\GroupUseCase.cs",
"ViewState": "AgIAADIAAAAAAAAAAADwv1cAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T09:00:07.44Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "User.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\User.cs",
"RelativeDocumentMoniker": "domain\\Models\\User.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\User.cs",
"RelativeToolTip": "domain\\Models\\User.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:59:54.585Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "Presence.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\Presence.cs",
"RelativeDocumentMoniker": "domain\\Models\\Presence.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\Presence.cs",
"RelativeToolTip": "domain\\Models\\Presence.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:59:36.998Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 10,
"Title": "Group.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\Group.cs",
"RelativeDocumentMoniker": "domain\\Models\\Group.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\domain\\Models\\Group.cs",
"RelativeToolTip": "domain\\Models\\Group.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:59:26.921Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 13,
"Title": "UserNotFoundException.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\UserNotFoundException.cs",
"RelativeDocumentMoniker": "data\\Exceptions\\UserNotFoundException.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\UserNotFoundException.cs",
"RelativeToolTip": "data\\Exceptions\\UserNotFoundException.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:57:51.123Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 14,
"Title": "ReposiyoryException.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\ReposiyoryException.cs",
"RelativeDocumentMoniker": "data\\Exceptions\\ReposiyoryException.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\ReposiyoryException.cs",
"RelativeToolTip": "data\\Exceptions\\ReposiyoryException.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:57:33.519Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 15,
"Title": "PresenceNotFoundException.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\PresenceNotFoundException.cs",
"RelativeDocumentMoniker": "data\\Exceptions\\PresenceNotFoundException.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\PresenceNotFoundException.cs",
"RelativeToolTip": "data\\Exceptions\\PresenceNotFoundException.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:57:13.497Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 12,
"Title": "GroupNotFoundException.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\GroupNotFoundException.cs",
"RelativeDocumentMoniker": "data\\Exceptions\\GroupNotFoundException.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Exceptions\\GroupNotFoundException.cs",
"RelativeToolTip": "data\\Exceptions\\GroupNotFoundException.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:56:51.379Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 11,
"Title": "SQLUserRepositoryImpl.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLUserRepositoryImpl.cs",
"RelativeDocumentMoniker": "data\\Repository\\SQLUserRepositoryImpl.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLUserRepositoryImpl.cs",
"RelativeToolTip": "data\\Repository\\SQLUserRepositoryImpl.cs",
"ViewState": "AgIAABgAAAAAAAAAAADwvycAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:55:51.634Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 16,
"Title": "SQLPresenceRepositoryImpl.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLPresenceRepositoryImpl.cs",
"RelativeDocumentMoniker": "data\\Repository\\SQLPresenceRepositoryImpl.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLPresenceRepositoryImpl.cs",
"RelativeToolTip": "data\\Repository\\SQLPresenceRepositoryImpl.cs",
"ViewState": "AgIAALcAAAAAAAAAAADwv9wAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:55:31.55Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 17,
"Title": "SQLGroupRepositoryImpl.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLGroupRepositoryImpl.cs",
"RelativeDocumentMoniker": "data\\Repository\\SQLGroupRepositoryImpl.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\SQLGroupRepositoryImpl.cs",
"RelativeToolTip": "data\\Repository\\SQLGroupRepositoryImpl.cs",
"ViewState": "AgIAAE8AAAAAAAAAAADwv3QAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:55:02.968Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 18,
"Title": "IUserRepository.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IUserRepository.cs",
"RelativeDocumentMoniker": "data\\Repository\\IUserRepository.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IUserRepository.cs",
"RelativeToolTip": "data\\Repository\\IUserRepository.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:54:39.935Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 19,
"Title": "IPresenceRepository.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IPresenceRepository.cs",
"RelativeDocumentMoniker": "data\\Repository\\IPresenceRepository.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IPresenceRepository.cs",
"RelativeToolTip": "data\\Repository\\IPresenceRepository.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:54:16.851Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 20,
"Title": "IGroupRepository.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IGroupRepository.cs",
"RelativeDocumentMoniker": "data\\Repository\\IGroupRepository.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\Repository\\IGroupRepository.cs",
"RelativeToolTip": "data\\Repository\\IGroupRepository.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:54:00.966Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 22,
"Title": "UserAttendance.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\UserAttendance.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\UserAttendance.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\UserAttendance.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\UserAttendance.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:52:23.249Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 23,
"Title": "User.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\User.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\User.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\User.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\User.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:52:07.915Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 24,
"Title": "Presence.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\Presence.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\Presence.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\Presence.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\Presence.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:51:56.442Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 25,
"Title": "GroupAttendanceStatistics.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\GroupAttendanceStatistics.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\GroupAttendanceStatistics.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\GroupAttendanceStatistics.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\GroupAttendanceStatistics.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:51:41.354Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 26,
"Title": "Group.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\Group.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\Group.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\Group.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\Group.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:51:13.615Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 21,
"Title": "AttendanceRecord.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\AttendanceRecord.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\DAO\\AttendanceRecord.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\DAO\\AttendanceRecord.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\DAO\\AttendanceRecord.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:50:55.345Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 27,
"Title": "RemoteDatabaseContext.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\RemoteDatabaseContext.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\RemoteDatabaseContext.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\RemoteDatabaseContext.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\RemoteDatabaseContext.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:50:28.515Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 28,
"Title": "RemoteDatabase.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\RemoteDatabase.cs",
"RelativeDocumentMoniker": "data\\RemoteData\\RemoteDatabase\\RemoteDatabase.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\RemoteData\\RemoteDatabase\\RemoteDatabase.cs",
"RelativeToolTip": "data\\RemoteData\\RemoteDatabase\\RemoteDatabase.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:50:06.431Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 29,
"Title": "data",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"RelativeDocumentMoniker": "data\\data.csproj",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"RelativeToolTip": "data\\data.csproj",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
"WhenOpened": "2024-11-11T08:49:23.959Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 31,
"Title": "Presence.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\Presence.cs",
"RelativeDocumentMoniker": "data\\LocalData\\Entity\\Presence.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\Presence.cs",
"RelativeToolTip": "data\\LocalData\\Entity\\Presence.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:48:59.906Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 32,
"Title": "User.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\User.cs",
"RelativeDocumentMoniker": "data\\LocalData\\Entity\\User.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\User.cs",
"RelativeToolTip": "data\\LocalData\\Entity\\User.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:48:47.35Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 33,
"Title": "Group.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\Group.cs",
"RelativeDocumentMoniker": "data\\LocalData\\Entity\\Group.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\Entity\\Group.cs",
"RelativeToolTip": "data\\LocalData\\Entity\\Group.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:48:36.844Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 30,
"Title": "LocalStaticData.cs",
"DocumentMoniker": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\LocalStaticData.cs",
"RelativeDocumentMoniker": "data\\LocalData\\LocalStaticData.cs",
"ToolTip": "C:\\Users\\adm\\source\\repos\\presence\\data\\LocalData\\LocalStaticData.cs",
"RelativeToolTip": "data\\LocalData\\LocalStaticData.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-11T08:47:50.999Z",
"EditorCaption": ""
}
]
}
]
}
]
}

28
console_ui/Program.cs Normal file
View File

@ -0,0 +1,28 @@
using Demo.Data.RemoteData.RemoteDataBase;
using Demo.Data.Repository;
using Demo.Domain.UseCase;
using Demo.UI;
using Microsoft.Extensions.DependencyInjection;
// Создаем экземпляр репозиториев
IServiceCollection services = new ServiceCollection();
services
.AddDbContext<RemoteDatabaseContext>()
.AddSingleton<IGroupRepository, SQLGroupRepositoryImpl>()
.AddSingleton<IUserRepository, SQLUserRepositoryImpl>()
.AddSingleton<IPresenceRepository, SQLPresenceRepositoryImpl>()
.AddSingleton<UserUseCase>()
.AddSingleton<GroupUseCase>()
.AddSingleton<UseCaseGeneratePresence>()
.AddSingleton<MainMenuUI>();
var serviceProvider = services.BuildServiceProvider();
// Создаем пользовательский интерфейс
MainMenuUI mainMenuUI = serviceProvider.GetService<MainMenuUI>();
// Выводим главное меню
mainMenuUI.DisplayMenu();

View File

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\domain\domain.csproj" />
<ProjectReference Include="..\data\data.csproj" />
<ProjectReference Include="..\ui\ui.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
</ItemGroup>
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("console_ui")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("console_ui")]
[assembly: System.Reflection.AssemblyTitleAttribute("console_ui")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Создано классом WriteCodeFragment MSBuild.

View File

@ -0,0 +1 @@
ba882f03fdfa9546ef7659464bc47e4a0ca2d53498595f377280140f0c41eed4

View File

@ -0,0 +1,13 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = console_ui
build_property.ProjectDir = C:\Users\adm\source\repos\presence\console_ui\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

Binary file not shown.

View File

@ -0,0 +1,288 @@
{
"format": 1,
"restore": {
"C:\\Users\\adm\\source\\repos\\presence\\console_ui\\console_ui.csproj": {}
},
"projects": {
"C:\\Users\\adm\\source\\repos\\presence\\console_ui\\console_ui.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\console_ui.csproj",
"projectName": "console_ui",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\console_ui.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj"
},
"C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj"
},
"C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": {
"target": "Package",
"version": "[8.0.1, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"projectName": "data",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"Microsoft.EntityFrameworkCore": {
"target": "Package",
"version": "[8.0.10, )"
},
"Microsoft.EntityFrameworkCore.Design": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[8.0.10, )"
},
"Npgsql.EntityFrameworkCore.PostgreSQL": {
"target": "Package",
"version": "[8.0.10, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj",
"projectName": "domain",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj",
"projectName": "ui",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\ui\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\adm\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.11.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\adm\.nuget\packages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props')" />
</ImportGroup>
</Project>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Options.targets')" />
</ImportGroup>
</Project>

View File

@ -0,0 +1,854 @@
{
"version": 3,
"targets": {
"net8.0": {
"Microsoft.EntityFrameworkCore/8.0.10": {
"type": "package",
"dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
"Microsoft.EntityFrameworkCore.Analyzers": "8.0.10",
"Microsoft.Extensions.Caching.Memory": "8.0.1",
"Microsoft.Extensions.Logging": "8.0.1"
},
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {}
}
},
"Microsoft.EntityFrameworkCore.Abstractions/8.0.10": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"related": ".xml"
}
}
},
"Microsoft.EntityFrameworkCore.Analyzers/8.0.10": {
"type": "package",
"compile": {
"lib/netstandard2.0/_._": {}
},
"runtime": {
"lib/netstandard2.0/_._": {}
}
},
"Microsoft.EntityFrameworkCore.Relational/8.0.10": {
"type": "package",
"dependencies": {
"Microsoft.EntityFrameworkCore": "8.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"related": ".xml"
}
}
},
"Microsoft.Extensions.Caching.Abstractions/8.0.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Caching.Memory/8.0.1": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
"Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.DependencyInjection/8.0.1": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Logging/8.0.1": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "8.0.1",
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
"Microsoft.Extensions.Options": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Logging.Abstractions/8.0.2": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
}
},
"Microsoft.Extensions.Options/8.0.2": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {}
}
},
"Microsoft.Extensions.Primitives/8.0.0": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Npgsql/8.0.5": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "8.0.0"
},
"compile": {
"lib/net8.0/Npgsql.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Npgsql.dll": {
"related": ".xml"
}
}
},
"Npgsql.EntityFrameworkCore.PostgreSQL/8.0.10": {
"type": "package",
"dependencies": {
"Microsoft.EntityFrameworkCore": "8.0.10",
"Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
"Microsoft.EntityFrameworkCore.Relational": "8.0.10",
"Npgsql": "8.0.5"
},
"compile": {
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": {
"related": ".xml"
}
}
},
"data/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v8.0",
"dependencies": {
"Microsoft.EntityFrameworkCore": "8.0.10",
"Npgsql.EntityFrameworkCore.PostgreSQL": "8.0.10"
},
"compile": {
"bin/placeholder/data.dll": {}
},
"runtime": {
"bin/placeholder/data.dll": {}
}
},
"domain/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v8.0",
"dependencies": {
"data": "1.0.0"
},
"compile": {
"bin/placeholder/domain.dll": {}
},
"runtime": {
"bin/placeholder/domain.dll": {}
}
},
"ui/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v8.0",
"dependencies": {
"domain": "1.0.0"
},
"compile": {
"bin/placeholder/ui.dll": {}
},
"runtime": {
"bin/placeholder/ui.dll": {}
}
}
}
},
"libraries": {
"Microsoft.EntityFrameworkCore/8.0.10": {
"sha512": "PPkQdIqfR1nU3n6YgGGDk8G+eaYbaAKM1AzIQtlPNTKf10Osg3N9T+iK9AlnSA/ujsK00flPpFHVfJrbuBFS1A==",
"type": "package",
"path": "microsoft.entityframeworkcore/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props",
"lib/net8.0/Microsoft.EntityFrameworkCore.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.xml",
"microsoft.entityframeworkcore.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.nuspec"
]
},
"Microsoft.EntityFrameworkCore.Abstractions/8.0.10": {
"sha512": "FV0QlcX9INY4kAD2o72uPtyOh0nZut2jB11Jf9mNYBtHay8gDLe+x4AbXFwuQg+eSvofjT7naV82e827zGfyMg==",
"type": "package",
"path": "microsoft.entityframeworkcore.abstractions/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml",
"microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.abstractions.nuspec"
]
},
"Microsoft.EntityFrameworkCore.Analyzers/8.0.10": {
"sha512": "51KkPIc0EMv/gVXhPIUi6cwJE9Mvh+PLr4Lap4naLcsoGZ0lF2SvOPgUUprwRV3MnN7nyD1XPhT5RJ/p+xFAXw==",
"type": "package",
"path": "microsoft.entityframeworkcore.analyzers/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll",
"docs/PACKAGE.md",
"lib/netstandard2.0/_._",
"microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.analyzers.nuspec"
]
},
"Microsoft.EntityFrameworkCore.Relational/8.0.10": {
"sha512": "OefBEE47kGKPRPV3OT+FAW6o5BFgLk2D9EoeWVy7NbOepzUneayLQxbVE098FfedTyMwxvZQoDD9LrvZc3MadA==",
"type": "package",
"path": "microsoft.entityframeworkcore.relational/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml",
"microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.relational.nuspec"
]
},
"Microsoft.Extensions.Caching.Abstractions/8.0.0": {
"sha512": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==",
"type": "package",
"path": "microsoft.extensions.caching.abstractions/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml",
"microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
"microsoft.extensions.caching.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Caching.Memory/8.0.1": {
"sha512": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==",
"type": "package",
"path": "microsoft.extensions.caching.memory/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets",
"lib/net462/Microsoft.Extensions.Caching.Memory.dll",
"lib/net462/Microsoft.Extensions.Caching.Memory.xml",
"lib/net6.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net6.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/net7.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net7.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net8.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml",
"microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
"microsoft.extensions.caching.memory.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"type": "package",
"path": "microsoft.extensions.configuration.abstractions/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"microsoft.extensions.configuration.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.DependencyInjection/8.0.1": {
"sha512": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==",
"type": "package",
"path": "microsoft.extensions.dependencyinjection/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets",
"lib/net462/Microsoft.Extensions.DependencyInjection.dll",
"lib/net462/Microsoft.Extensions.DependencyInjection.xml",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml",
"microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
"microsoft.extensions.dependencyinjection.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
"sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
"type": "package",
"path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
"microsoft.extensions.dependencyinjection.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Logging/8.0.1": {
"sha512": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==",
"type": "package",
"path": "microsoft.extensions.logging/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Logging.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets",
"lib/net462/Microsoft.Extensions.Logging.dll",
"lib/net462/Microsoft.Extensions.Logging.xml",
"lib/net6.0/Microsoft.Extensions.Logging.dll",
"lib/net6.0/Microsoft.Extensions.Logging.xml",
"lib/net7.0/Microsoft.Extensions.Logging.dll",
"lib/net7.0/Microsoft.Extensions.Logging.xml",
"lib/net8.0/Microsoft.Extensions.Logging.dll",
"lib/net8.0/Microsoft.Extensions.Logging.xml",
"lib/netstandard2.0/Microsoft.Extensions.Logging.dll",
"lib/netstandard2.0/Microsoft.Extensions.Logging.xml",
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll",
"lib/netstandard2.1/Microsoft.Extensions.Logging.xml",
"microsoft.extensions.logging.8.0.1.nupkg.sha512",
"microsoft.extensions.logging.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Logging.Abstractions/8.0.2": {
"sha512": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
"type": "package",
"path": "microsoft.extensions.logging.abstractions/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
"microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
"microsoft.extensions.logging.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Options/8.0.2": {
"sha512": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
"type": "package",
"path": "microsoft.extensions.options/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll",
"analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"buildTransitive/net461/Microsoft.Extensions.Options.targets",
"buildTransitive/net462/Microsoft.Extensions.Options.targets",
"buildTransitive/net6.0/Microsoft.Extensions.Options.targets",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets",
"buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets",
"lib/net462/Microsoft.Extensions.Options.dll",
"lib/net462/Microsoft.Extensions.Options.xml",
"lib/net6.0/Microsoft.Extensions.Options.dll",
"lib/net6.0/Microsoft.Extensions.Options.xml",
"lib/net7.0/Microsoft.Extensions.Options.dll",
"lib/net7.0/Microsoft.Extensions.Options.xml",
"lib/net8.0/Microsoft.Extensions.Options.dll",
"lib/net8.0/Microsoft.Extensions.Options.xml",
"lib/netstandard2.0/Microsoft.Extensions.Options.dll",
"lib/netstandard2.0/Microsoft.Extensions.Options.xml",
"lib/netstandard2.1/Microsoft.Extensions.Options.dll",
"lib/netstandard2.1/Microsoft.Extensions.Options.xml",
"microsoft.extensions.options.8.0.2.nupkg.sha512",
"microsoft.extensions.options.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Primitives/8.0.0": {
"sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
"type": "package",
"path": "microsoft.extensions.primitives/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Primitives.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets",
"lib/net462/Microsoft.Extensions.Primitives.dll",
"lib/net462/Microsoft.Extensions.Primitives.xml",
"lib/net6.0/Microsoft.Extensions.Primitives.dll",
"lib/net6.0/Microsoft.Extensions.Primitives.xml",
"lib/net7.0/Microsoft.Extensions.Primitives.dll",
"lib/net7.0/Microsoft.Extensions.Primitives.xml",
"lib/net8.0/Microsoft.Extensions.Primitives.dll",
"lib/net8.0/Microsoft.Extensions.Primitives.xml",
"lib/netstandard2.0/Microsoft.Extensions.Primitives.dll",
"lib/netstandard2.0/Microsoft.Extensions.Primitives.xml",
"microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"microsoft.extensions.primitives.nuspec",
"useSharedDesignerContext.txt"
]
},
"Npgsql/8.0.5": {
"sha512": "zRG5V8cyeZLpzJlKzFKjEwkRMYIYnHWJvEor2lWXeccS2E1G2nIWYYhnukB51iz5XsWSVEtqg3AxTWM0QJ6vfg==",
"type": "package",
"path": "npgsql/8.0.5",
"files": [
".nupkg.metadata",
".signature.p7s",
"README.md",
"lib/net6.0/Npgsql.dll",
"lib/net6.0/Npgsql.xml",
"lib/net7.0/Npgsql.dll",
"lib/net7.0/Npgsql.xml",
"lib/net8.0/Npgsql.dll",
"lib/net8.0/Npgsql.xml",
"lib/netstandard2.0/Npgsql.dll",
"lib/netstandard2.0/Npgsql.xml",
"lib/netstandard2.1/Npgsql.dll",
"lib/netstandard2.1/Npgsql.xml",
"npgsql.8.0.5.nupkg.sha512",
"npgsql.nuspec",
"postgresql.png"
]
},
"Npgsql.EntityFrameworkCore.PostgreSQL/8.0.10": {
"sha512": "gFPl9Dmxih7Yi4tZ3bITzZFzbxFMBx04gqTqcjoL2r5VEW+O2TA5UVw/wm/XW26NAJ7sg59Je0+9QrwiZt6MPQ==",
"type": "package",
"path": "npgsql.entityframeworkcore.postgresql/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"README.md",
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll",
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.xml",
"npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512",
"npgsql.entityframeworkcore.postgresql.nuspec",
"postgresql.png"
]
},
"data/1.0.0": {
"type": "project",
"path": "../data/data.csproj",
"msbuildProject": "../data/data.csproj"
},
"domain/1.0.0": {
"type": "project",
"path": "../domain/domain.csproj",
"msbuildProject": "../domain/domain.csproj"
},
"ui/1.0.0": {
"type": "project",
"path": "../ui/ui.csproj",
"msbuildProject": "../ui/ui.csproj"
}
},
"projectFileDependencyGroups": {
"net8.0": [
"Microsoft.Extensions.DependencyInjection >= 8.0.1",
"data >= 1.0.0",
"domain >= 1.0.0",
"ui >= 1.0.0"
]
},
"packageFolders": {
"C:\\Users\\adm\\.nuget\\packages\\": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\console_ui.csproj",
"projectName": "console_ui",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\console_ui.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj"
},
"C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj"
},
"C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": {
"target": "Package",
"version": "[8.0.1, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
}
}

View File

@ -0,0 +1,24 @@
{
"version": 2,
"dgSpecHash": "taivLdMVn6A=",
"success": true,
"projectFilePath": "C:\\Users\\adm\\source\\repos\\presence\\console_ui\\console_ui.csproj",
"expectedPackageFiles": [
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.10\\microsoft.entityframeworkcore.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.10\\microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.10\\microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.10\\microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\npgsql\\8.0.5\\npgsql.8.0.5.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\npgsql.entityframeworkcore.postgresql\\8.0.10\\npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512"
],
"logs": []
}

View File

@ -0,0 +1,10 @@
using System;
namespace Demo.Data.Exceptions
{
public class GroupNotFoundException : RepositoryException
{
public GroupNotFoundException(int userId)
: base($"Группа с ID {userId} не найдена.") { }
}
}

View File

@ -0,0 +1,12 @@
using System;
namespace Demo.Data.Exceptions
{
public class PresenceNotFoundException : RepositoryException
{
public PresenceNotFoundException(int userId, DateOnly date, int firstLesson, int lastLesson)
: base($"Посещаемость для пользователя ID: {userId} на дату {date.ToShortDateString()}" +
$" с {firstLesson} по {lastLesson} уроки не найдена.")
{ }
}
}

View File

@ -0,0 +1,9 @@
using System;
namespace Demo.Data.Exceptions
{
public class RepositoryException : Exception
{
public RepositoryException(string message) : base(message) { }
}
}

View File

@ -0,0 +1,10 @@
using System;
namespace Demo.Data.Exceptions
{
public class UserNotFoundException : RepositoryException
{
public UserNotFoundException(int userId)
: base($"Пользователь с ID {userId} не найден.") { }
}
}

View File

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.domain.Models
{
public class GroupLocalEntity
{
public int Id { get; set; }
public required string Name { get; set; }
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.domain.Models
{
public class PresenceLocalEntity
{
public required int UserId { get; set; }
public required int GroupId { get; set; }
public bool IsAttedance { get; set; } = true;
public required DateTime Date { get; set; }
public required int LessonNumber { get; set; }
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.domain.Models
{
public class UserLocalEnity : IEquatable<UserLocalEnity>
{
public required string FIO { get; set; }
public int ID { get; set; }
public required int GroupID { get; set; }
public bool Equals(UserLocalEnity? other)
{
if (other == null) return false;
return this.ID.Equals(other.ID);
}
}
}

View File

@ -0,0 +1,36 @@
using Demo.domain.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Data.LocalData
{
public static class LocalStaticData
{
public static List<GroupLocalEntity> groups => new List<GroupLocalEntity>
{
new GroupLocalEntity{ Id = 1, Name = "ИП1-21" },
new GroupLocalEntity{ Id = 2, Name = "ИП1-22" },
new GroupLocalEntity{ Id = 3, Name = "ИП1-23" },
};
public static List<UserLocalEnity> users => new List<UserLocalEnity>
{
new UserLocalEnity{ID = 1, FIO = "RandomFio", GroupID = 1 },
new UserLocalEnity{ID = 2, FIO = "RandomFio1", GroupID = 2 },
new UserLocalEnity{ID = 3, FIO = "RandomFio2", GroupID = 3 },
new UserLocalEnity{ID = 4, FIO = "RandomFio3", GroupID = 1 },
new UserLocalEnity{ID = 5, FIO = "RandomFio4", GroupID = 2 },
new UserLocalEnity{ID = 6, FIO = "RandomFio5", GroupID = 3 },
};
public static List<PresenceLocalEntity> presences => new List<PresenceLocalEntity>
{
};
}
}

View File

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Data.RemoteData.RemoteDataBase.DAO
{
public class AttendanceRecord
{
public int UserId { get; set; }
public string UserName { get; set; }
public string FullName { get; set; }
public DateOnly Date { get; set; }
public bool IsAttedance { get; set; }
public int LessonNumber { get; set; }
public string GroupName { get; set; }
}
}

View File

@ -0,0 +1,16 @@
using Demo.domain.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Data.RemoteData.RemoteDataBase.DAO
{
public class GroupDao
{
public int Id { get; set; }
public string Name { get; set; }
public virtual List<UserDao> Users { get; set; }
}
}

View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Data.RemoteData.RemoteDataBase.DAO
{
public class GroupAttendanceStatistics
{
public int UserCount { get; set; }
public int TotalLessons { get; set; }
public double AttendancePercentage { get; set; }
public List<UserAttendance> UserAttendanceDetails { get; set; } = new List<UserAttendance>();
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Data.RemoteData.RemoteDataBase.DAO
{
public class PresenceDao
{
public int PresenceId { get; set; }
public int UserId { get; set; }
public bool IsAttedance { get; set; } = true;
public DateOnly Date { get; set; }
public int LessonNumber { get; set; }
public int GroupId { get; set; }
}
}

View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Data.RemoteData.RemoteDataBase.DAO
{
public class UserDao
{
public required string FIO { get; set; }
public required int UserId { get; set; }
public int GroupId { get; set; }
public GroupDao? Group { get; set; }
}
}

View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Data.RemoteData.RemoteDataBase.DAO
{
public class UserAttendance
{
public int UserId { get; set; }
public double Attended { get; set; }
public double Missed { get; set; }
public double AttendanceRate { get; set; }
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Data.RemoteData.RemoteDataBase
{
internal class RemoteDatabase
{
}
}

View File

@ -0,0 +1,35 @@
using Microsoft.EntityFrameworkCore;
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Demo.Data.RemoteData.RemoteDataBase
{
public class RemoteDatabaseContext : DbContext
{
public DbSet<GroupDao> Groups { get; set; }
public DbSet<UserDao> Users { get; set; }
public DbSet<PresenceDao> PresenceDaos { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql("Host=localhost;Port=5432;Database=presencedb;Username=postgres;Password=123;Include Error Detail=True;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<GroupDao>().HasKey(group => group.Id);
modelBuilder.Entity<GroupDao>().Property(group => group.Id).ValueGeneratedOnAdd();
modelBuilder.Entity<UserDao>().HasKey(user => user.UserId);
modelBuilder.Entity<UserDao>().Property(user => user.UserId).ValueGeneratedOnAdd();
modelBuilder.Entity<PresenceDao>().HasKey(presence => presence.PresenceId);
modelBuilder.Entity<PresenceDao>().Property(presence => presence.PresenceId).ValueGeneratedOnAdd();
}
}
}

View File

@ -0,0 +1,18 @@
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.domain.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Data.Repository
{
public interface IGroupRepository
{
List<GroupDao> GetAllGroups();
bool UpdateGroupById(int groupID, GroupDao updatedGroup);
GroupDao GetGroupById(int groupID);
bool AddGroup(string Name);
}
}

View File

@ -0,0 +1,27 @@

using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.domain.Models;
using Demo.Domain.UseCase;
using Microsoft.EntityFrameworkCore.Metadata;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Data.Repository
{
public interface IPresenceRepository
{
List<PresenceDao> GetPresenceByDateAndGroup(DateTime date, int groupId);
void SavePresence(List<PresenceDao> presences);
List<PresenceDao> GetPresenceByGroup(int groupId);
DateOnly? GetLastDateByGroupId(int groupId);
List<PresenceDao> GetPresenceForAbsent(DateTime date, int GroupId);
GroupAttendanceStatistics GetGeneralPresenceForGroup(int groupId);
void UpdateAtt(int userId, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance);
List<PresenceDao> GetAttendanceByGroup(int groupId);
}
}

View File

@ -0,0 +1,14 @@
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.domain.Models;
using System.Collections.Generic;
namespace Demo.Data.Repository
{
public interface IUserRepository
{
List<UserDao> GetAllUsers();
bool RemoveUserById(int userId);
UserDao UpdateUser(int userId, string newFIO, int groupId);
List<UserDao> GetUserNames();
}
}

View File

@ -0,0 +1,116 @@
using Demo.Data.RemoteData.RemoteDataBase;
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.domain.Models;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Demo.Data.Repository
{
public class SQLGroupRepositoryImpl : IGroupRepository
{
private readonly RemoteDatabaseContext _remoteDatabaseContext;
public SQLGroupRepositoryImpl(RemoteDatabaseContext remoteDatabaseContext)
{
_remoteDatabaseContext = remoteDatabaseContext;
}
// Метод для добавления новой группы
public bool AddGroup(GroupDao newGroup)
{
var groupDao = new GroupDao
{
Name = newGroup.Name
};
_remoteDatabaseContext.Groups.Add(groupDao);
_remoteDatabaseContext.SaveChanges();
return true;
}
// Метод для получения группы по ID
public GroupDao GetGroupById(int groupId)
{
var groupDao = _remoteDatabaseContext.Groups
.Include(g => g.Users)
.FirstOrDefault(g => g.Id == groupId);
if (groupDao == null) return null;
return new GroupDao
{
Id = groupDao.Id,
Name = groupDao.Name,
Users = groupDao.Users.Select(u => new UserDao
{
UserId = u.UserId,
FIO = u.FIO,
GroupId = u.GroupId
}).ToList()
};
}
// Метод для получения всех групп
public List<GroupDao> GetAllGroups()
{
return _remoteDatabaseContext.Groups
.Include(g => g.Users)
.Select(g => new GroupDao
{
Id = g.Id,
Name = g.Name,
Users = g.Users.Select(u => new UserDao
{
UserId = u.UserId,
FIO = u.FIO,
GroupId = u.GroupId
}).ToList()
})
.ToList();
}
// Метод для обновления группы по ID
public bool UpdateGroupById(int groupId, GroupDao updatedGroup)
{
var groupDao = _remoteDatabaseContext.Groups
.Include(g => g.Users)
.FirstOrDefault(g => g.Id == groupId);
if (groupDao == null) return false;
groupDao.Name = updatedGroup.Name;
// Пример обновления списка пользователей
groupDao.Users = updatedGroup.Users.Select(user => new UserDao
{
UserId = user.UserId,
FIO = user.FIO,
GroupId = user.GroupId
}).ToList();
_remoteDatabaseContext.SaveChanges();
return true;
}
// Метод для удаления группы по ID
public bool RemoveGroupById(int groupId)
{
var groupDao = _remoteDatabaseContext.Groups.Find(groupId);
if (groupDao == null) return false;
_remoteDatabaseContext.Groups.Remove(groupDao);
_remoteDatabaseContext.SaveChanges();
return true;
}
public bool AddGroup(string Name)
{
var groupDao = new GroupDao
{
Name = Name
};
_remoteDatabaseContext.Groups.Add(groupDao);
_remoteDatabaseContext.SaveChanges();
return true;
}
}
}

View File

@ -0,0 +1,220 @@
using Demo.Data.Exceptions;
using Demo.Data.LocalData;
using Demo.Data.RemoteData.RemoteDataBase;
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.domain.Models;
using DocumentFormat.OpenXml.InkML;
using DocumentFormat.OpenXml.Spreadsheet;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace Demo.Data.Repository
{
public class SQLPresenceRepositoryImpl : IPresenceRepository
{
private readonly RemoteDatabaseContext _remoteDatabaseContext;
public SQLPresenceRepositoryImpl(RemoteDatabaseContext remoteDatabaseContext)
{
_remoteDatabaseContext = remoteDatabaseContext;
}
public List<PresenceDao> GetAttendanceByGroup(int groupId)
{
// Получаем записи посещаемости для указанной группы
return _remoteDatabaseContext.PresenceDaos
.Where(p => p.GroupId == groupId)
.Select(p => new PresenceDao
{
UserId = p.UserId,
GroupId = p.GroupId,
Date = p.Date,
LessonNumber = p.LessonNumber,
IsAttedance = p.IsAttedance
})
.ToList();
}
public List<PresenceDao> GetPresenceForAbsent(DateTime date, int GroupId)
{
return _remoteDatabaseContext.PresenceDaos.Where(p => p.GroupId == GroupId && p.Date == DateOnly.FromDateTime(date)).ToList();
}
public List<PresenceDao> GetPresenceByDateAndGroup(DateTime date, int groupId)
{
return _remoteDatabaseContext.PresenceDaos.Where(p => p.Date == DateOnly.FromDateTime(date) &&
_remoteDatabaseContext.Users.Any(u => u.GroupId == groupId && u.UserId == p.UserId)).ToList();
}
// Реализация метода для получения всех данных по группе
public List<PresenceDao> GetPresenceByGroup(int groupId)
{
return _remoteDatabaseContext.PresenceDaos.Where(p => p.GroupId == groupId)
.OrderBy(p => p.Date)
.ThenBy(p => p.UserId).ToList();
}
public void SavePresence(List<PresenceDao> presences)
{
_remoteDatabaseContext.PresenceDaos.AddRange(presences.Select(it => new PresenceDao
{
Date = it.Date,
IsAttedance = it.IsAttedance,
LessonNumber = it.LessonNumber,
UserId = it.UserId,
GroupId = it.GroupId
}));
_remoteDatabaseContext.SaveChanges();
}
public void UpdateAtt(int userId, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance)
{
// Находим все записи по UserId, GroupId, LessonNumber (в диапазоне) и дате
var presences = _remoteDatabaseContext.PresenceDaos
.Where(p => p.UserId == userId
&& p.GroupId == groupId
&& p.LessonNumber >= firstLesson
&& p.LessonNumber <= lastLesson
&& p.Date == date)
.ToList();
// Обновляем значение IsAttendance для всех найденных записей
foreach (var presence in presences)
{
presence.IsAttedance = isAttendance;
}
_remoteDatabaseContext.SaveChanges(); // Сохраняем изменения в базе данных
}
public DateOnly? GetLastDateByGroupId(int groupId)
{
// Проверяем наличие записей о посещаемости в базе данных для данной группы.
var lastDate = _remoteDatabaseContext.PresenceDaos
.Where(p => p.GroupId == groupId)
.OrderByDescending(p => p.Date)
.Select(p => p.Date)
.FirstOrDefault();
return lastDate == default ? (DateOnly?)null : lastDate;
}
public List<PresenceDao> PresenceSort(List<PresenceDao> presences)
{
presences = _remoteDatabaseContext.PresenceDaos.OrderBy(p => p.Date).ToList();
return presences;
}
public GroupAttendanceStatistics GetGeneralPresenceForGroup(int groupId)
{
var presences = _remoteDatabaseContext.PresenceDaos.Where(p => p.GroupId == groupId).OrderBy(p => p.LessonNumber).ToList();
var dates = _remoteDatabaseContext.PresenceDaos;
var distDates = dates.Select(p => p.Date).Distinct().ToList();
int lesId = 0;
int lesNum = 1;
double att = 0;
int days = -1;
int countAllLes = 0;
DateOnly date = DateOnly.MinValue;
List<int> usersId = new List<int>();
foreach (var presence in presences)
{
if (!usersId.Contains(presence.UserId))
{
usersId.Add(presence.UserId);
}
if (presence.Date != date)
{
date = presence.Date;
lesId++;
lesNum = presence.LessonNumber;
days++;
}
if (presence.LessonNumber != lesNum && date == presence.Date)
{
lesNum = presence.LessonNumber;
countAllLes++;
lesId++;
}
if (presence.IsAttedance)
{
att++;
}
}
List<UserAttendance> a = new List<UserAttendance>();
List<int> ids = new List<int>();
double ok = 0;
double skip = 0;
int userId = 0;
foreach (var user in usersId)
{
var users = _remoteDatabaseContext.PresenceDaos.Where(p => p.UserId == user);
foreach (var usera in users)
{
userId = usera.UserId;
if (!ids.Contains(usera.UserId))
{
skip = 0;
ok = 0;
ids.Add(userId);
a.Add(new UserAttendance { UserId = userId, Attended = ok, Missed = skip });
userId = usera.UserId;
if (usera.IsAttedance)
{
a.First(a => a.UserId == usera.UserId).Attended = ok += 1;
}
else
{
a.First(a => a.UserId == usera.UserId).Missed = skip += 1;
}
}
else
{
if (usera.IsAttedance)
{
a.First(a => a.UserId == usera.UserId).Attended = ok += 1;
}
else
{
a.First(a => a.UserId == usera.UserId).Missed = skip += 1;
}
}
}
}
var statistics = new GroupAttendanceStatistics
{
UserCount = usersId.Count,
TotalLessons = lesId,
AttendancePercentage = att / usersId.Count / lesNum / distDates.Count() * 100
};
foreach (var user in a)
{
statistics.UserAttendanceDetails.Add(new UserAttendance
{
UserId = user.UserId,
Attended = user.Attended,
Missed = user.Missed,
AttendanceRate = user.Attended / (user.Missed + user.Attended) * 100
});
}
return statistics;
}
}
}

View File

@ -0,0 +1,61 @@
using Demo.Data.Exceptions;
using Demo.Data.RemoteData.RemoteDataBase;
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.domain.Models;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Demo.Data.Repository
{
public class SQLUserRepositoryImpl : IUserRepository
{
private readonly RemoteDatabaseContext _remoteDatabaseContext;
public SQLUserRepositoryImpl(RemoteDatabaseContext remoteDatabaseContext)
{
_remoteDatabaseContext = remoteDatabaseContext;
}
public bool RemoveUserById(int userId)
{
var user = _remoteDatabaseContext.Users.FirstOrDefault(u => u.UserId == userId);
if (user == null) throw new UserNotFoundException(userId);
_remoteDatabaseContext.Users.Remove(user);
_remoteDatabaseContext.SaveChanges();
return true;
}
public UserDao UpdateUser(int userId, string newFio, int groupId)
{
var existingUser = _remoteDatabaseContext.Users.FirstOrDefault(u => u.UserId == userId);
if (existingUser == null) throw new UserNotFoundException(userId);
// Обновляем поля существующего пользователя
existingUser.FIO = newFio;
existingUser.GroupId = groupId;
_remoteDatabaseContext.SaveChanges();
return existingUser;
}
public List<UserDao> GetAllUsers()
{
// Возвращаем пользователей, отсортированных по UserId
return _remoteDatabaseContext.Users.OrderBy(u => u.UserId).ToList();
}
public List<UserDao> GetUserNames()
{
var users = GetAllUsers();
List<UserDao> names = new List<UserDao>();
foreach (var user in users)
{
names.Add(new UserDao { UserId = user.UserId, FIO = user.FIO });
}
return names;
}
}
}

18
data/data.csproj Normal file
View File

@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.10" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.10">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.10" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("data")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("data")]
[assembly: System.Reflection.AssemblyTitleAttribute("data")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Создано классом WriteCodeFragment MSBuild.

View File

@ -0,0 +1 @@
6741393a5fe1cc20988265f6fd0e8bdd33ee4b9cc7b9e110a41e548fdd825a94

View File

@ -0,0 +1,13 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = data
build_property.ProjectDir = C:\Users\adm\source\repos\presence\data\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

Binary file not shown.

View File

@ -0,0 +1,84 @@
{
"format": 1,
"restore": {
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {}
},
"projects": {
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"projectName": "data",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"Microsoft.EntityFrameworkCore": {
"target": "Package",
"version": "[8.0.10, )"
},
"Microsoft.EntityFrameworkCore.Design": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[8.0.10, )"
},
"Npgsql.EntityFrameworkCore.PostgreSQL": {
"target": "Package",
"version": "[8.0.10, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\adm\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.11.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\adm\.nuget\packages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design\8.0.10\build\net8.0\Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design\8.0.10\build\net8.0\Microsoft.EntityFrameworkCore.Design.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_CodeAnalysis_Analyzers Condition=" '$(PkgMicrosoft_CodeAnalysis_Analyzers)' == '' ">C:\Users\adm\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3</PkgMicrosoft_CodeAnalysis_Analyzers>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Options.targets')" />
</ImportGroup>
</Project>

2191
data/obj/project.assets.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,47 @@
{
"version": 2,
"dgSpecHash": "9w1j8Og+u1Q=",
"success": true,
"projectFilePath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"expectedPackageFiles": [
"C:\\Users\\adm\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.5.0\\microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.5.0\\microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.10\\microsoft.entityframeworkcore.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.10\\microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.10\\microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.10\\microsoft.entityframeworkcore.design.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.10\\microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.2\\microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\npgsql\\8.0.5\\npgsql.8.0.5.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\npgsql.entityframeworkcore.postgresql\\8.0.10\\npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.io.pipelines\\6.0.3\\system.io.pipelines.6.0.3.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\system.threading.channels\\6.0.0\\system.threading.channels.6.0.0.nupkg.sha512"
],
"logs": []
}

14
domain/Models/Group.cs Normal file
View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.domain.Models
{
public class Group
{
public required int Id { get; set; }
public required string Name { get; set; }
}
}

18
domain/Models/Presence.cs Normal file
View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.domain.Models
{
public class Presence
{
public required User User { get; set; }
public required int GroupId { get; set; }
public bool IsAttedance { get; set; } = true;
public required DateTime Date { get; set; }
public required int LessonNumber { get; set; }
}
}

15
domain/Models/User.cs Normal file
View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.domain.Models
{
public class User
{
public required string FIO { get; set; }
public int ID { get; set; }
public required Group Group { get; set; }
}
}

View File

@ -0,0 +1,88 @@
using Demo.Data.LocalData;
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.Data.Repository;
using Demo.domain.Models;
namespace Demo.Domain.UseCase
{
public class GroupUseCase
{
private readonly IGroupRepository _SQLGroupRepositoryImpl;
public GroupUseCase(IGroupRepository SQlGroupRepositoryImpl)
{
_SQLGroupRepositoryImpl = SQlGroupRepositoryImpl;
}
// Приватный метод для валидации имени группы
private void ValidateGroupName(string groupName)
{
if (string.IsNullOrWhiteSpace(groupName))
{
throw new ArgumentException("Имя группы не может быть пустым.");
}
}
private void ValidateGroupId(int GroupId)
{
if (GroupId < 1)
{
throw new ArgumentException("Введите корректный ID группы.");
}
}
// Приватный метод для валидации существования группы по ID
private GroupDao ValidateGroupExistence(int groupId)
{
var existingGroup = _SQLGroupRepositoryImpl.GetAllGroups()
.FirstOrDefault(g => g.Id == groupId);
if (existingGroup == null)
{
throw new ArgumentException("Группа не найдена.");
}
return existingGroup;
}
// Метод для получения списка всех групп
public List<GroupDao> GetAllGroups()
{
return [.. _SQLGroupRepositoryImpl.GetAllGroups()
.Select(it => new GroupDao { Id = it.Id, Name = it.Name })];
}
// Метод для получения группы по ID
public string FindGroupById(int IdGroup)
{
string groups = _SQLGroupRepositoryImpl.GetGroupById(IdGroup).Name;
return groups;
}
// Метод для добавления новой группы
public void AddGroup(string groupName)
{
ValidateGroupName(groupName);
GroupDao newGroup = new GroupDao
{
Name = groupName
};
_SQLGroupRepositoryImpl.AddGroup(newGroup.Name);
}
// Метод для изменения названия группы
public void UpdateGroup(int groupId, string newGroupName)
{
ValidateGroupName(newGroupName);
var existingGroup = ValidateGroupExistence(groupId);
existingGroup.Name = newGroupName;
_SQLGroupRepositoryImpl.UpdateGroupById(groupId, existingGroup);
}
}
}

View File

@ -0,0 +1,192 @@
using ClosedXML.Excel;
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.Data.Repository;
using Demo.domain.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo.Domain.UseCase
{
public class UseCaseGeneratePresence
{
public readonly IUserRepository _userRepository;
public readonly IPresenceRepository _presenceRepository;
private readonly IGroupRepository _groupRepository;
public UseCaseGeneratePresence(IUserRepository userRepository, IPresenceRepository presenceRepository, IGroupRepository groupRepository)
{
_userRepository = userRepository;
_presenceRepository = presenceRepository;
_groupRepository = groupRepository;
}
public Dictionary<string, List<AttendanceRecord>> GetAllAttendanceByGroups()
{
var attendanceByGroup = new Dictionary<string, List<AttendanceRecord>>();
var allGroups = _groupRepository.GetAllGroups();
foreach (var group in allGroups)
{
var groupAttendance = _presenceRepository.GetAttendanceByGroup(group.Id);
var attendanceRecords = new List<AttendanceRecord>();
foreach (var record in groupAttendance)
{
var names = _userRepository.GetUserNames().Where(u => u.UserId == record.UserId);
foreach (var name in names)
{
attendanceRecords.Add(new AttendanceRecord
{
UserName = name.FIO,
UserId = name.UserId,
Date = record.Date,
IsAttedance = record.IsAttedance,
LessonNumber = record.LessonNumber,
GroupName = group.Name
});
}
}
attendanceByGroup.Add(group.Name, attendanceRecords);
}
return attendanceByGroup;
}
public void ExportAttendanceToExcel()
{
var attendanceByGroup = GetAllAttendanceByGroups();
string projectDirectory = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName;
string reportsFolderPath = Path.Combine(projectDirectory, "Reports");
string filePath = Path.Combine(reportsFolderPath, "AttendanceReport.xlsx");
// Создаем папку, если она не существует
if (!Directory.Exists(reportsFolderPath))
{
Directory.CreateDirectory(reportsFolderPath);
}
using (var workbook = new XLWorkbook())
{
foreach (var group in attendanceByGroup)
{
var worksheet = workbook.Worksheets.Add($"{group.Key}");
worksheet.Cell(1, 1).Value = "ФИО";
worksheet.Cell(1, 2).Value = "Группа";
worksheet.Cell(1, 3).Value = "Дата";
worksheet.Cell(1, 4).Value = "Занятие";
worksheet.Cell(1, 5).Value = "Статус";
int row = 2;
int lesNum = 1;
foreach (var record in group.Value.OrderBy(r => r.Date).ThenBy(r => r.LessonNumber).ThenBy(r => r.UserId))
{
if (lesNum != record.LessonNumber)
{
row++;
}
worksheet.Cell(row, 1).Value = record.UserName;
worksheet.Cell(row, 2).Value = record.GroupName;
worksheet.Cell(row, 3).Value = record.Date.ToString("dd.MM.yyyy");
worksheet.Cell(row, 4).Value = record.LessonNumber;
worksheet.Cell(row, 5).Value = record.IsAttedance ? "Присутствует" : "Отсутствует";
row++;
lesNum = record.LessonNumber;
}
worksheet.Columns().AdjustToContents();
}
workbook.SaveAs(filePath);
}
}
public List<PresenceDao> GetPresenceByDateAndGroup(DateTime date, int groupId)
{
return _presenceRepository.GetPresenceByDateAndGroup(date, groupId);
}
public void GeneratePresenceDaily(int firstLesson, int lastLesson, int groupId)
{
var users = _userRepository.GetAllUsers().Where(u => u.GroupId == groupId).ToList();
// Находим последнюю дату посещаемости для данной группы
DateOnly startDate = _presenceRepository.GetLastDateByGroupId(groupId)?.AddDays(1)
?? DateOnly.FromDateTime(DateTime.Today);
List<PresenceDao> presences = new List<PresenceDao>();
for (int lessonNumber = firstLesson; lessonNumber <= lastLesson; lessonNumber++)
{
foreach (var user in users)
{
var presence = new PresenceDao
{
UserId = user.UserId,
GroupId = user.GroupId,
Date = startDate,
LessonNumber = lessonNumber,
IsAttedance = true
};
_presenceRepository.SavePresence(new List<PresenceDao> { presence });
}
}
}
public void GenerateWeeklyPresence(int firstLesson, int lastLesson, int groupId, DateTime startTime)
{
for (int i = 0; i < 7; i++)
{
DateTime currentTime = startTime.AddDays(i);
GeneratePresenceDaily(firstLesson, lastLesson, groupId);
}
}
// Отметить пользователя как отсутствующего на диапазоне занятий
public bool MarkUserAbsentForLessons(int userId, int groupId, int firstLesson, int lastLesson, DateTime date)
{
List<PresenceDao> presences = _presenceRepository.GetPresenceForAbsent(date, groupId);
if (presences.Where(p => p.UserId == userId).Count() > 0)
{
// Обновляем состояние присутствия для указанных занятий
foreach (var presence in presences.Where(p => p.UserId == userId && p.LessonNumber >= firstLesson && p.LessonNumber <= lastLesson))
{
presence.IsAttedance = false; // Устанавливаем отсутствие
}
// Сохраняем изменения в репозитории
_presenceRepository.UpdateAtt(userId, groupId, firstLesson, lastLesson, DateOnly.FromDateTime(date), false);
return true;
}
else
{
return false;
}
}
public List<PresenceDao> GetAllPresenceByGroup(int groupId)
{
return _presenceRepository.GetPresenceByGroup(groupId);
}
public GroupAttendanceStatistics GetGeneralPresence(int groupId)
{
return _presenceRepository.GetGeneralPresenceForGroup(groupId);
}
}
}

View File

@ -0,0 +1,146 @@
using Demo.Data.Exceptions;
using Demo.Data.RemoteData.RemoteDataBase;
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.Data.Repository;
using Demo.domain.Models;
namespace Demo.Domain.UseCase
{
public class UserUseCase
{
private readonly IUserRepository _repositoryUserImpl;
private readonly IGroupRepository _repositoryGroupImpl;
private readonly IPresenceRepository _repositoryPresenceImpl;
public UserUseCase(IUserRepository repositoryImpl, IGroupRepository repositoryGroupImpl, IPresenceRepository presenceRepository)
{
_repositoryUserImpl = repositoryImpl;
_repositoryGroupImpl = repositoryGroupImpl;
_repositoryPresenceImpl = presenceRepository;
}
// Приватный метод для валидации ФИО пользователя
private void ValidateUserFIO(string fio)
{
if (string.IsNullOrWhiteSpace(fio))
{
throw new ArgumentException("ФИО не может быть пустым.");
}
}
public void RemovePresenceByUserId(int userId)
{
using (var context = new RemoteDatabaseContext())
{
var presences = context.PresenceDaos.Where(p => p.UserId == userId).ToList();
context.PresenceDaos.RemoveRange(presences);
context.SaveChanges();
}
}
// Приватный метод для валидации существования пользователя по ID
private UserDao ValidateUserExistence(int userId)
{
var user = _repositoryUserImpl.GetAllUsers()
.FirstOrDefault(u => u.UserId == userId);
if (user == null)
{
throw new Exception("Пользователь не найден.");
}
return user;
}
// Приватный метод для валидации существования группы по ID
private GroupDao ValidateGroupExistence(int groupId)
{
var group = _repositoryGroupImpl.GetAllGroups()
.FirstOrDefault(g => g.Id == groupId);
if (group == null)
{
throw new Exception("Группа не найдена.");
}
return group;
}
// Вывести всех пользователей
//упростить под ef
public List<UserDao> GetAllUsers() => _repositoryUserImpl.GetAllUsers()
.Join(_repositoryGroupImpl.GetAllGroups(),
user => user.GroupId, // Ключ для пользователей
group => group.Id, // Ключ для групп
(user, group) => // Результирующий объект
new UserDao
{
UserId = user.UserId,
FIO = user.FIO,
Group = new GroupDao { Id = group.Id, Name = group.Name }
}).ToList();
// Удалить пользователя по id
public bool RemoveUserById(int userId)
{
try
{
return _repositoryUserImpl.RemoveUserById(userId);
}
catch (UserNotFoundException ex)
{
Console.WriteLine($"Ошибка: {ex.Message}");
return false;
}
catch (RepositoryException ex)
{
Console.WriteLine($"Ошибка в репозитории: {ex.Message}");
return false;
}
}
// Обновить пользователя по id
public UserDao UpdateUser(int userId, string newFio, int groupId)
{
ValidateUserFIO(newFio);
ValidateGroupExistence(groupId);
UserDao userDao = new UserDao
{
UserId = userId,
FIO = newFio,
GroupId = groupId
};
UserDao? result = _repositoryUserImpl.UpdateUser(userId, newFio, groupId);
if (result == null)
{
throw new Exception("Ошибка при обновлении пользователя.");
}
var groupEntity = ValidateGroupExistence(result.GroupId);
return new UserDao
{
UserId = userId,
FIO = newFio,
GroupId = groupId
};
}
// Найти пользователя по id
public UserDao FindUserById(int userId)
{
var user = ValidateUserExistence(userId);
var group = ValidateGroupExistence(user.GroupId);
return new UserDao
{
UserId = user.UserId,
FIO = user.FIO,
Group = new GroupDao { Id = group.Id, Name = group.Name }
};
}
}
}

13
domain/domain.csproj Normal file
View File

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\data\data.csproj" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("domain")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("domain")]
[assembly: System.Reflection.AssemblyTitleAttribute("domain")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Создано классом WriteCodeFragment MSBuild.

View File

@ -0,0 +1 @@
50afef9105125301dd1c05ea9fb1e5f605a3f79c6aca753bbf0156749546e4dd

View File

@ -0,0 +1,13 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = domain
build_property.ProjectDir = C:\Users\adm\source\repos\presence\domain\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

Binary file not shown.

View File

@ -0,0 +1,148 @@
{
"format": 1,
"restore": {
"C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj": {}
},
"projects": {
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"projectName": "data",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"Microsoft.EntityFrameworkCore": {
"target": "Package",
"version": "[8.0.10, )"
},
"Microsoft.EntityFrameworkCore.Design": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[8.0.10, )"
},
"Npgsql.EntityFrameworkCore.PostgreSQL": {
"target": "Package",
"version": "[8.0.10, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj",
"projectName": "domain",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\adm\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.11.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\adm\.nuget\packages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props')" />
</ImportGroup>
</Project>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Options.targets')" />
</ImportGroup>
</Project>

View File

@ -0,0 +1,803 @@
{
"version": 3,
"targets": {
"net8.0": {
"Microsoft.EntityFrameworkCore/8.0.10": {
"type": "package",
"dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
"Microsoft.EntityFrameworkCore.Analyzers": "8.0.10",
"Microsoft.Extensions.Caching.Memory": "8.0.1",
"Microsoft.Extensions.Logging": "8.0.1"
},
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {}
}
},
"Microsoft.EntityFrameworkCore.Abstractions/8.0.10": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"related": ".xml"
}
}
},
"Microsoft.EntityFrameworkCore.Analyzers/8.0.10": {
"type": "package",
"compile": {
"lib/netstandard2.0/_._": {}
},
"runtime": {
"lib/netstandard2.0/_._": {}
}
},
"Microsoft.EntityFrameworkCore.Relational/8.0.10": {
"type": "package",
"dependencies": {
"Microsoft.EntityFrameworkCore": "8.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"related": ".xml"
}
}
},
"Microsoft.Extensions.Caching.Abstractions/8.0.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Caching.Memory/8.0.1": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
"Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.DependencyInjection/8.0.1": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Logging/8.0.1": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "8.0.1",
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
"Microsoft.Extensions.Options": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Logging.Abstractions/8.0.2": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
}
},
"Microsoft.Extensions.Options/8.0.2": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {}
}
},
"Microsoft.Extensions.Primitives/8.0.0": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Npgsql/8.0.5": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "8.0.0"
},
"compile": {
"lib/net8.0/Npgsql.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Npgsql.dll": {
"related": ".xml"
}
}
},
"Npgsql.EntityFrameworkCore.PostgreSQL/8.0.10": {
"type": "package",
"dependencies": {
"Microsoft.EntityFrameworkCore": "8.0.10",
"Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
"Microsoft.EntityFrameworkCore.Relational": "8.0.10",
"Npgsql": "8.0.5"
},
"compile": {
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": {
"related": ".xml"
}
}
},
"data/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v8.0",
"dependencies": {
"Microsoft.EntityFrameworkCore": "8.0.10",
"Npgsql.EntityFrameworkCore.PostgreSQL": "8.0.10"
},
"compile": {
"bin/placeholder/data.dll": {}
},
"runtime": {
"bin/placeholder/data.dll": {}
}
}
}
},
"libraries": {
"Microsoft.EntityFrameworkCore/8.0.10": {
"sha512": "PPkQdIqfR1nU3n6YgGGDk8G+eaYbaAKM1AzIQtlPNTKf10Osg3N9T+iK9AlnSA/ujsK00flPpFHVfJrbuBFS1A==",
"type": "package",
"path": "microsoft.entityframeworkcore/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props",
"lib/net8.0/Microsoft.EntityFrameworkCore.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.xml",
"microsoft.entityframeworkcore.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.nuspec"
]
},
"Microsoft.EntityFrameworkCore.Abstractions/8.0.10": {
"sha512": "FV0QlcX9INY4kAD2o72uPtyOh0nZut2jB11Jf9mNYBtHay8gDLe+x4AbXFwuQg+eSvofjT7naV82e827zGfyMg==",
"type": "package",
"path": "microsoft.entityframeworkcore.abstractions/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml",
"microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.abstractions.nuspec"
]
},
"Microsoft.EntityFrameworkCore.Analyzers/8.0.10": {
"sha512": "51KkPIc0EMv/gVXhPIUi6cwJE9Mvh+PLr4Lap4naLcsoGZ0lF2SvOPgUUprwRV3MnN7nyD1XPhT5RJ/p+xFAXw==",
"type": "package",
"path": "microsoft.entityframeworkcore.analyzers/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll",
"docs/PACKAGE.md",
"lib/netstandard2.0/_._",
"microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.analyzers.nuspec"
]
},
"Microsoft.EntityFrameworkCore.Relational/8.0.10": {
"sha512": "OefBEE47kGKPRPV3OT+FAW6o5BFgLk2D9EoeWVy7NbOepzUneayLQxbVE098FfedTyMwxvZQoDD9LrvZc3MadA==",
"type": "package",
"path": "microsoft.entityframeworkcore.relational/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml",
"microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.relational.nuspec"
]
},
"Microsoft.Extensions.Caching.Abstractions/8.0.0": {
"sha512": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==",
"type": "package",
"path": "microsoft.extensions.caching.abstractions/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml",
"microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
"microsoft.extensions.caching.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Caching.Memory/8.0.1": {
"sha512": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==",
"type": "package",
"path": "microsoft.extensions.caching.memory/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets",
"lib/net462/Microsoft.Extensions.Caching.Memory.dll",
"lib/net462/Microsoft.Extensions.Caching.Memory.xml",
"lib/net6.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net6.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/net7.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net7.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net8.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml",
"microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
"microsoft.extensions.caching.memory.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"type": "package",
"path": "microsoft.extensions.configuration.abstractions/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"microsoft.extensions.configuration.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.DependencyInjection/8.0.1": {
"sha512": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==",
"type": "package",
"path": "microsoft.extensions.dependencyinjection/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets",
"lib/net462/Microsoft.Extensions.DependencyInjection.dll",
"lib/net462/Microsoft.Extensions.DependencyInjection.xml",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml",
"microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
"microsoft.extensions.dependencyinjection.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
"sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
"type": "package",
"path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
"microsoft.extensions.dependencyinjection.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Logging/8.0.1": {
"sha512": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==",
"type": "package",
"path": "microsoft.extensions.logging/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Logging.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets",
"lib/net462/Microsoft.Extensions.Logging.dll",
"lib/net462/Microsoft.Extensions.Logging.xml",
"lib/net6.0/Microsoft.Extensions.Logging.dll",
"lib/net6.0/Microsoft.Extensions.Logging.xml",
"lib/net7.0/Microsoft.Extensions.Logging.dll",
"lib/net7.0/Microsoft.Extensions.Logging.xml",
"lib/net8.0/Microsoft.Extensions.Logging.dll",
"lib/net8.0/Microsoft.Extensions.Logging.xml",
"lib/netstandard2.0/Microsoft.Extensions.Logging.dll",
"lib/netstandard2.0/Microsoft.Extensions.Logging.xml",
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll",
"lib/netstandard2.1/Microsoft.Extensions.Logging.xml",
"microsoft.extensions.logging.8.0.1.nupkg.sha512",
"microsoft.extensions.logging.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Logging.Abstractions/8.0.2": {
"sha512": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
"type": "package",
"path": "microsoft.extensions.logging.abstractions/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
"microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
"microsoft.extensions.logging.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Options/8.0.2": {
"sha512": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
"type": "package",
"path": "microsoft.extensions.options/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll",
"analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"buildTransitive/net461/Microsoft.Extensions.Options.targets",
"buildTransitive/net462/Microsoft.Extensions.Options.targets",
"buildTransitive/net6.0/Microsoft.Extensions.Options.targets",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets",
"buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets",
"lib/net462/Microsoft.Extensions.Options.dll",
"lib/net462/Microsoft.Extensions.Options.xml",
"lib/net6.0/Microsoft.Extensions.Options.dll",
"lib/net6.0/Microsoft.Extensions.Options.xml",
"lib/net7.0/Microsoft.Extensions.Options.dll",
"lib/net7.0/Microsoft.Extensions.Options.xml",
"lib/net8.0/Microsoft.Extensions.Options.dll",
"lib/net8.0/Microsoft.Extensions.Options.xml",
"lib/netstandard2.0/Microsoft.Extensions.Options.dll",
"lib/netstandard2.0/Microsoft.Extensions.Options.xml",
"lib/netstandard2.1/Microsoft.Extensions.Options.dll",
"lib/netstandard2.1/Microsoft.Extensions.Options.xml",
"microsoft.extensions.options.8.0.2.nupkg.sha512",
"microsoft.extensions.options.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Primitives/8.0.0": {
"sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
"type": "package",
"path": "microsoft.extensions.primitives/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Primitives.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets",
"lib/net462/Microsoft.Extensions.Primitives.dll",
"lib/net462/Microsoft.Extensions.Primitives.xml",
"lib/net6.0/Microsoft.Extensions.Primitives.dll",
"lib/net6.0/Microsoft.Extensions.Primitives.xml",
"lib/net7.0/Microsoft.Extensions.Primitives.dll",
"lib/net7.0/Microsoft.Extensions.Primitives.xml",
"lib/net8.0/Microsoft.Extensions.Primitives.dll",
"lib/net8.0/Microsoft.Extensions.Primitives.xml",
"lib/netstandard2.0/Microsoft.Extensions.Primitives.dll",
"lib/netstandard2.0/Microsoft.Extensions.Primitives.xml",
"microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"microsoft.extensions.primitives.nuspec",
"useSharedDesignerContext.txt"
]
},
"Npgsql/8.0.5": {
"sha512": "zRG5V8cyeZLpzJlKzFKjEwkRMYIYnHWJvEor2lWXeccS2E1G2nIWYYhnukB51iz5XsWSVEtqg3AxTWM0QJ6vfg==",
"type": "package",
"path": "npgsql/8.0.5",
"files": [
".nupkg.metadata",
".signature.p7s",
"README.md",
"lib/net6.0/Npgsql.dll",
"lib/net6.0/Npgsql.xml",
"lib/net7.0/Npgsql.dll",
"lib/net7.0/Npgsql.xml",
"lib/net8.0/Npgsql.dll",
"lib/net8.0/Npgsql.xml",
"lib/netstandard2.0/Npgsql.dll",
"lib/netstandard2.0/Npgsql.xml",
"lib/netstandard2.1/Npgsql.dll",
"lib/netstandard2.1/Npgsql.xml",
"npgsql.8.0.5.nupkg.sha512",
"npgsql.nuspec",
"postgresql.png"
]
},
"Npgsql.EntityFrameworkCore.PostgreSQL/8.0.10": {
"sha512": "gFPl9Dmxih7Yi4tZ3bITzZFzbxFMBx04gqTqcjoL2r5VEW+O2TA5UVw/wm/XW26NAJ7sg59Je0+9QrwiZt6MPQ==",
"type": "package",
"path": "npgsql.entityframeworkcore.postgresql/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"README.md",
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll",
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.xml",
"npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512",
"npgsql.entityframeworkcore.postgresql.nuspec",
"postgresql.png"
]
},
"data/1.0.0": {
"type": "project",
"path": "../data/data.csproj",
"msbuildProject": "../data/data.csproj"
}
},
"projectFileDependencyGroups": {
"net8.0": [
"data >= 1.0.0"
]
},
"packageFolders": {
"C:\\Users\\adm\\.nuget\\packages\\": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj",
"projectName": "domain",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
}
}

View File

@ -0,0 +1,24 @@
{
"version": 2,
"dgSpecHash": "eapNM7JVoaI=",
"success": true,
"projectFilePath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj",
"expectedPackageFiles": [
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.10\\microsoft.entityframeworkcore.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.10\\microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.10\\microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.10\\microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\npgsql\\8.0.5\\npgsql.8.0.5.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\npgsql.entityframeworkcore.postgresql\\8.0.10\\npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512"
],
"logs": []
}

40
presnce.sln Normal file
View File

@ -0,0 +1,40 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "data", "data\data.csproj", "{B61AE661-CF04-46B2-9862-386DD078A071}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "domain", "domain\domain.csproj", "{4C6194FF-B704-406B-89A7-03C2EE38A899}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ui", "ui\ui.csproj", "{8CAAF4C4-09A3-419C-B232-56A150F0F30D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "console_ui", "console_ui\console_ui.csproj", "{F798197F-432C-4AFF-AAC1-EB1664094999}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B61AE661-CF04-46B2-9862-386DD078A071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B61AE661-CF04-46B2-9862-386DD078A071}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B61AE661-CF04-46B2-9862-386DD078A071}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B61AE661-CF04-46B2-9862-386DD078A071}.Release|Any CPU.Build.0 = Release|Any CPU
{4C6194FF-B704-406B-89A7-03C2EE38A899}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4C6194FF-B704-406B-89A7-03C2EE38A899}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4C6194FF-B704-406B-89A7-03C2EE38A899}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4C6194FF-B704-406B-89A7-03C2EE38A899}.Release|Any CPU.Build.0 = Release|Any CPU
{8CAAF4C4-09A3-419C-B232-56A150F0F30D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CAAF4C4-09A3-419C-B232-56A150F0F30D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CAAF4C4-09A3-419C-B232-56A150F0F30D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CAAF4C4-09A3-419C-B232-56A150F0F30D}.Release|Any CPU.Build.0 = Release|Any CPU
{F798197F-432C-4AFF-AAC1-EB1664094999}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F798197F-432C-4AFF-AAC1-EB1664094999}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F798197F-432C-4AFF-AAC1-EB1664094999}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F798197F-432C-4AFF-AAC1-EB1664094999}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

58
ui/GroupConsole.cs Normal file
View File

@ -0,0 +1,58 @@
using Demo.Domain.UseCase;
using System;
using System.Text;
namespace Demo.UI
{
public class GroupConsoleUI
{
private readonly GroupUseCase _groupUseCase;
public GroupConsoleUI(GroupUseCase groupUseCase)
{
_groupUseCase = groupUseCase;
}
public void FindGroupById(int IdGroup)
{
var groups = _groupUseCase.FindGroupById(IdGroup);
Console.WriteLine(groups);
}
// Метод для отображения всех групп
public void DisplayAllGroups()
{
Console.WriteLine("\n=== Список всех групп ===");
StringBuilder groupOutput = new StringBuilder();
foreach (var group in _groupUseCase.GetAllGroups())
{
groupOutput.AppendLine($"{group.Id}\t{group.Name}");
}
Console.WriteLine(groupOutput);
Console.WriteLine("===========================\n");
}
// Метод для добавления новой группы
public void AddGroup(string groupName)
{
try
{
_groupUseCase.AddGroup(groupName);
Console.WriteLine($"\nГруппа {groupName} добавлена.\n");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}\n");
}
}
// Метод для обновления названия группы
public void UpdateGroupName(int groupId, string newGroupName)
{
_groupUseCase.UpdateGroup(groupId, newGroupName);
Console.WriteLine($"\nНазвание группы с ID {groupId} изменено на {newGroupName}.\n");
}
}
}

224
ui/MainMenu.cs Normal file
View File

@ -0,0 +1,224 @@
using Demo.domain.Models;
using Demo.Domain.UseCase;
using System;
using System.Globalization;
namespace Demo.UI
{
public class MainMenuUI
{
private readonly UserConsoleUI _userConsoleUI;
private readonly GroupConsoleUI _groupConsoleUI;
private readonly PresenceConsole _presenceConsoleUI;
public MainMenuUI(UserUseCase userUseCase, GroupUseCase groupUseCase, UseCaseGeneratePresence presenceUseCase)
{
_userConsoleUI = new UserConsoleUI(userUseCase);
_groupConsoleUI = new GroupConsoleUI(groupUseCase);
_presenceConsoleUI = new PresenceConsole(presenceUseCase);
}
public void DisplayMenu()
{
while (true)
{
Console.WriteLine("\n=-= Главное меню =-=\n");
Console.WriteLine("=-= Команды с Пользователями =-=");
Console.WriteLine("1. Вывести всех пользователей");
Console.WriteLine("2. Удалить пользователя по id");
Console.WriteLine("3. Обновить пользователя по id");
Console.WriteLine("4. Найти пользователя по id");
Console.WriteLine();
Console.WriteLine("=-= Команды с Группами =-=");
Console.WriteLine("5. Вывести все группы");
Console.WriteLine("6. Добавить группу");
Console.WriteLine("7. Изменить название группы");
Console.WriteLine("8. Поиск группы по ID");
Console.WriteLine();
Console.WriteLine("=-= Команды Presence =-=");
Console.WriteLine("9. Сгенерировать посещаемость на день");
Console.WriteLine("10. Сгенерировать посещаемость на неделю");
Console.WriteLine("11. Показать посещаемость");
Console.WriteLine("12. Отметить пользователя как отсутствующего");
Console.WriteLine("13. Вывести всю посещаемость группы");
Console.WriteLine("14. Вывести общую информацию об посещаемости по группе");
Console.WriteLine("15. Вывести отчётв Excel");
Console.WriteLine();
Console.WriteLine("0. Выход");
Console.Write("\nВаш выбор: ");
string comand = Console.ReadLine();
Console.WriteLine();
switch (comand)
{
case "1":
// Отображение всех пользователей
_userConsoleUI.DisplayAllUsers();
break;
case "2":
// Удаление пользователя по ID
Console.Write("Введите ID пользователя для удаления: ");
string inputId = Console.ReadLine();
if (int.TryParse(inputId, out int userId))
{
_userConsoleUI.RemoveUserById(userId);
}
else
{
Console.WriteLine("Неверный формат ID");
}
break;
case "3":
// Обновление пользователя по ID
Console.Write("Введите ID пользователя для обновления: ");
string updateIdInput = Console.ReadLine();
if (int.TryParse(updateIdInput, out int updateUserId))
{
_userConsoleUI.UpdateUserById(updateUserId);
}
else
{
Console.WriteLine("Неверный формат ID");
}
break;
case "4":
// Поиск пользователя по ID
Console.Write("Введите ID пользователя для поиска: ");
string findIdInput = Console.ReadLine();
if (int.TryParse(findIdInput, out int findUserId))
{
_userConsoleUI.FindUserById(findUserId);
}
else
{
Console.WriteLine("Неверный формат ID");
}
break;
case "5":
// Отображение всех групп
_groupConsoleUI.DisplayAllGroups();
break;
case "6":
// Добавление новой группы
Console.Write("Введите название новой группы: ");
string newGroupName = Console.ReadLine();
_groupConsoleUI.AddGroup(newGroupName);
break;
case "7":
// Изменение названия группы
Console.Write("Введите ID группы для изменения: ");
if (int.TryParse(Console.ReadLine(), out int groupId))
{
Console.Write("Введите новое название группы: ");
string newName = Console.ReadLine();
_groupConsoleUI.UpdateGroupName(groupId, newName);
}
else
{
Console.WriteLine("Неверный формат ID группы");
}
break;
case "8":
// Поиск группы
Console.Write("Введите ID группы для поиска : ");
if (int.TryParse(Console.ReadLine(), out int IdGroup))
{
_groupConsoleUI.FindGroupById(IdGroup);
}
break;
case "9":
// Генерация посещаемости на день
Console.Write("Введите номер первого занятия: ");
int firstLesson = int.Parse(Console.ReadLine());
Console.Write("Введите номер последнего занятия: ");
int lastLesson = int.Parse(Console.ReadLine());
Console.Write("Введите ID группы: ");
int groupIdForPresence = int.Parse(Console.ReadLine());
_presenceConsoleUI.GeneratePresenceForDay(DateTime.Now, groupIdForPresence, firstLesson, lastLesson);
Console.WriteLine("Посещаемость на день сгенерирована.");
break;
case "10":
// Генерация посещаемости на неделю
Console.Write("Введите номер первого занятия: ");
int firstLessonForWeek = int.Parse(Console.ReadLine());
Console.Write("Введите номер последнего занятия: ");
int lastLessonForWeek = int.Parse(Console.ReadLine());
Console.Write("Введите ID группы: ");
int groupIdForWeekPresence = int.Parse(Console.ReadLine());
_presenceConsoleUI.GeneratePresenceForWeek(DateTime.Now, groupIdForWeekPresence, firstLessonForWeek, lastLessonForWeek);
Console.WriteLine("Посещаемость на неделю сгенерирована.");
break;
case "11":
// Отображение посещаемости
Console.Write("Введите дату (гггг-мм-дд): ");
DateTime date = DateTime.Parse(Console.ReadLine());
Console.Write("Введите ID группы: ");
int groupForPresenceView = int.Parse(Console.ReadLine());
_presenceConsoleUI.DisplayPresence(date, groupForPresenceView);
break;
case "12":
// Отметить пользователя как отсутствующего
Console.Write("Введите ID пользователя: ");
userId = int.Parse(Console.ReadLine());
Console.Write("Введите номер первого занятия: ");
int firstAbsLesson = int.Parse(Console.ReadLine());
Console.Write("Введите номер последнего занятия: ");
int lastAbsLesson = int.Parse(Console.ReadLine());
Console.Write("Введите ID группы: ");
int absGroupId = int.Parse(Console.ReadLine());
Console.Write("Введите дату (дд.мм.гггг): ");
string dateInput = Console.ReadLine();
DateTime absenceDate;
if (!DateTime.TryParseExact(dateInput, "d.M.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out absenceDate))
{
Console.WriteLine("Ошибка: Введен некорректный формат даты. Пожалуйста, используйте формат дд.мм.гггг.");
return; // Завершает выполнение, если дата некорректна
}
_presenceConsoleUI.MarkUserAbsent(absenceDate, absGroupId, userId, firstAbsLesson, lastAbsLesson);
break;
case "13":
Console.Write("Введите ID группы: ");
int groupIdForAllPresence = int.Parse(Console.ReadLine());
_presenceConsoleUI.DisplayAllPresenceByGroup(groupIdForAllPresence);
break;
case "14":
Console.Write("Введите ID группы: ");
int searchGroupId = int.Parse(Console.ReadLine());
_presenceConsoleUI.DisplayGeneralPresence(searchGroupId);
break;
case "15":
_presenceConsoleUI.ExportAttendanceToExcel();
break;
case "0":
Console.WriteLine("Выход...");
return;
default:
Console.WriteLine("Неверный выбор, попробуйте снова.");
break;
}
Console.WriteLine();
}
}
}
}

188
ui/PresenceConsole.cs Normal file
View File

@ -0,0 +1,188 @@
using Demo.Data.Exceptions;
using Demo.Data.RemoteData.RemoteDataBase.DAO;
using Demo.domain.Models;
using Demo.Domain.UseCase;
using System;
using System.Collections.Generic;
namespace Demo.UI
{
public class PresenceConsole
{
private readonly UseCaseGeneratePresence _presenceUseCase;
public PresenceConsole(UseCaseGeneratePresence presenceUseCase)
{
_presenceUseCase = presenceUseCase;
}
public void ExportAttendanceToExcel()
{
try
{
_presenceUseCase.ExportAttendanceToExcel();
Console.WriteLine("Данные посещаемости успешно экспортированы в Excel.");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при экспорте посещаемости: {ex.Message}");
}
}
// Метод для генерации посещаемости на день
public void GeneratePresenceForDay(DateTime date, int groupId, int firstLesson, int lastLesson)
{
try
{
_presenceUseCase.GeneratePresenceDaily(firstLesson, lastLesson, groupId);
Console.WriteLine("Посещаемость на день успешно сгенерирована.");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при генерации посещаемости: {ex.Message}");
}
}
// Метод для генерации посещаемости на неделю
public void GeneratePresenceForWeek(DateTime date, int groupId, int firstLesson, int lastLesson)
{
try
{
_presenceUseCase.GenerateWeeklyPresence(firstLesson, lastLesson, groupId, date);
Console.WriteLine("Посещаемость на неделю успешно сгенерирована.");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при генерации посещаемости: {ex.Message}");
}
}
// Метод для отображения посещаемости на конкретную дату и группу
public void DisplayPresence(DateTime date, int groupId)
{
try
{
List<PresenceDao> presences = _presenceUseCase.GetPresenceByDateAndGroup(date, groupId);
if (presences == null || presences.Count == 0)
{
Console.WriteLine("Посещаемость на выбранную дату отсутствует.");
return;
}
// Сортируем присутствия по номеру занятия и ID пользователя
var sortedPresences = presences.OrderBy(p => p.LessonNumber)
.ThenBy(p => p.UserId);
Console.WriteLine($"\nПосещаемость на {date.ToShortDateString()} для группы с ID {groupId}:");
Console.WriteLine("---------------------------------------------");
int previousLessonNumber = -1; // Инициализация для сравнения
foreach (var presence in sortedPresences)
{
if (previousLessonNumber != presence.LessonNumber)
{
Console.WriteLine("---------------------------------------------");
previousLessonNumber = presence.LessonNumber;
}
string status = presence.IsAttedance ? "Присутствует" : "Отсутствует";
Console.WriteLine($"Пользователь ID: {presence.UserId}, Занятие {presence.LessonNumber}: {status}");
}
Console.WriteLine("---------------------------------------------");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при выводе посещаемости: {ex.Message}");
}
}
public void MarkUserAbsent(DateTime date, int groupId, int userId, int firstLesson, int lastLesson)
{
bool check = _presenceUseCase.MarkUserAbsentForLessons(userId, groupId, firstLesson, lastLesson, date);
if (check)
{
Console.WriteLine("Пользователь отмечен как осутсвующий");
}
else
{
Console.WriteLine($"Посещаемость для пользователя ID: {userId} на дату {date.ToShortDateString()}" +
$" с {firstLesson} по {lastLesson} уроки не найдена.");
}
}
public void DisplayGeneralPresence(int groupId)
{
var statistics = _presenceUseCase.GetGeneralPresence(groupId);
Console.WriteLine($"Человек в группе: {statistics.UserCount}, " +
$"Количество проведённых занятий: {statistics.TotalLessons}, " +
$"Общий процент посещаемости группы: {statistics.AttendancePercentage}%");
foreach (var user in statistics.UserAttendanceDetails)
{
Console.ForegroundColor = user.AttendanceRate < 40 ? ConsoleColor.Red : ConsoleColor.White;
Console.WriteLine($"ID Пользователя: {user.UserId}, Посетил: {user.Attended}, " +
$"Пропустил: {user.Missed}, Процент посещаемости: {user.AttendanceRate}%");
}
Console.ForegroundColor = ConsoleColor.White;
}
public void DisplayAllPresenceByGroup(int groupId)
{
try
{
// Получаем все посещения для группы
var presences = _presenceUseCase.GetAllPresenceByGroup(groupId);
if (presences == null || presences.Count == 0)
{
Console.WriteLine($"Посещаемость для группы с ID {groupId} отсутствует.");
return;
}
// Группируем по дате
var groupedPresences = presences.GroupBy(p => p.Date);
foreach (var group in groupedPresences)
{
Console.WriteLine("===================================================");
Console.WriteLine($"Дата: {group.Key.ToString("dd.MM.yyyy")}");
Console.WriteLine("===================================================");
// Группируем по занятию
var groupedByLesson = group.GroupBy(p => p.LessonNumber);
foreach (var lessonGroup in groupedByLesson)
{
Console.WriteLine($"Занятие {lessonGroup.Key}:");
// Создаем HashSet для уникальных пользователей
var userIds = new HashSet<int>();
foreach (var presence in lessonGroup)
{
// Проверяем, добавляется ли пользователь в HashSet
if (userIds.Add(presence.UserId))
{
string status = presence.IsAttedance ? "Присутствует" : "Отсутствует";
Console.WriteLine($"Пользователь ID: {presence.UserId}, Статус: {status}");
}
}
Console.WriteLine("---------------------------------------------------");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка при выводе посещаемости: {ex.Message}");
}
}
}
}

81
ui/UserConsole.cs Normal file
View File

@ -0,0 +1,81 @@
using Demo.Data.RemoteData.RemoteDataBase;
using Demo.Data.Repository;
using Demo.Domain.UseCase;
using System;
using System.Text;
namespace Demo.UI
{
public class UserConsoleUI
{
private readonly UserUseCase _userUseCase;
public UserConsoleUI(UserUseCase userUseCase)
{
_userUseCase = userUseCase;
}
// Метод для отображения всех пользователей
public void DisplayAllUsers()
{
Console.WriteLine("\n=== Список всех пользователей ===");
StringBuilder userOutput = new StringBuilder();
foreach (var user in _userUseCase.GetAllUsers())
{
userOutput.AppendLine($"{user.UserId}\t{user.FIO}\t{user.Group.Name}");
}
Console.WriteLine(userOutput);
Console.WriteLine("===============================\n");
}
// Метод для удаления пользователя по ID
public void RemoveUserById(int userId)
{
// Сначала удаляем все записи о присутствии пользователя
_userUseCase.RemovePresenceByUserId(userId);
// Теперь удаляем пользователя
string output = _userUseCase.RemoveUserById(userId) ? "Пользователь удален" : "Пользователь не найден";
Console.WriteLine($"\n{output}\n");
}
// Метод для обновления пользователя по ID
public void UpdateUserById(int userId)
{
try
{
var user = _userUseCase.FindUserById(userId);
Console.WriteLine($"Текущие данные: {user.FIO}");
Console.Write("\nВведите новое ФИО: ");
string newFIO = Console.ReadLine();
Console.Write("\nВведите новый ID группы (или оставьте такой же): ");
int GroupId = int.Parse(Console.ReadLine());
_userUseCase.UpdateUser(userId, newFIO, GroupId);
Console.WriteLine("\nПользователь обновлен.\n");
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}\n");
}
}
// Метод для поиска пользователя по ID
public void FindUserById(int userId)
{
var user = _userUseCase.FindUserById(userId);
if (user != null)
{
Console.WriteLine($"\nПользователь найден: {user.UserId}, {user.FIO}, {user.Group.Name}\n");
}
else
{
Console.WriteLine("\nПользователь не найден.\n");
}
}
}
}

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@ -0,0 +1,23 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("ui")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("ui")]
[assembly: System.Reflection.AssemblyTitleAttribute("ui")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Создано классом WriteCodeFragment MSBuild.

View File

@ -0,0 +1 @@
20ed1ba88db46bd37bf95cc037aa54d55b6a60c0405520a36b7f26aec1c3e1fe

View File

@ -0,0 +1,13 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = ui
build_property.ProjectDir = C:\Users\adm\source\repos\presence\ui\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;

Binary file not shown.

Binary file not shown.

821
ui/obj/project.assets.json Normal file
View File

@ -0,0 +1,821 @@
{
"version": 3,
"targets": {
"net8.0": {
"Microsoft.EntityFrameworkCore/8.0.10": {
"type": "package",
"dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
"Microsoft.EntityFrameworkCore.Analyzers": "8.0.10",
"Microsoft.Extensions.Caching.Memory": "8.0.1",
"Microsoft.Extensions.Logging": "8.0.1"
},
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {}
}
},
"Microsoft.EntityFrameworkCore.Abstractions/8.0.10": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"related": ".xml"
}
}
},
"Microsoft.EntityFrameworkCore.Analyzers/8.0.10": {
"type": "package",
"compile": {
"lib/netstandard2.0/_._": {}
},
"runtime": {
"lib/netstandard2.0/_._": {}
}
},
"Microsoft.EntityFrameworkCore.Relational/8.0.10": {
"type": "package",
"dependencies": {
"Microsoft.EntityFrameworkCore": "8.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"related": ".xml"
}
}
},
"Microsoft.Extensions.Caching.Abstractions/8.0.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Caching.Memory/8.0.1": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "8.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
"Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.DependencyInjection/8.0.1": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Logging/8.0.1": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "8.0.1",
"Microsoft.Extensions.Logging.Abstractions": "8.0.2",
"Microsoft.Extensions.Options": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Logging.Abstractions/8.0.2": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
}
},
"Microsoft.Extensions.Options/8.0.2": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
"Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {}
}
},
"Microsoft.Extensions.Primitives/8.0.0": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/net6.0/_._": {}
}
},
"Npgsql/8.0.5": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "8.0.0"
},
"compile": {
"lib/net8.0/Npgsql.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Npgsql.dll": {
"related": ".xml"
}
}
},
"Npgsql.EntityFrameworkCore.PostgreSQL/8.0.10": {
"type": "package",
"dependencies": {
"Microsoft.EntityFrameworkCore": "8.0.10",
"Microsoft.EntityFrameworkCore.Abstractions": "8.0.10",
"Microsoft.EntityFrameworkCore.Relational": "8.0.10",
"Npgsql": "8.0.5"
},
"compile": {
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": {
"related": ".xml"
}
}
},
"data/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v8.0",
"dependencies": {
"Microsoft.EntityFrameworkCore": "8.0.10",
"Npgsql.EntityFrameworkCore.PostgreSQL": "8.0.10"
},
"compile": {
"bin/placeholder/data.dll": {}
},
"runtime": {
"bin/placeholder/data.dll": {}
}
},
"domain/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v8.0",
"dependencies": {
"data": "1.0.0"
},
"compile": {
"bin/placeholder/domain.dll": {}
},
"runtime": {
"bin/placeholder/domain.dll": {}
}
}
}
},
"libraries": {
"Microsoft.EntityFrameworkCore/8.0.10": {
"sha512": "PPkQdIqfR1nU3n6YgGGDk8G+eaYbaAKM1AzIQtlPNTKf10Osg3N9T+iK9AlnSA/ujsK00flPpFHVfJrbuBFS1A==",
"type": "package",
"path": "microsoft.entityframeworkcore/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props",
"lib/net8.0/Microsoft.EntityFrameworkCore.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.xml",
"microsoft.entityframeworkcore.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.nuspec"
]
},
"Microsoft.EntityFrameworkCore.Abstractions/8.0.10": {
"sha512": "FV0QlcX9INY4kAD2o72uPtyOh0nZut2jB11Jf9mNYBtHay8gDLe+x4AbXFwuQg+eSvofjT7naV82e827zGfyMg==",
"type": "package",
"path": "microsoft.entityframeworkcore.abstractions/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml",
"microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.abstractions.nuspec"
]
},
"Microsoft.EntityFrameworkCore.Analyzers/8.0.10": {
"sha512": "51KkPIc0EMv/gVXhPIUi6cwJE9Mvh+PLr4Lap4naLcsoGZ0lF2SvOPgUUprwRV3MnN7nyD1XPhT5RJ/p+xFAXw==",
"type": "package",
"path": "microsoft.entityframeworkcore.analyzers/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll",
"docs/PACKAGE.md",
"lib/netstandard2.0/_._",
"microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.analyzers.nuspec"
]
},
"Microsoft.EntityFrameworkCore.Relational/8.0.10": {
"sha512": "OefBEE47kGKPRPV3OT+FAW6o5BFgLk2D9EoeWVy7NbOepzUneayLQxbVE098FfedTyMwxvZQoDD9LrvZc3MadA==",
"type": "package",
"path": "microsoft.entityframeworkcore.relational/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"PACKAGE.md",
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml",
"microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512",
"microsoft.entityframeworkcore.relational.nuspec"
]
},
"Microsoft.Extensions.Caching.Abstractions/8.0.0": {
"sha512": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==",
"type": "package",
"path": "microsoft.extensions.caching.abstractions/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml",
"microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
"microsoft.extensions.caching.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Caching.Memory/8.0.1": {
"sha512": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==",
"type": "package",
"path": "microsoft.extensions.caching.memory/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets",
"lib/net462/Microsoft.Extensions.Caching.Memory.dll",
"lib/net462/Microsoft.Extensions.Caching.Memory.xml",
"lib/net6.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net6.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/net7.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net7.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net8.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml",
"microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
"microsoft.extensions.caching.memory.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"type": "package",
"path": "microsoft.extensions.configuration.abstractions/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"microsoft.extensions.configuration.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.DependencyInjection/8.0.1": {
"sha512": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==",
"type": "package",
"path": "microsoft.extensions.dependencyinjection/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets",
"lib/net462/Microsoft.Extensions.DependencyInjection.dll",
"lib/net462/Microsoft.Extensions.DependencyInjection.xml",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml",
"microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
"microsoft.extensions.dependencyinjection.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
"sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
"type": "package",
"path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
"microsoft.extensions.dependencyinjection.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Logging/8.0.1": {
"sha512": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==",
"type": "package",
"path": "microsoft.extensions.logging/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Logging.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets",
"lib/net462/Microsoft.Extensions.Logging.dll",
"lib/net462/Microsoft.Extensions.Logging.xml",
"lib/net6.0/Microsoft.Extensions.Logging.dll",
"lib/net6.0/Microsoft.Extensions.Logging.xml",
"lib/net7.0/Microsoft.Extensions.Logging.dll",
"lib/net7.0/Microsoft.Extensions.Logging.xml",
"lib/net8.0/Microsoft.Extensions.Logging.dll",
"lib/net8.0/Microsoft.Extensions.Logging.xml",
"lib/netstandard2.0/Microsoft.Extensions.Logging.dll",
"lib/netstandard2.0/Microsoft.Extensions.Logging.xml",
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll",
"lib/netstandard2.1/Microsoft.Extensions.Logging.xml",
"microsoft.extensions.logging.8.0.1.nupkg.sha512",
"microsoft.extensions.logging.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Logging.Abstractions/8.0.2": {
"sha512": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==",
"type": "package",
"path": "microsoft.extensions.logging.abstractions/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll",
"analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
"microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
"microsoft.extensions.logging.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Options/8.0.2": {
"sha512": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
"type": "package",
"path": "microsoft.extensions.options/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll",
"analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"buildTransitive/net461/Microsoft.Extensions.Options.targets",
"buildTransitive/net462/Microsoft.Extensions.Options.targets",
"buildTransitive/net6.0/Microsoft.Extensions.Options.targets",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets",
"buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets",
"lib/net462/Microsoft.Extensions.Options.dll",
"lib/net462/Microsoft.Extensions.Options.xml",
"lib/net6.0/Microsoft.Extensions.Options.dll",
"lib/net6.0/Microsoft.Extensions.Options.xml",
"lib/net7.0/Microsoft.Extensions.Options.dll",
"lib/net7.0/Microsoft.Extensions.Options.xml",
"lib/net8.0/Microsoft.Extensions.Options.dll",
"lib/net8.0/Microsoft.Extensions.Options.xml",
"lib/netstandard2.0/Microsoft.Extensions.Options.dll",
"lib/netstandard2.0/Microsoft.Extensions.Options.xml",
"lib/netstandard2.1/Microsoft.Extensions.Options.dll",
"lib/netstandard2.1/Microsoft.Extensions.Options.xml",
"microsoft.extensions.options.8.0.2.nupkg.sha512",
"microsoft.extensions.options.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Primitives/8.0.0": {
"sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
"type": "package",
"path": "microsoft.extensions.primitives/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Primitives.targets",
"buildTransitive/net462/_._",
"buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets",
"lib/net462/Microsoft.Extensions.Primitives.dll",
"lib/net462/Microsoft.Extensions.Primitives.xml",
"lib/net6.0/Microsoft.Extensions.Primitives.dll",
"lib/net6.0/Microsoft.Extensions.Primitives.xml",
"lib/net7.0/Microsoft.Extensions.Primitives.dll",
"lib/net7.0/Microsoft.Extensions.Primitives.xml",
"lib/net8.0/Microsoft.Extensions.Primitives.dll",
"lib/net8.0/Microsoft.Extensions.Primitives.xml",
"lib/netstandard2.0/Microsoft.Extensions.Primitives.dll",
"lib/netstandard2.0/Microsoft.Extensions.Primitives.xml",
"microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"microsoft.extensions.primitives.nuspec",
"useSharedDesignerContext.txt"
]
},
"Npgsql/8.0.5": {
"sha512": "zRG5V8cyeZLpzJlKzFKjEwkRMYIYnHWJvEor2lWXeccS2E1G2nIWYYhnukB51iz5XsWSVEtqg3AxTWM0QJ6vfg==",
"type": "package",
"path": "npgsql/8.0.5",
"files": [
".nupkg.metadata",
".signature.p7s",
"README.md",
"lib/net6.0/Npgsql.dll",
"lib/net6.0/Npgsql.xml",
"lib/net7.0/Npgsql.dll",
"lib/net7.0/Npgsql.xml",
"lib/net8.0/Npgsql.dll",
"lib/net8.0/Npgsql.xml",
"lib/netstandard2.0/Npgsql.dll",
"lib/netstandard2.0/Npgsql.xml",
"lib/netstandard2.1/Npgsql.dll",
"lib/netstandard2.1/Npgsql.xml",
"npgsql.8.0.5.nupkg.sha512",
"npgsql.nuspec",
"postgresql.png"
]
},
"Npgsql.EntityFrameworkCore.PostgreSQL/8.0.10": {
"sha512": "gFPl9Dmxih7Yi4tZ3bITzZFzbxFMBx04gqTqcjoL2r5VEW+O2TA5UVw/wm/XW26NAJ7sg59Je0+9QrwiZt6MPQ==",
"type": "package",
"path": "npgsql.entityframeworkcore.postgresql/8.0.10",
"files": [
".nupkg.metadata",
".signature.p7s",
"README.md",
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll",
"lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.xml",
"npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512",
"npgsql.entityframeworkcore.postgresql.nuspec",
"postgresql.png"
]
},
"data/1.0.0": {
"type": "project",
"path": "../data/data.csproj",
"msbuildProject": "../data/data.csproj"
},
"domain/1.0.0": {
"type": "project",
"path": "../domain/domain.csproj",
"msbuildProject": "../domain/domain.csproj"
}
},
"projectFileDependencyGroups": {
"net8.0": [
"domain >= 1.0.0"
]
},
"packageFolders": {
"C:\\Users\\adm\\.nuget\\packages\\": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj",
"projectName": "ui",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\ui\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
}
}

View File

@ -0,0 +1,24 @@
{
"version": 2,
"dgSpecHash": "OlApgWgwSYg=",
"success": true,
"projectFilePath": "C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj",
"expectedPackageFiles": [
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.10\\microsoft.entityframeworkcore.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.10\\microsoft.entityframeworkcore.abstractions.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.10\\microsoft.entityframeworkcore.analyzers.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.10\\microsoft.entityframeworkcore.relational.8.0.10.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\npgsql\\8.0.5\\npgsql.8.0.5.nupkg.sha512",
"C:\\Users\\adm\\.nuget\\packages\\npgsql.entityframeworkcore.postgresql\\8.0.10\\npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512"
],
"logs": []
}

View File

@ -0,0 +1,212 @@
{
"format": 1,
"restore": {
"C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj": {}
},
"projects": {
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"projectName": "data",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"dependencies": {
"Microsoft.EntityFrameworkCore": {
"target": "Package",
"version": "[8.0.10, )"
},
"Microsoft.EntityFrameworkCore.Design": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[8.0.10, )"
},
"Npgsql.EntityFrameworkCore.PostgreSQL": {
"target": "Package",
"version": "[8.0.10, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj",
"projectName": "domain",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\data\\data.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj",
"projectName": "ui",
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\ui\\ui.csproj",
"packagesPath": "C:\\Users\\adm\\.nuget\\packages\\",
"outputPath": "C:\\Users\\adm\\source\\repos\\presence\\ui\\obj\\",
"projectStyle": "PackageReference",
"configFilePaths": [
"C:\\Users\\adm\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {
"C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj": {
"projectPath": "C:\\Users\\adm\\source\\repos\\presence\\domain\\domain.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
},
"restoreAuditProperties": {
"enableAudit": "true",
"auditLevel": "low",
"auditMode": "direct"
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\adm\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.11.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\adm\.nuget\packages\" />
</ItemGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore\8.0.10\buildTransitive\net8.0\Microsoft.EntityFrameworkCore.props')" />
</ImportGroup>
</Project>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\8.0.2\buildTransitive\net6.0\Microsoft.Extensions.Options.targets')" />
</ImportGroup>
</Project>

13
ui/ui.csproj Normal file
View File

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\domain\domain.csproj" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>