first commit

This commit is contained in:
Blueberry 2025-04-11 11:18:41 +03:00
commit 0dab052c80
315 changed files with 12337 additions and 0 deletions

Binary file not shown.

BIN
.vs/Demo2/v17/.futdcache.v2 Normal file

Binary file not shown.

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

Binary file not shown.

BIN
.vs/Demo2/v17/.wsuo Normal file

Binary file not shown.

View File

@ -0,0 +1,179 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\prdb\\Desktop\\Demo2-master\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\editwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\editwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\models\\service.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\models\\service.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\models\\tag.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\models\\tag.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\mainwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\mainwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\editwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\editwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\mainwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\mainwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\models\\manufacturer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\models\\manufacturer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\publicactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\publicactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\models\\client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\models\\client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 149,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 4,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Service.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Service.cs",
"RelativeDocumentMoniker": "Demo2\\Models\\Service.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Service.cs",
"RelativeToolTip": "Demo2\\Models\\Service.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-19T12:40:42.844Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "Tag.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Tag.cs",
"RelativeDocumentMoniker": "Demo2\\Models\\Tag.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Tag.cs",
"RelativeToolTip": "Demo2\\Models\\Tag.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAXAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-19T11:15:03.27Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "MainWindow.axaml.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\MainWindow.axaml.cs",
"RelativeDocumentMoniker": "Demo2\\MainWindow.axaml.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\MainWindow.axaml.cs",
"RelativeToolTip": "Demo2\\MainWindow.axaml.cs",
"ViewState": "AgIAAGcAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-19T09:28:53.068Z"
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "EditWindow.axaml.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\EditWindow.axaml.cs",
"RelativeDocumentMoniker": "Demo2\\EditWindow.axaml.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\EditWindow.axaml.cs",
"RelativeToolTip": "Demo2\\EditWindow.axaml.cs",
"ViewState": "AgIAADsAAAAAAAAAAAAswM8AAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-19T08:05:37.296Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "EditWindow.axaml",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\EditWindow.axaml",
"RelativeDocumentMoniker": "Demo2\\EditWindow.axaml",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\EditWindow.axaml",
"RelativeToolTip": "Demo2\\EditWindow.axaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2024-09-19T08:05:35.845Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "Manufacturer.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Manufacturer.cs",
"RelativeDocumentMoniker": "Demo2\\Models\\Manufacturer.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Manufacturer.cs",
"RelativeToolTip": "Demo2\\Models\\Manufacturer.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-19T10:32:33.459Z"
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "MainWindow.axaml",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\MainWindow.axaml",
"RelativeDocumentMoniker": "Demo2\\MainWindow.axaml",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\MainWindow.axaml",
"RelativeToolTip": "Demo2\\MainWindow.axaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2024-09-19T08:05:18.181Z"
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "Client.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Client.cs",
"RelativeDocumentMoniker": "Demo2\\Models\\Client.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Client.cs",
"RelativeToolTip": "Demo2\\Models\\Client.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-18T12:02:16.09Z"
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "PublicActions.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\PublicActions.cs",
"RelativeDocumentMoniker": "Demo2\\PublicActions.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\PublicActions.cs",
"RelativeToolTip": "Demo2\\PublicActions.cs",
"ViewState": "AQIAAAwAAAAAAAAAAAAAABsAAAANAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-17T10:32:36.054Z"
},
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "App.axaml",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\App.axaml",
"RelativeDocumentMoniker": "Demo2\\App.axaml",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\App.axaml",
"RelativeToolTip": "Demo2\\App.axaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2024-09-17T10:13:55.602Z"
}
]
}
]
}
]
}

View File

@ -0,0 +1,179 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\prdb\\Desktop\\Demo2-master\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\editwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\editwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\models\\service.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\models\\service.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\models\\tag.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\models\\tag.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\mainwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\mainwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\editwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\editwindow.axaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\mainwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\mainwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\models\\manufacturer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\models\\manufacturer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\publicactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\publicactions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\models\\client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\models\\client.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|c:\\users\\prdb\\desktop\\demo2-master\\demo2\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
"RelativeMoniker": "D:0:0:{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}|Demo2\\Demo2.csproj|solutionrelative:demo2\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 149,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 4,
"Children": [
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Service.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Service.cs",
"RelativeDocumentMoniker": "Demo2\\Models\\Service.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Service.cs",
"RelativeToolTip": "Demo2\\Models\\Service.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-19T12:40:42.844Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "Tag.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Tag.cs",
"RelativeDocumentMoniker": "Demo2\\Models\\Tag.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Tag.cs",
"RelativeToolTip": "Demo2\\Models\\Tag.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAXAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-19T11:15:03.27Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "MainWindow.axaml.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\MainWindow.axaml.cs",
"RelativeDocumentMoniker": "Demo2\\MainWindow.axaml.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\MainWindow.axaml.cs",
"RelativeToolTip": "Demo2\\MainWindow.axaml.cs",
"ViewState": "AgIAAGcAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-19T09:28:53.068Z"
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "EditWindow.axaml.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\EditWindow.axaml.cs",
"RelativeDocumentMoniker": "Demo2\\EditWindow.axaml.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\EditWindow.axaml.cs",
"RelativeToolTip": "Demo2\\EditWindow.axaml.cs",
"ViewState": "AgIAADsAAAAAAAAAAAAswM8AAAAJAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-19T08:05:37.296Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "EditWindow.axaml",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\EditWindow.axaml",
"RelativeDocumentMoniker": "Demo2\\EditWindow.axaml",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\EditWindow.axaml",
"RelativeToolTip": "Demo2\\EditWindow.axaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2024-09-19T08:05:35.845Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "Manufacturer.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Manufacturer.cs",
"RelativeDocumentMoniker": "Demo2\\Models\\Manufacturer.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Manufacturer.cs",
"RelativeToolTip": "Demo2\\Models\\Manufacturer.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-19T10:32:33.459Z"
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "MainWindow.axaml",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\MainWindow.axaml",
"RelativeDocumentMoniker": "Demo2\\MainWindow.axaml",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\MainWindow.axaml",
"RelativeToolTip": "Demo2\\MainWindow.axaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2024-09-19T08:05:18.181Z"
},
{
"$type": "Document",
"DocumentIndex": 8,
"Title": "Client.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Client.cs",
"RelativeDocumentMoniker": "Demo2\\Models\\Client.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\Models\\Client.cs",
"RelativeToolTip": "Demo2\\Models\\Client.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-18T12:02:16.09Z"
},
{
"$type": "Document",
"DocumentIndex": 7,
"Title": "PublicActions.cs",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\PublicActions.cs",
"RelativeDocumentMoniker": "Demo2\\PublicActions.cs",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\PublicActions.cs",
"RelativeToolTip": "Demo2\\PublicActions.cs",
"ViewState": "AQIAAAwAAAAAAAAAAAAAABsAAAANAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-09-17T10:32:36.054Z"
},
{
"$type": "Document",
"DocumentIndex": 9,
"Title": "App.axaml",
"DocumentMoniker": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\App.axaml",
"RelativeDocumentMoniker": "Demo2\\App.axaml",
"ToolTip": "C:\\Users\\prdb\\Desktop\\Demo2-master\\Demo2\\App.axaml",
"RelativeToolTip": "Demo2\\App.axaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
"WhenOpened": "2024-09-17T10:13:55.602Z"
}
]
}
]
}
]
}

BIN
.vs/Proj/v17/.wsuo Normal file

Binary file not shown.

View File

@ -0,0 +1,27 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\prdb\\Desktop\\IsayProj\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": -1,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{d78612c7-9962-4b83-95d9-268046dad23a}"
},
{
"$type": "Bookmark",
"Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
}
]
}
]
}
]
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,8 @@
{
"ExpandedNodes": [
"",
"\\Demo2"
],
"SelectedNode": "\\Demo2.sln",
"PreviewInSolutionExplorer": false
}

BIN
.vs/slnx.sqlite Normal file

Binary file not shown.

25
Demo2.sln Normal file
View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34622.214
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo2", "Demo2\Demo2.csproj", "{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5E14A68-7DB7-4ACC-95DB-DC123E29717F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6D4B8EDB-F940-415F-8B97-BDB961394BE0}
EndGlobalSection
EndGlobal

25
Demo2/App.axaml Normal file
View File

@ -0,0 +1,25 @@
<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Demo2.App"
RequestedThemeVariant="Default">
<!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->
<Application.Styles>
<FluentTheme />
<StyleInclude Source="avares://Avalonia.Controls.ColorPicker/Themes/Simple/Simple.xaml" />
<Style Selector="ComboBox">
<Setter Property="Margin" Value="5"/>
<Setter Property="Background" Value="#ffffe1"/>
</Style>
<Style Selector="Button">
<Setter Property="Margin" Value="5"/>
<Setter Property="Background" Value="#ff9c1a"/>
</Style>
<Style Selector="TextBox">
<Setter Property="Margin" Value="5"/>
<Setter Property="Background" Value="#ffffe1"/>
</Style>
</Application.Styles>
</Application>

24
Demo2/App.axaml.cs Normal file
View File

@ -0,0 +1,24 @@
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
namespace Demo2
{
public partial class App : Application
{
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = new MainWindow();
}
base.OnFrameworkInitializationCompleted();
}
}
}

342
Demo2/Context/Context.cs Normal file
View File

