Browse Source

11th update

ganahrhr 3 years ago
parent
commit
05fd832fc8
3 changed files with 105 additions and 56 deletions
  1. 36 31
      AppData.cs
  2. 42 8
      Pages/Desktop.razor.cs
  3. 27 17
      Shared/Sidebar.razor.cs

+ 36 - 31
AppData.cs

@@ -14,25 +14,26 @@ namespace HyperCube
     /// </summary>
     public class AppData
     {
-        [Inject]
-        AuthenticationStateProvider AuthenticationStateProvider { get; set; }
-        [Inject]
-        UserManager<IdentityUser> UserManager { get; set; }
+        //[Inject]
+        //AuthenticationStateProvider AuthenticationStateProvider { get; set; }
+        //[Inject]
+        //UserManager<IdentityUser> UserManager { get; set; }
 
-        private AccountModel _currentAccount;
-        public AccountModel CurrentAccount
-        { 
-            get
-            {
-                if (_currentAccount == null)
-                {
-                    GetCurrentAcc();
-                    return _currentAccount;
-                }
-                else
-                    return _currentAccount;
-            }
-        }
+        //private AccountModel _currentAccount;
+
+        //public AccountModel CurrentAccount
+        //{ 
+        //    get
+        //    {
+        //        if (_currentAccount == null)
+        //        {
+        //            GetCurrentAcc();
+        //            return _currentAccount;
+        //        }
+        //        else
+        //            return _currentAccount;
+        //    }
+        //}
 
         public ReportModel Report = new();
 
@@ -61,20 +62,24 @@ namespace HyperCube
             _articles = await dbCon.SQLSelectArticles(stringSQL);
         }
 
-        private async Task GetCurrentAcc()
-        {
-            var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
-            var user = authState.User;
+        //public async Task<AccountModel> GetCurrentAcc()
+        //{
+        //    if (_currentAccount == null)
+        //    {
+        //        var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
+        //        var user = authState.User;
 
-            if (user.Identity.IsAuthenticated)
-            {
-                ///tmp
-                Dictionary<string, AccountModel> accounts = await MySQLConnector.Instance().SQLSelectASPUsers();
+        //        if (user != null && user.Identity.IsAuthenticated)
+        //        {
+        //            ///tmp
+        //            Dictionary<string, AccountModel> accounts = await MySQLConnector.Instance().SQLSelectASPUsers();
 
-                var currentUser = await UserManager.GetUserAsync(user);
-                if (accounts.ContainsKey(currentUser.Id))
-                    _currentAccount = accounts[currentUser.Id];                
-            }            
-        }
+        //            var currentUser = await UserManager.GetUserAsync(user);
+        //            if (accounts.ContainsKey(currentUser.Id))
+        //                _currentAccount = accounts[currentUser.Id];
+        //        }
+        //    }
+        //    return _currentAccount;
+        //}
     }
 }

+ 42 - 8
Pages/Desktop.razor.cs

@@ -1,6 +1,8 @@
 using HyperCube.Models;
 using Microsoft.AspNetCore.Components;
+using Microsoft.AspNetCore.Components.Authorization;
 using Microsoft.AspNetCore.Components.Forms;
+using Microsoft.AspNetCore.Identity;
 using Pullenti.Unitext;
 using System;
 using System.Collections.Generic;
