diff --git a/.idea/.idea.demo5/.idea/avalonia.xml b/.idea/.idea.demo5/.idea/avalonia.xml
index cbfb222..b83b5e2 100644
--- a/.idea/.idea.demo5/.idea/avalonia.xml
+++ b/.idea/.idea.demo5/.idea/avalonia.xml
@@ -3,7 +3,15 @@
diff --git a/.idea/.idea.demo5/.idea/vcs.xml b/.idea/.idea.demo5/.idea/vcs.xml
index d843f34..94a25f7 100644
--- a/.idea/.idea.demo5/.idea/vcs.xml
+++ b/.idea/.idea.demo5/.idea/vcs.xml
@@ -1,4 +1,6 @@
-
+
+
+
\ No newline at end of file
diff --git a/demo5/AdminWindow.axaml b/demo5/AdminWindow.axaml
index aee2ea2..2a27831 100644
--- a/demo5/AdminWindow.axaml
+++ b/demo5/AdminWindow.axaml
@@ -5,5 +5,32 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="demo5.AdminWindow"
Title="AdminWindow">
- Welcome to Avalonia!
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo5/AdminWindow.axaml.cs b/demo5/AdminWindow.axaml.cs
index 6aca070..6575fef 100644
--- a/demo5/AdminWindow.axaml.cs
+++ b/demo5/AdminWindow.axaml.cs
@@ -1,13 +1,52 @@
-using Avalonia;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.IO;
+using System.Linq;
+using System.Text.RegularExpressions;
using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
+using Avalonia.Input;
+using Avalonia.Interactivity;
+using Avalonia.Media.Imaging;
+using demo5.Models;
+using demo5.MyModels;
namespace demo5;
public partial class AdminWindow : Window
{
- public AdminWindow()
+ public AdminWindow(Client client)
{
InitializeComponent();
+ FioTextBlock.Text = client.Fio;
+ RoleTextBlock.Text = client.RoleNavigation.Name;
+
+ try
+ {
+ string absolutePath = Path.Combine(AppContext.BaseDirectory, client.Photopath);
+ ClientImage.Source = new Bitmap(absolutePath);
+ }
+ catch
+ {
+ ClientImage.Source = null;
+ }
}
+
+ private void FormReportsButton_OnClick(object? sender, RoutedEventArgs e)
+ {
+ BlankWindow blankWindow = new BlankWindow();
+ blankWindow.ShowDialog(this);
+ }
+
+ private void WorkOnСonsumablesButton_OnClick(object? sender, RoutedEventArgs e)
+ {
+ BlankWindow blankWindow1 = new BlankWindow();
+ blankWindow1.ShowDialog(this);
+ }
+
+ private void ViewHitoryButton_OnClick(object? sender, RoutedEventArgs e)
+ {
+ HistoryWindow historyWindow = new HistoryWindow();
+ historyWindow.ShowDialog(this);
+ }
}
\ No newline at end of file
diff --git a/demo5/HistoryWindow.axaml b/demo5/HistoryWindow.axaml
index 9ca132e..f0fbdc2 100644
--- a/demo5/HistoryWindow.axaml
+++ b/demo5/HistoryWindow.axaml
@@ -3,7 +3,26 @@
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:CompileBindings="False"
x:Class="demo5.HistoryWindow"
Title="HistoryWindow">
- Welcome to Avalonia!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo5/HistoryWindow.axaml.cs b/demo5/HistoryWindow.axaml.cs
index 83b7637..c7e57a8 100644
--- a/demo5/HistoryWindow.axaml.cs
+++ b/demo5/HistoryWindow.axaml.cs
@@ -1,13 +1,74 @@
-using Avalonia;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
+using Avalonia.Interactivity;
+using demo5.Models;
namespace demo5;
public partial class HistoryWindow : Window
{
+ private ObservableCollection history = new();
+ private List dataSourceHistory;
+
public HistoryWindow()
{
InitializeComponent();
+ DataContext = this;
+ using var context = new Demo5Context();
+ dataSourceHistory = context.Clients.Select(client => new HistoryPresenter
+ {
+ Email = client.Email,
+ LastLogin = client.LastLogin,
+ SuccessLoginBool = client.SuccessLogin
+ }).ToList();
+
+ LoginComboBox.ItemsSource = dataSourceHistory.Select(it => it.Email).Distinct().ToList();
+ DateComboBox.ItemsSource = dataSourceHistory.Select(it => it.LastLogin).Where(it => it.HasValue).Distinct().ToList();
+
+ HistoryListBox.ItemsSource = history;
+ DisplayServices();
}
-}
\ No newline at end of file
+
+ public class HistoryPresenter
+ {
+ public string Email { get; set; } = string.Empty;
+ public DateTime? LastLogin { get; set; }
+ public bool? SuccessLoginBool { get; set; }
+
+ public string SuccessLogin => SuccessLoginBool.HasValue ? (SuccessLoginBool.Value ? "Успешно" : "Не успешно") : "";
+ }
+
+ private void DisplayServices()
+ {
+ var filteredData = dataSourceHistory;
+
+ if (LoginComboBox.SelectedItem is string selectedEmail)
+ {
+ filteredData = filteredData.Where(it => it.Email == selectedEmail).ToList();
+ }
+
+ if (DateComboBox.SelectedItem is DateTime selectedDate)
+ {
+ filteredData = filteredData.Where(it => it.LastLogin.HasValue && it.LastLogin.Value.Date == selectedDate.Date).ToList();
+ }
+
+ history.Clear();
+ foreach (var item in filteredData.OrderBy(it => it.LastLogin))
+ {
+ history.Add(item);
+ }
+ }
+
+ public void LoginComboBox_OnSelectionChanged(object? sender, RoutedEventArgs e)
+ {
+ DisplayServices();
+ }
+
+ public void DateComboBox_OnSelectionChanged(object? sender, RoutedEventArgs e)
+ {
+ DisplayServices();
+ }
+}
diff --git a/demo5/MainWindow.axaml.cs b/demo5/MainWindow.axaml.cs
index bb3e982..234dea7 100644
--- a/demo5/MainWindow.axaml.cs
+++ b/demo5/MainWindow.axaml.cs
@@ -26,42 +26,52 @@ public partial class MainWindow : Window
{
using var context = new Demo5Context();
- var LoginText = LoginTextBox?.Text;
- var Password = PasswordTextBox?.Text;
+ var loginText = LoginTextBox?.Text;
+ var password = PasswordTextBox?.Text;
- if (string.IsNullOrEmpty(LoginText) || string.IsNullOrEmpty(Password))
+ if (string.IsNullOrEmpty(loginText) || string.IsNullOrEmpty(password))
{
return;
}
var client = context.Clients
.Include(c => c.RoleNavigation)
- .FirstOrDefault(it => it.Email == LoginText);
+ .FirstOrDefault(it => it.Email == loginText);
- if (client != null && client.Password == Password)
+ if (client != null)
{
- switch (client.Role)
+ client.LastLogin = DateTime.Now;
+
+ if (client.Password == password)
{
- case 1:
- BlankWindow blankWindow = new BlankWindow();
- blankWindow.ShowDialog(this);
- break;
- case 2:
- SellerWindow sallerWindow = new SellerWindow(client);
- sallerWindow.ShowDialog(this);
- break;
- case 3:
- MegaSellerWindow megaSellerWindow = new MegaSellerWindow();
- megaSellerWindow.ShowDialog(this);
- break;
- case 4:
- AdminWindow adminWindow = new AdminWindow();
- adminWindow.ShowDialog(this);
- break;
- default:
- BlankWindow blankWindow2 = new BlankWindow();
- blankWindow2.ShowDialog(this);
- return;
+ client.SuccessLogin = true;
+ context.Clients.Update(client);
+ context.SaveChanges();
+
+ switch (client.Role)
+ {
+ case 1:
+ new BlankWindow().ShowDialog(this);
+ break;
+ case 2:
+ new SellerWindow(client).ShowDialog(this);
+ break;
+ case 3:
+ new MegaSellerWindow(client).ShowDialog(this);
+ break;
+ case 4:
+ new AdminWindow(client).ShowDialog(this);
+ break;
+ default:
+ new BlankWindow().ShowDialog(this);
+ return;
+ }
+ }
+ else
+ {
+ client.SuccessLogin = false;
+ context.Clients.Update(client);
+ context.SaveChanges();
}
}
}
diff --git a/demo5/MegaSellerWindow.axaml b/demo5/MegaSellerWindow.axaml
index d464b85..5698dfe 100644
--- a/demo5/MegaSellerWindow.axaml
+++ b/demo5/MegaSellerWindow.axaml
@@ -5,5 +5,29 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="demo5.MegaSellerWindow"
Title="MegaSellerWindow">
- Welcome to Avalonia!
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo5/MegaSellerWindow.axaml.cs b/demo5/MegaSellerWindow.axaml.cs
index 33838ad..65a3941 100644
--- a/demo5/MegaSellerWindow.axaml.cs
+++ b/demo5/MegaSellerWindow.axaml.cs
@@ -1,13 +1,46 @@
-using Avalonia;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.IO;
+using System.Linq;
+using System.Text.RegularExpressions;
using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
+using Avalonia.Input;
+using Avalonia.Interactivity;
+using Avalonia.Media.Imaging;
+using demo5.Models;
+using demo5.MyModels;
namespace demo5;
public partial class MegaSellerWindow : Window
{
- public MegaSellerWindow()
+ public MegaSellerWindow(Client client)
{
InitializeComponent();
+ FioTextBlock.Text = client.Fio;
+ RoleTextBlock.Text = client.RoleNavigation.Name;
+
+ try
+ {
+ string absolutePath = Path.Combine(AppContext.BaseDirectory, client.Photopath);
+ ClientImage.Source = new Bitmap(absolutePath);
+ }
+ catch
+ {
+ ClientImage.Source = null;
+ }
+ }
+
+ private void FormOrderButton_OnClick(object? sender, RoutedEventArgs e)
+ {
+ FormOrderWindow formOrderWindow = new FormOrderWindow();
+ formOrderWindow.ShowDialog(this);
+ }
+
+ private void TakeOrderButton_OnClick(object? sender, RoutedEventArgs e)
+ {
+ TakeOrderWindow takeOrderWindow = new TakeOrderWindow();
+ takeOrderWindow.ShowDialog(this);
}
}
\ No newline at end of file
diff --git a/demo5/TakeOrderWindow.axaml b/demo5/TakeOrderWindow.axaml
new file mode 100644
index 0000000..b779ac9
--- /dev/null
+++ b/demo5/TakeOrderWindow.axaml
@@ -0,0 +1,9 @@
+
+ Welcome to Avalonia!
+
diff --git a/demo5/TakeOrderWindow.axaml.cs b/demo5/TakeOrderWindow.axaml.cs
new file mode 100644
index 0000000..1ffe855
--- /dev/null
+++ b/demo5/TakeOrderWindow.axaml.cs
@@ -0,0 +1,13 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace demo5;
+
+public partial class TakeOrderWindow : Window
+{
+ public TakeOrderWindow()
+ {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/demo5/bin/Debug/net8.0/demo5.dll b/demo5/bin/Debug/net8.0/demo5.dll
index a8f09a5..cbb342f 100644
Binary files a/demo5/bin/Debug/net8.0/demo5.dll and b/demo5/bin/Debug/net8.0/demo5.dll differ
diff --git a/demo5/bin/Debug/net8.0/demo5.pdb b/demo5/bin/Debug/net8.0/demo5.pdb
index 025c842..35496d9 100644
Binary files a/demo5/bin/Debug/net8.0/demo5.pdb and b/demo5/bin/Debug/net8.0/demo5.pdb differ
diff --git a/demo5/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache b/demo5/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache
index ff1b9ff..9495d9c 100644
--- a/demo5/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache
+++ b/demo5/obj/Debug/net8.0/Avalonia/Resources.Inputs.cache
@@ -1 +1 @@
-8948c0c28b75c3e276f21eb6eb86f7feeb43240c1e1ea3af04a080bdc30d141f
+d13374ee09495133f83e3063e39392fb7a826b075cf6c61a3b477d7c86689d9a
diff --git a/demo5/obj/Debug/net8.0/Avalonia/demo5.dll b/demo5/obj/Debug/net8.0/Avalonia/demo5.dll
index a8f09a5..cbb342f 100644
Binary files a/demo5/obj/Debug/net8.0/Avalonia/demo5.dll and b/demo5/obj/Debug/net8.0/Avalonia/demo5.dll differ
diff --git a/demo5/obj/Debug/net8.0/Avalonia/demo5.pdb b/demo5/obj/Debug/net8.0/Avalonia/demo5.pdb
index 025c842..35496d9 100644
Binary files a/demo5/obj/Debug/net8.0/Avalonia/demo5.pdb and b/demo5/obj/Debug/net8.0/Avalonia/demo5.pdb differ
diff --git a/demo5/obj/Debug/net8.0/Avalonia/resources b/demo5/obj/Debug/net8.0/Avalonia/resources
index 5fa1dc6..471330b 100644
Binary files a/demo5/obj/Debug/net8.0/Avalonia/resources and b/demo5/obj/Debug/net8.0/Avalonia/resources differ
diff --git a/demo5/obj/Debug/net8.0/demo5.AssemblyInfo.cs b/demo5/obj/Debug/net8.0/demo5.AssemblyInfo.cs
index 551a12c..efbbe2e 100644
--- a/demo5/obj/Debug/net8.0/demo5.AssemblyInfo.cs
+++ b/demo5/obj/Debug/net8.0/demo5.AssemblyInfo.cs
@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("demo5")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a792f9df5e854314a0e7c5e8d78a9b881174c492")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+fafd4f40ebbda80ce5deea16d2f2b9b4de4647ab")]
[assembly: System.Reflection.AssemblyProductAttribute("demo5")]
[assembly: System.Reflection.AssemblyTitleAttribute("demo5")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git a/demo5/obj/Debug/net8.0/demo5.AssemblyInfoInputs.cache b/demo5/obj/Debug/net8.0/demo5.AssemblyInfoInputs.cache
index 8a8e56d..ebbdbe3 100644
--- a/demo5/obj/Debug/net8.0/demo5.AssemblyInfoInputs.cache
+++ b/demo5/obj/Debug/net8.0/demo5.AssemblyInfoInputs.cache
@@ -1 +1 @@
-5d85425ecb3c1ae34c6e36ade359dd0f925831013e3aae1c7054d3b2991eff96
+927d8002c66c1b9968645ad5047d41eea4470c5049e02071cf2ffc8f07e94c20
diff --git a/demo5/obj/Debug/net8.0/demo5.GeneratedMSBuildEditorConfig.editorconfig b/demo5/obj/Debug/net8.0/demo5.GeneratedMSBuildEditorConfig.editorconfig
index 141ba1a..fcae422 100644
--- a/demo5/obj/Debug/net8.0/demo5.GeneratedMSBuildEditorConfig.editorconfig
+++ b/demo5/obj/Debug/net8.0/demo5.GeneratedMSBuildEditorConfig.editorconfig
@@ -42,3 +42,6 @@ build_metadata.AdditionalFiles.SourceItemGroup = AvaloniaXaml
[/Users/feitanportor/dev/C\#/demo5/demo5/SellerWindow.axaml]
build_metadata.AdditionalFiles.SourceItemGroup = AvaloniaXaml
+
+[/Users/feitanportor/dev/C\#/demo5/demo5/TakeOrderWindow.axaml]
+build_metadata.AdditionalFiles.SourceItemGroup = AvaloniaXaml
diff --git a/demo5/obj/Debug/net8.0/demo5.csproj.CoreCompileInputs.cache b/demo5/obj/Debug/net8.0/demo5.csproj.CoreCompileInputs.cache
index 11d6e62..e37a421 100644
--- a/demo5/obj/Debug/net8.0/demo5.csproj.CoreCompileInputs.cache
+++ b/demo5/obj/Debug/net8.0/demo5.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-a252263bc118cc3d616f2f20814f72e4df244c5ee117fd7662fb87b455a54ae8
+50f63526e6b823c15b5234c1d359abd7c4c2cd06793a3ed14005c4093c354f81
diff --git a/demo5/obj/Debug/net8.0/demo5.dll b/demo5/obj/Debug/net8.0/demo5.dll
index 5ae28c3..6646801 100644
Binary files a/demo5/obj/Debug/net8.0/demo5.dll and b/demo5/obj/Debug/net8.0/demo5.dll differ
diff --git a/demo5/obj/Debug/net8.0/demo5.pdb b/demo5/obj/Debug/net8.0/demo5.pdb
index 5bf02e3..55363e4 100644
Binary files a/demo5/obj/Debug/net8.0/demo5.pdb and b/demo5/obj/Debug/net8.0/demo5.pdb differ
diff --git a/demo5/obj/Debug/net8.0/ref/demo5.dll b/demo5/obj/Debug/net8.0/ref/demo5.dll
index c5fbb89..413eadd 100644
Binary files a/demo5/obj/Debug/net8.0/ref/demo5.dll and b/demo5/obj/Debug/net8.0/ref/demo5.dll differ
diff --git a/demo5/obj/Debug/net8.0/refint/Avalonia/demo5.dll b/demo5/obj/Debug/net8.0/refint/Avalonia/demo5.dll
index c5fbb89..413eadd 100644
Binary files a/demo5/obj/Debug/net8.0/refint/Avalonia/demo5.dll and b/demo5/obj/Debug/net8.0/refint/Avalonia/demo5.dll differ
diff --git a/demo5/obj/Debug/net8.0/refint/demo5.dll b/demo5/obj/Debug/net8.0/refint/demo5.dll
index e4310bd..3273fe7 100644
Binary files a/demo5/obj/Debug/net8.0/refint/demo5.dll and b/demo5/obj/Debug/net8.0/refint/demo5.dll differ
diff --git a/demo5/obj/rider.project.model.nuget.info b/demo5/obj/rider.project.model.nuget.info
index 5810c86..0850604 100644
--- a/demo5/obj/rider.project.model.nuget.info
+++ b/demo5/obj/rider.project.model.nuget.info
@@ -1 +1 @@
-17386709210962391
\ No newline at end of file
+17386709532954604
\ No newline at end of file