From 8ba055592249e4de4a3ee6779b21a24fe6605832 Mon Sep 17 00:00:00 2001
From: aignatov-bio <47317017+aignatov-bio@users.noreply.github.com>
Date: Fri, 12 Apr 2019 09:17:34 +0200
Subject: [PATCH] Add check for tasks complete in project notifications (#1657)

---
 app/models/my_module.rb                    | 1 +
 app/models/project.rb                      | 2 +-
 app/services/projects_overview_service.rb  | 1 +
 app/views/projects/_notifications.html.erb | 4 ++--
 4 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/app/models/my_module.rb b/app/models/my_module.rb
index 10b4fbb5e..f8d726537 100644
--- a/app/models/my_module.rb
+++ b/app/models/my_module.rb
@@ -78,6 +78,7 @@ class MyModule < ApplicationRecord
           Time.current.utc + 1.day)
   end)
   scope :workflow_ordered, -> { order(workflow_order: :asc) }
+  scope :uncomplete, -> { where(state: 'uncompleted') }
 
   # A module takes this much space in canvas (x, y) in database
   WIDTH = 30
diff --git a/app/models/project.rb b/app/models/project.rb
index 76ca7935b..2d5eedf3c 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -242,7 +242,7 @@ class Project < ApplicationRecord
   def notifications_count(user)
     res = 0
     assigned_modules(user).find_each do |t|
-      res += 1 if t.is_overdue? || t.is_one_day_prior?
+      res += 1 if (t.is_overdue? || t.is_one_day_prior?) && !t.completed?
     end
     res
   end
diff --git a/app/services/projects_overview_service.rb b/app/services/projects_overview_service.rb
index a189488d4..082c0b589 100644
--- a/app/services/projects_overview_service.rb
+++ b/app/services/projects_overview_service.rb
@@ -65,6 +65,7 @@ class ProjectsOverviewService
   def fetch_records
     due_modules =
       MyModule.active
+              .uncomplete
               .overdue
               .or(MyModule.one_day_prior)
               .distinct
diff --git a/app/views/projects/_notifications.html.erb b/app/views/projects/_notifications.html.erb
index 78fba5cb7..590eaea47 100644
--- a/app/views/projects/_notifications.html.erb
+++ b/app/views/projects/_notifications.html.erb
@@ -3,7 +3,7 @@
 <ul class="no-style double-line content-notifications">
   <% nr_of_notifications = 0 %>
   <% @modules.each do |mod| %>
-    <% if mod.is_overdue? %>
+    <% if mod.is_overdue? && !mod.completed? %>
       <% nr_of_notifications += 1 %>
       <% days = t("projects.index.module_overdue_days", count: mod.overdue_for_days) %>
       <li class="notification alert-red">
@@ -13,7 +13,7 @@
         </div>
         <%=t "projects.index.module_overdue_html", module: mod.name, days: days %>
       </li>
-    <% elsif mod.is_one_day_prior? %>
+    <% elsif mod.is_one_day_prior? && !mod.completed? %>
       <% nr_of_notifications += 1 %>
       <li class="notification alert-yellow">
         <div class="date-time">