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