@@ -18,10 +20,17 @@ namespace HyperCube.Pages
 {
     public partial class Desktop : ComponentBase
     {
+        [Parameter]
+        public int DocID { get; set; }
+
+        [Inject]
+        NavigationManager NavigationManager { get; set; }
         [Inject]
-        NavigationManager _navigationManager { get; set; }
+        AuthenticationStateProvider AuthenticationStateProvider { get; set; }
         [Inject]
-        AppData _appData { get; set; }
+        UserManager<IdentityUser> UserManager { get; set; }
+        [Inject]
+        AppData AppData { get; set; }
 
         const string STORAGE_FOLDER_NAME = "articles_storage";
         const long MAX_FILE_SIZE = 5120000; //bytes
@@ -40,7 +49,7 @@ namespace HyperCube.Pages
 
         int _counter = 1;
 
-        //string _event = "";
+        string _event = "";
         string _status;
         //string _header;
         //string _storageFolderPath;
@@ -53,10 +62,15 @@ namespace HyperCube.Pages
 
         UnitextDocument _document;
 
+        AccountModel _currentAccount;
+
         protected override async Task OnInitializedAsync()
         {
             ///tmp
             await AppData.LoadArticles();
+
+            _currentAccount = await GetCurrentAcc();
+            Console.WriteLine($"Account: {_currentAccount.Name}");
         }
         protected override void OnAfterRender(bool firstRender) => _counter = 1;
 
@@ -116,7 +130,7 @@ namespace HyperCube.Pages
 
                 if (count < 1)
                 {
-                    ReportModel report = _appData.Report;
+                    ReportModel report = AppData.Report;
                     report.FileName = file.Name;
                     report.FileSize = _memoryStream.Length.ToString();
 
@@ -182,7 +196,7 @@ namespace HyperCube.Pages
 
                     // запускаем обработку на пустом процессоре (без анализаторов NER)
                     Pullenti.Ner.AnalysisResult are = Pullenti.Ner.ProcessorService.EmptyProcessor.Process(new Pullenti.Ner.SourceOfAnalysis(plainText), null, null);
-                    System.Console.Write("Noun groups: ");
+                    //System.Console.Write("Noun groups: ");
                     // перебираем токены
                     for (Pullenti.Ner.Token t = are.FirstToken; t != null; t = t.Next)
                     {
@@ -276,7 +290,7 @@ namespace HyperCube.Pages
                         //Console.WriteLine($"Name: {result.Name}, Count: {result.Count}");                        
                     }
 
-                    _navigationManager.NavigateTo("report");
+                    NavigationManager.NavigateTo("report");
                 }
                 else
                 {
@@ -328,7 +342,7 @@ namespace HyperCube.Pages
             int action_type = DocID > 0 ? 2 : 1;
 
             stringSQL = $"INSERT INTO actions_history (article_id, action_type, acc_id) " +
-                $"VALUES ('{id}', '{action_type}', '{currentAcc.UUID}')";
+                $"VALUES ('{id}', '{action_type}', '{_currentAccount.UUID}')";
             await dbCon.SQLInsert(stringSQL);
 
             Dictionary<string, PropertyInfo> propDict = Compare.SimpleCompare<ArticleModel>(_article, _articleClone);
@@ -337,7 +351,7 @@ namespace HyperCube.Pages
                 //Console.WriteLine($"property name: {prop.Key}, value: {prop.Value.GetValue(articleModel, null)}");
 
                 stringSQL = $"INSERT INTO articles_edit_log (article_id, acc_id, field_name, field_prevvalue, field_newvalue) " +
-                    $"VALUES ('{id}', '{currentAcc.UUID}', '{prop.Key}', '{prop.Value.GetValue(_articleClone, null)}', '{prop.Value.GetValue(_article, null)}')";
+                    $"VALUES ('{id}', '{_currentAccount.UUID}', '{prop.Key}', '{prop.Value.GetValue(_articleClone, null)}', '{prop.Value.GetValue(_article, null)}')";
                 await dbCon.SQLInsert(stringSQL);
             }
 
@@ -427,5 +441,25 @@ namespace HyperCube.Pages
                             .GetCustomAttribute<DisplayAttribute>()
                             .GetName();
         }
+
+        async Task<AccountModel> GetCurrentAcc()
+        {
+            if (_currentAccount == null)
+            {
+                var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
+                var user = authState.User;
+
+                if (user.Identity.IsAuthenticated)
+                {
+                    ///tmp
+                    Dictionary<string, AccountModel> accounts = await MySQLConnector.Instance().SQLSelectASPUsers();
+
+                    var currentUser = await UserManager.GetUserAsync(user);
+                    if (accounts.ContainsKey(currentUser.Id))
+                        _currentAccount = accounts[currentUser.Id];
+                }
+            }
+            return _currentAccount;
+        }
     }
 }

+ 27 - 17
Shared/Sidebar.razor.cs

@@ -13,7 +13,7 @@ namespace HyperCube.Shared
     public partial class Sidebar : ComponentBase
     {
         [Inject]
-        NavigationManager navigationManager { get; set; }
+        NavigationManager NavigationManager { get; set; }
         [Inject]
         AuthenticationStateProvider AuthenticationStateProvider { get; set; }
         [Inject]
@@ -28,27 +28,17 @@ namespace HyperCube.Shared
         ModalInfo modalError404 { get; set; }
         ModalLoading modalLoading { get; set; }
 
-        protected override async Task OnInitializedAsync()
-        {            
+        AccountModel _currentAccount;
 
+        protected override async Task OnInitializedAsync()
+        {
         }
 
         async Task ProfileClick()
         {
-            AccountModel account = new() { Name = "[SomeUserName]", UUID = "[SomeUserID]" };
+            //AccountModel account = new() { Name = "[SomeUserName]", UUID = "[SomeUserID]" };
+            AccountModel account = await GetCurrentAcc();
 
-            var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
-            var user = authState.User;
-
-            if (user.Identity.IsAuthenticated)
-            {
-                ///tmp
-                Dictionary<string, AccountModel> accounts = await MySQLConnector.Instance().SQLSelectASPUsers();
-
-                var currentUser = await UserManager.GetUserAsync(user);
-                if (accounts.ContainsKey(currentUser.Id))
-                    account = accounts[currentUser.Id];
-            }
             account.LoadRoles();
             modalProfile.Open(account);
         }
@@ -80,12 +70,32 @@ namespace HyperCube.Shared
 
         void ExitClick()
         {            
-            navigationManager.NavigateTo("Identity/Account/Logout", true);
+            NavigationManager.NavigateTo("Identity/Account/Logout", true);
         }
 
         void ErrorClick()
         {
             modalError404.Open();            
         }
+
+        async Task<AccountModel> GetCurrentAcc()
+        {
+            if (_currentAccount == null)
+            {
+                var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
+                var user = authState.User;
+
+                if (user.Identity.IsAuthenticated)
+                {
+                    ///tmp
+                    Dictionary<string, AccountModel> accounts = await MySQLConnector.Instance().SQLSelectASPUsers();
+
+                    var currentUser = await UserManager.GetUserAsync(user);
+                    if (accounts.ContainsKey(currentUser.Id))
+                        _currentAccount = accounts[currentUser.Id];
+                }
+            }
+            return _currentAccount;
+        }
     }
 }