aga
This commit is contained in:
commit
a0aef6e93b
13
.idea/.idea.Voroncov2103/.idea/.gitignore
vendored
Normal file
13
.idea/.idea.Voroncov2103/.idea/.gitignore
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Rider ignored files
|
||||||
|
/modules.xml
|
||||||
|
/contentModel.xml
|
||||||
|
/.idea.Voroncov2103.iml
|
||||||
|
/projectSettingsUpdater.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
13
.idea/.idea.Voroncov2103/.idea/avalonia.xml
Normal file
13
.idea/.idea.Voroncov2103/.idea/avalonia.xml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AvaloniaProject">
|
||||||
|
<option name="projectPerEditor">
|
||||||
|
<map>
|
||||||
|
<entry key="Voroncov2103/AddAgentWindow.axaml" value="Voroncov2103/Voroncov2103.csproj" />
|
||||||
|
<entry key="Voroncov2103/EditAgentWindow.axaml" value="Voroncov2103/Voroncov2103.csproj" />
|
||||||
|
<entry key="Voroncov2103/MainWindow.axaml" value="Voroncov2103/Voroncov2103.csproj" />
|
||||||
|
<entry key="Voroncov2103/PriorityWindow.axaml" value="Voroncov2103/Voroncov2103.csproj" />
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
4
.idea/.idea.Voroncov2103/.idea/encodings.xml
Normal file
4
.idea/.idea.Voroncov2103/.idea/encodings.xml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||||
|
</project>
|
8
.idea/.idea.Voroncov2103/.idea/indexLayout.xml
Normal file
8
.idea/.idea.Voroncov2103/.idea/indexLayout.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="UserContentModel">
|
||||||
|
<attachedFolders />
|
||||||
|
<explicitIncludes />
|
||||||
|
<explicitExcludes />
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/.idea.Voroncov2103/.idea/vcs.xml
Normal file
6
.idea/.idea.Voroncov2103/.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
16
Voroncov2103.sln
Normal file
16
Voroncov2103.sln
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Voroncov2103", "Voroncov2103\Voroncov2103.csproj", "{1CA49546-FA49-4F8D-A3A0-C7F65666EBA5}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{1CA49546-FA49-4F8D-A3A0-C7F65666EBA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{1CA49546-FA49-4F8D-A3A0-C7F65666EBA5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{1CA49546-FA49-4F8D-A3A0-C7F65666EBA5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{1CA49546-FA49-4F8D-A3A0-C7F65666EBA5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
BIN
Voroncov2103/.DS_Store
vendored
Normal file
BIN
Voroncov2103/.DS_Store
vendored
Normal file
Binary file not shown.
29
Voroncov2103/AddAgentWindow.axaml
Normal file
29
Voroncov2103/AddAgentWindow.axaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<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="800" d:DesignHeight="450"
|
||||||
|
x:Class="Voroncov2103.AddAgentWindow"
|
||||||
|
Title="AddAgentWindow">
|
||||||
|
<StackPanel Spacing="5" VerticalAlignment="Center" HorizontalAlignment="Center">
|
||||||
|
<TextBox Width="200" x:Name="TitleTextBox" Watermark="Title"/>
|
||||||
|
<ComboBox VerticalAlignment="Center" Width="100" x:Name="TypeAgentFilterCombobox" SelectionChanged="TypeAgentFilterCombobox_OnSelectionChanged">
|
||||||
|
<ComboBoxItem Content="ООО"/>
|
||||||
|
<ComboBoxItem Content="МФО"/>
|
||||||
|
<ComboBoxItem Content="ЗАО"/>
|
||||||
|
<ComboBoxItem Content="МКК"/>
|
||||||
|
<ComboBoxItem Content="ПАО"/>
|
||||||
|
<ComboBoxItem Content="ОАО"/>
|
||||||
|
</ComboBox>
|
||||||
|
<TextBox Width="200" x:Name="PriorityTextBox" Watermark="Priority"/>
|
||||||
|
<TextBox Width="200" x:Name="AddressTextBox" Watermark="Address"/>
|
||||||
|
<TextBox Width="200" x:Name="INNTextBox" Watermark="INN"/>
|
||||||
|
<TextBox Width="200" x:Name="KPPTextBox" Watermark="KPP"/>
|
||||||
|
<TextBox Width="200" x:Name="DirectorNameTextBox" Watermark="DirectorName"/>
|
||||||
|
<TextBox Width="200" x:Name="PhoneTextBox" Watermark="Phone"/>
|
||||||
|
<TextBox Width="200" x:Name="EmailTextBox" Watermark="Email"/>
|
||||||
|
<Image Width="60" Height="60" x:Name="LogoImage"/>
|
||||||
|
<Button Width="100" x:Name="SelectImageButton" Content="Select Image" Click="SelectImage"/>
|
||||||
|
<Button Width="100" x:Name="AddButton" Content="Save" Click="AddClick"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Window>
|
98
Voroncov2103/AddAgentWindow.axaml.cs
Normal file
98
Voroncov2103/AddAgentWindow.axaml.cs
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Interactivity;
|
||||||
|
using Avalonia.Markup.Xaml;
|
||||||
|
using Avalonia.Media.Imaging;
|
||||||
|
using Avalonia.Platform.Storage;
|
||||||
|
using Voroncov2103.Models;
|
||||||
|
|
||||||
|
namespace Voroncov2103;
|
||||||
|
|
||||||
|
public partial class AddAgentWindow : Window
|
||||||
|
{
|
||||||
|
public string PathToImage = string.Empty;
|
||||||
|
public Agent agentPresenter;
|
||||||
|
public string agentType { get; set; } = null;
|
||||||
|
public int agentTypeId { get; set; } = 0;
|
||||||
|
public AddAgentWindow()
|
||||||
|
{
|
||||||
|
using var ctx = new DatabaseContext();
|
||||||
|
InitializeComponent();
|
||||||
|
agentPresenter = new Agent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<Bitmap?> SelectAndSaveImage()
|
||||||
|
{
|
||||||
|
var showDialog = StorageProvider.OpenFilePickerAsync(
|
||||||
|
options: new Avalonia.Platform.Storage.FilePickerOpenOptions()
|
||||||
|
{
|
||||||
|
Title = "Select an image",
|
||||||
|
FileTypeFilter = new[] { FilePickerFileTypes.ImageAll }
|
||||||
|
});
|
||||||
|
var storageFile = await showDialog;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var bmp = new Bitmap(storageFile.First().TryGetLocalPath());
|
||||||
|
var guid = Guid.NewGuid();
|
||||||
|
string path = $"/Users/rinchi/RiderProjects/Voroncov2103/Voroncov2103/bin/Debug/net8.0/agents/{guid}.jpg";
|
||||||
|
bmp.Save(path);
|
||||||
|
PathToImage = $"agents/{guid}.jpg";
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void AddClick(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
using var ctx = new DatabaseContext();
|
||||||
|
if (string.IsNullOrEmpty(TitleTextBox.Text)) return;
|
||||||
|
agentPresenter.Title = TitleTextBox.Text;
|
||||||
|
agentPresenter.AgentTypeId = agentTypeId;
|
||||||
|
if (!int.TryParse(PriorityTextBox.Text, out int priority)) return;
|
||||||
|
agentPresenter.Priority = priority;
|
||||||
|
if (string.IsNullOrEmpty(AddressTextBox.Text)) return;
|
||||||
|
agentPresenter.Address = AddressTextBox.Text;
|
||||||
|
if (string.IsNullOrEmpty(INNTextBox.Text)) return;
|
||||||
|
agentPresenter.Inn = INNTextBox.Text;
|
||||||
|
if (string.IsNullOrEmpty(KPPTextBox.Text)) return;
|
||||||
|
agentPresenter.Kpp = KPPTextBox.Text;
|
||||||
|
if (string.IsNullOrEmpty(DirectorNameTextBox.Text)) return;
|
||||||
|
agentPresenter.DirectorName = DirectorNameTextBox.Text;
|
||||||
|
if (string.IsNullOrEmpty(PhoneTextBox.Text)) return;
|
||||||
|
agentPresenter.Phone = PhoneTextBox.Text;
|
||||||
|
if (string.IsNullOrEmpty(EmailTextBox.Text)) return;
|
||||||
|
agentPresenter.Email = EmailTextBox.Text;
|
||||||
|
|
||||||
|
if (String.IsNullOrEmpty(PathToImage)) return;
|
||||||
|
agentPresenter.Logo = PathToImage;
|
||||||
|
Close(agentPresenter);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void SelectImage(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
LogoImage.Source = await SelectAndSaveImage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TypeAgentFilterCombobox_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if (TypeAgentFilterCombobox.SelectedItem is ComboBoxItem selectedItem)
|
||||||
|
{
|
||||||
|
agentType = selectedItem.Content.ToString();
|
||||||
|
switch (agentType)
|
||||||
|
{
|
||||||
|
case "ООО": agentTypeId = 2; break;
|
||||||
|
case "МФО": agentTypeId = 1; break;
|
||||||
|
case "ЗАО": agentTypeId = 3; break;
|
||||||
|
case "МКК": agentTypeId = 5; break;
|
||||||
|
case "ПАО": agentTypeId = 10; break;
|
||||||
|
case "ОАО": agentTypeId = 6; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
10
Voroncov2103/App.axaml
Normal file
10
Voroncov2103/App.axaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<Application xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
x:Class="Voroncov2103.App"
|
||||||
|
RequestedThemeVariant="Default">
|
||||||
|
<!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->
|
||||||
|
|
||||||
|
<Application.Styles>
|
||||||
|
<FluentTheme />
|
||||||
|
</Application.Styles>
|
||||||
|
</Application>
|
23
Voroncov2103/App.axaml.cs
Normal file
23
Voroncov2103/App.axaml.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Controls.ApplicationLifetimes;
|
||||||
|
using Avalonia.Markup.Xaml;
|
||||||
|
|
||||||
|
namespace Voroncov2103;
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
29
Voroncov2103/EditAgentWindow.axaml
Normal file
29
Voroncov2103/EditAgentWindow.axaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<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="800" d:DesignHeight="450"
|
||||||
|
x:Class="Voroncov2103.EditAgentWindow"
|
||||||
|
Title="EditAgentWindow">
|
||||||
|
<StackPanel Spacing="5" VerticalAlignment="Center" HorizontalAlignment="Center">
|
||||||
|
<TextBox Width="200" x:Name="TitleTextBox" Watermark="Title"/>
|
||||||
|
<ComboBox VerticalAlignment="Center" Width="100" x:Name="TypeAgentFilterCombobox" SelectionChanged="TypeAgentFilterCombobox_OnSelectionChanged">
|
||||||
|
<ComboBoxItem Content="ООО"/>
|
||||||
|
<ComboBoxItem Content="МФО"/>
|
||||||
|
<ComboBoxItem Content="ЗАО"/>
|
||||||
|
<ComboBoxItem Content="МКК"/>
|
||||||
|
<ComboBoxItem Content="ПАО"/>
|
||||||
|
<ComboBoxItem Content="ОАО"/>
|
||||||
|
</ComboBox>
|
||||||
|
<TextBox Width="200" x:Name="PriorityTextBox" Watermark="Priority"/>
|
||||||
|
<TextBox Width="200" x:Name="AddressTextBox" Watermark="Address"/>
|
||||||
|
<TextBox Width="200" x:Name="INNTextBox" Watermark="INN"/>
|
||||||
|
<TextBox Width="200" x:Name="KPPTextBox" Watermark="KPP"/>
|
||||||
|
<TextBox Width="200" x:Name="DirectorNameTextBox" Watermark="DirectorName"/>
|
||||||
|
<TextBox Width="200" x:Name="PhoneTextBox" Watermark="Phone"/>
|
||||||
|
<TextBox Width="200" x:Name="EmailTextBox" Watermark="Email"/>
|
||||||
|
<Image Width="60" Height="60" x:Name="LogoImage"/>
|
||||||
|
<Button Width="100" x:Name="SelectImageButton" Content="Select Image" Click="SelectImage"/>
|
||||||
|
<Button Width="100" x:Name="AddButton" Content="Save" Click="AddClick"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Window>
|
121
Voroncov2103/EditAgentWindow.axaml.cs
Normal file
121
Voroncov2103/EditAgentWindow.axaml.cs
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Interactivity;
|
||||||
|
using Avalonia.Markup.Xaml;
|
||||||
|
using Avalonia.Media.Imaging;
|
||||||
|
using Avalonia.Platform.Storage;
|
||||||
|
using Voroncov2103.Models;
|
||||||
|
|
||||||
|
namespace Voroncov2103;
|
||||||
|
|
||||||
|
public partial class EditAgentWindow : Window
|
||||||
|
{
|
||||||
|
public string PathToImage = string.Empty;
|
||||||
|
public Agent agentPresenter;
|
||||||
|
public string agentType { get; set; } = null;
|
||||||
|
public int agentTypeId { get; set; } = 0;
|
||||||
|
public EditAgentWindow(Agent agentInput)
|
||||||
|
{
|
||||||
|
using var ctx = new DatabaseContext();
|
||||||
|
InitializeComponent();
|
||||||
|
agentPresenter = agentInput;
|
||||||
|
Otrisovka();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<Bitmap?> SelectAndSaveImage()
|
||||||
|
{
|
||||||
|
var showDialog = StorageProvider.OpenFilePickerAsync(
|
||||||
|
options: new Avalonia.Platform.Storage.FilePickerOpenOptions()
|
||||||
|
{
|
||||||
|
Title = "Select an image",
|
||||||
|
FileTypeFilter = new[] { FilePickerFileTypes.ImageAll }
|
||||||
|
});
|
||||||
|
var storageFile = await showDialog;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var bmp = new Bitmap(storageFile.First().TryGetLocalPath());
|
||||||
|
var guid = Guid.NewGuid();
|
||||||
|
string path = $"/Users/rinchi/RiderProjects/Voroncov2103/Voroncov2103/bin/Debug/net8.0/agents/{guid}.jpg";
|
||||||
|
bmp.Save(path);
|
||||||
|
PathToImage = $"agents/{guid}.jpg";
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void AddClick(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
using var ctx = new DatabaseContext();
|
||||||
|
if (string.IsNullOrEmpty(TitleTextBox.Text)) return;
|
||||||
|
agentPresenter.Title = TitleTextBox.Text;
|
||||||
|
agentPresenter.AgentTypeId = agentTypeId;
|
||||||
|
if (!int.TryParse(PriorityTextBox.Text, out int priority)) return;
|
||||||
|
agentPresenter.Priority = priority;
|
||||||
|
if (string.IsNullOrEmpty(AddressTextBox.Text)) return;
|
||||||
|
agentPresenter.Address = AddressTextBox.Text;
|
||||||
|
if (string.IsNullOrEmpty(INNTextBox.Text)) return;
|
||||||
|
agentPresenter.Inn = INNTextBox.Text;
|
||||||
|
if (string.IsNullOrEmpty(KPPTextBox.Text)) return;
|
||||||
|
agentPresenter.Kpp = KPPTextBox.Text;
|
||||||
|
if (string.IsNullOrEmpty(DirectorNameTextBox.Text)) return;
|
||||||
|
agentPresenter.DirectorName = DirectorNameTextBox.Text;
|
||||||
|
if (string.IsNullOrEmpty(PhoneTextBox.Text)) return;
|
||||||
|
agentPresenter.Phone = PhoneTextBox.Text;
|
||||||
|
if (string.IsNullOrEmpty(EmailTextBox.Text)) return;
|
||||||
|
agentPresenter.Email = EmailTextBox.Text;
|
||||||
|
|
||||||
|
if (String.IsNullOrEmpty(PathToImage)) return;
|
||||||
|
agentPresenter.Logo = PathToImage;
|
||||||
|
Close(agentPresenter);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void SelectImage(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
LogoImage.Source = await SelectAndSaveImage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TypeAgentFilterCombobox_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if (TypeAgentFilterCombobox.SelectedItem is ComboBoxItem selectedItem)
|
||||||
|
{
|
||||||
|
agentType = selectedItem.Content.ToString();
|
||||||
|
switch (agentType)
|
||||||
|
{
|
||||||
|
case "ООО": agentTypeId = 1; break;
|
||||||
|
case "МФО": agentTypeId = 2; break;
|
||||||
|
case "ЗАО": agentTypeId = 3; break;
|
||||||
|
case "МКК": agentTypeId = 4; break;
|
||||||
|
case "ПАО": agentTypeId = 5; break;
|
||||||
|
case "ОАО": agentTypeId = 6; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Otrisovka()
|
||||||
|
{
|
||||||
|
TitleTextBox.Text = agentPresenter.Title;
|
||||||
|
PriorityTextBox.Text = agentPresenter.Priority.ToString();
|
||||||
|
AddressTextBox.Text = agentPresenter.Address;
|
||||||
|
INNTextBox.Text = agentPresenter.Inn;
|
||||||
|
KPPTextBox.Text = agentPresenter.Kpp;
|
||||||
|
DirectorNameTextBox.Text = agentPresenter.DirectorName;
|
||||||
|
PhoneTextBox.Text = agentPresenter.Phone;
|
||||||
|
EmailTextBox.Text = agentPresenter.Email;
|
||||||
|
|
||||||
|
switch (agentPresenter.AgentTypeId)
|
||||||
|
{
|
||||||
|
case 1: TypeAgentFilterCombobox.SelectedIndex = 0; break;
|
||||||
|
case 2: TypeAgentFilterCombobox.SelectedIndex = 1; break;
|
||||||
|
case 3: TypeAgentFilterCombobox.SelectedIndex = 2; break;
|
||||||
|
case 4: TypeAgentFilterCombobox.SelectedIndex = 3; break;
|
||||||
|
case 5: TypeAgentFilterCombobox.SelectedIndex = 4; break;
|
||||||
|
case 6: TypeAgentFilterCombobox.SelectedIndex = 5; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
87
Voroncov2103/MainWindow.axaml
Normal file
87
Voroncov2103/MainWindow.axaml
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<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="800" d:DesignHeight="450"
|
||||||
|
x:Class="Voroncov2103.MainWindow"
|
||||||
|
x:CompileBindings="False"
|
||||||
|
Title="Voroncov2103">
|
||||||
|
<Border>
|
||||||
|
<DockPanel LastChildFill="False">
|
||||||
|
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Background="Gray" Height="50" Spacing="15">
|
||||||
|
<TextBlock Text="какойто текст" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||||
|
<TextBox TextChanging="SearchTextBox_OnTextChanging" Width="200" x:Name="SearchTextBox"/>
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<TextBlock Text="Title"/>
|
||||||
|
<ComboBox VerticalAlignment="Center" Width="100" x:Name="TitleAgentSortComboBox" SelectionChanged="TitleAgentSortComboBox_OnSelectionChanged">
|
||||||
|
<ComboBoxItem Content="all"/>
|
||||||
|
<ComboBoxItem Content="убывание"/>
|
||||||
|
<ComboBoxItem Content="возрастание"/>
|
||||||
|
</ComboBox>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<TextBlock Text="Sale"/>
|
||||||
|
<ComboBox VerticalAlignment="Center" Width="100" x:Name="SaleAgentSortComboBox" SelectionChanged="TitleAgentSortComboBox_OnSelectionChanged">
|
||||||
|
<ComboBoxItem Content="all"/>
|
||||||
|
<ComboBoxItem Content="убывание"/>
|
||||||
|
<ComboBoxItem Content="возрастание"/>
|
||||||
|
</ComboBox>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<TextBlock Text="Priority"/>
|
||||||
|
<ComboBox VerticalAlignment="Center" Width="100" x:Name="PriorityAgentSortComboBox" SelectionChanged="TitleAgentSortComboBox_OnSelectionChanged">
|
||||||
|
<ComboBoxItem Content="all"/>
|
||||||
|
<ComboBoxItem Content="убывание"/>
|
||||||
|
<ComboBoxItem Content="возрастание"/>
|
||||||
|
</ComboBox>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<TextBlock Text="AgentType"/>
|
||||||
|
<ComboBox VerticalAlignment="Center" Width="100" x:Name="TypeAgentFilterCombobox" SelectionChanged="TypeAgentFilterCombobox_OnSelectionChanged">
|
||||||
|
<ComboBoxItem Content="Все"/>
|
||||||
|
<ComboBoxItem Content="ООО"/>
|
||||||
|
<ComboBoxItem Content="МФО"/>
|
||||||
|
<ComboBoxItem Content="ЗАО"/>
|
||||||
|
<ComboBoxItem Content="МКК"/>
|
||||||
|
<ComboBoxItem Content="ПАО"/>
|
||||||
|
<ComboBoxItem Content="ОАО"/>
|
||||||
|
</ComboBox>
|
||||||
|
</StackPanel>
|
||||||
|
<Button Content="ADD" Click="AddAgent_OnClick" DockPanel.Dock="Right" Width="60" VerticalAlignment="Center" HorizontalAlignment="Right"/>
|
||||||
|
</StackPanel>
|
||||||
|
<ScrollViewer DockPanel.Dock="Top" VerticalScrollBarVisibility="Auto" Height="520">
|
||||||
|
<ListBox x:Name="ListBox">
|
||||||
|
<ListBox.ItemTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<Border BorderBrush="Gray" BorderThickness="1" Padding="5">
|
||||||
|
<Grid>
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||||
|
<Image Source="{Binding Image}" Width="100" Height="100" Margin="0,0,10,0" VerticalAlignment="Center" HorizontalAlignment="Left" Stretch="UniformToFill"/>
|
||||||
|
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||||
|
<TextBlock Text="{Binding Id, StringFormat='Title: {0}'}" TextWrapping="Wrap" TextAlignment="Center" />
|
||||||
|
<TextBlock Text="{Binding Title, StringFormat='Title: {0}'}" TextWrapping="Wrap" TextAlignment="Center" />
|
||||||
|
<TextBlock Text="{Binding Year, StringFormat='Year: {0}'}" TextWrapping="Wrap" TextAlignment="Center" />
|
||||||
|
<TextBlock Text="{Binding countSales, StringFormat='countSales: {0}'}" TextWrapping="Wrap" TextAlignment="Center" />
|
||||||
|
<TextBlock Text="{Binding sale, StringFormat='sale: {0}'}" TextWrapping="Wrap" TextAlignment="Center" />
|
||||||
|
<TextBlock Text="{Binding totalSalesAmount, StringFormat='totalSalesAmount: {0}'}" TextWrapping="Wrap" TextAlignment="Center" />
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Border.ContextMenu>
|
||||||
|
<ContextMenu>
|
||||||
|
<MenuItem Header="edit" Click="EditMenuItem_OnClick"/>
|
||||||
|
<MenuItem Header="priority" Click="PriorityMenuItem_OnClick"/>
|
||||||
|
</ContextMenu>
|
||||||
|
</Border.ContextMenu>
|
||||||
|
</Border>
|
||||||
|
</DataTemplate>
|
||||||
|
</ListBox.ItemTemplate>
|
||||||
|
</ListBox>
|
||||||
|
</ScrollViewer>
|
||||||
|
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Center">
|
||||||
|
<Button x:Name="PreviousButton" Content="Предыдущая" Click="PreviousPage" Margin="5"/>
|
||||||
|
<Button x:Name="NextButton" Content="Следующая" Click="NextPage" Margin="5"/>
|
||||||
|
</StackPanel>
|
||||||
|
</DockPanel>
|
||||||
|
</Border>
|
||||||
|
</Window>
|
315
Voroncov2103/MainWindow.axaml.cs
Normal file
315
Voroncov2103/MainWindow.axaml.cs
Normal file
@ -0,0 +1,315 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Interactivity;
|
||||||
|
using Avalonia.Media.Imaging;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage;
|
||||||
|
using Voroncov2103.Models;
|
||||||
|
|
||||||
|
namespace Voroncov2103;
|
||||||
|
|
||||||
|
public partial class MainWindow : Window
|
||||||
|
{
|
||||||
|
private static List<Agent> agentsForPhotoAndPriority;
|
||||||
|
ObservableCollection<AgentYearlySalesPresenter> agents = new ObservableCollection<AgentYearlySalesPresenter>();
|
||||||
|
List<AgentYearlySalesPresenter> dataSourceAgents;
|
||||||
|
private int currentPage = 1;
|
||||||
|
private int itemsPerPage = 10;
|
||||||
|
|
||||||
|
public MainWindow()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
using var ctx = new DatabaseContext();
|
||||||
|
|
||||||
|
agentsForPhotoAndPriority = ctx.Agents.ToList();
|
||||||
|
dataSourceAgents = ctx.Agents
|
||||||
|
.GroupJoin(ctx.ProductSales, agent => agent.Id, sale => sale.AgentId, (agent, sales) => new { Agent = agent, Sales = sales })
|
||||||
|
.SelectMany(group => group.Sales
|
||||||
|
.GroupBy(sale => sale.SaleDate.Year)
|
||||||
|
.Select(yearGroup => new AgentYearlySalesPresenter
|
||||||
|
{
|
||||||
|
Id = group.Agent.Id,
|
||||||
|
Email = group.Agent.Email,
|
||||||
|
Phone = group.Agent.Phone,
|
||||||
|
Title = group.Agent.Title,
|
||||||
|
Year = yearGroup.Key,
|
||||||
|
countSales = yearGroup.Sum(sale => sale.ProductCount),
|
||||||
|
totalSalesAmount = yearGroup.Sum(sale => sale.ProductCount * sale.Product.MinCostForAgent),
|
||||||
|
sale = SwitchSale(yearGroup.Sum(sale => sale.ProductCount * sale.Product.MinCostForAgent)),
|
||||||
|
PhotoPath = GetPhotoPath(group.Agent.Id),
|
||||||
|
priority = group.Agent.Priority,
|
||||||
|
typeAgent = ctx.AgentTypes.Where(t => t.Id == group.Agent.AgentTypeId).Select(t => t.Title).FirstOrDefault(),
|
||||||
|
}))
|
||||||
|
.ToList();
|
||||||
|
ListBox.ItemsSource = agents;
|
||||||
|
DisplayAgents();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DisplayAgents()
|
||||||
|
{
|
||||||
|
var temp = dataSourceAgents;
|
||||||
|
agents.Clear();
|
||||||
|
if (!string.IsNullOrEmpty(SearchTextBox.Text))
|
||||||
|
{
|
||||||
|
var search = SearchTextBox.Text;
|
||||||
|
temp = temp.Where(it => IsContains(it.Email, it.Phone, search)).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (TitleAgentSortComboBox.SelectedIndex)
|
||||||
|
{
|
||||||
|
case 1: temp = temp.OrderByDescending(it => it.Title).ToList(); break;
|
||||||
|
case 0: temp = temp; break;
|
||||||
|
case 2: temp = temp.OrderBy(it => it.Title).ToList(); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (SaleAgentSortComboBox.SelectedIndex)
|
||||||
|
{
|
||||||
|
case 1: temp = temp.OrderByDescending(it => it.sale).ToList(); break;
|
||||||
|
case 0: temp = temp; break;
|
||||||
|
case 2: temp = temp.OrderBy(it => it.sale).ToList(); break;
|
||||||
|
}
|
||||||
|
switch (PriorityAgentSortComboBox.SelectedIndex)
|
||||||
|
{
|
||||||
|
case 1: temp = temp.OrderByDescending(it => it.priority).ToList(); break;
|
||||||
|
case 0: temp = temp; break;
|
||||||
|
case 2: temp = temp.OrderBy(it => it.priority).ToList(); break;
|
||||||
|
}
|
||||||
|
switch (TypeAgentFilterCombobox.SelectedIndex)
|
||||||
|
{
|
||||||
|
case 1: temp = temp.Where(it => it.typeAgent == "ООО").ToList(); break;
|
||||||
|
case 0: temp = temp; break;
|
||||||
|
case 2: temp = temp.Where(it => it.typeAgent == "МФО").ToList(); break;
|
||||||
|
case 3: temp = temp.Where(it => it.typeAgent == "ЗАО").ToList(); break;
|
||||||
|
case 4: temp = temp.Where(it => it.typeAgent == "МКК").ToList(); break;
|
||||||
|
case 5: temp = temp.Where(it => it.typeAgent == "ПАО").ToList(); break;
|
||||||
|
case 6: temp = temp.Where(it => it.typeAgent == "ОАО").ToList(); break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
int totalItems = temp.Count;
|
||||||
|
int totalPages = (int)Math.Ceiling((double)totalItems / itemsPerPage);
|
||||||
|
|
||||||
|
if (currentPage > totalPages)
|
||||||
|
{
|
||||||
|
currentPage = totalPages;
|
||||||
|
}
|
||||||
|
if (currentPage < 1)
|
||||||
|
{
|
||||||
|
currentPage = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var paginatedList = temp.Skip((currentPage - 1) * itemsPerPage).Take(itemsPerPage).ToList();
|
||||||
|
|
||||||
|
foreach (var item in paginatedList)
|
||||||
|
{
|
||||||
|
agents.Add(item);
|
||||||
|
// Console.WriteLine(item.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
PreviousButton.IsEnabled = currentPage > 1;
|
||||||
|
NextButton.IsEnabled = currentPage < totalPages;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void NextPage(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
currentPage++;
|
||||||
|
DisplayAgents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PreviousPage(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
currentPage--;
|
||||||
|
DisplayAgents();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsContains(string title, string? description, string search)
|
||||||
|
{
|
||||||
|
string desc = string.Empty;
|
||||||
|
if (description != null) desc = description;
|
||||||
|
string message = (title + desc).ToLower();
|
||||||
|
search = search.ToLower();
|
||||||
|
return message.Contains(search);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string SwitchSale(decimal amount)
|
||||||
|
{
|
||||||
|
return amount switch
|
||||||
|
{
|
||||||
|
< 10000 => "0%",
|
||||||
|
>= 10000 and < 50000 => "5%",
|
||||||
|
>= 50000 and < 150000 => "10%",
|
||||||
|
>= 150000 and < 500000 => "20%",
|
||||||
|
> 500000 => "25%"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetPhotoPath(int agentId)
|
||||||
|
{
|
||||||
|
string absolutePath = "";
|
||||||
|
var path = agentsForPhotoAndPriority.Where(it => it.Id == agentId).Select(it => it.Logo).FirstOrDefault();
|
||||||
|
Console.WriteLine($"id: {agentId}, path: {path}");
|
||||||
|
if (path == null)
|
||||||
|
{
|
||||||
|
path = "agents/m.jpeg";
|
||||||
|
}
|
||||||
|
absolutePath = Path.Combine(AppContext.BaseDirectory, path);
|
||||||
|
return absolutePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AgentYearlySalesPresenter
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Email { get; set; }
|
||||||
|
public string Phone { get; set; }
|
||||||
|
public string Title { get; set; } = null!;
|
||||||
|
public int Year { get; set; }
|
||||||
|
public int countSales { get; set; }
|
||||||
|
public decimal totalSalesAmount { get; set; }
|
||||||
|
public string sale { get; set; }
|
||||||
|
public string PhotoPath { get; set; }
|
||||||
|
public int priority { get; set; }
|
||||||
|
public string typeAgent { get; set; }
|
||||||
|
Bitmap? Image
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string absolutePath = Path.Combine(AppContext.BaseDirectory, PhotoPath);
|
||||||
|
return new Bitmap(absolutePath);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SearchTextBox_OnTextChanging(object? sender, TextChangingEventArgs e)
|
||||||
|
{
|
||||||
|
DisplayAgents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TitleAgentSortComboBox_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
DisplayAgents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TypeAgentFilterCombobox_OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
DisplayAgents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void AddAgent_OnClick(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
using var ctx = new DatabaseContext();
|
||||||
|
var newAgent = await new AddAgentWindow().ShowDialog<Agent>(this);
|
||||||
|
|
||||||
|
if (newAgent != null)
|
||||||
|
{
|
||||||
|
ctx.Agents.Add(newAgent);
|
||||||
|
await ctx.SaveChangesAsync();
|
||||||
|
agentsForPhotoAndPriority = ctx.Agents.ToList();
|
||||||
|
|
||||||
|
var presenter = new AgentYearlySalesPresenter
|
||||||
|
{
|
||||||
|
Id = newAgent.Id,
|
||||||
|
Email = newAgent.Email,
|
||||||
|
Phone = newAgent.Phone,
|
||||||
|
Title = newAgent.Title,
|
||||||
|
Year = DateTime.Now.Year,
|
||||||
|
countSales = 0,
|
||||||
|
totalSalesAmount = 0,
|
||||||
|
sale = "0%",
|
||||||
|
PhotoPath = GetPhotoPath(newAgent.Id),
|
||||||
|
priority = newAgent.Priority,
|
||||||
|
typeAgent = ctx.AgentTypes.Where(t => t.Id == newAgent.AgentTypeId).Select(t => t.Title).FirstOrDefault()
|
||||||
|
};
|
||||||
|
|
||||||
|
Console.WriteLine(newAgent.Logo);
|
||||||
|
Console.WriteLine(presenter.PhotoPath);
|
||||||
|
|
||||||
|
dataSourceAgents.Add(presenter);
|
||||||
|
// DisplayAgents();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void EditMenuItem_OnClick(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
using var ctx = new DatabaseContext();
|
||||||
|
if (ListBox.SelectedItem is AgentYearlySalesPresenter selectedAgentPresenter)
|
||||||
|
{
|
||||||
|
var agent = ctx.Agents.FirstOrDefault(a => a.Id == selectedAgentPresenter.Id);
|
||||||
|
EditAgentWindow editAgentWindow = new EditAgentWindow(agent);
|
||||||
|
var updatedAgent = await editAgentWindow.ShowDialog<Agent>(this);
|
||||||
|
if (updatedAgent != null)
|
||||||
|
{
|
||||||
|
ctx.Agents.Update(updatedAgent);
|
||||||
|
await ctx.SaveChangesAsync();
|
||||||
|
agentsForPhotoAndPriority = ctx.Agents.ToList();
|
||||||
|
|
||||||
|
var oldPresenter = dataSourceAgents.FirstOrDefault(a => a.Id == updatedAgent.Id);
|
||||||
|
if (oldPresenter != null)
|
||||||
|
{
|
||||||
|
dataSourceAgents.Remove(oldPresenter);
|
||||||
|
}
|
||||||
|
|
||||||
|
var newPresenter = new AgentYearlySalesPresenter
|
||||||
|
{
|
||||||
|
Id = updatedAgent.Id,
|
||||||
|
Email = updatedAgent.Email,
|
||||||
|
Phone = updatedAgent.Phone,
|
||||||
|
Title = updatedAgent.Title,
|
||||||
|
Year = DateTime.Now.Year,
|
||||||
|
countSales = 0,
|
||||||
|
totalSalesAmount = 0,
|
||||||
|
sale = "0%",
|
||||||
|
PhotoPath = GetPhotoPath(updatedAgent.Id),
|
||||||
|
priority = updatedAgent.Priority,
|
||||||
|
typeAgent = ctx.AgentTypes.Where(t => t.Id == updatedAgent.AgentTypeId).Select(t => t.Title).FirstOrDefault()
|
||||||
|
};
|
||||||
|
|
||||||
|
Console.WriteLine(updatedAgent.Logo);
|
||||||
|
Console.WriteLine(newPresenter.PhotoPath);
|
||||||
|
|
||||||
|
dataSourceAgents.Add(newPresenter);
|
||||||
|
DisplayAgents();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void PriorityMenuItem_OnClick(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (ListBox.SelectedItem is AgentYearlySalesPresenter selectedAgentPresenter)
|
||||||
|
{
|
||||||
|
PriorityWindow priorityWindow = new PriorityWindow(selectedAgentPresenter.Id);
|
||||||
|
await priorityWindow.ShowDialog(this);
|
||||||
|
|
||||||
|
if (priorityWindow.Priority.HasValue)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Новый приоритет: {priorityWindow.Priority.Value}");
|
||||||
|
|
||||||
|
using var context = new DatabaseContext();
|
||||||
|
var agent = await context.Agents.FindAsync(selectedAgentPresenter.Id);
|
||||||
|
if (agent != null)
|
||||||
|
{
|
||||||
|
agent.Priority = priorityWindow.Priority.Value;
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
var agentToUpdate = dataSourceAgents.FirstOrDefault(a => a.Id == selectedAgentPresenter.Id);
|
||||||
|
if (agentToUpdate != null)
|
||||||
|
{
|
||||||
|
agentToUpdate.priority = priorityWindow.Priority.Value;
|
||||||
|
}
|
||||||
|
DisplayAgents();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
37
Voroncov2103/Models/Agent.cs
Normal file
37
Voroncov2103/Models/Agent.cs
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class Agent
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Title { get; set; } = null!;
|
||||||
|
|
||||||
|
public int AgentTypeId { get; set; }
|
||||||
|
|
||||||
|
public string? Address { get; set; }
|
||||||
|
|
||||||
|
public string Inn { get; set; } = null!;
|
||||||
|
|
||||||
|
public string? Kpp { get; set; }
|
||||||
|
|
||||||
|
public string? DirectorName { get; set; }
|
||||||
|
|
||||||
|
public string Phone { get; set; } = null!;
|
||||||
|
|
||||||
|
public string? Email { get; set; }
|
||||||
|
|
||||||
|
public string? Logo { get; set; }
|
||||||
|
|
||||||
|
public int Priority { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<AgentPriorityHistory> AgentPriorityHistories { get; set; } = new List<AgentPriorityHistory>();
|
||||||
|
|
||||||
|
public virtual AgentType AgentType { get; set; } = null!;
|
||||||
|
|
||||||
|
public virtual ICollection<ProductSale> ProductSales { get; set; } = new List<ProductSale>();
|
||||||
|
|
||||||
|
public virtual ICollection<Shop> Shops { get; set; } = new List<Shop>();
|
||||||
|
}
|
17
Voroncov2103/Models/AgentPriorityHistory.cs
Normal file
17
Voroncov2103/Models/AgentPriorityHistory.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class AgentPriorityHistory
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public int AgentId { get; set; }
|
||||||
|
|
||||||
|
public DateTime ChangeDate { get; set; }
|
||||||
|
|
||||||
|
public int PriorityValue { get; set; }
|
||||||
|
|
||||||
|
public virtual Agent Agent { get; set; } = null!;
|
||||||
|
}
|
15
Voroncov2103/Models/AgentType.cs
Normal file
15
Voroncov2103/Models/AgentType.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class AgentType
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Title { get; set; } = null!;
|
||||||
|
|
||||||
|
public string? Image { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<Agent> Agents { get; set; } = new List<Agent>();
|
||||||
|
}
|
289
Voroncov2103/Models/DatabaseContext.cs
Normal file
289
Voroncov2103/Models/DatabaseContext.cs
Normal file
@ -0,0 +1,289 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class DatabaseContext : DbContext
|
||||||
|
{
|
||||||
|
public DatabaseContext()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public DatabaseContext(DbContextOptions<DatabaseContext> options)
|
||||||
|
: base(options)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual DbSet<Agent> Agents { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<AgentPriorityHistory> AgentPriorityHistories { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<AgentType> AgentTypes { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<Material> Materials { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<MaterialCountHistory> MaterialCountHistories { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<MaterialType> MaterialTypes { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<Product> Products { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<ProductCostHistory> ProductCostHistories { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<ProductMaterial> ProductMaterials { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<ProductSale> ProductSales { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<ProductType> ProductTypes { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<Shop> Shops { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<Supplier> Suppliers { 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 https://go.microsoft.com/fwlink/?LinkId=723263.
|
||||||
|
=> optionsBuilder.UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=5432");
|
||||||
|
|
||||||
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
modelBuilder.Entity<Agent>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("Agent_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("Agent");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.Address).HasMaxLength(300);
|
||||||
|
entity.Property(e => e.AgentTypeId).HasColumnName("AgentTypeID");
|
||||||
|
entity.Property(e => e.DirectorName).HasMaxLength(100);
|
||||||
|
entity.Property(e => e.Email).HasMaxLength(255);
|
||||||
|
entity.Property(e => e.Inn)
|
||||||
|
.HasMaxLength(12)
|
||||||
|
.HasColumnName("INN");
|
||||||
|
entity.Property(e => e.Kpp)
|
||||||
|
.HasMaxLength(9)
|
||||||
|
.HasColumnName("KPP");
|
||||||
|
entity.Property(e => e.Logo).HasMaxLength(100);
|
||||||
|
entity.Property(e => e.Phone).HasMaxLength(20);
|
||||||
|
entity.Property(e => e.Title).HasMaxLength(150);
|
||||||
|
|
||||||
|
entity.HasOne(d => d.AgentType).WithMany(p => p.Agents)
|
||||||
|
.HasForeignKey(d => d.AgentTypeId)
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("Agent_AgentTypeID_fkey");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<AgentPriorityHistory>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("AgentPriorityHistory_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("AgentPriorityHistory");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.AgentId).HasColumnName("AgentID");
|
||||||
|
entity.Property(e => e.ChangeDate).HasColumnType("timestamp without time zone");
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Agent).WithMany(p => p.AgentPriorityHistories)
|
||||||
|
.HasForeignKey(d => d.AgentId)
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("AgentPriorityHistory_AgentID_fkey");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<AgentType>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("AgentType_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("AgentType");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.Image).HasMaxLength(100);
|
||||||
|
entity.Property(e => e.Title).HasMaxLength(50);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<Material>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("Material_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("Material");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.Cost).HasPrecision(10, 2);
|
||||||
|
entity.Property(e => e.Image).HasMaxLength(100);
|
||||||
|
entity.Property(e => e.MaterialTypeId).HasColumnName("MaterialTypeID");
|
||||||
|
entity.Property(e => e.Title).HasMaxLength(100);
|
||||||
|
entity.Property(e => e.Unit).HasMaxLength(10);
|
||||||
|
|
||||||
|
entity.HasOne(d => d.MaterialType).WithMany(p => p.Materials)
|
||||||
|
.HasForeignKey(d => d.MaterialTypeId)
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("Material_MaterialTypeID_fkey");
|
||||||
|
|
||||||
|
entity.HasMany(d => d.Suppliers).WithMany(p => p.Materials)
|
||||||
|
.UsingEntity<Dictionary<string, object>>(
|
||||||
|
"MaterialSupplier",
|
||||||
|
r => r.HasOne<Supplier>().WithMany()
|
||||||
|
.HasForeignKey("SupplierId")
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("MaterialSupplier_SupplierID_fkey"),
|
||||||
|
l => l.HasOne<Material>().WithMany()
|
||||||
|
.HasForeignKey("MaterialId")
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("MaterialSupplier_MaterialID_fkey"),
|
||||||
|
j =>
|
||||||
|
{
|
||||||
|
j.HasKey("MaterialId", "SupplierId").HasName("MaterialSupplier_pkey");
|
||||||
|
j.ToTable("MaterialSupplier");
|
||||||
|
j.IndexerProperty<int>("MaterialId").HasColumnName("MaterialID");
|
||||||
|
j.IndexerProperty<int>("SupplierId").HasColumnName("SupplierID");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<MaterialCountHistory>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("MaterialCountHistory_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("MaterialCountHistory");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.ChangeDate).HasColumnType("timestamp without time zone");
|
||||||
|
entity.Property(e => e.MaterialId).HasColumnName("MaterialID");
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Material).WithMany(p => p.MaterialCountHistories)
|
||||||
|
.HasForeignKey(d => d.MaterialId)
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("MaterialCountHistory_MaterialID_fkey");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<MaterialType>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("MaterialType_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("MaterialType");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.Title).HasMaxLength(50);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<Product>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("Product_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("Product");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.ArticleNumber).HasMaxLength(10);
|
||||||
|
entity.Property(e => e.Image).HasMaxLength(100);
|
||||||
|
entity.Property(e => e.MinCostForAgent).HasPrecision(10, 2);
|
||||||
|
entity.Property(e => e.ProductTypeId).HasColumnName("ProductTypeID");
|
||||||
|
entity.Property(e => e.Title).HasMaxLength(100);
|
||||||
|
|
||||||
|
entity.HasOne(d => d.ProductType).WithMany(p => p.Products)
|
||||||
|
.HasForeignKey(d => d.ProductTypeId)
|
||||||
|
.HasConstraintName("Product_ProductTypeID_fkey");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<ProductCostHistory>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("ProductCostHistory_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("ProductCostHistory");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.ChangeDate).HasColumnType("timestamp without time zone");
|
||||||
|
entity.Property(e => e.CostValue).HasPrecision(10, 2);
|
||||||
|
entity.Property(e => e.ProductId).HasColumnName("ProductID");
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Product).WithMany(p => p.ProductCostHistories)
|
||||||
|
.HasForeignKey(d => d.ProductId)
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("ProductCostHistory_ProductID_fkey");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<ProductMaterial>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => new { e.ProductId, e.MaterialId }).HasName("ProductMaterial_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("ProductMaterial");
|
||||||
|
|
||||||
|
entity.Property(e => e.ProductId).HasColumnName("ProductID");
|
||||||
|
entity.Property(e => e.MaterialId).HasColumnName("MaterialID");
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Material).WithMany(p => p.ProductMaterials)
|
||||||
|
.HasForeignKey(d => d.MaterialId)
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("ProductMaterial_MaterialID_fkey");
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Product).WithMany(p => p.ProductMaterials)
|
||||||
|
.HasForeignKey(d => d.ProductId)
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("ProductMaterial_ProductID_fkey");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<ProductSale>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("ProductSale_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("ProductSale");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.AgentId).HasColumnName("AgentID");
|
||||||
|
entity.Property(e => e.ProductId).HasColumnName("ProductID");
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Agent).WithMany(p => p.ProductSales)
|
||||||
|
.HasForeignKey(d => d.AgentId)
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("ProductSale_AgentID_fkey");
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Product).WithMany(p => p.ProductSales)
|
||||||
|
.HasForeignKey(d => d.ProductId)
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("ProductSale_ProductID_fkey");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<ProductType>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("ProductType_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("ProductType");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.Title).HasMaxLength(50);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<Shop>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("Shop_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("Shop");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.Address).HasMaxLength(300);
|
||||||
|
entity.Property(e => e.AgentId).HasColumnName("AgentID");
|
||||||
|
entity.Property(e => e.Title).HasMaxLength(150);
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Agent).WithMany(p => p.Shops)
|
||||||
|
.HasForeignKey(d => d.AgentId)
|
||||||
|
.OnDelete(DeleteBehavior.ClientSetNull)
|
||||||
|
.HasConstraintName("Shop_AgentID_fkey");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<Supplier>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("Supplier_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("Supplier");
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasColumnName("ID");
|
||||||
|
entity.Property(e => e.Inn)
|
||||||
|
.HasMaxLength(12)
|
||||||
|
.HasColumnName("INN");
|
||||||
|
entity.Property(e => e.SupplierType).HasMaxLength(20);
|
||||||
|
entity.Property(e => e.Title).HasMaxLength(150);
|
||||||
|
});
|
||||||
|
|
||||||
|
OnModelCreatingPartial(modelBuilder);
|
||||||
|
}
|
||||||
|
|
||||||
|
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
|
||||||
|
}
|
35
Voroncov2103/Models/Material.cs
Normal file
35
Voroncov2103/Models/Material.cs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class Material
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Title { get; set; } = null!;
|
||||||
|
|
||||||
|
public int CountInPack { get; set; }
|
||||||
|
|
||||||
|
public string Unit { get; set; } = null!;
|
||||||
|
|
||||||
|
public double? CountInStock { get; set; }
|
||||||
|
|
||||||
|
public double MinCount { get; set; }
|
||||||
|
|
||||||
|
public string? Description { get; set; }
|
||||||
|
|
||||||
|
public decimal Cost { get; set; }
|
||||||
|
|
||||||
|
public string? Image { get; set; }
|
||||||
|
|
||||||
|
public int MaterialTypeId { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<MaterialCountHistory> MaterialCountHistories { get; set; } = new List<MaterialCountHistory>();
|
||||||
|
|
||||||
|
public virtual MaterialType MaterialType { get; set; } = null!;
|
||||||
|
|
||||||
|
public virtual ICollection<ProductMaterial> ProductMaterials { get; set; } = new List<ProductMaterial>();
|
||||||
|
|
||||||
|
public virtual ICollection<Supplier> Suppliers { get; set; } = new List<Supplier>();
|
||||||
|
}
|
17
Voroncov2103/Models/MaterialCountHistory.cs
Normal file
17
Voroncov2103/Models/MaterialCountHistory.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class MaterialCountHistory
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public int MaterialId { get; set; }
|
||||||
|
|
||||||
|
public DateTime ChangeDate { get; set; }
|
||||||
|
|
||||||
|
public double CountValue { get; set; }
|
||||||
|
|
||||||
|
public virtual Material Material { get; set; } = null!;
|
||||||
|
}
|
15
Voroncov2103/Models/MaterialType.cs
Normal file
15
Voroncov2103/Models/MaterialType.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class MaterialType
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Title { get; set; } = null!;
|
||||||
|
|
||||||
|
public double DefectedPercent { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<Material> Materials { get; set; } = new List<Material>();
|
||||||
|
}
|
33
Voroncov2103/Models/Product.cs
Normal file
33
Voroncov2103/Models/Product.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class Product
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Title { get; set; } = null!;
|
||||||
|
|
||||||
|
public int? ProductTypeId { get; set; }
|
||||||
|
|
||||||
|
public string ArticleNumber { get; set; } = null!;
|
||||||
|
|
||||||
|
public string? Description { get; set; }
|
||||||
|
|
||||||
|
public string? Image { get; set; }
|
||||||
|
|
||||||
|
public int? ProductionPersonCount { get; set; }
|
||||||
|
|
||||||
|
public int? ProductionWorkshopNumber { get; set; }
|
||||||
|
|
||||||
|
public decimal MinCostForAgent { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<ProductCostHistory> ProductCostHistories { get; set; } = new List<ProductCostHistory>();
|
||||||
|
|
||||||
|
public virtual ICollection<ProductMaterial> ProductMaterials { get; set; } = new List<ProductMaterial>();
|
||||||
|
|
||||||
|
public virtual ICollection<ProductSale> ProductSales { get; set; } = new List<ProductSale>();
|
||||||
|
|
||||||
|
public virtual ProductType? ProductType { get; set; }
|
||||||
|
}
|
17
Voroncov2103/Models/ProductCostHistory.cs
Normal file
17
Voroncov2103/Models/ProductCostHistory.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class ProductCostHistory
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public int ProductId { get; set; }
|
||||||
|
|
||||||
|
public DateTime ChangeDate { get; set; }
|
||||||
|
|
||||||
|
public decimal CostValue { get; set; }
|
||||||
|
|
||||||
|
public virtual Product Product { get; set; } = null!;
|
||||||
|
}
|
17
Voroncov2103/Models/ProductMaterial.cs
Normal file
17
Voroncov2103/Models/ProductMaterial.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class ProductMaterial
|
||||||
|
{
|
||||||
|
public int ProductId { get; set; }
|
||||||
|
|
||||||
|
public int MaterialId { get; set; }
|
||||||
|
|
||||||
|
public double? Count { get; set; }
|
||||||
|
|
||||||
|
public virtual Material Material { get; set; } = null!;
|
||||||
|
|
||||||
|
public virtual Product Product { get; set; } = null!;
|
||||||
|
}
|
21
Voroncov2103/Models/ProductSale.cs
Normal file
21
Voroncov2103/Models/ProductSale.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class ProductSale
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public int AgentId { get; set; }
|
||||||
|
|
||||||
|
public int ProductId { get; set; }
|
||||||
|
|
||||||
|
public DateOnly SaleDate { get; set; }
|
||||||
|
|
||||||
|
public int ProductCount { get; set; }
|
||||||
|
|
||||||
|
public virtual Agent Agent { get; set; } = null!;
|
||||||
|
|
||||||
|
public virtual Product Product { get; set; } = null!;
|
||||||
|
}
|
15
Voroncov2103/Models/ProductType.cs
Normal file
15
Voroncov2103/Models/ProductType.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class ProductType
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Title { get; set; } = null!;
|
||||||
|
|
||||||
|
public double DefectedPercent { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<Product> Products { get; set; } = new List<Product>();
|
||||||
|
}
|
17
Voroncov2103/Models/Shop.cs
Normal file
17
Voroncov2103/Models/Shop.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class Shop
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Title { get; set; } = null!;
|
||||||
|
|
||||||
|
public string? Address { get; set; }
|
||||||
|
|
||||||
|
public int AgentId { get; set; }
|
||||||
|
|
||||||
|
public virtual Agent Agent { get; set; } = null!;
|
||||||
|
}
|
21
Voroncov2103/Models/Supplier.cs
Normal file
21
Voroncov2103/Models/Supplier.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Voroncov2103.Models;
|
||||||
|
|
||||||
|
public partial class Supplier
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Title { get; set; } = null!;
|
||||||
|
|
||||||
|
public string Inn { get; set; } = null!;
|
||||||
|
|
||||||
|
public DateOnly StartDate { get; set; }
|
||||||
|
|
||||||
|
public int? QualityRating { get; set; }
|
||||||
|
|
||||||
|
public string? SupplierType { get; set; }
|
||||||
|
|
||||||
|
public virtual ICollection<Material> Materials { get; set; } = new List<Material>();
|
||||||
|
}
|
13
Voroncov2103/PriorityWindow.axaml
Normal file
13
Voroncov2103/PriorityWindow.axaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<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="800" d:DesignHeight="450"
|
||||||
|
x:Class="Voroncov2103.PriorityWindow"
|
||||||
|
Title="PriorityWindow">
|
||||||
|
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="10">
|
||||||
|
<TextBlock Text="Введите новый приоритет:"/>
|
||||||
|
<TextBox x:Name="PriorityTextBox" Width="100" HorizontalAlignment="Center"/>
|
||||||
|
<Button Content="OK" Click="OnClick" HorizontalAlignment="Center"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Window>
|
40
Voroncov2103/PriorityWindow.axaml.cs
Normal file
40
Voroncov2103/PriorityWindow.axaml.cs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Markup.Xaml;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Scaffolding.Metadata;
|
||||||
|
using Voroncov2103.Models;
|
||||||
|
|
||||||
|
namespace Voroncov2103
|
||||||
|
{
|
||||||
|
public partial class PriorityWindow : Window
|
||||||
|
{
|
||||||
|
private int AgentId;
|
||||||
|
public int? Priority { get; private set; }
|
||||||
|
|
||||||
|
public PriorityWindow(int agentId)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
AgentId = agentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (int.TryParse(PriorityTextBox.Text, out int priority))
|
||||||
|
{
|
||||||
|
Priority = priority;
|
||||||
|
using var ctx = new DatabaseContext();
|
||||||
|
ctx.Agents.Where(a => a.Id == AgentId)
|
||||||
|
.ExecuteUpdate(setters => setters.SetProperty(a => a.Priority, Priority));
|
||||||
|
ctx.SaveChanges();
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid priority number");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
21
Voroncov2103/Program.cs
Normal file
21
Voroncov2103/Program.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using Avalonia;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Voroncov2103;
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
28
Voroncov2103/Voroncov2103.csproj
Normal file
28
Voroncov2103/Voroncov2103.csproj
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
||||||
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
|
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Avalonia" Version="11.2.1"/>
|
||||||
|
<PackageReference Include="Avalonia.Desktop" Version="11.2.1"/>
|
||||||
|
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.2.1"/>
|
||||||
|
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.2.1"/>
|
||||||
|
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
|
||||||
|
<PackageReference Include="Avalonia.Diagnostics" Version="11.2.1">
|
||||||
|
<IncludeAssets Condition="'$(Configuration)' != 'Debug'">None</IncludeAssets>
|
||||||
|
<PrivateAssets Condition="'$(Configuration)' != 'Debug'">All</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.10" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.10">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.10" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
18
Voroncov2103/app.manifest
Normal file
18
Voroncov2103/app.manifest
Normal 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="Voroncov2103.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>
|
BIN
Voroncov2103/bin/.DS_Store
vendored
Normal file
BIN
Voroncov2103/bin/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/.DS_Store
vendored
Normal file
BIN
Voroncov2103/bin/Debug/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/.DS_Store
vendored
Normal file
BIN
Voroncov2103/bin/Debug/net8.0/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Base.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Base.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Controls.ColorPicker.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Controls.ColorPicker.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Controls.DataGrid.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Controls.DataGrid.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Controls.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Controls.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.DesignerSupport.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.DesignerSupport.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Desktop.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Desktop.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Diagnostics.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Diagnostics.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Dialogs.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Dialogs.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Fonts.Inter.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Fonts.Inter.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.FreeDesktop.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.FreeDesktop.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Markup.Xaml.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Markup.Xaml.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Markup.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Markup.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Metal.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Metal.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.MicroCom.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.MicroCom.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Native.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Native.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.OpenGL.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.OpenGL.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Remote.Protocol.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Remote.Protocol.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Skia.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Skia.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Themes.Fluent.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Themes.Fluent.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Themes.Simple.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Themes.Simple.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Vulkan.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Vulkan.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Win32.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.Win32.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.X11.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.X11.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Avalonia.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/HarfBuzzSharp.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/HarfBuzzSharp.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Humanizer.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Humanizer.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/MicroCom.Runtime.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/MicroCom.Runtime.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Bcl.AsyncInterfaces.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Bcl.AsyncInterfaces.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.CodeAnalysis.CSharp.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.CodeAnalysis.CSharp.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.CodeAnalysis.Workspaces.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.CodeAnalysis.Workspaces.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.CodeAnalysis.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.CodeAnalysis.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Design.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Design.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Relational.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.EntityFrameworkCore.Relational.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.EntityFrameworkCore.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.EntityFrameworkCore.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Caching.Abstractions.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Caching.Abstractions.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Caching.Memory.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Caching.Memory.dll
Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.DependencyInjection.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.DependencyInjection.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.DependencyModel.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.DependencyModel.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Logging.Abstractions.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Logging.Abstractions.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Logging.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Logging.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Options.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Options.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Primitives.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Microsoft.Extensions.Primitives.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Mono.TextTemplating.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Mono.TextTemplating.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Npgsql.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Npgsql.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/SkiaSharp.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/SkiaSharp.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/System.CodeDom.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/System.CodeDom.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/System.Composition.AttributedModel.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/System.Composition.AttributedModel.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/System.Composition.Convention.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/System.Composition.Convention.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/System.Composition.Hosting.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/System.Composition.Hosting.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/System.Composition.Runtime.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/System.Composition.Runtime.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/System.Composition.TypedParts.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/System.Composition.TypedParts.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/System.IO.Pipelines.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/System.IO.Pipelines.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Tmds.DBus.Protocol.dll
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Tmds.DBus.Protocol.dll
Executable file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Voroncov2103
Executable file
BIN
Voroncov2103/bin/Debug/net8.0/Voroncov2103
Executable file
Binary file not shown.
1413
Voroncov2103/bin/Debug/net8.0/Voroncov2103.deps.json
Normal file
1413
Voroncov2103/bin/Debug/net8.0/Voroncov2103.deps.json
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Voroncov2103/bin/Debug/net8.0/Voroncov2103.dll
Normal file
BIN
Voroncov2103/bin/Debug/net8.0/Voroncov2103.dll
Normal file
Binary file not shown.
BIN
Voroncov2103/bin/Debug/net8.0/Voroncov2103.pdb
Normal file
BIN
Voroncov2103/bin/Debug/net8.0/Voroncov2103.pdb
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user