diff --git a/.vs/uWine/CopilotIndices/0.2.1634.3922/CodeChunks.db b/.vs/uWine/CopilotIndices/0.2.1634.3922/CodeChunks.db index b4dc85e..30f0eaf 100644 Binary files a/.vs/uWine/CopilotIndices/0.2.1634.3922/CodeChunks.db and b/.vs/uWine/CopilotIndices/0.2.1634.3922/CodeChunks.db differ diff --git a/.vs/uWine/DesignTimeBuild/.dtbcache.v2 b/.vs/uWine/DesignTimeBuild/.dtbcache.v2 index 2dd2e86..13192a7 100644 Binary files a/.vs/uWine/DesignTimeBuild/.dtbcache.v2 and b/.vs/uWine/DesignTimeBuild/.dtbcache.v2 differ diff --git a/.vs/uWine/v17/.suo b/.vs/uWine/v17/.suo index d31083a..b5e29af 100644 Binary files a/.vs/uWine/v17/.suo and b/.vs/uWine/v17/.suo differ diff --git a/.vs/uWine/v17/DocumentLayout.backup.json b/.vs/uWine/v17/DocumentLayout.backup.json index 1d6b434..8d94ba4 100644 --- a/.vs/uWine/v17/DocumentLayout.backup.json +++ b/.vs/uWine/v17/DocumentLayout.backup.json @@ -3,37 +3,65 @@ "WorkspaceRootPath": "M:\\uv\\uWine\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\areacontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\areacontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\vineyardcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\vineyardcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\testcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\testcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\coordinatesservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\coordinatesservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\vineyardservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\vineyardservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\repository\\mariadbvineyardrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\repository\\mariadbvineyardrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\helpers\\coordinateshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\helpers\\coordinateshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" + }, + { + "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\coordinatesservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\coordinatesservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\testcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\testcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\areacontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\areacontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\ownerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\ownerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\entities\\vineyard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\entities\\vineyard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\helpers\\coordinateshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\helpers\\coordinateshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\entities\\coordinates.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\entities\\coordinates.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\builder\\servicies.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\builder\\servicies.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\entities\\vineyard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\entities\\vineyard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, { "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\entities\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\entities\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -54,22 +82,10 @@ "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\repository\\mariadbserverrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\repository\\mariadbserverrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\repository\\mariadbaddressrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\repository\\mariadbaddressrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\repository\\mariadbuserrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\repository\\mariadbuserrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -86,10 +102,6 @@ "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\repository\\mariadbauthenticationrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\repository\\mariadbauthenticationrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", - "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" - }, { "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\entities\\role.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\entities\\role.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -145,6 +157,10 @@ { "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\repositories\\iownerrepository.cs||{8B382828-6202-11D1-8870-0000F87579D2}", "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\repositories\\iownerrepository.cs||{8B382828-6202-11D1-8870-0000F87579D2}" + }, + { + "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\repositories\\ivineyardrepository.cs||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\repositories\\ivineyardrepository.cs||{8B382828-6202-11D1-8870-0000F87579D2}" } ], "DocumentGroupContainers": [ @@ -158,13 +174,13 @@ "Children": [ { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 6, "Title": "UserController.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Controllers\\UserController.cs", "RelativeDocumentMoniker": "uWine.Api\\Controllers\\UserController.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Controllers\\UserController.cs", "RelativeToolTip": "uWine.Api\\Controllers\\UserController.cs", - "ViewState": "AgIAABcAAAAAAAAAAAAlwC8AAAAuAAAAAAAAAA==", + "ViewState": "AgIAACQAAAAAAAAAAAAYwC8AAAAuAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-05T12:49:48.611Z", "IsPinned": true, @@ -173,79 +189,27 @@ { "$type": "Document", "DocumentIndex": 0, - "Title": "AreaController.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Controllers\\AreaController.cs", - "RelativeDocumentMoniker": "uWine.Api\\Controllers\\AreaController.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Controllers\\AreaController.cs", - "RelativeToolTip": "uWine.Api\\Controllers\\AreaController.cs", - "ViewState": "AgIAABEAAAAAAAAAAAAwwBkAAAAPAAAAAAAAAA==", + "Title": "VineyardController.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Controllers\\VineyardController.cs", + "RelativeDocumentMoniker": "uWine.Api\\Controllers\\VineyardController.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Controllers\\VineyardController.cs", + "RelativeToolTip": "uWine.Api\\Controllers\\VineyardController.cs", + "ViewState": "AgIAABgAAAAAAAAAAAAmwCYAAAAxAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T19:57:28.881Z", + "WhenOpened": "2025-07-11T07:58:19.458Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 2, - "Title": "CoordinatesService.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", - "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", - "RelativeToolTip": "uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", - "ViewState": "AgIAABoAAAAAAAAAAAAQwCUAAABCAAAAAAAAAA==", + "DocumentIndex": 1, + "Title": "VineyardService.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\VineyardService.cs", + "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\VineyardService.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\VineyardService.cs", + "RelativeToolTip": "uWine.Core.Infrastructure\\Services\\VineyardService.cs", + "ViewState": "AgIAAC4AAAAAAAAAAAAmwDcAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T19:40:24.68Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "CoordinatesHelper.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", - "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", - "RelativeToolTip": "uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", - "ViewState": "AgIAAAEAAAAAAAAAAAAowAsAAAAdAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T19:27:37.448Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "Coordinates.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Coordinates.cs", - "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Coordinates.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Coordinates.cs", - "RelativeToolTip": "uWine.Core.Domain\\Entities\\Coordinates.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T15:17:32.614Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "MariaDbVineyardRepository.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", - "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", - "RelativeToolTip": "uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", - "ViewState": "AgIAADcAAAAAAAAAAAAowEIAAABDAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T15:13:10.808Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 12, - "Title": "MariaDbServerRepository.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", - "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", - "RelativeToolTip": "uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAPAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T15:08:41.298Z", + "WhenOpened": "2025-07-11T07:20:05.396Z", "EditorCaption": "" }, { @@ -278,7 +242,111 @@ }, { "$type": "Document", - "DocumentIndex": 35, + "DocumentIndex": 39, + "Title": "IVineyardRepository.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IVineyardRepository.cs", + "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IVineyardRepository.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IVineyardRepository.cs", + "RelativeToolTip": "uWine.Core.Domain\\Repositories\\IVineyardRepository.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-11T07:04:00.219Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "Servicies.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Builder\\Servicies.cs", + "RelativeDocumentMoniker": "uWine.Api\\Builder\\Servicies.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Builder\\Servicies.cs", + "RelativeToolTip": "uWine.Api\\Builder\\Servicies.cs", + "ViewState": "AgIAADEAAAAAAAAAAAAcwFMAAAAKAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-11T06:47:46.099Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "AreaController.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Controllers\\AreaController.cs", + "RelativeDocumentMoniker": "uWine.Api\\Controllers\\AreaController.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Controllers\\AreaController.cs", + "RelativeToolTip": "uWine.Api\\Controllers\\AreaController.cs", + "ViewState": "AgIAAAYAAAAAAAAAAAAAAAUAAAABAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T19:57:28.881Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "CoordinatesService.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", + "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", + "RelativeToolTip": "uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAUwCQAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T19:40:24.68Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "CoordinatesHelper.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", + "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", + "RelativeToolTip": "uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", + "ViewState": "AgIAACcAAAAAAAAAAAAYwB4AAABrAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T19:27:37.448Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "Coordinates.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Coordinates.cs", + "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Coordinates.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Coordinates.cs", + "RelativeToolTip": "uWine.Core.Domain\\Entities\\Coordinates.cs", + "ViewState": "AgIAAAYAAAAAAAAAAAAYwA0AAAAPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T15:17:32.614Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "MariaDbVineyardRepository.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", + "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", + "RelativeToolTip": "uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", + "ViewState": "AgIAAAMAAAAAAAAAAADwvw0AAABPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T15:13:10.808Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 19, + "Title": "MariaDbServerRepository.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", + "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", + "RelativeToolTip": "uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T15:08:41.298Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 38, "Title": "IOwnerRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IOwnerRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IOwnerRepository.cs", @@ -291,20 +359,20 @@ }, { "$type": "Document", - "DocumentIndex": 15, + "DocumentIndex": 9, "Title": "UserService.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\UserService.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\UserService.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\UserService.cs", "RelativeToolTip": "uWine.Core.Infrastructure\\Services\\UserService.cs", - "ViewState": "AgIAABYAAAAAAAAAAAAQwCAAAAAxAAAAAAAAAA==", + "ViewState": "AgIAABIAAAAAAAAAAAAowCAAAAAyAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-09T17:08:48.34Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 18, + "DocumentIndex": 22, "Title": "IUserRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IUserRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IUserRepository.cs", @@ -317,7 +385,7 @@ }, { "$type": "Document", - "DocumentIndex": 17, + "DocumentIndex": 21, "Title": "MariaDbUserRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbUserRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbUserRepository.cs", @@ -330,7 +398,7 @@ }, { "$type": "Document", - "DocumentIndex": 22, + "DocumentIndex": 25, "Title": "Role.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Role.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Role.cs", @@ -343,7 +411,7 @@ }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 15, "Title": "User.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\User.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\User.cs", @@ -356,20 +424,20 @@ }, { "$type": "Document", - "DocumentIndex": 1, + "DocumentIndex": 5, "Title": "TestController.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Controllers\\TestController.cs", "RelativeDocumentMoniker": "uWine.Api\\Controllers\\TestController.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Controllers\\TestController.cs", "RelativeToolTip": "uWine.Api\\Controllers\\TestController.cs", - "ViewState": "AgIAAAYAAAAAAAAAAAAAAAoAAAA3AAAAAAAAAA==", + "ViewState": "AgIAABkAAAAAAAAAAAAQwCkAAAAQAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-09T14:20:34.76Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 16, "Title": "Owner.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Owner.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Owner.cs", @@ -382,20 +450,20 @@ }, { "$type": "Document", - "DocumentIndex": 16, + "DocumentIndex": 12, "Title": "Program.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Program.cs", "RelativeDocumentMoniker": "uWine.Api\\Program.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Program.cs", "RelativeToolTip": "uWine.Api\\Program.cs", - "ViewState": "AgIAAB4AAAAAAAAAAAAIwDAAAAAAAAAAAAAAAA==", + "ViewState": "AgIAAAwAAAAAAAAAAAAuwBgAAAA8AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-09T14:07:06.764Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 21, + "DocumentIndex": 3, "Title": "appsettings.json", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\appsettings.json", "RelativeDocumentMoniker": "uWine.Api\\appsettings.json", @@ -408,7 +476,7 @@ }, { "$type": "Document", - "DocumentIndex": 23, + "DocumentIndex": 26, "Title": "IAuthenticationRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IAuthenticationRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IAuthenticationRepository.cs", @@ -421,7 +489,7 @@ }, { "$type": "Document", - "DocumentIndex": 20, + "DocumentIndex": 24, "Title": "MariaDbAuthenticationRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbAuthenticationRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbAuthenticationRepository.cs", @@ -434,7 +502,7 @@ }, { "$type": "Document", - "DocumentIndex": 19, + "DocumentIndex": 23, "Title": "AuthenticationService.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\AuthenticationService.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\AuthenticationService.cs", @@ -447,20 +515,20 @@ }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 8, "Title": "OwnerService.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\OwnerService.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\OwnerService.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\OwnerService.cs", "RelativeToolTip": "uWine.Core.Infrastructure\\Services\\OwnerService.cs", - "ViewState": "AgIAABsAAAAAAAAAAAAYwCcAAABKAAAAAAAAAA==", + "ViewState": "AgIAABEAAAAAAAAAAAAgwCkAAAA5AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-05T12:53:14.567Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 29, + "DocumentIndex": 32, "Title": "IContactRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IContactRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IContactRepository.cs", @@ -473,7 +541,7 @@ }, { "$type": "Document", - "DocumentIndex": 28, + "DocumentIndex": 31, "Title": "ContactType.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\ContactType.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\ContactType.cs", @@ -486,7 +554,7 @@ }, { "$type": "Document", - "DocumentIndex": 11, + "DocumentIndex": 18, "Title": "Contact.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Contact.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Contact.cs", @@ -499,7 +567,7 @@ }, { "$type": "Document", - "DocumentIndex": 27, + "DocumentIndex": 30, "Title": "MariaDbContactRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbContactRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbContactRepository.cs", @@ -512,7 +580,7 @@ }, { "$type": "Document", - "DocumentIndex": 30, + "DocumentIndex": 33, "Title": "IAddressRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IAddressRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IAddressRepository.cs", @@ -525,7 +593,7 @@ }, { "$type": "Document", - "DocumentIndex": 10, + "DocumentIndex": 17, "Title": "Address.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Address.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Address.cs", @@ -538,7 +606,7 @@ }, { "$type": "Document", - "DocumentIndex": 14, + "DocumentIndex": 20, "Title": "MariaDbAddressRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbAddressRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbAddressRepository.cs", @@ -551,7 +619,7 @@ }, { "$type": "Document", - "DocumentIndex": 31, + "DocumentIndex": 34, "Title": "RowWork.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\RowWork.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\RowWork.cs", @@ -564,7 +632,7 @@ }, { "$type": "Document", - "DocumentIndex": 33, + "DocumentIndex": 36, "Title": "WarehouseProduct.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\WarehouseProduct.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\WarehouseProduct.cs", @@ -577,7 +645,7 @@ }, { "$type": "Document", - "DocumentIndex": 32, + "DocumentIndex": 35, "Title": "ProductUsage.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\ProductUsage.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\ProductUsage.cs", @@ -590,7 +658,7 @@ }, { "$type": "Document", - "DocumentIndex": 26, + "DocumentIndex": 29, "Title": "Worker.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Worker.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Worker.cs", @@ -603,7 +671,7 @@ }, { "$type": "Document", - "DocumentIndex": 25, + "DocumentIndex": 28, "Title": "PlantVariety.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\PlantVariety.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\PlantVariety.cs", @@ -616,7 +684,7 @@ }, { "$type": "Document", - "DocumentIndex": 24, + "DocumentIndex": 27, "Title": "VinePlant.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\VinePlant.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\VinePlant.cs", @@ -629,20 +697,20 @@ }, { "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 14, "Title": "Vineyard.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Vineyard.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Vineyard.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Vineyard.cs", "RelativeToolTip": "uWine.Core.Domain\\Entities\\Vineyard.cs", - "ViewState": "AgIAAAwAAAAAAAAAAAAnwCIAAAAAAAAAAAAAAA==", + "ViewState": "AgIAAAkAAAAAAAAAAAAuwAoAAAARAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-02T17:04:51.461Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 34, + "DocumentIndex": 37, "Title": "Row.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Row.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Row.cs", diff --git a/.vs/uWine/v17/DocumentLayout.json b/.vs/uWine/v17/DocumentLayout.json index 32c8b39..c7c156f 100644 --- a/.vs/uWine/v17/DocumentLayout.json +++ b/.vs/uWine/v17/DocumentLayout.json @@ -3,37 +3,69 @@ "WorkspaceRootPath": "M:\\uv\\uWine\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\areacontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\areacontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\testcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\testcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\repositories\\ivineyardrepository.cs||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\repositories\\ivineyardrepository.cs||{8B382828-6202-11D1-8870-0000F87579D2}" }, { "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\coordinatesservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\coordinatesservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\vineyardcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\vineyardcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\vineyardservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\vineyardservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, { "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\repository\\mariadbvineyardrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\repository\\mariadbvineyardrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\helpers\\coordinateshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\helpers\\coordinateshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" + }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\testcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\testcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\areacontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\areacontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\ownerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\ownerservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\entities\\vineyard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\entities\\vineyard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\helpers\\coordinateshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\helpers\\coordinateshelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\entities\\coordinates.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\entities\\coordinates.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\builder\\servicies.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\builder\\servicies.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\entities\\vineyard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\entities\\vineyard.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, { "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\entities\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\entities\\user.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -54,22 +86,10 @@ "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\repository\\mariadbserverrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\repository\\mariadbserverrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\controllers\\usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\controllers\\usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\repository\\mariadbaddressrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\repository\\mariadbaddressrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\services\\userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\services\\userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\repository\\mariadbuserrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\repository\\mariadbuserrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -86,10 +106,6 @@ "AbsoluteMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|m:\\uv\\uwine\\uwine.core.infrastructure\\repository\\mariadbauthenticationrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{50360CEE-B38B-4729-ACA3-ABC3ED3538E9}|uWine.Core.Infrastructure\\uWine.Core.Infrastructure.csproj|solutionrelative:uwine.core.infrastructure\\repository\\mariadbauthenticationrepository.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|m:\\uv\\uwine\\uwine.api\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", - "RelativeMoniker": "D:0:0:{8E5D260E-7395-4875-8A4F-16205F92AD38}|uWine.Api\\uWine.Api.csproj|solutionrelative:uwine.api\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" - }, { "AbsoluteMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|m:\\uv\\uwine\\uwine.core.domain\\entities\\role.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{1DCFCDC3-C4A6-4864-8868-94AAB81C3DBA}|uWine.Core.Domain\\uWine.Core.Domain.csproj|solutionrelative:uwine.core.domain\\entities\\role.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -154,98 +170,46 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 1, + "SelectedChildIndex": 10, "Children": [ { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 7, "Title": "UserController.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Controllers\\UserController.cs", "RelativeDocumentMoniker": "uWine.Api\\Controllers\\UserController.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Controllers\\UserController.cs", "RelativeToolTip": "uWine.Api\\Controllers\\UserController.cs", - "ViewState": "AgIAABcAAAAAAAAAAAAlwC8AAAAuAAAAAAAAAA==", + "ViewState": "AgIAACQAAAAAAAAAAAAYwC8AAAAuAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-05T12:49:48.611Z", "IsPinned": true, "EditorCaption": "" }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "AreaController.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Controllers\\AreaController.cs", - "RelativeDocumentMoniker": "uWine.Api\\Controllers\\AreaController.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Controllers\\AreaController.cs", - "RelativeToolTip": "uWine.Api\\Controllers\\AreaController.cs", - "ViewState": "AgIAAAkAAAAAAAAAAAAswBMAAAAXAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T19:57:28.881Z", - "EditorCaption": "" - }, { "$type": "Document", "DocumentIndex": 2, - "Title": "CoordinatesService.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", - "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", - "RelativeToolTip": "uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", - "ViewState": "AgIAABoAAAAAAAAAAAAQwCUAAABCAAAAAAAAAA==", + "Title": "VineyardController.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Controllers\\VineyardController.cs", + "RelativeDocumentMoniker": "uWine.Api\\Controllers\\VineyardController.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Controllers\\VineyardController.cs", + "RelativeToolTip": "uWine.Api\\Controllers\\VineyardController.cs", + "ViewState": "AgIAABgAAAAAAAAAAAAmwCYAAAAxAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T19:40:24.68Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "CoordinatesHelper.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", - "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", - "RelativeToolTip": "uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", - "ViewState": "AgIAAAEAAAAAAAAAAAAowAsAAAAdAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T19:27:37.448Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "Coordinates.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Coordinates.cs", - "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Coordinates.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Coordinates.cs", - "RelativeToolTip": "uWine.Core.Domain\\Entities\\Coordinates.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T15:17:32.614Z", + "WhenOpened": "2025-07-11T07:58:19.458Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 3, - "Title": "MariaDbVineyardRepository.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", - "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", - "RelativeToolTip": "uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", - "ViewState": "AgIAADcAAAAAAAAAAAAowEIAAABDAAAAAAAAAA==", + "Title": "VineyardService.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\VineyardService.cs", + "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\VineyardService.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\VineyardService.cs", + "RelativeToolTip": "uWine.Core.Infrastructure\\Services\\VineyardService.cs", + "ViewState": "AgIAAC4AAAAAAAAAAAAmwDcAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T15:13:10.808Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 12, - "Title": "MariaDbServerRepository.cs", - "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", - "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", - "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", - "RelativeToolTip": "uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAPAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-10T15:08:41.298Z", + "WhenOpened": "2025-07-11T07:20:05.396Z", "EditorCaption": "" }, { @@ -278,7 +242,111 @@ }, { "$type": "Document", - "DocumentIndex": 35, + "DocumentIndex": 0, + "Title": "IVineyardRepository.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IVineyardRepository.cs", + "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IVineyardRepository.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IVineyardRepository.cs*", + "RelativeToolTip": "uWine.Core.Domain\\Repositories\\IVineyardRepository.cs*", + "ViewState": "AgIAAAAAAAAAAAAAAAAuwAkAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-11T07:04:00.219Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "Servicies.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Builder\\Servicies.cs", + "RelativeDocumentMoniker": "uWine.Api\\Builder\\Servicies.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Builder\\Servicies.cs", + "RelativeToolTip": "uWine.Api\\Builder\\Servicies.cs", + "ViewState": "AgIAADEAAAAAAAAAAAAcwFMAAAAKAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-11T06:47:46.099Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "AreaController.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Controllers\\AreaController.cs", + "RelativeDocumentMoniker": "uWine.Api\\Controllers\\AreaController.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Controllers\\AreaController.cs", + "RelativeToolTip": "uWine.Api\\Controllers\\AreaController.cs", + "ViewState": "AgIAAAYAAAAAAAAAAAAAAAUAAAABAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T19:57:28.881Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "CoordinatesService.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", + "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", + "RelativeToolTip": "uWine.Core.Infrastructure\\Services\\CoordinatesService.cs", + "ViewState": "AgIAACQAAAAAAAAAAAD4vy0AAABQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T19:40:24.68Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "CoordinatesHelper.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", + "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", + "RelativeToolTip": "uWine.Core.Infrastructure\\Helpers\\CoordinatesHelper.cs", + "ViewState": "AgIAACcAAAAAAAAAAAAYwB4AAABrAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T19:27:37.448Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "Coordinates.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Coordinates.cs", + "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Coordinates.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Coordinates.cs", + "RelativeToolTip": "uWine.Core.Domain\\Entities\\Coordinates.cs", + "ViewState": "AgIAAAYAAAAAAAAAAAAYwA0AAAAPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T15:17:32.614Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "MariaDbVineyardRepository.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", + "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", + "RelativeToolTip": "uWine.Core.Infrastructure\\Repository\\MariaDbVineyardRepository.cs", + "ViewState": "AgIAAAMAAAAAAAAAAADwvw0AAABPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T15:13:10.808Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 20, + "Title": "MariaDbServerRepository.cs", + "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", + "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", + "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", + "RelativeToolTip": "uWine.Core.Infrastructure\\Repository\\MariaDbServerRepository.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-10T15:08:41.298Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 39, "Title": "IOwnerRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IOwnerRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IOwnerRepository.cs", @@ -291,20 +359,20 @@ }, { "$type": "Document", - "DocumentIndex": 15, + "DocumentIndex": 10, "Title": "UserService.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\UserService.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\UserService.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\UserService.cs", "RelativeToolTip": "uWine.Core.Infrastructure\\Services\\UserService.cs", - "ViewState": "AgIAABYAAAAAAAAAAAAQwCAAAAAxAAAAAAAAAA==", + "ViewState": "AgIAABIAAAAAAAAAAAAowCAAAAAyAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-09T17:08:48.34Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 18, + "DocumentIndex": 23, "Title": "IUserRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IUserRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IUserRepository.cs", @@ -317,7 +385,7 @@ }, { "$type": "Document", - "DocumentIndex": 17, + "DocumentIndex": 22, "Title": "MariaDbUserRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbUserRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbUserRepository.cs", @@ -330,7 +398,7 @@ }, { "$type": "Document", - "DocumentIndex": 22, + "DocumentIndex": 26, "Title": "Role.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Role.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Role.cs", @@ -343,7 +411,7 @@ }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 16, "Title": "User.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\User.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\User.cs", @@ -356,20 +424,20 @@ }, { "$type": "Document", - "DocumentIndex": 1, + "DocumentIndex": 6, "Title": "TestController.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Controllers\\TestController.cs", "RelativeDocumentMoniker": "uWine.Api\\Controllers\\TestController.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Controllers\\TestController.cs", "RelativeToolTip": "uWine.Api\\Controllers\\TestController.cs", - "ViewState": "AgIAAAYAAAAAAAAAAAAAAAoAAAA3AAAAAAAAAA==", + "ViewState": "AgIAABkAAAAAAAAAAAAQwCkAAAAQAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-09T14:20:34.76Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 17, "Title": "Owner.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Owner.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Owner.cs", @@ -382,20 +450,20 @@ }, { "$type": "Document", - "DocumentIndex": 16, + "DocumentIndex": 13, "Title": "Program.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\Program.cs", "RelativeDocumentMoniker": "uWine.Api\\Program.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Api\\Program.cs", "RelativeToolTip": "uWine.Api\\Program.cs", - "ViewState": "AgIAAB4AAAAAAAAAAAAIwDAAAAAAAAAAAAAAAA==", + "ViewState": "AgIAAAwAAAAAAAAAAAAuwBgAAAA8AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-09T14:07:06.764Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 21, + "DocumentIndex": 5, "Title": "appsettings.json", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Api\\appsettings.json", "RelativeDocumentMoniker": "uWine.Api\\appsettings.json", @@ -408,7 +476,7 @@ }, { "$type": "Document", - "DocumentIndex": 23, + "DocumentIndex": 27, "Title": "IAuthenticationRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IAuthenticationRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IAuthenticationRepository.cs", @@ -421,7 +489,7 @@ }, { "$type": "Document", - "DocumentIndex": 20, + "DocumentIndex": 25, "Title": "MariaDbAuthenticationRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbAuthenticationRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbAuthenticationRepository.cs", @@ -434,7 +502,7 @@ }, { "$type": "Document", - "DocumentIndex": 19, + "DocumentIndex": 24, "Title": "AuthenticationService.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\AuthenticationService.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\AuthenticationService.cs", @@ -447,20 +515,20 @@ }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 9, "Title": "OwnerService.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\OwnerService.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Services\\OwnerService.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Services\\OwnerService.cs", "RelativeToolTip": "uWine.Core.Infrastructure\\Services\\OwnerService.cs", - "ViewState": "AgIAABsAAAAAAAAAAAAYwCcAAABKAAAAAAAAAA==", + "ViewState": "AgIAABEAAAAAAAAAAAAgwCkAAAA5AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-05T12:53:14.567Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 29, + "DocumentIndex": 33, "Title": "IContactRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IContactRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IContactRepository.cs", @@ -473,7 +541,7 @@ }, { "$type": "Document", - "DocumentIndex": 28, + "DocumentIndex": 32, "Title": "ContactType.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\ContactType.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\ContactType.cs", @@ -486,7 +554,7 @@ }, { "$type": "Document", - "DocumentIndex": 11, + "DocumentIndex": 19, "Title": "Contact.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Contact.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Contact.cs", @@ -499,7 +567,7 @@ }, { "$type": "Document", - "DocumentIndex": 27, + "DocumentIndex": 31, "Title": "MariaDbContactRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbContactRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbContactRepository.cs", @@ -512,7 +580,7 @@ }, { "$type": "Document", - "DocumentIndex": 30, + "DocumentIndex": 34, "Title": "IAddressRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Repositories\\IAddressRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Repositories\\IAddressRepository.cs", @@ -525,7 +593,7 @@ }, { "$type": "Document", - "DocumentIndex": 10, + "DocumentIndex": 18, "Title": "Address.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Address.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Address.cs", @@ -538,7 +606,7 @@ }, { "$type": "Document", - "DocumentIndex": 14, + "DocumentIndex": 21, "Title": "MariaDbAddressRepository.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Infrastructure\\Repository\\MariaDbAddressRepository.cs", "RelativeDocumentMoniker": "uWine.Core.Infrastructure\\Repository\\MariaDbAddressRepository.cs", @@ -551,7 +619,7 @@ }, { "$type": "Document", - "DocumentIndex": 31, + "DocumentIndex": 35, "Title": "RowWork.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\RowWork.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\RowWork.cs", @@ -564,7 +632,7 @@ }, { "$type": "Document", - "DocumentIndex": 33, + "DocumentIndex": 37, "Title": "WarehouseProduct.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\WarehouseProduct.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\WarehouseProduct.cs", @@ -577,7 +645,7 @@ }, { "$type": "Document", - "DocumentIndex": 32, + "DocumentIndex": 36, "Title": "ProductUsage.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\ProductUsage.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\ProductUsage.cs", @@ -590,7 +658,7 @@ }, { "$type": "Document", - "DocumentIndex": 26, + "DocumentIndex": 30, "Title": "Worker.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Worker.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Worker.cs", @@ -603,7 +671,7 @@ }, { "$type": "Document", - "DocumentIndex": 25, + "DocumentIndex": 29, "Title": "PlantVariety.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\PlantVariety.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\PlantVariety.cs", @@ -616,7 +684,7 @@ }, { "$type": "Document", - "DocumentIndex": 24, + "DocumentIndex": 28, "Title": "VinePlant.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\VinePlant.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\VinePlant.cs", @@ -629,20 +697,20 @@ }, { "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 15, "Title": "Vineyard.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Vineyard.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Vineyard.cs", "ToolTip": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Vineyard.cs", "RelativeToolTip": "uWine.Core.Domain\\Entities\\Vineyard.cs", - "ViewState": "AgIAAAwAAAAAAAAAAAAnwCIAAAAAAAAAAAAAAA==", + "ViewState": "AgIAAAkAAAAAAAAAAAAuwAoAAAARAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-02T17:04:51.461Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 34, + "DocumentIndex": 38, "Title": "Row.cs", "DocumentMoniker": "M:\\uv\\uWine\\uWine.Core.Domain\\Entities\\Row.cs", "RelativeDocumentMoniker": "uWine.Core.Domain\\Entities\\Row.cs", diff --git a/uWine.Api/Builder/Servicies.cs b/uWine.Api/Builder/Servicies.cs new file mode 100644 index 0000000..9400abf --- /dev/null +++ b/uWine.Api/Builder/Servicies.cs @@ -0,0 +1,124 @@ +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.IdentityModel.Tokens; +using Microsoft.OpenApi.Models; +using System.Text; +using uWine.Core.Domain.Repositories; +using uWine.Core.Infrastructure.Repository; +using uWine.Core.Infrastructure.Services; + +namespace uWine.Api.Builder +{ + public class Servicies + { + + public static WebApplicationBuilder? AddAuthentiction(WebApplicationBuilder? builder) + { + builder.Services.AddAuthentication(options => + { + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }) + .AddJwtBearer(options => + { + var jwtSettings = builder.Configuration.GetSection("JwtSettings"); + options.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuer = true, + ValidateAudience = true, + ValidateLifetime = true, + ValidateIssuerSigningKey = true, + ValidIssuer = jwtSettings["Issuer"], + ValidAudience = jwtSettings["Audience"], + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings["Secret"])) + }; + }); + return builder; + } + + public static WebApplicationBuilder? AddRepository(WebApplicationBuilder? builder) + { + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + + return builder; + } + + public static WebApplicationBuilder? AddServices(WebApplicationBuilder? builder) + { + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + + return builder; + } + + public static WebApplicationBuilder? AddSwagger(WebApplicationBuilder? builder) + { + builder.Services.AddSwaggerGen(c => + { + c.SwaggerDoc("v1", new OpenApiInfo { Title = "Il tuo API", Version = "v1" }); + + // 1. Configurazione per JWT Bearer Token + c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme + { + Description = "Inserisci il JWT Token nel campo 'Value' con il prefisso 'Bearer '. Esempio: 'Bearer your_token_here'", + Name = "Authorization", + In = ParameterLocation.Header, + Type = SecuritySchemeType.ApiKey, + Scheme = "Bearer" + }); + + c.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Bearer" + } + }, + new string[] {} + } + }); + + // 2. Configurazione per Basic Authentication + c.AddSecurityDefinition("Basic", new OpenApiSecurityScheme + { + Description = "Basic authentication header", + Name = "Authorization", + In = ParameterLocation.Header, + Type = SecuritySchemeType.Http, + Scheme = "basic" + }); + + c.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Basic" + } + }, + new string[] {} + } + }); + + // Opzionale: per i commenti XML della documentazione + // var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; + // var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); + // c.IncludeXmlComments(xmlPath); + }); + return builder; + } + } +} diff --git a/uWine.Api/Controllers/AreaController.cs b/uWine.Api/Controllers/AreaController.cs index 0145a22..963110d 100644 --- a/uWine.Api/Controllers/AreaController.cs +++ b/uWine.Api/Controllers/AreaController.cs @@ -18,14 +18,14 @@ namespace uWine.Api.Controllers } [HttpPost("save-area")] - public IActionResult SaveArea([FromBody] Dictionary coordinates, int vineyardId) + public IActionResult SaveArea([FromBody] Dictionary coordinates, int vineyardId) { if (coordinates == null) return BadRequest("Invalid coordinates"); try { - _coordinatesService.SaveArea(vineyardId ,coordinates); + _coordinatesService.SaveArea(vineyardId, coordinates); return Ok(new { status = "Area set successfully" }); } catch (Exception ex) @@ -33,5 +33,22 @@ namespace uWine.Api.Controllers return StatusCode(500, new { error = ex.Message }); } } + + [HttpGet("get-area")] + public IActionResult GetArea(int vineyardId) + { + try + { + var area = _coordinatesService.GetArea(vineyardId); + if (area == null || area.Count == 0) + return NotFound("No area found for the given vineyard ID"); + + return Ok(area); + } + catch (Exception ex) + { + return StatusCode(500, new { error = ex.Message }); + } + } } } diff --git a/uWine.Api/Controllers/VineyardController.cs b/uWine.Api/Controllers/VineyardController.cs new file mode 100644 index 0000000..9df8802 --- /dev/null +++ b/uWine.Api/Controllers/VineyardController.cs @@ -0,0 +1,49 @@ +using Microsoft.AspNetCore.Mvc; +using uWine.Core.Infrastructure.Services; + +namespace uWine.Api.Controllers +{ + [ApiController] + [Route("/[controller]")] + public class VineyardController : Controller + { + public VineyardService _vineyardService; + public VineyardController(VineyardService vineyardService) + { + _vineyardService = vineyardService; + } + + + [HttpGet("get-user-vineyards")] + public IActionResult UserVineyards() + { + try + { + var UserId = int.Parse(User.FindFirst("userId")?.Value); + var list = _vineyardService.User(UserId); + + return Ok(list); + } + catch + { + return Unauthorized(new { status = 401 }); + } + } + + [HttpGet("get-owner-vineyards")] + public IActionResult OwnerVineyards() + { + try + { + var UserId = int.Parse(User.FindFirst("userId")?.Value); + var list = _vineyardService.Owner(UserId); + + return Ok(list); + } + catch + { + return Unauthorized(new { status = 401 }); + } + } + } +} diff --git a/uWine.Api/Program.cs b/uWine.Api/Program.cs index e7862b8..a931485 100644 --- a/uWine.Api/Program.cs +++ b/uWine.Api/Program.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; +using Microsoft.OpenApi.Models; using System.Text; using uWine.Core.Domain.Repositories; using uWine.Core.Infrastructure.Repository; @@ -14,42 +15,18 @@ namespace uWine.Api { var builder = WebApplication.CreateBuilder(args); - builder.Services.AddAuthentication(options => - { - options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; - }) - .AddJwtBearer(options => - { - var jwtSettings = builder.Configuration.GetSection("JwtSettings"); - options.TokenValidationParameters = new TokenValidationParameters - { - ValidateIssuer = true, - ValidateAudience = true, - ValidateLifetime = true, - ValidateIssuerSigningKey = true, - ValidIssuer = jwtSettings["Issuer"], - ValidAudience = jwtSettings["Audience"], - IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings["Secret"])) - }; - }); + builder = Builder.Servicies.AddAuthentiction(builder); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); - builder.Services.AddSwaggerGen(); + //builder.Services.AddSwaggerGen(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); + builder = Builder.Servicies.AddSwagger(builder); + builder = Builder.Servicies.AddRepository(builder); + builder = Builder.Servicies.AddServices(builder); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); //builder.Services.AddSingleton(); var app = builder.Build(); diff --git a/uWine.Core.Domain/Repositories/IVineyardRepository.cs b/uWine.Core.Domain/Repositories/IVineyardRepository.cs index 1299892..b83ad66 100644 --- a/uWine.Core.Domain/Repositories/IVineyardRepository.cs +++ b/uWine.Core.Domain/Repositories/IVineyardRepository.cs @@ -10,6 +10,9 @@ namespace uWine.Core.Domain.Repositories public interface IVineyardRepository { List GetOwnerVineyards(int ownerId); + List GetUserVineyards(int userId); void Insert(Vineyard vineyard, int ownerId); + void InsertArea(Dictionary coordinates, int vineyardId); + string Area(int vineyardId); } } diff --git a/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfo.cs b/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfo.cs index 7dec415..619afed 100644 --- a/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfo.cs +++ b/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("uWine.Core.Domain")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5aca82244e19b339516cae671f01e897766fe699")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a373201ca4c6a3dc43e4bc370112d65cebeb09fa")] [assembly: System.Reflection.AssemblyProductAttribute("uWine.Core.Domain")] [assembly: System.Reflection.AssemblyTitleAttribute("uWine.Core.Domain")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfoInputs.cache b/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfoInputs.cache index 72b3545..808e6c6 100644 --- a/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfoInputs.cache +++ b/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfoInputs.cache @@ -1 +1 @@ -af0469651414fb1cc216fc5d5e51b3858d3ededd3bebba462f6393cc8502389f +b902622a631d1baa0110ad04e0fcf461794e939a926c828bd6ba317993ff3e98 diff --git a/uWine.Core.Infrastructure/Helpers/CoordinatesHelper.cs b/uWine.Core.Infrastructure/Helpers/CoordinatesHelper.cs index 538ab91..38e55a1 100644 --- a/uWine.Core.Infrastructure/Helpers/CoordinatesHelper.cs +++ b/uWine.Core.Infrastructure/Helpers/CoordinatesHelper.cs @@ -1,15 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using uWine.Core.Domain.Entities; +using NetTopologySuite.Geometries; +using NetTopologySuite.IO; namespace uWine.Core.Infrastructure.Helpers { public class CoordinatesHelper { - public static string ToWktPolygon(Dictionary coordinatesDict) + public static string ToWktPolygon(Dictionary coordinatesDict) { if (coordinatesDict == null || !coordinatesDict.Any()) { @@ -31,5 +27,42 @@ namespace uWine.Core.Infrastructure.Helpers return $"POLYGON(({closedPoints}))"; } + + public static Dictionary WktPolygonToDictionary(string wktPolygon) + { + if (string.IsNullOrWhiteSpace(wktPolygon)) + { + throw new ArgumentException("La stringa WKT del poligono non può essere nulla o vuota."); + } + + var reader = new WKTReader(); + NetTopologySuite.Geometries.Geometry geometry = reader.Read(wktPolygon); + + if (!(geometry is Polygon polygon)) + { + throw new ArgumentException("La stringa WKT non rappresenta un poligono valido."); + } + + var coordinatesDict = new Dictionary(); + var points = polygon.ExteriorRing.Coordinates; // Ottieni i punti dell'anello esterno + + // Nota: i poligoni WKT ripetono il primo punto alla fine per chiudere. + // Dobbiamo escludere l'ultimo punto se è identico al primo per non duplicarlo nel dictionary, + // a meno che tu non voglia mantenere anche il punto di chiusura. + int count = points.Length; + if (count > 0 && points[0].Equals2D(points[count - 1])) + { + count--; // Escludi l'ultimo punto se è una duplicazione del primo + } + + for (int i = 0; i < count; i++) + { + // Ricorda che NetTopologySuite usa (X, Y) che corrispondono a (Longitude, Latitude) per WGS84 + coordinatesDict.Add(i, new Domain.Entities.Coordinates(points[i].Y, points[i].X )); + } + + return coordinatesDict; + } + } } diff --git a/uWine.Core.Infrastructure/Repository/MariaDbVineyardRepository.cs b/uWine.Core.Infrastructure/Repository/MariaDbVineyardRepository.cs index 6a662ba..1d04cec 100644 --- a/uWine.Core.Infrastructure/Repository/MariaDbVineyardRepository.cs +++ b/uWine.Core.Infrastructure/Repository/MariaDbVineyardRepository.cs @@ -70,6 +70,18 @@ namespace uWine.Core.Infrastructure.Repository } } + public string Area(int vineyardId) + { + using (var connection = Connection()) + { + connection.Open(); + var command = new MySqlCommand("SELECT ST_AsText(area) FROM t_vineyard WHERE id = @id", connection); + command.Parameters.AddWithValue("@id", vineyardId); + var result = command.ExecuteScalar(); + return result?.ToString() ?? string.Empty; + } + } + public List GetOwnerVineyards(int ownerId) { var vineyards = new List(); @@ -92,5 +104,29 @@ namespace uWine.Core.Infrastructure.Repository } return vineyards; } + + public List GetUserVineyards(int userId) + { + var vineyards = new List(); + using (var connection = Connection()) + { + connection.Open(); + var command = new MySqlCommand("SELECT v.id, v.name, v.location, v.hectares, v.latitude, v.longitude " + + "FROM t_vineyard v " + + "JOIN t_owners_vineyards ov ON v.id = ov.vineyard_id " + + "JOUN t_user_owner uo on uo.owner_id = ov.owner_id" + + "WHERE uo.user_id = @userId", connection); + command.Parameters.AddWithValue("@userId", userId); + + using (var reader = command.ExecuteReader()) + { + while (reader.Read()) + { + vineyards.Add(Vineyard.FromRecord(reader)); + } + } + } + return vineyards; + } } } diff --git a/uWine.Core.Infrastructure/Services/CoordinatesService.cs b/uWine.Core.Infrastructure/Services/CoordinatesService.cs index 09b54ea..8548722 100644 --- a/uWine.Core.Infrastructure/Services/CoordinatesService.cs +++ b/uWine.Core.Infrastructure/Services/CoordinatesService.cs @@ -4,15 +4,17 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using uWine.Core.Domain.Entities; +using uWine.Core.Domain.Repositories; +using uWine.Core.Infrastructure.Helpers; using uWine.Core.Infrastructure.Repository; namespace uWine.Core.Infrastructure.Services { public class CoordinatesService { - public MariaDbVineyardRepository _vineyardRepository; + public IVineyardRepository _vineyardRepository; - public CoordinatesService(MariaDbVineyardRepository vineyardRepository) + public CoordinatesService(IVineyardRepository vineyardRepository) { _vineyardRepository = vineyardRepository; } @@ -28,14 +30,21 @@ namespace uWine.Core.Infrastructure.Services // return new Coordinates(vineyard.Latitude, vineyard.Longitude); //} - public async Task> VineyardCoordinates(int vineyardId) - { - - } + //public Dictionary VineyardCoordinates(int vineyardId) + //{ + // return new Dictionary(); + //} public void SaveArea(int vineyardId, Dictionary coordinates) { _vineyardRepository.InsertArea(coordinates, vineyardId); } + + public Dictionary GetArea(int vineyardId) + { + var dict = new Dictionary(); + dict = CoordinatesHelper.WktPolygonToDictionary(_vineyardRepository.Area(vineyardId)); + return dict; + } } } diff --git a/uWine.Core.Infrastructure/Services/VineyardService.cs b/uWine.Core.Infrastructure/Services/VineyardService.cs new file mode 100644 index 0000000..7467028 --- /dev/null +++ b/uWine.Core.Infrastructure/Services/VineyardService.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using uWine.Core.Domain.Entities; +using uWine.Core.Domain.Repositories; + +namespace uWine.Core.Infrastructure.Services +{ + public class VineyardService + { + public IVineyardRepository _vineyardRepository; + public CoordinatesService _coordinatesService; + public VineyardService(IVineyardRepository vineyardRepository, CoordinatesService coordinatesService) + { + _vineyardRepository = vineyardRepository; + _coordinatesService = coordinatesService; + } + + public void Insert(Vineyard vineyard, int ownerId) + { + if (vineyard == null) + { + throw new ArgumentNullException(nameof(vineyard), "Vineyard cannot be null"); + } + + _vineyardRepository.Insert(vineyard, ownerId); + + if (vineyard.Area != null || vineyard.Area.Count >0) + { + _coordinatesService.SaveArea(vineyard.Id, vineyard.Area); + } + } + + public List User(int userId) + { + if (userId <= 0) + { + throw new ArgumentException("User ID must be greater than zero.", nameof(userId)); + } + + var vineyards = _vineyardRepository.GetUserVineyards(userId); + if (vineyards == null || !vineyards.Any()) + { + return new List(); + } + + foreach (var vineyard in vineyards) + { + vineyard.Area = _coordinatesService.GetArea(vineyard.Id); + } + + return vineyards; + } + + public List Owner(int ownerId) + { + if (ownerId <= 0) + { + throw new ArgumentException("Owner ID must be greater than zero.", nameof(ownerId)); + } + + var vineyards = _vineyardRepository.GetOwnerVineyards(ownerId); + if (vineyards == null || !vineyards.Any()) + { + return new List(); + } + + foreach (var vineyard in vineyards) + { + vineyard.Area = _coordinatesService.GetArea(vineyard.Id); + } + + return vineyards; + } + } +} diff --git a/uWine.Core.Infrastructure/uWine.Core.Infrastructure.csproj b/uWine.Core.Infrastructure/uWine.Core.Infrastructure.csproj index 821dca6..95622a2 100644 --- a/uWine.Core.Infrastructure/uWine.Core.Infrastructure.csproj +++ b/uWine.Core.Infrastructure/uWine.Core.Infrastructure.csproj @@ -10,6 +10,7 @@ +