Kaynağa Gözat

verification point/history save/load

ganahrhr 3 yıl önce
ebeveyn
işleme
0a87ba10c0
6 değiştirilmiş dosya ile 54 ekleme ve 42 silme
  1. 28 27
      Models/ArticleModel.cs
  2. 5 5
      MySQLConnector.cs
  3. 6 6
      Pages/Desktop.razor
  4. 12 1
      Pages/Desktop.razor.cs
  5. 0 3
      Pages/_Host.cshtml
  6. 3 0
      Startup.cs

+ 28 - 27
Models/ArticleModel.cs

@@ -2,11 +2,12 @@
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
+using System.Linq;
 using System.Threading.Tasks;
 using Console = HyperCube.Utils.AdvConsole;
 
 namespace HyperCube.Models
-{    
+{
     public enum ArticleStatus {
         [Display(Name = "Новый")]
         New = 0,
@@ -53,7 +54,7 @@ namespace HyperCube.Models
         public string Keywords2 { get; set; }
 
         /// collection for history of verification
-        public Dictionary<int, VerificationPoint> VerificationHistory { get; set; }
+        public Dictionary<int, VerificationPoint> VerificationHistory { get; set; } = new();
 
         public int? Rating
         {
@@ -116,14 +117,14 @@ namespace HyperCube.Models
             return initiatorUUID;
         }
 
-        public async Task<Dictionary<int, VerificationPoint>> GetVerificationHistory(int articleid, string acc_uuid)
+        public async Task<Dictionary<int, VerificationPoint>> GetVerificationHistory(string acc_uuid)
         {
-            Console.WriteLine($"GetVerificationHistory for article [{articleid}]");
+            Console.WriteLine($"GetVerificationHistory for article [{this.ID}]");
 
-            Dictionary<int, VerificationPoint> verificationHistory = new();
+            //Dictionary<int, VerificationPoint> verificationHistory = new();
             VerificationPoint verificationPoint;
 
-            var vps = await MySQLConnector.Instance().SQLSelectComplex($"SELECT * FFROM articles_verification WHERE article_id='{articleid}'"); //AND acc_id='{acc_uuid}'
+            var vps = await MySQLConnector.Instance().SQLSelectComplex($"SELECT * FROM articles_verification WHERE article_id='{this.ID}'"); //AND acc_id='{acc_uuid}'
             if (vps.Count > 0)
             {
                 foreach (var vp in vps)
@@ -140,26 +141,26 @@ namespace HyperCube.Models
                         DateAdd = Convert.ToDateTime(vp["date_add"])
                     };
                     Console.WriteLine($"add verificationPoint. id: {verificationPoint.ID}, rules_violation: {verificationPoint.RulesViolation}, date_add: {verificationPoint.DateAdd}");
-                    verificationHistory.Add(verificationPoint.ID, verificationPoint);
+                    VerificationHistory.Add(verificationPoint.ID, verificationPoint);
                 }
             }
             else
-                Console.WriteLine($"Article [{articleid}] has no history yet.");
+                Console.WriteLine($"Article [{this.ID}] has no history yet.");
 
-            return verificationHistory;
+            return VerificationHistory;
         }
 
-        public async Task SaveVerificationPoint(VerificationPoint verificationPoint, string acc_uuid)
+        public async Task SaveLastVerificationPoint(VerificationPoint verificationPoint, string acc_uuid)
         {
-            //Console.WriteLine($"SaveVerificationPoint");
-            
+            //Console.WriteLine($"SaveVerificationPoint");            
+
             int rules_violation = Convert.ToInt32(verificationPoint.RulesViolation);
-            int nonexpert = Convert.ToInt32(verificationPoint.RulesViolation);
-            int additional_verification_required = Convert.ToInt32(verificationPoint.RulesViolation);
-            int rejected = Convert.ToInt32(verificationPoint.RulesViolation);            
+            int nonexpert = Convert.ToInt32(verificationPoint.NonExpert);
+            int additional_verification_required = Convert.ToInt32(verificationPoint.AdditionalVerificationRequired);
+            int rejected = Convert.ToInt32(verificationPoint.Rejected);
 
-            if (verificationPoint.ID == 0) ///new point
-            {
+            //if (verificationPoint.ID == 0) ///new point
+            //{
                 Console.WriteLine($"SaveVerificationPoint. New point to save");
 
                 long id = await MySQLConnector.Instance().SQLInsert($"INSERT INTO articles_verification " +
@@ -175,16 +176,16 @@ namespace HyperCube.Models
                 }
                 else
                     Console.WriteLine($"SaveVerificationPoint. Something went wrong, id < 1");
-            }
-            else ///existed
-            {
-                Console.WriteLine($"SaveVerificationPoint. Existed point to save, id: {verificationPoint.ID}");
-
-                await MySQLConnector.Instance().SQLInsert($"UPDATE articles_verification SET " +                                    
-                                    $"acc_id='{acc_uuid}', rules_violation='{rules_violation}', nonexpert='{nonexpert}', additional_verification_required={additional_verification_required}, " +
-                                    $"rejected={rejected}, reject_reason={verificationPoint.RejectReason}, tags={verificationPoint.Tags}) " +
-                                    $"WHERE id={verificationPoint.ID}");
-            }
+            //}
+            //else ///existed
+            //{
+            //    Console.WriteLine($"SaveVerificationPoint. Existed point to save, id: {verificationPoint.ID}");
+
+            //    await MySQLConnector.Instance().SQLInsert($"UPDATE articles_verification SET " +                                    
+            //                        $"acc_id='{acc_uuid}', rules_violation='{rules_violation}', nonexpert='{nonexpert}', additional_verification_required={additional_verification_required}, " +
+            //                        $"rejected={rejected}, reject_reason={verificationPoint.RejectReason}, tags={verificationPoint.Tags}) " +
+            //                        $"WHERE id={verificationPoint.ID}");
+            //}
         }
 
         public object Clone()

+ 5 - 5
MySQLConnector.cs

@@ -292,7 +292,7 @@ namespace HyperCube
 
             bool connected = await IsConnect();
             if (connected)
-            {
+            {                
                 SQLcom = new(sql, Connection);
                 MySqlDataReader rdr = SQLcom.ExecuteReader();
 
@@ -310,10 +310,10 @@ namespace HyperCube
                     article.Status = (ArticleStatus)rdr.GetInt16(7);
                     if (!rdr.IsDBNull(8)) article.Rating = rdr.GetInt16(8);
                     article.HashSum = rdr.GetString(9);
-                    article.NounGroups = rdr.GetString(10);
-                    article.Entities = rdr.GetString(11);
-                    article.Morph = rdr.GetString(12);
-                    article.Keywords1 = rdr.GetString(13);
+                    if (!rdr.IsDBNull(10)) article.NounGroups = rdr.GetString(10);
+                    if (!rdr.IsDBNull(11)) article.Entities = rdr.GetString(11);
+                    if (!rdr.IsDBNull(12)) article.Morph = rdr.GetString(12);
+                    if (!rdr.IsDBNull(13)) article.Keywords1 = rdr.GetString(13);
                     if (!rdr.IsDBNull(14)) article.Keywords2 = rdr.GetString(14);                    
 
                     Console.WriteLine($"Got article, ID: {article.ID}.");

+ 6 - 6
Pages/Desktop.razor

@@ -145,27 +145,27 @@
                     }
                 </select>
             </label>
-            <input type="checkbox" class="checkbox__input" name="verify" id="radio">
+            <input type="checkbox" class="checkbox__input" id="radio" @bind="@_verificationPoint.RulesViolation">
             <label class="сheckbox__label" for="radio">
                 Материал сформирован не по правилам
             </label>
-            <input type="checkbox" class="checkbox__input" name="verify" id="radio2">
+            <input type="checkbox" class="checkbox__input" id="radio2" @bind="@_verificationPoint.NonExpert">
             <label class="сheckbox__label" for="radio2">
                 Не являюсь экспертом в этой теме
             </label>
-            <input type="checkbox" class="checkbox__input" name="verify" id="radio3">
+            <input type="checkbox" class="checkbox__input" id="radio3" @bind="@_verificationPoint.AdditionalVerificationRequired">
             <label class="сheckbox__label" for="radio3">
                 Требуется дополнительная экспертиза
             </label>
-            <input type="checkbox" class="checkbox__input" name="verify" id="radio5">
+            <input type="checkbox" class="checkbox__input" id="radio5" @bind="@_verificationPoint.Rejected">
             <label class="сheckbox__label" for="radio5">
                 Отклонить, указать причину
             </label>
             <label class="upload__label">
-                <textarea placeholder="Причина" class="form-control upload__textarea"></textarea>
+                <textarea placeholder="Причина" class="form-control upload__textarea" @bind="@_verificationPoint.RejectReason"></textarea>
             </label>
             <label class="upload__label">
-                <textarea placeholder="Теги" class="form-control upload__textarea"></textarea>
+                <textarea placeholder="Теги" class="form-control upload__textarea" @bind="@_verificationPoint.Tags"></textarea>
                 <div class="upload__input-descr">+ Добавить тэг. Указывать тэги через запятую</div>
             </label>
             <div class="second-block__form__button">

+ 12 - 1
Pages/Desktop.razor.cs

@@ -69,6 +69,8 @@ namespace HyperCube.Pages
 
         AccountModel _currentAccount;
 
+        VerificationPoint _verificationPoint = new();
+
         protected override async Task OnInitializedAsync()
         {
             ///tmp
@@ -414,6 +416,9 @@ namespace HyperCube.Pages
                 {
                     await UpdateDocument(articleNewStatus);
                     //await SaveFiles(_article.ID);
+
+                    if (_article.Status == ArticleStatus.AwatingVerify || _article.Status == ArticleStatus.Verifying)
+                       await _article.SaveLastVerificationPoint(_verificationPoint, _currentAccount.UUID);
                 }                
             }
         }
@@ -437,7 +442,13 @@ namespace HyperCube.Pages
                     $"ORDER BY actions_history.id DESC LiMIT 1";
                 
                 AppData.CurrentArticleClone = await dbCon.SQLSelectArticle(stringSQL);
-                AppData.CurrentArticle = (ArticleModel)AppData.CurrentArticleClone.Clone();
+                await AppData.CurrentArticleClone.GetVerificationHistory(_currentAccount.UUID);
+                if (AppData.CurrentArticleClone.VerificationHistory.Count > 0)
+                    _verificationPoint = AppData.CurrentArticleClone.VerificationHistory.Values.Last();
+                else
+                    _verificationPoint = new();
+
+                AppData.CurrentArticle = (ArticleModel)AppData.CurrentArticleClone.Clone();                
 
                 //string initiator = await _article.GetInitiatorUUID();
                 //initiatorAcc = AccountModel.Find(initiator);

+ 0 - 3
Pages/_Host.cshtml

@@ -4,9 +4,6 @@
 @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
 @{
     Layout = null;
-    //    HyperCube.Models.AccountModel.InitializeAccounts();
-
-    Console.WriteLine($"Paths:\r\nApp:{AppDomain.CurrentDomain.BaseDirectory}\r\nWorking: {Environment.CurrentDirectory}");
 }
 
 <!DOCTYPE html>

+ 3 - 0
Startup.cs

@@ -15,6 +15,7 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
+using Console = HyperCube.Utils.AdvConsole;
 
 namespace HyperCube
 {
@@ -33,6 +34,8 @@ namespace HyperCube
             {
                 Console.WriteLine(e.Message + ", stack trace:" + e.StackTrace);
             }
+
+            Console.WriteLine($"Paths:\r\nApp:{AppDomain.CurrentDomain.BaseDirectory}\r\nWorking: {Environment.CurrentDirectory}");
         }
 
         public IConfiguration Configuration { get; }