@ -0,0 +1,342 @@
using System;
using System.Collections.Generic;
using Demo2.Models;
using Microsoft.EntityFrameworkCore;
namespace Demo2.Context;
public partial class Context : DbContext
{
public Context()
{
}
public Context(DbContextOptions<Context> options)
: base(options)
{
}
public virtual DbSet<Client> Clients { get; set; }
public virtual DbSet<Clientservice> Clientservices { get; set; }
public virtual DbSet<Documentbyservice> Documentbyservices { get; set; }
public virtual DbSet<Gender> Genders { get; set; }
public virtual DbSet<Manufacturer> Manufacturers { get; set; }
public virtual DbSet<Product> Products { get; set; }
public virtual DbSet<Productphoto> Productphotos { get; set; }
public virtual DbSet<Productsale> Productsales { get; set; }
public virtual DbSet<Service> Services { get; set; }
public virtual DbSet<Servicephoto> Servicephotos { get; set; }
public virtual DbSet<Tag> Tags { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.
=> optionsBuilder.UseNpgsql("Host=45.67.56.214;Port=5454;Database=user19;Username=user19;Password=oplwLVnn");
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Client>(entity =>
{
entity.HasKey(e => e.Id).HasName("client_pkey");
entity.ToTable("client", "task16-09");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Birthday).HasColumnName("birthday");
entity.Property(e => e.Email)
.HasMaxLength(255)
.HasColumnName("email");
entity.Property(e => e.Firstname)
.HasMaxLength(50)
.HasColumnName("firstname");
entity.Property(e => e.Gendercode)
.HasMaxLength(1)
.HasColumnName("gendercode");
entity.Property(e => e.Lastname)
.HasMaxLength(50)
.HasColumnName("lastname");
entity.Property(e => e.Patronymic)
.HasMaxLength(50)
.HasColumnName("patronymic");
entity.Property(e => e.Phone)
.HasMaxLength(20)
.HasColumnName("phone");
entity.Property(e => e.Photopath)
.HasMaxLength(1000)
.HasColumnName("photopath");
entity.Property(e => e.Registrationdate)
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("registrationdate");
entity.HasOne(d => d.GendercodeNavigation).WithMany(p => p.Clients)
.HasForeignKey(d => d.Gendercode)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_client_gender");
entity.HasMany(d => d.Tags).WithMany(p => p.Clients)
.UsingEntity<Dictionary<string, object>>(
"Tagofclient",
r => r.HasOne<Tag>().WithMany()
.HasForeignKey("Tagid")
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("tagofclient_tag_fk"),
l => l.HasOne<Client>().WithMany()
.HasForeignKey("Clientid")
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_tagofclient_client"),
j =>
{
j.HasKey("Clientid", "Tagid").HasName("tagofclient_pkey");
j.ToTable("tagofclient", "task16-09");
j.IndexerProperty<int>("Clientid").HasColumnName("clientid");
j.IndexerProperty<int>("Tagid").HasColumnName("tagid");
});
});
modelBuilder.Entity<Clientservice>(entity =>
{
entity.HasKey(e => e.Id).HasName("clientservice_pkey");
entity.ToTable("clientservice", "task16-09");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Clientid).HasColumnName("clientid");
entity.Property(e => e.Comment).HasColumnName("comment");
entity.Property(e => e.Serviceid).HasColumnName("serviceid");
entity.Property(e => e.Starttime)
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("starttime");
entity.HasOne(d => d.Client).WithMany(p => p.Clientservices)
.HasForeignKey(d => d.Clientid)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_clientservice_client");
entity.HasOne(d => d.Service).WithMany(p => p.Clientservices)
.HasForeignKey(d => d.Serviceid)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_clientservice_service");
});
modelBuilder.Entity<Documentbyservice>(entity =>
{
entity.HasKey(e => e.Id).HasName("documentbyservice_pkey");
entity.ToTable("documentbyservice", "task16-09");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Clientserviceid).HasColumnName("clientserviceid");
entity.Property(e => e.Documentpath)
.HasMaxLength(1000)
.HasColumnName("documentpath");
entity.HasOne(d => d.Clientservice).WithMany(p => p.Documentbyservices)
.HasForeignKey(d => d.Clientserviceid)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_documentbyservice_clientservice");
});
modelBuilder.Entity<Gender>(entity =>
{
entity.HasKey(e => e.Code).HasName("gender_pkey");
entity.ToTable("gender", "task16-09");
entity.Property(e => e.Code)
.HasMaxLength(1)
.ValueGeneratedNever()
.HasColumnName("code");
entity.Property(e => e.Name)
.HasMaxLength(10)
.HasColumnName("name");
});
modelBuilder.Entity<Manufacturer>(entity =>
{
entity.HasKey(e => e.Id).HasName("manufacturer_pkey");
entity.ToTable("manufacturer", "task16-09");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Name)
.HasMaxLength(100)
.HasColumnName("name");
entity.Property(e => e.Startdate).HasColumnName("startdate");
});
modelBuilder.Entity<Product>(entity =>
{
entity.HasKey(e => e.Id).HasName("product_pkey");
entity.ToTable("product", "task16-09");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Cost)
.HasPrecision(19, 4)
.HasColumnName("cost");
entity.Property(e => e.Description).HasColumnName("description");
entity.Property(e => e.Isactive).HasColumnName("isactive");
entity.Property(e => e.Mainimagepath)
.HasMaxLength(1000)
.HasColumnName("mainimagepath");
entity.Property(e => e.Manufacturerid).HasColumnName("manufacturerid");
entity.Property(e => e.Title)
.HasMaxLength(100)
.HasColumnName("title");
entity.HasOne(d => d.Manufacturer).WithMany(p => p.Products)
.HasForeignKey(d => d.Manufacturerid)
.HasConstraintName("fk_product_manufacturer");
entity.HasMany(d => d.Attachedproducts).WithMany(p => p.Mainproducts)
.UsingEntity<Dictionary<string, object>>(
"Attachedproduct",
r => r.HasOne<Product>().WithMany()
.HasForeignKey("Attachedproductid")
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_attachedproduct_product1"),
l => l.HasOne<Product>().WithMany()
.HasForeignKey("Mainproductid")
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_attachedproduct_product"),
j =>
{
j.HasKey("Mainproductid", "Attachedproductid").HasName("attachedproduct_pkey");
j.ToTable("attachedproduct", "task16-09");
j.IndexerProperty<int>("Mainproductid").HasColumnName("mainproductid");
j.IndexerProperty<int>("Attachedproductid").HasColumnName("attachedproductid");
});
entity.HasMany(d => d.Mainproducts).WithMany(p => p.Attachedproducts)
.UsingEntity<Dictionary<string, object>>(
"Attachedproduct",
r => r.HasOne<Product>().WithMany()
.HasForeignKey("Mainproductid")
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_attachedproduct_product"),
l => l.HasOne<Product>().WithMany()
.HasForeignKey("Attachedproductid")
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_attachedproduct_product1"),
j =>
{
j.HasKey("Mainproductid", "Attachedproductid").HasName("attachedproduct_pkey");
j.ToTable("attachedproduct", "task16-09");
j.IndexerProperty<int>("Mainproductid").HasColumnName("mainproductid");
j.IndexerProperty<int>("Attachedproductid").HasColumnName("attachedproductid");
});
});
modelBuilder.Entity<Productphoto>(entity =>
{
entity.HasKey(e => e.Id).HasName("productphoto_pkey");
entity.ToTable("productphoto", "task16-09");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Photopath)
.HasMaxLength(1000)
.HasColumnName("photopath");
entity.Property(e => e.Productid).HasColumnName("productid");
entity.HasOne(d => d.Product).WithMany(p => p.Productphotos)
.HasForeignKey(d => d.Productid)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_productphoto_product");
});
modelBuilder.Entity<Productsale>(entity =>
{
entity.HasKey(e => e.Id).HasName("productsale_pkey");
entity.ToTable("productsale", "task16-09");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Clientserviceid).HasColumnName("clientserviceid");
entity.Property(e => e.Productid).HasColumnName("productid");
entity.Property(e => e.Quantity).HasColumnName("quantity");
entity.Property(e => e.Saledate)
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("saledate");
entity.HasOne(d => d.Clientservice).WithMany(p => p.Productsales)
.HasForeignKey(d => d.Clientserviceid)
.HasConstraintName("fk_productsale_clientservice");
entity.HasOne(d => d.Product).WithMany(p => p.Productsales)
.HasForeignKey(d => d.Productid)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_productsale_product");
});
modelBuilder.Entity<Service>(entity =>
{
entity.HasKey(e => e.Id).HasName("service_pkey");
entity.ToTable("service", "task16-09");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Cost)
.HasPrecision(19, 4)
.HasColumnName("cost");
entity.Property(e => e.Description).HasColumnName("description");
entity.Property(e => e.Discount).HasColumnName("discount");
entity.Property(e => e.Durationinseconds).HasColumnName("durationinseconds");
entity.Property(e => e.Mainimagepath)
.HasMaxLength(1000)
.HasColumnName("mainimagepath");
entity.Property(e => e.Title)
.HasMaxLength(100)
.HasColumnName("title");
});
modelBuilder.Entity<Servicephoto>(entity =>
{
entity.HasKey(e => e.Id).HasName("servicephoto_pkey");
entity.ToTable("servicephoto", "task16-09");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Photopath)
.HasMaxLength(1000)
.HasColumnName("photopath");
entity.Property(e => e.Serviceid).HasColumnName("serviceid");
entity.HasOne(d => d.Service).WithMany(p => p.Servicephotos)
.HasForeignKey(d => d.Serviceid)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_servicephoto_service");
});
modelBuilder.Entity<Tag>(entity =>
{
entity.HasKey(e => e.Id).HasName("tag_pkey");
entity.ToTable("tag", "task16-09");
entity.Property(e => e.Id)
.ValueGeneratedNever()
.HasColumnName("id");
entity.Property(e => e.Color)
.HasMaxLength(8)
.IsFixedLength()
.HasColumnName("color");
entity.Property(e => e.Title)
.HasMaxLength(30)
.HasColumnName("title");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}

25
Demo2/Demo2.csproj Normal file
View File

@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="11.0.6" />
<PackageReference Include="Avalonia.Desktop" Version="11.0.6" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.6" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.6" />
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.20" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.20">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.18" />
</ItemGroup>
</Project>

67
Demo2/EditWindow.axaml Normal file
View File

@ -0,0 +1,67 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="1920" d:DesignHeight="1080"
MinHeight="360"
MinWidth="570"
x:Class="Demo2.EditWindow"
Title="EditWindow">
<DockPanel>
<Grid DockPanel.Dock="Bottom">
<Button Content="Готово" Click="Comfirm"/>
<Button HorizontalAlignment="Right" Content="Добавить Тег" Click="AddTag"/>
</Grid>
<Grid ColumnDefinitions="2*, 4*">
<Grid ColumnDefinitions="*,*,*,*" RowDefinitions="*,*,*,*">
<Border BorderBrush="Black" BorderThickness="2" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan="2" >
<Image Name="Image"/>
</Border>
<Button Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3" Name="ImageButton" Content="Добавить картинку" Click="AddImage" DockPanel.Dock="Bottom"/>
</Grid>
<Grid Grid.Column="2" ColumnDefinitions="1*, 4*" RowDefinitions="*,*,*,*,*,*,*,*,1.5*">
<TextBlock Grid.Column="0" Grid.Row="0" Text="Id:"/>
<TextBlock Grid.Column="0" Grid.Row="1" Text="Фамилия"/>
<TextBlock Grid.Column="0" Grid.Row="2" Text="Имя"/>
<TextBlock Grid.Column="0" Grid.Row="3" Text="Отчество"/>
<TextBlock Grid.Column="0" Grid.Row="4" Text="Email"/>
<TextBlock Grid.Column="0" Grid.Row="5" Text="Телефон"/>
<TextBlock Grid.Column="0" Grid.Row="6" Text="Дата рождения"/>
<TextBlock Grid.Column="0" Grid.Row="7" Text="Пол"/>
<TextBlock Grid.Column="0" Grid.Row="8" Text="Тэги пользователя"/>
<TextBlock Grid.Column="1" Grid.Row="0" Name="Id" HorizontalAlignment="Stretch"/>
<TextBox Grid.Column="1" Grid.Row="1" Name="Lastname" Watermark="Фамилия клиента" HorizontalAlignment="Stretch" TextChanged="TextBox_TextChanged"/>
<TextBox Grid.Column="1" Grid.Row="2" Name="Firstname" Watermark="Имя клиента" HorizontalAlignment="Stretch" TextChanged="TextBox_TextChanged"/>
<TextBox Grid.Column="1" Grid.Row="3" Name="Patronim" Watermark="Отчество клиента" HorizontalAlignment="Stretch" TextChanged="TextBox_TextChanged"/>
<TextBox Grid.Column="1" Grid.Row="4" Name="Email" Watermark="Почта клиента" HorizontalAlignment="Stretch"/>
<TextBox Grid.Column="1" Grid.Row="5" Name="Phone" Watermark="Телефон клиента" HorizontalAlignment="Stretch" TextChanged="TextBox_TextChanged_1"/>
<DatePicker HorizontalAlignment="Stretch" Background="#ffffe1" VerticalAlignment="Stretch" Grid.Column="1" Grid.Row="6" Name="BDay" />
<ComboBox Grid.Column="1" Grid.Row="7" Name="Gender" />
<Grid Grid.Column="1" Grid.Row="8" ColumnDefinitions="5*, *">
<ListBox Grid.Column="0" DockPanel.Dock="Top" Name="Extra" ScrollViewer.HorizontalScrollBarVisibility="Visible">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border Background="{Binding Color}" CornerRadius="3">
<TextBlock HorizontalAlignment="Center" Background="{Binding Color}" VerticalAlignment="Center" Text="{Binding Title}"/>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Border Grid.Column="1">
<StackPanel>
<TextBlock Text="Шаблон Тега"/>
<TextBox Name="TagName"/>
<ColorPicker Name="ColorPic"/>
</StackPanel>
</Border>
</Grid>
</Grid>
</Grid>
</DockPanel>
</Window>

212
Demo2/EditWindow.axaml.cs Normal file
View File

@ -0,0 +1,212 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using System.IO;
using System;
using Avalonia.Media.Imaging;
using Demo2.Models;
using System.Linq;
using System.Collections.Generic;
using Demo2.Context;
using Microsoft.EntityFrameworkCore;
using System.Text.RegularExpressions;
namespace Demo2;
public partial class EditWindow : Window
{
int index = -1;
string checklastname = "";
string checkname = "";
string checkpat = "";
string checkphpone = "";
public string FileToCopy = "";
public string FileName = "";
public string OldFile = "";
List<Models.Tag> tags = new List<Models.Tag>();
List<Models.Tag> showntags = new List<Models.Tag>();
public EditWindow()
{
InitializeComponent();
Gender.ItemsSource = PublicActions.PublicContext.Genders.Select(g => g.Name);
Id.Text = (PublicActions.PublicContext.Clients.OrderBy(c => c.Id).LastOrDefault().Id + 1).ToString();
}
public EditWindow(int i)
{
InitializeComponent();
ImageButton.Content = "如戾龛螯 赅痱桧牦";
Gender.ItemsSource = PublicActions.PublicContext.Genders.Select(g => g.Name);
index = i;
Client client = PublicActions.Clients.ToList().FirstOrDefault(c => c.Id == i);
showntags = client.Tags.ToList();
Extra.ItemsSource = client.Tags;
Id.Text = client.Id.ToString();
Lastname.Text = client.Lastname;
Firstname.Text = client.Firstname;
Patronim.Text = client.Patronymic;
Email.Text = client.Email;
Phone.Text = client.Phone;
BDay.SelectedDate = DateTimeOffset.Parse(client.Birthday.ToString());
Gender.SelectedIndex = PublicActions.PublicContext.Genders.ToList().IndexOf(PublicActions.PublicContext.Genders.ToList().First(g => g.Code == client.Gendercode));
OldFile = client.Photopath;
try
{
Image.Source = new Bitmap(Environment.CurrentDirectory + "/" + OldFile);
}
catch
{
Image.Source = new Bitmap(Environment.CurrentDirectory + "/ClientsPhotos/stock_photo.png");
}
}
private async void AddImage(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
var TopLevel = await openFileDialog.ShowAsync(this);
FileToCopy = string.Join("", TopLevel);
if (FileToCopy != "")
{
int pos = FileToCopy.LastIndexOf('.');
string str = FileToCopy.Substring(pos, FileToCopy.Length - pos);
Image.Source = new Bitmap(FileToCopy);
FileName = Guid.NewGuid().ToString() + str;
}
ImageButton.Content = "如戾龛螯 赅痱桧牦";
}
private void Comfirm(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
if (string.IsNullOrEmpty(Lastname.Text) || string.IsNullOrEmpty(Firstname.Text)
|| string.IsNullOrEmpty(Patronim.Text) || string.IsNullOrEmpty(Email.Text)
|| string.IsNullOrEmpty(Phone.Text) || Gender.SelectedIndex == null || !BDay.SelectedDate.HasValue || !Email.Text.Contains("@"))
{
return;
}
if (index == -1)
{
if (PublicActions.PublicContext.Clients.ToList().Where(t => t.Phone == Phone.Text).Count() != 0)
{
return;
}
Client client = new Client()
{
Id = PublicActions.PublicContext.Clients.OrderBy(c => c.Id).LastOrDefault().Id + 1,
Lastname = Lastname.Text,
Firstname = Firstname.Text,
Patronymic = Patronim.Text,
Email = Email.Text,
Phone = Phone.Text,
Birthday = DateOnly.FromDateTime(BDay.SelectedDate.Value.Date),
Gendercode = PublicActions.PublicContext.Genders.ToList().FirstOrDefault(g => g.Name == PublicActions.PublicContext.Genders.Select(g => g.Name).ToList()[Gender.SelectedIndex]).Code,
Photopath = $"ClientsPhotos/{FileName}"
};
PublicActions.PublicContext.Clients.Add(client);
if (FileToCopy != "")
{
File.Copy(FileToCopy, $"{Environment.CurrentDirectory}/ClientsPhotos/{FileName}");
}
PublicActions.PublicContext.SaveChanges();
foreach (Models.Tag tag in tags)
{
using (var context = new Context.Context())
{
var a = context.Clients.Include(z => z.Tags).FirstOrDefault(c => c.Id == index);
if (context.Tags.OrderBy(t => t.Id).LastOrDefault() == null)
{
tag.Id = 1;
}
else
{
tag.Id = context.Tags.OrderBy(t => t.Id).LastOrDefault().Id + 1;
}
a.Tags.Add(new Models.Tag() { Id = tag.Id, Title = tag.Title, Color = tag.Color });
context.SaveChanges();
}
}
}
else
{
Client client = PublicActions.Clients.ToList().FirstOrDefault(c => c.Id == index);
client.Lastname = Lastname.Text;
client.Firstname = Firstname.Text;
client.Patronymic = Patronim.Text;
client.Email = Email.Text;
client.Phone = Phone.Text;
client.Birthday = DateOnly.FromDateTime(BDay.SelectedDate.Value.Date);
client.Gendercode = PublicActions.PublicContext.Genders.ToList().FirstOrDefault(g => g.Name == PublicActions.PublicContext.Genders.Select(g => g.Name).ToList()[Gender.SelectedIndex]).Code;
if (FileToCopy != "")
{
client.Photopath = $"ClientsPhotos/{FileName}";
File.Copy(FileToCopy, $"{Environment.CurrentDirectory}/ClientsPhotos/{FileName}");
//FileInfo file = new FileInfo(OldFile);
//file.Delete();
}
PublicActions.PublicContext.Clients.Update(client);
PublicActions.PublicContext.SaveChanges();
foreach (Models.Tag tag in tags)
{
using (var context = new Context.Context())
{
var a = context.Clients.Include(z => z.Tags).FirstOrDefault(c => c.Id == index);
if (context.Tags.OrderBy(t => t.Id).LastOrDefault() == null)
{
tag.Id = 1;
}
else
{
tag.Id = context.Tags.OrderBy(t => t.Id).LastOrDefault().Id + 1;
}
a.Tags.Add(new Models.Tag() { Id = tag.Id, Title = tag.Title, Color = tag.Color });
context.SaveChanges();
}
}
}
new MainWindow().Show();
this.Close();
}
private void AddTag(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
string a = string.Join("", ColorPic.Color.ToString().Skip(3));
tags.Add(new Models.Tag() { Color = "#" + a, Title = TagName.Text, Id = 2 });
showntags.Add(new Models.Tag() { Color = "#" + a, Title = TagName.Text, Id = 2 });
TagName.Text = "";
Extra.ItemsSource = showntags;
}
private void TextBox_TextChanged(object? sender, Avalonia.Controls.TextChangedEventArgs e)
{
if (!Regex.IsMatch((sender as TextBox).Text, @"^[a-zA-Z -]+$") || (sender as TextBox).Text.Count() > 50)
{
switch ((sender as TextBox).Name.ToString())
{
case "Lastname": (sender as TextBox).Text = checklastname; break;
case "Firstname": (sender as TextBox).Text = checkname; break;
case "Patronim": (sender as TextBox).Text = checkpat; break;
};
}
else
{
switch ((sender as TextBox).Name.ToString())
{
case "Lastname": checklastname = (sender as TextBox).Text; break;
case "Firstname": checkname = (sender as TextBox).Text; break;
case "Patronim": checkpat = (sender as TextBox).Text; break;
};
}
}
private void TextBox_TextChanged_1(object? sender, Avalonia.Controls.TextChangedEventArgs e)
{
if (!Regex.IsMatch((sender as TextBox).Text, @"^[1-9+() -]+$") )
{
(sender as TextBox).Text = checkphpone;
}
else
{
checkphpone = (sender as TextBox).Text;
}
}
}

90
Demo2/MainWindow.axaml Normal file
View File

@ -0,0 +1,90 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="1920" d:DesignHeight="1080"
WindowStartupLocation="CenterScreen"
WindowState="Maximized"
MinHeight="305"
MinWidth="600"
x:Class="Demo2.MainWindow"
Title="Demo2">
<DockPanel>
<TextBox DockPanel.Dock="Top" TextChanged="TextBox_TextChanged"/>
<Grid ColumnDefinitions="*,*,*" DockPanel.Dock="Top">
<Button HorizontalAlignment="Stretch" Content="Добавить клиента" Click="Button_Click_1"/>
<ComboBox SelectionChanged="SFSchanged" Name="filtr" Grid.Column="1" HorizontalAlignment="Stretch">
</ComboBox>
<ComboBox Name="sort" SelectionChanged="SFSchanged" Grid.Column="2" HorizontalAlignment="Stretch">
<ComboBoxItem>Без сортировки</ComboBoxItem>
<ComboBoxItem>По фамилии </ComboBoxItem>
<ComboBoxItem>По дате последнего посещения</ComboBoxItem>
<ComboBoxItem>По количеству посещений</ComboBoxItem>
</ComboBox>
</Grid>
<Grid ColumnDefinitions="*,*,*" DockPanel.Dock="Bottom">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="0" Name="show"/>
<Button HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1" Content="Удалить выбранный элемент" IsVisible="False" Name="DeleteButton" Click="Delete"/>
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
<ComboBox Name="Amount" SelectionChanged="ShownAmounChanged">
<ComboBoxItem>10</ComboBoxItem>
<ComboBoxItem>50</ComboBoxItem>
<ComboBoxItem>200</ComboBoxItem>
<ComboBoxItem>Все</ComboBoxItem>
</ComboBox>
<Button Name="Back" Content="Влево" Click="PageButton"/>
<Button Name="Forward" Content="Вправо" Click="PageButton"/>
</StackPanel>
</Grid>
<ListBox SelectionMode="Single" SelectionChanged="ListBox_SelectionChanged_1" Name="ClientsList" Margin="5">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Tag="{Binding Id}" DoubleTapped="Border_DoubleTapped" Background="#ffffe1" BorderBrush="Black" BorderThickness="2" CornerRadius="1.68">
<Grid ColumnDefinitions="1*, 1*, 7*, 3*">
<TextBlock Grid.Column="1" Text="{Binding Id}" VerticalAlignment="Center"/>
<StackPanel VerticalAlignment="Center" Grid.Column="2">
<StackPanel Spacing="5" Orientation="Horizontal">
<TextBlock Text="{Binding Firstname}"/>
<TextBlock Text="{Binding Lastname}"/>
<TextBlock Text="{Binding Patronymic}"/>
</StackPanel>
<TextBlock Text="{Binding Gender}"/>
<TextBlock Text="{Binding Birthday, StringFormat='Родился(-лась) {0}.'}"/>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Телефон:"/>
<TextBlock Text="{Binding Phone}"/>
<TextBlock Text="Почта:"/>
<TextBlock Text="{Binding Email}"/>
</StackPanel>
<TextBlock Text="{Binding Registrationdate, StringFormat='Зарегестрировался(-лась) {0}.'}"/>
<StackPanel Spacing="5" Orientation="Horizontal">
<TextBlock Text="{Binding LastService, StringFormat='Последнее посещение {0}.'}"/>
<TextBlock Text="{Binding Amount, StringFormat='Всего посещений {0}.'}"/>
</StackPanel>
<ListBox ItemsSource="{Binding Tags}" ScrollViewer.HorizontalScrollBarVisibility="Visible">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border Background="{Binding Color}" CornerRadius="10">
<TextBlock Margin="5" HorizontalAlignment="Center" Background="{Binding Color}" VerticalAlignment="Center" Text="{Binding Title}"/>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
<Grid Grid.Column="3" ColumnDefinitions="*,*,*,*" RowDefinitions="*,*,*,*">
<Border Grid.Column="1" Grid.ColumnSpan="2" Margin="15" Grid.Row="1" Grid.RowSpan="2" BorderBrush="Black" BorderThickness="2" >
<Image Source="{Binding Image}"/>
</Border>
</Grid>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DockPanel>
</Window>

128
Demo2/MainWindow.axaml.cs Normal file
View File

@ -0,0 +1,128 @@
using Avalonia.Controls;
using Demo2.Models;
using System;
using System.Linq;
namespace Demo2
{
public partial class MainWindow : Window
{
int page = 0;
int shownAmount;
int f = 0;
int s = 0;
string sr = "";
public MainWindow()
{
InitializeComponent();
filtr.ItemsSource = PublicActions.Genders;
Amount.SelectedIndex = 0;
filtr.SelectedIndex = 0;
sort.SelectedIndex = 0;
}
public void ChangePage()
{
ClientsList.ItemsSource = PublicActions.Clients.ToList().Skip(page * shownAmount).Take(shownAmount);
show.Text = PublicActions.ShowmClientAmount;
if (page == 0)
{
Back.IsEnabled = false;
}
else
{
Back.IsEnabled = true;
}
if ((page + 1) * shownAmount > PublicActions.Clients.Count - 1)
{
Forward.IsEnabled = false;
}
else
{
Forward.IsEnabled = true;
}
}
private void PageButton(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
Button button = sender as Button;
if (button.Name == "Back")
{
page--;
}
else
{
page++;
}
ChangePage();
}
private void ShownAmounChanged(object? sender, Avalonia.Controls.SelectionChangedEventArgs e)
{
switch ((sender as ComboBox).SelectedIndex)
{
case 0: shownAmount = 10; break;
case 1: shownAmount = 50; break;
case 2: shownAmount = 200; break;
}
page = 0;
ChangePage();
}
private void SFSchanged(object? sender, Avalonia.Controls.SelectionChangedEventArgs e)
{
if ((sender as ComboBox).Name == "filtr")
{
f = (sender as ComboBox).SelectedIndex;
}
else if ((sender as ComboBox).Name == "sort")
{
s = (sender as ComboBox).SelectedIndex;
}
page = 0;
PublicActions.ClientsActions(s, f, sr);
ChangePage();
}
private void TextBox_TextChanged(object? sender, Avalonia.Controls.TextChangedEventArgs e)
{
sr = (sender as TextBox).Text;
page = 0;
PublicActions.ClientsActions(s, f, sr);
ChangePage();
}
private void Button_Click_1(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
new EditWindow().Show();
this.Close();
}
private void Border_DoubleTapped(object? sender, Avalonia.Input.TappedEventArgs e)
{
new EditWindow(Int32.Parse((sender as Border).Tag.ToString())).Show();
this.Close();
}
private void ListBox_SelectionChanged_1(object? sender, Avalonia.Controls.SelectionChangedEventArgs e)
{
if (ClientsList.SelectedIndex != -1)
{
DeleteButton.IsVisible = true;
}
else
{
DeleteButton.IsVisible = false;
}
}
private void Delete(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
PublicActions.PublicContext.Clients.Remove(ClientsList.SelectedItem as Client);
PublicActions.PublicContext.SaveChanges();
page = 0;
f = 0;
s = 0;
PublicActions.ClientsActions(s, f, sr);
}
}
}

View File

@ -0,0 +1,593 @@
// <auto-generated />
using System;
using Demo2.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Demo2.Migrations
{
[DbContext(typeof(Context.Context))]
[Migration("20250410221017_InitialCreate2")]
partial class InitialCreate2
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.20")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Attachedproduct", b =>
{
b.Property<int>("Mainproductid")
.HasColumnType("integer")
.HasColumnName("mainproductid");
b.Property<int>("Attachedproductid")
.HasColumnType("integer")
.HasColumnName("attachedproductid");
b.HasKey("Mainproductid", "Attachedproductid")
.HasName("attachedproduct_pkey");
b.HasIndex("Attachedproductid");
b.ToTable("attachedproduct", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<DateOnly?>("Birthday")
.HasColumnType("date")
.HasColumnName("birthday");
b.Property<string>("Email")
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("email");
b.Property<string>("Firstname")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("firstname");
b.Property<char>("Gendercode")
.HasMaxLength(1)
.HasColumnType("character(1)")
.HasColumnName("gendercode");
b.Property<string>("Lastname")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("lastname");
b.Property<string>("Patronymic")
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("patronymic");
b.Property<string>("Phone")
.IsRequired()
.HasMaxLength(20)
.HasColumnType("character varying(20)")
.HasColumnName("phone");
b.Property<string>("Photopath")
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("photopath");
b.Property<DateTime>("Registrationdate")
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("registrationdate");
b.HasKey("Id")
.HasName("client_pkey");
b.HasIndex("Gendercode");
b.ToTable("client", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Clientservice", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Clientid")
.HasColumnType("integer")
.HasColumnName("clientid");
b.Property<string>("Comment")
.HasColumnType("text")
.HasColumnName("comment");
b.Property<int>("Serviceid")
.HasColumnType("integer")
.HasColumnName("serviceid");
b.Property<DateTime>("Starttime")
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("starttime");
b.HasKey("Id")
.HasName("clientservice_pkey");
b.HasIndex("Clientid");
b.HasIndex("Serviceid");
b.ToTable("clientservice", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Documentbyservice", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Clientserviceid")
.HasColumnType("integer")
.HasColumnName("clientserviceid");
b.Property<string>("Documentpath")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("documentpath");
b.HasKey("Id")
.HasName("documentbyservice_pkey");
b.HasIndex("Clientserviceid");
b.ToTable("documentbyservice", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Gender", b =>
{
b.Property<char>("Code")
.HasMaxLength(1)
.HasColumnType("character(1)")
.HasColumnName("code");
b.Property<string>("Name")
.HasMaxLength(10)
.HasColumnType("character varying(10)")
.HasColumnName("name");
b.HasKey("Code")
.HasName("gender_pkey");
b.ToTable("gender", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Manufacturer", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("name");
b.Property<DateOnly?>("Startdate")
.HasColumnType("date")
.HasColumnName("startdate");
b.HasKey("Id")
.HasName("manufacturer_pkey");
b.ToTable("manufacturer", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Product", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<decimal>("Cost")
.HasPrecision(19, 4)
.HasColumnType("numeric(19,4)")
.HasColumnName("cost");
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<int>("Isactive")
.HasColumnType("integer")
.HasColumnName("isactive");
b.Property<string>("Mainimagepath")
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("mainimagepath");
b.Property<int?>("Manufacturerid")
.HasColumnType("integer")
.HasColumnName("manufacturerid");
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("title");
b.HasKey("Id")
.HasName("product_pkey");
b.HasIndex("Manufacturerid");
b.ToTable("product", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Productphoto", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Photopath")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("photopath");
b.Property<int>("Productid")
.HasColumnType("integer")
.HasColumnName("productid");
b.HasKey("Id")
.HasName("productphoto_pkey");
b.HasIndex("Productid");
b.ToTable("productphoto", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Productsale", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int?>("Clientserviceid")
.HasColumnType("integer")
.HasColumnName("clientserviceid");
b.Property<int>("Productid")
.HasColumnType("integer")
.HasColumnName("productid");
b.Property<int>("Quantity")
.HasColumnType("integer")
.HasColumnName("quantity");
b.Property<DateTime>("Saledate")
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("saledate");
b.HasKey("Id")
.HasName("productsale_pkey");
b.HasIndex("Clientserviceid");
b.HasIndex("Productid");
b.ToTable("productsale", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Service", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<decimal>("Cost")
.HasPrecision(19, 4)
.HasColumnType("numeric(19,4)")
.HasColumnName("cost");
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<double?>("Discount")
.HasColumnType("double precision")
.HasColumnName("discount");
b.Property<int>("Durationinseconds")
.HasColumnType("integer")
.HasColumnName("durationinseconds");
b.Property<string>("Mainimagepath")
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("mainimagepath");
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("title");
b.HasKey("Id")
.HasName("service_pkey");
b.ToTable("service", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Servicephoto", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Photopath")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("photopath");
b.Property<int>("Serviceid")
.HasColumnType("integer")
.HasColumnName("serviceid");
b.HasKey("Id")
.HasName("servicephoto_pkey");
b.HasIndex("Serviceid");
b.ToTable("servicephoto", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Tag", b =>
{
b.Property<int>("Id")
.HasColumnType("integer")
.HasColumnName("id");
b.Property<string>("Color")
.IsRequired()
.HasMaxLength(8)
.HasColumnType("character(8)")
.HasColumnName("color")
.IsFixedLength();
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("character varying(30)")
.HasColumnName("title");
b.HasKey("Id")
.HasName("tag_pkey");
b.ToTable("tag", "task16-09");
});
modelBuilder.Entity("Tagofclient", b =>
{
b.Property<int>("Clientid")
.HasColumnType("integer")
.HasColumnName("clientid");
b.Property<int>("Tagid")
.HasColumnType("integer")
.HasColumnName("tagid");
b.HasKey("Clientid", "Tagid")
.HasName("tagofclient_pkey");
b.HasIndex("Tagid");
b.ToTable("tagofclient", "task16-09");
});
modelBuilder.Entity("Attachedproduct", b =>
{
b.HasOne("Demo2.Models.Product", null)
.WithMany()
.HasForeignKey("Attachedproductid")
.IsRequired()
.HasConstraintName("fk_attachedproduct_product1");
b.HasOne("Demo2.Models.Product", null)
.WithMany()
.HasForeignKey("Mainproductid")
.IsRequired()
.HasConstraintName("fk_attachedproduct_product");
});
modelBuilder.Entity("Demo2.Models.Client", b =>
{
b.HasOne("Demo2.Models.Gender", "GendercodeNavigation")
.WithMany("Clients")
.HasForeignKey("Gendercode")
.IsRequired()
.HasConstraintName("fk_client_gender");
b.Navigation("GendercodeNavigation");
});
modelBuilder.Entity("Demo2.Models.Clientservice", b =>
{
b.HasOne("Demo2.Models.Client", "Client")
.WithMany("Clientservices")
.HasForeignKey("Clientid")
.IsRequired()
.HasConstraintName("fk_clientservice_client");
b.HasOne("Demo2.Models.Service", "Service")
.WithMany("Clientservices")
.HasForeignKey("Serviceid")
.IsRequired()
.HasConstraintName("fk_clientservice_service");
b.Navigation("Client");
b.Navigation("Service");
});
modelBuilder.Entity("Demo2.Models.Documentbyservice", b =>
{
b.HasOne("Demo2.Models.Clientservice", "Clientservice")
.WithMany("Documentbyservices")
.HasForeignKey("Clientserviceid")
.IsRequired()
.HasConstraintName("fk_documentbyservice_clientservice");
b.Navigation("Clientservice");
});
modelBuilder.Entity("Demo2.Models.Product", b =>
{
b.HasOne("Demo2.Models.Manufacturer", "Manufacturer")
.WithMany("Products")
.HasForeignKey("Manufacturerid")
.HasConstraintName("fk_product_manufacturer");
b.Navigation("Manufacturer");
});
modelBuilder.Entity("Demo2.Models.Productphoto", b =>
{
b.HasOne("Demo2.Models.Product", "Product")
.WithMany("Productphotos")
.HasForeignKey("Productid")
.IsRequired()
.HasConstraintName("fk_productphoto_product");
b.Navigation("Product");
});
modelBuilder.Entity("Demo2.Models.Productsale", b =>
{
b.HasOne("Demo2.Models.Clientservice", "Clientservice")
.WithMany("Productsales")
.HasForeignKey("Clientserviceid")
.HasConstraintName("fk_productsale_clientservice");
b.HasOne("Demo2.Models.Product", "Product")
.WithMany("Productsales")
.HasForeignKey("Productid")
.IsRequired()
.HasConstraintName("fk_productsale_product");
b.Navigation("Clientservice");
b.Navigation("Product");
});
modelBuilder.Entity("Demo2.Models.Servicephoto", b =>
{
b.HasOne("Demo2.Models.Service", "Service")
.WithMany("Servicephotos")
.HasForeignKey("Serviceid")
.IsRequired()
.HasConstraintName("fk_servicephoto_service");
b.Navigation("Service");
});
modelBuilder.Entity("Tagofclient", b =>
{
b.HasOne("Demo2.Models.Client", null)
.WithMany()
.HasForeignKey("Clientid")
.IsRequired()
.HasConstraintName("fk_tagofclient_client");
b.HasOne("Demo2.Models.Tag", null)
.WithMany()
.HasForeignKey("Tagid")
.IsRequired()
.HasConstraintName("tagofclient_tag_fk");
});
modelBuilder.Entity("Demo2.Models.Client", b =>
{
b.Navigation("Clientservices");
});
modelBuilder.Entity("Demo2.Models.Clientservice", b =>
{
b.Navigation("Documentbyservices");
b.Navigation("Productsales");
});
modelBuilder.Entity("Demo2.Models.Gender", b =>
{
b.Navigation("Clients");
});
modelBuilder.Entity("Demo2.Models.Manufacturer", b =>
{
b.Navigation("Products");
});
modelBuilder.Entity("Demo2.Models.Product", b =>
{
b.Navigation("Productphotos");
b.Navigation("Productsales");
});
modelBuilder.Entity("Demo2.Models.Service", b =>
{
b.Navigation("Clientservices");
b.Navigation("Servicephotos");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,426 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Demo2.Migrations
{
/// <inheritdoc />
public partial class InitialCreate2 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.EnsureSchema(
name: "task16-09");
migrationBuilder.CreateTable(
name: "gender",
schema: "task16-09",
columns: table => new
{
code = table.Column<char>(type: "character(1)", maxLength: 1, nullable: false),
name = table.Column<string>(type: "character varying(10)", maxLength: 10, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("gender_pkey", x => x.code);
});
migrationBuilder.CreateTable(
name: "manufacturer",
schema: "task16-09",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
name = table.Column<string>(type: "character varying(100)", maxLength: 100, nullable: false),
startdate = table.Column<DateOnly>(type: "date", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("manufacturer_pkey", x => x.id);
});
migrationBuilder.CreateTable(
name: "service",
schema: "task16-09",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
title = table.Column<string>(type: "character varying(100)", maxLength: 100, nullable: false),
cost = table.Column<decimal>(type: "numeric(19,4)", precision: 19, scale: 4, nullable: false),
durationinseconds = table.Column<int>(type: "integer", nullable: false),
description = table.Column<string>(type: "text", nullable: true),
discount = table.Column<double>(type: "double precision", nullable: true),
mainimagepath = table.Column<string>(type: "character varying(1000)", maxLength: 1000, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("service_pkey", x => x.id);
});
migrationBuilder.CreateTable(
name: "tag",
schema: "task16-09",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false),
title = table.Column<string>(type: "character varying(30)", maxLength: 30, nullable: false),
color = table.Column<string>(type: "character(8)", fixedLength: true, maxLength: 8, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("tag_pkey", x => x.id);
});
migrationBuilder.CreateTable(
name: "client",
schema: "task16-09",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
firstname = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: false),
lastname = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: false),
patronymic = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true),
birthday = table.Column<DateOnly>(type: "date", nullable: true),
registrationdate = table.Column<DateTime>(type: "timestamp(6) without time zone", nullable: false),
email = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true),
phone = table.Column<string>(type: "character varying(20)", maxLength: 20, nullable: false),
gendercode = table.Column<char>(type: "character(1)", maxLength: 1, nullable: false),
photopath = table.Column<string>(type: "character varying(1000)", maxLength: 1000, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("client_pkey", x => x.id);
table.ForeignKey(
name: "fk_client_gender",
column: x => x.gendercode,
principalSchema: "task16-09",
principalTable: "gender",
principalColumn: "code");
});
migrationBuilder.CreateTable(
name: "product",
schema: "task16-09",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
title = table.Column<string>(type: "character varying(100)", maxLength: 100, nullable: false),
cost = table.Column<decimal>(type: "numeric(19,4)", precision: 19, scale: 4, nullable: false),
description = table.Column<string>(type: "text", nullable: true),
mainimagepath = table.Column<string>(type: "character varying(1000)", maxLength: 1000, nullable: true),
isactive = table.Column<int>(type: "integer", nullable: false),
manufacturerid = table.Column<int>(type: "integer", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("product_pkey", x => x.id);
table.ForeignKey(
name: "fk_product_manufacturer",
column: x => x.manufacturerid,
principalSchema: "task16-09",
principalTable: "manufacturer",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "servicephoto",
schema: "task16-09",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
serviceid = table.Column<int>(type: "integer", nullable: false),
photopath = table.Column<string>(type: "character varying(1000)", maxLength: 1000, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("servicephoto_pkey", x => x.id);
table.ForeignKey(
name: "fk_servicephoto_service",
column: x => x.serviceid,
principalSchema: "task16-09",
principalTable: "service",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "clientservice",
schema: "task16-09",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
clientid = table.Column<int>(type: "integer", nullable: false),
serviceid = table.Column<int>(type: "integer", nullable: false),
starttime = table.Column<DateTime>(type: "timestamp(6) without time zone", nullable: false),
comment = table.Column<string>(type: "text", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("clientservice_pkey", x => x.id);
table.ForeignKey(
name: "fk_clientservice_client",
column: x => x.clientid,
principalSchema: "task16-09",
principalTable: "client",
principalColumn: "id");
table.ForeignKey(
name: "fk_clientservice_service",
column: x => x.serviceid,
principalSchema: "task16-09",
principalTable: "service",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "tagofclient",
schema: "task16-09",
columns: table => new
{
clientid = table.Column<int>(type: "integer", nullable: false),
tagid = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("tagofclient_pkey", x => new { x.clientid, x.tagid });
table.ForeignKey(
name: "fk_tagofclient_client",
column: x => x.clientid,
principalSchema: "task16-09",
principalTable: "client",
principalColumn: "id");
table.ForeignKey(
name: "tagofclient_tag_fk",
column: x => x.tagid,
principalSchema: "task16-09",
principalTable: "tag",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "attachedproduct",
schema: "task16-09",
columns: table => new
{
mainproductid = table.Column<int>(type: "integer", nullable: false),
attachedproductid = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("attachedproduct_pkey", x => new { x.mainproductid, x.attachedproductid });
table.ForeignKey(
name: "fk_attachedproduct_product",
column: x => x.mainproductid,
principalSchema: "task16-09",
principalTable: "product",
principalColumn: "id");
table.ForeignKey(
name: "fk_attachedproduct_product1",
column: x => x.attachedproductid,
principalSchema: "task16-09",
principalTable: "product",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "productphoto",
schema: "task16-09",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
productid = table.Column<int>(type: "integer", nullable: false),
photopath = table.Column<string>(type: "character varying(1000)", maxLength: 1000, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("productphoto_pkey", x => x.id);
table.ForeignKey(
name: "fk_productphoto_product",
column: x => x.productid,
principalSchema: "task16-09",
principalTable: "product",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "documentbyservice",
schema: "task16-09",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
clientserviceid = table.Column<int>(type: "integer", nullable: false),
documentpath = table.Column<string>(type: "character varying(1000)", maxLength: 1000, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("documentbyservice_pkey", x => x.id);
table.ForeignKey(
name: "fk_documentbyservice_clientservice",
column: x => x.clientserviceid,
principalSchema: "task16-09",
principalTable: "clientservice",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "productsale",
schema: "task16-09",
columns: table => new
{
id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
saledate = table.Column<DateTime>(type: "timestamp(6) without time zone", nullable: false),
productid = table.Column<int>(type: "integer", nullable: false),
quantity = table.Column<int>(type: "integer", nullable: false),
clientserviceid = table.Column<int>(type: "integer", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("productsale_pkey", x => x.id);
table.ForeignKey(
name: "fk_productsale_clientservice",
column: x => x.clientserviceid,
principalSchema: "task16-09",
principalTable: "clientservice",
principalColumn: "id");
table.ForeignKey(
name: "fk_productsale_product",
column: x => x.productid,
principalSchema: "task16-09",
principalTable: "product",
principalColumn: "id");
});
migrationBuilder.CreateIndex(
name: "IX_attachedproduct_attachedproductid",
schema: "task16-09",
table: "attachedproduct",
column: "attachedproductid");
migrationBuilder.CreateIndex(
name: "IX_client_gendercode",
schema: "task16-09",
table: "client",
column: "gendercode");
migrationBuilder.CreateIndex(
name: "IX_clientservice_clientid",
schema: "task16-09",
table: "clientservice",
column: "clientid");
migrationBuilder.CreateIndex(
name: "IX_clientservice_serviceid",
schema: "task16-09",
table: "clientservice",
column: "serviceid");
migrationBuilder.CreateIndex(
name: "IX_documentbyservice_clientserviceid",
schema: "task16-09",
table: "documentbyservice",
column: "clientserviceid");
migrationBuilder.CreateIndex(
name: "IX_product_manufacturerid",
schema: "task16-09",
table: "product",
column: "manufacturerid");
migrationBuilder.CreateIndex(
name: "IX_productphoto_productid",
schema: "task16-09",
table: "productphoto",
column: "productid");
migrationBuilder.CreateIndex(
name: "IX_productsale_clientserviceid",
schema: "task16-09",
table: "productsale",
column: "clientserviceid");
migrationBuilder.CreateIndex(
name: "IX_productsale_productid",
schema: "task16-09",
table: "productsale",
column: "productid");
migrationBuilder.CreateIndex(
name: "IX_servicephoto_serviceid",
schema: "task16-09",
table: "servicephoto",
column: "serviceid");
migrationBuilder.CreateIndex(
name: "IX_tagofclient_tagid",
schema: "task16-09",
table: "tagofclient",
column: "tagid");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "attachedproduct",
schema: "task16-09");
migrationBuilder.DropTable(
name: "documentbyservice",
schema: "task16-09");
migrationBuilder.DropTable(
name: "productphoto",
schema: "task16-09");
migrationBuilder.DropTable(
name: "productsale",
schema: "task16-09");
migrationBuilder.DropTable(
name: "servicephoto",
schema: "task16-09");
migrationBuilder.DropTable(
name: "tagofclient",
schema: "task16-09");
migrationBuilder.DropTable(
name: "clientservice",
schema: "task16-09");
migrationBuilder.DropTable(
name: "product",
schema: "task16-09");
migrationBuilder.DropTable(
name: "tag",
schema: "task16-09");
migrationBuilder.DropTable(
name: "client",
schema: "task16-09");
migrationBuilder.DropTable(
name: "service",
schema: "task16-09");
migrationBuilder.DropTable(
name: "manufacturer",
schema: "task16-09");
migrationBuilder.DropTable(
name: "gender",
schema: "task16-09");
}
}
}

View File

@ -0,0 +1,590 @@
// <auto-generated />
using System;
using Demo2.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Demo2.Migrations
{
[DbContext(typeof(Context.Context))]
partial class IsajkinContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.20")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Attachedproduct", b =>
{
b.Property<int>("Mainproductid")
.HasColumnType("integer")
.HasColumnName("mainproductid");
b.Property<int>("Attachedproductid")
.HasColumnType("integer")
.HasColumnName("attachedproductid");
b.HasKey("Mainproductid", "Attachedproductid")
.HasName("attachedproduct_pkey");
b.HasIndex("Attachedproductid");
b.ToTable("attachedproduct", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<DateOnly?>("Birthday")
.HasColumnType("date")
.HasColumnName("birthday");
b.Property<string>("Email")
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("email");
b.Property<string>("Firstname")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("firstname");
b.Property<char>("Gendercode")
.HasMaxLength(1)
.HasColumnType("character(1)")
.HasColumnName("gendercode");
b.Property<string>("Lastname")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("lastname");
b.Property<string>("Patronymic")
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("patronymic");
b.Property<string>("Phone")
.IsRequired()
.HasMaxLength(20)
.HasColumnType("character varying(20)")
.HasColumnName("phone");
b.Property<string>("Photopath")
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("photopath");
b.Property<DateTime>("Registrationdate")
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("registrationdate");
b.HasKey("Id")
.HasName("client_pkey");
b.HasIndex("Gendercode");
b.ToTable("client", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Clientservice", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Clientid")
.HasColumnType("integer")
.HasColumnName("clientid");
b.Property<string>("Comment")
.HasColumnType("text")
.HasColumnName("comment");
b.Property<int>("Serviceid")
.HasColumnType("integer")
.HasColumnName("serviceid");
b.Property<DateTime>("Starttime")
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("starttime");
b.HasKey("Id")
.HasName("clientservice_pkey");
b.HasIndex("Clientid");
b.HasIndex("Serviceid");
b.ToTable("clientservice", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Documentbyservice", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Clientserviceid")
.HasColumnType("integer")
.HasColumnName("clientserviceid");
b.Property<string>("Documentpath")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("documentpath");
b.HasKey("Id")
.HasName("documentbyservice_pkey");
b.HasIndex("Clientserviceid");
b.ToTable("documentbyservice", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Gender", b =>
{
b.Property<char>("Code")
.HasMaxLength(1)
.HasColumnType("character(1)")
.HasColumnName("code");
b.Property<string>("Name")
.HasMaxLength(10)
.HasColumnType("character varying(10)")
.HasColumnName("name");
b.HasKey("Code")
.HasName("gender_pkey");
b.ToTable("gender", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Manufacturer", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("name");
b.Property<DateOnly?>("Startdate")
.HasColumnType("date")
.HasColumnName("startdate");
b.HasKey("Id")
.HasName("manufacturer_pkey");
b.ToTable("manufacturer", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Product", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<decimal>("Cost")
.HasPrecision(19, 4)
.HasColumnType("numeric(19,4)")
.HasColumnName("cost");
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<int>("Isactive")
.HasColumnType("integer")
.HasColumnName("isactive");
b.Property<string>("Mainimagepath")
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("mainimagepath");
b.Property<int?>("Manufacturerid")
.HasColumnType("integer")
.HasColumnName("manufacturerid");
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("title");
b.HasKey("Id")
.HasName("product_pkey");
b.HasIndex("Manufacturerid");
b.ToTable("product", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Productphoto", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Photopath")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("photopath");
b.Property<int>("Productid")
.HasColumnType("integer")
.HasColumnName("productid");
b.HasKey("Id")
.HasName("productphoto_pkey");
b.HasIndex("Productid");
b.ToTable("productphoto", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Productsale", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int?>("Clientserviceid")
.HasColumnType("integer")
.HasColumnName("clientserviceid");
b.Property<int>("Productid")
.HasColumnType("integer")
.HasColumnName("productid");
b.Property<int>("Quantity")
.HasColumnType("integer")
.HasColumnName("quantity");
b.Property<DateTime>("Saledate")
.HasColumnType("timestamp(6) without time zone")
.HasColumnName("saledate");
b.HasKey("Id")
.HasName("productsale_pkey");
b.HasIndex("Clientserviceid");
b.HasIndex("Productid");
b.ToTable("productsale", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Service", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<decimal>("Cost")
.HasPrecision(19, 4)
.HasColumnType("numeric(19,4)")
.HasColumnName("cost");
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.Property<double?>("Discount")
.HasColumnType("double precision")
.HasColumnName("discount");
b.Property<int>("Durationinseconds")
.HasColumnType("integer")
.HasColumnName("durationinseconds");
b.Property<string>("Mainimagepath")
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("mainimagepath");
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("title");
b.HasKey("Id")
.HasName("service_pkey");
b.ToTable("service", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Servicephoto", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Photopath")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("photopath");
b.Property<int>("Serviceid")
.HasColumnType("integer")
.HasColumnName("serviceid");
b.HasKey("Id")
.HasName("servicephoto_pkey");
b.HasIndex("Serviceid");
b.ToTable("servicephoto", "task16-09");
});
modelBuilder.Entity("Demo2.Models.Tag", b =>
{
b.Property<int>("Id")
.HasColumnType("integer")
.HasColumnName("id");
b.Property<string>("Color")
.IsRequired()
.HasMaxLength(8)
.HasColumnType("character(8)")
.HasColumnName("color")
.IsFixedLength();
b.Property<string>("Title")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("character varying(30)")
.HasColumnName("title");
b.HasKey("Id")
.HasName("tag_pkey");
b.ToTable("tag", "task16-09");
});
modelBuilder.Entity("Tagofclient", b =>
{
b.Property<int>("Clientid")
.HasColumnType("integer")
.HasColumnName("clientid");
b.Property<int>("Tagid")
.HasColumnType("integer")
.HasColumnName("tagid");
b.HasKey("Clientid", "Tagid")
.HasName("tagofclient_pkey");
b.HasIndex("Tagid");
b.ToTable("tagofclient", "task16-09");
});
modelBuilder.Entity("Attachedproduct", b =>
{
b.HasOne("Demo2.Models.Product", null)
.WithMany()
.HasForeignKey("Attachedproductid")
.IsRequired()
.HasConstraintName("fk_attachedproduct_product1");
b.HasOne("Demo2.Models.Product", null)
.WithMany()
.HasForeignKey("Mainproductid")
.IsRequired()
.HasConstraintName("fk_attachedproduct_product");
});
modelBuilder.Entity("Demo2.Models.Client", b =>
{
b.HasOne("Demo2.Models.Gender", "GendercodeNavigation")
.WithMany("Clients")
.HasForeignKey("Gendercode")
.IsRequired()
.HasConstraintName("fk_client_gender");
b.Navigation("GendercodeNavigation");
});
modelBuilder.Entity("Demo2.Models.Clientservice", b =>
{
b.HasOne("Demo2.Models.Client", "Client")
.WithMany("Clientservices")
.HasForeignKey("Clientid")
.IsRequired()
.HasConstraintName("fk_clientservice_client");
b.HasOne("Demo2.Models.Service", "Service")
.WithMany("Clientservices")
.HasForeignKey("Serviceid")
.IsRequired()
.HasConstraintName("fk_clientservice_service");
b.Navigation("Client");
b.Navigation("Service");
});
modelBuilder.Entity("Demo2.Models.Documentbyservice", b =>
{
b.HasOne("Demo2.Models.Clientservice", "Clientservice")
.WithMany("Documentbyservices")
.HasForeignKey("Clientserviceid")
.IsRequired()
.HasConstraintName("fk_documentbyservice_clientservice");
b.Navigation("Clientservice");
});
modelBuilder.Entity("Demo2.Models.Product", b =>
{
b.HasOne("Demo2.Models.Manufacturer", "Manufacturer")
.WithMany("Products")
.HasForeignKey("Manufacturerid")
.HasConstraintName("fk_product_manufacturer");
b.Navigation("Manufacturer");
});
modelBuilder.Entity("Demo2.Models.Productphoto", b =>
{
b.HasOne("Demo2.Models.Product", "Product")
.WithMany("Productphotos")
.HasForeignKey("Productid")
.IsRequired()
.HasConstraintName("fk_productphoto_product");
b.Navigation("Product");
});
modelBuilder.Entity("Demo2.Models.Productsale", b =>
{
b.HasOne("Demo2.Models.Clientservice", "Clientservice")
.WithMany("Productsales")
.HasForeignKey("Clientserviceid")
.HasConstraintName("fk_productsale_clientservice");
b.HasOne("Demo2.Models.Product", "Product")
.WithMany("Productsales")
.HasForeignKey("Productid")
.IsRequired()
.HasConstraintName("fk_productsale_product");
b.Navigation("Clientservice");
b.Navigation("Product");
});
modelBuilder.Entity("Demo2.Models.Servicephoto", b =>
{
b.HasOne("Demo2.Models.Service", "Service")
.WithMany("Servicephotos")
.HasForeignKey("Serviceid")
.IsRequired()
.HasConstraintName("fk_servicephoto_service");
b.Navigation("Service");
});
modelBuilder.Entity("Tagofclient", b =>
{
b.HasOne("Demo2.Models.Client", null)
.WithMany()
.HasForeignKey("Clientid")
.IsRequired()
.HasConstraintName("fk_tagofclient_client");
b.HasOne("Demo2.Models.Tag", null)
.WithMany()
.HasForeignKey("Tagid")
.IsRequired()
.HasConstraintName("tagofclient_tag_fk");
});
modelBuilder.Entity("Demo2.Models.Client", b =>
{
b.Navigation("Clientservices");
});
modelBuilder.Entity("Demo2.Models.Clientservice", b =>
{
b.Navigation("Documentbyservices");
b.Navigation("Productsales");
});
modelBuilder.Entity("Demo2.Models.Gender", b =>
{
b.Navigation("Clients");
});
modelBuilder.Entity("Demo2.Models.Manufacturer", b =>
{
b.Navigation("Products");
});
modelBuilder.Entity("Demo2.Models.Product", b =>
{
b.Navigation("Productphotos");
b.Navigation("Productsales");
});
modelBuilder.Entity("Demo2.Models.Service", b =>
{
b.Navigation("Clientservices");
b.Navigation("Servicephotos");
});
#pragma warning restore 612, 618
}
}
}

70
Demo2/Models/Client.cs Normal file
View File

@ -0,0 +1,70 @@
using Avalonia.Media.Imaging;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Demo2.Models;
public partial class Client
{
public int Id { get; set; }
public string Firstname { get; set; } = null!;
public string Lastname { get; set; } = null!;
public string? Patronymic { get; set; }
public DateOnly? Birthday { get; set; }
public DateTime Registrationdate { get; set; }
public string? Email { get; set; }
public string Phone { get; set; } = null!;
public char Gendercode { get; set; }
public string Gender { get => PublicActions.PublicContext.Genders.ToList().FirstOrDefault(g => g.Code == Gendercode).Name; }
public string? Photopath { get; set; }
public Bitmap Image
{
get
{
try
{
return new Bitmap($"{Environment.CurrentDirectory}\\{Photopath}");
}
catch
{
return new Bitmap($"{Environment.CurrentDirectory}\\ClientsPhotos\\stock_photo.png");
}
}
}
public int Amount
{
get
{
return PublicActions.PublicContext.Clientservices.Where(sc => sc.Clientid == Id).Count();
}
}
public string LastService
{
get
{
if (PublicActions.PublicContext.Clientservices.Where(sc => sc.Clientid == Id).Count() != 0)
return PublicActions.PublicContext.Clientservices.Where(sc => sc.Clientid == Id).Select(d => d.Starttime).Max().ToString();
else
return "Нет";
}
}
public virtual ICollection<Clientservice> Clientservices { get; set; } = new List<Clientservice>();
public virtual Gender GendercodeNavigation { get; set; } = null!;
public virtual ICollection<Tag> Tags { get; set; } = new List<Tag>();
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace Demo2.Models;
public partial class Clientservice
{
public int Id { get; set; }
public int Clientid { get; set; }
public int Serviceid { get; set; }
public DateTime Starttime { get; set; }
public string? Comment { get; set; }
public virtual Client Client { get; set; } = null!;
public virtual ICollection<Documentbyservice> Documentbyservices { get; set; } = new List<Documentbyservice>();
public virtual ICollection<Productsale> Productsales { get; set; } = new List<Productsale>();
public virtual Service Service { get; set; } = null!;
}

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
namespace Demo2.Models;
public partial class Documentbyservice
{
public int Id { get; set; }
public int Clientserviceid { get; set; }
public string Documentpath { get; set; } = null!;
public virtual Clientservice Clientservice { get; set; } = null!;
}

13
Demo2/Models/Gender.cs Normal file
View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
namespace Demo2.Models;
public partial class Gender
{
public char Code { get; set; }
public string? Name { get; set; }
public virtual ICollection<Client> Clients { get; set; } = new List<Client>();
}

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
namespace Demo2.Models;
public partial class Manufacturer
{
public int Id { get; set; }
public string Name { get; set; } = null!;
public DateOnly? Startdate { get; set; }
public virtual ICollection<Product> Products { get; set; } = new List<Product>();
}

31
Demo2/Models/Product.cs Normal file
View File

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
namespace Demo2.Models;
public partial class Product
{
public int Id { get; set; }
public string Title { get; set; } = null!;
public decimal Cost { get; set; }
public string? Description { get; set; }
public string? Mainimagepath { get; set; }
public int Isactive { get; set; }
public int? Manufacturerid { get; set; }
public virtual Manufacturer? Manufacturer { get; set; }
public virtual ICollection<Productphoto> Productphotos { get; set; } = new List<Productphoto>();
public virtual ICollection<Productsale> Productsales { get; set; } = new List<Productsale>();
public virtual ICollection<Product> Attachedproducts { get; set; } = new List<Product>();
public virtual ICollection<Product> Mainproducts { get; set; } = new List<Product>();
}

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
namespace Demo2.Models;
public partial class Productphoto
{
public int Id { get; set; }
public int Productid { get; set; }
public string Photopath { get; set; } = null!;
public virtual Product Product { get; set; } = null!;
}

View File

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
namespace Demo2.Models;
public partial class Productsale
{
public int Id { get; set; }
public DateTime Saledate { get; set; }
public int Productid { get; set; }
public int Quantity { get; set; }
public int? Clientserviceid { get; set; }
public virtual Clientservice? Clientservice { get; set; }
public virtual Product Product { get; set; } = null!;
}

25
Demo2/Models/Service.cs Normal file
View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
namespace Demo2.Models;
public partial class Service
{
public int Id { get; set; }
public string Title { get; set; } = null!;
public decimal Cost { get; set; }
public int Durationinseconds { get; set; }
public string? Description { get; set; }
public double? Discount { get; set; }
public string? Mainimagepath { get; set; }
public virtual ICollection<Clientservice> Clientservices { get; set; } = new List<Clientservice>();
public virtual ICollection<Servicephoto> Servicephotos { get; set; } = new List<Servicephoto>();
}

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
namespace Demo2.Models;
public partial class Servicephoto
{
public int Id { get; set; }
public int Serviceid { get; set; }
public string Photopath { get; set; } = null!;
public virtual Service Service { get; set; } = null!;
}

15
Demo2/Models/Tag.cs Normal file
View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
namespace Demo2.Models;
public partial class Tag
{
public int Id { get; set; }
public string Title { get; set; } = null!;
public string Color { get; set; } = null!;
public virtual ICollection<Client> Clients { get; set; } = new List<Client>();
}

22
Demo2/Program.cs Normal file
View File

@ -0,0 +1,22 @@
using Avalonia;
using System;
namespace Demo2
{
internal class Program
{
// Initialization code. Don't use any Avalonia, third-party APIs or any
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break.
[STAThread]
public static void Main(string[] args) => BuildAvaloniaApp()
.StartWithClassicDesktopLifetime(args);
// Avalonia configuration, don't remove; also used by visual designer.
public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
.UsePlatformDetect()
.WithInterFont()
.LogToTrace();
}
}

57
Demo2/PublicActions.cs Normal file
View File

@ -0,0 +1,57 @@
using Demo2.Context;
using Demo2.Models;
using Microsoft.EntityFrameworkCore;
using SkiaSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;
namespace Demo2
{
public static class PublicActions
{
public static Context.Context PublicContext = new Context.Context();
public static List<Client> Clients = PublicContext.Clients.Include(x=>x.Tags).ToList();
public static List<String> Genders = new List<string>() { "Все типы" }.Concat(PublicContext.Genders.ToList().Select(g => g.Name).ToList()).ToList();
public static string ShowmClientAmount = $"{Clients.Count}/{PublicContext.Clients.ToList().Count()}";
public static void ClientsActions(int s, int f, string srch)
{
Clients.Clear();
Clients = PublicContext.Clients.Include(x => x.Tags).ToList();
switch (s)
{
case 0:
Clients = Clients.OrderBy(c => c.Id).ToList();
break;
case 1:
Clients = Clients.OrderBy(c => c.Lastname).ToList();
break;
case 3:
Clients = Clients.OrderByDescending(c => c.Amount).ToList();
break;
case 2:
Clients = Clients.Where(s => s.LastService != "Нет").OrderByDescending(c => DateTime.Parse(c.LastService)).ToList().Concat(Clients.Where(s => s.LastService == "Нет")).ToList();
break;
}
if (f != 0)
{
Clients = Clients.Where(c => c.Gendercode == PublicContext.Genders.ToList().FirstOrDefault(g => g.Name == Genders[f]).Code).ToList();
}
List<string> words = srch.Split(' ').ToList();
foreach (string word in words)
{
Clients = Clients.Where(c => c.Firstname.ToLower().Contains(word.ToLower()) || c.Lastname.ToLower().Contains(word.ToLower()) || c.Patronymic.ToLower().Contains(word.ToLower()) ||
c.Phone.ToLower().Contains(word.ToLower()) || c.Email.ToLower().Contains(word.ToLower())).ToList();
}
ShowmClientAmount = $"{Clients.Count}/{PublicContext.Clients.ToList().Count()}";
}
}
}

18
Demo2/app.manifest Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<!-- This manifest is used on Windows only.
Don't remove it as it might cause problems with window transparency and embedded controls.
For more details visit https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests -->
<assemblyIdentity version="1.0.0.0" name="Demo2.Desktop"/>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- A list of the Windows versions that this application has been tested on
and is designed to work with. Uncomment the appropriate elements
and Windows will automatically select the most compatible environment. -->
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
</assembly>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Some files were not shown because too many files have changed in this diff Show More