From bcfa6fd338876038d5ba14528b331c90d80e5ce0 Mon Sep 17 00:00:00 2001
From: Marcel Nellesen <nellesen@itc.rwth-aachen.de>
Date: Wed, 20 Jan 2021 07:40:33 +0100
Subject: [PATCH] Update: Owner of a project can be contacted
 (coscine/issues#1202)

---
 src/Pid/Controllers/PidController.cs | 23 +++++++++++++++++++----
 src/Pid/Pid.csproj                   |  4 ++--
 src/Pid/packages.config              |  2 +-
 3 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/Pid/Controllers/PidController.cs b/src/Pid/Controllers/PidController.cs
index af523e6..4aeaa69 100644
--- a/src/Pid/Controllers/PidController.cs
+++ b/src/Pid/Controllers/PidController.cs
@@ -24,6 +24,7 @@ namespace Coscine.Api.Pid.Controllers
     public class PidController : Controller
     {
         private readonly ResourceModel _resourceModel;
+        private readonly ProjectModel _projectModel;
         private readonly IConfiguration _configuration;
         private readonly Emitter _emitter;
 
@@ -35,6 +36,7 @@ namespace Coscine.Api.Pid.Controllers
             _configuration = Program.Configuration;
             _emitter = new Emitter(this._configuration);
             _resourceModel = new ResourceModel();
+            _projectModel = new ProjectModel();
         }
 
         /// <summary>
@@ -46,6 +48,7 @@ namespace Coscine.Api.Pid.Controllers
         public IActionResult SendMailToOwner([FromBody] MessageObject messageObject)
         {
             var resource = _resourceModel.GetById(new Guid(messageObject.Guid));
+            var project = _projectModel.GetById(new Guid(messageObject.Guid));
             var user = new User()
             {
                 DisplayName = messageObject.Name,
@@ -53,19 +56,31 @@ namespace Coscine.Api.Pid.Controllers
             };
             var placeholder = new JObject()
             {
-                ["resourceName"] = resource.DisplayName,
                 ["requesterName"] = messageObject.Name,
                 ["requesterMail"] = messageObject.Email,
                 ["requestMessage"] = messageObject.Message,
                 ["pid"] = messageObject.Pid
             };
-            _emitter.EmitPIDOwnerContact(new PIDEventArgs(_configuration)
+
+            PIDEventArgs pidEventArgs = new PIDEventArgs(_configuration)
             {
                 Requester = user,
-                Resource = resource,
                 SentCopy = messageObject.SendCopy,
                 Placeholder = placeholder
-            });
+            };
+
+            if (resource != null)
+            {
+                placeholder["resourceName"] = resource.DisplayName;
+                pidEventArgs.Resource = resource;
+            }
+            else
+            {
+                placeholder["projectName"] = project.DisplayName;
+                pidEventArgs.Project = project;
+            }
+
+            _emitter.EmitPIDOwnerContact(pidEventArgs);
             return Json(new JObject { ["status"] = "ok" });
         }
     }
diff --git a/src/Pid/Pid.csproj b/src/Pid/Pid.csproj
index 9978a9d..27c1e75 100644
--- a/src/Pid/Pid.csproj
+++ b/src/Pid/Pid.csproj
@@ -51,8 +51,8 @@
     <Reference Include="Consul, Version=0.7.2.6, Culture=neutral, PublicKeyToken=20a6ad9a81df1d95, processorArchitecture=MSIL">
       <HintPath>..\packages\Consul.0.7.2.6\lib\net45\Consul.dll</HintPath>
     </Reference>
-    <Reference Include="Coscine.Action, Version=1.17.0.0, Culture=neutral, processorArchitecture=AMD64">
-      <HintPath>..\packages\Coscine.Action.1.17.0\lib\net461\Coscine.Action.dll</HintPath>
+    <Reference Include="Coscine.Action, Version=1.18.0.0, Culture=neutral, processorArchitecture=AMD64">
+      <HintPath>..\packages\Coscine.Action.1.18.0-topic-1202-pidap0008\lib\net461\Coscine.Action.dll</HintPath>
     </Reference>
     <Reference Include="Coscine.ApiCommons, Version=1.11.0.0, Culture=neutral, PublicKeyToken=af4c1345df96546b, processorArchitecture=MSIL">
       <HintPath>..\packages\Coscine.ApiCommons.1.11.0\lib\net461\Coscine.ApiCommons.dll</HintPath>
diff --git a/src/Pid/packages.config b/src/Pid/packages.config
index 3818c13..72c9a96 100644
--- a/src/Pid/packages.config
+++ b/src/Pid/packages.config
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
   <package id="Consul" version="0.7.2.6" targetFramework="net461" />
-  <package id="Coscine.Action" version="1.17.0" targetFramework="net461" />
+  <package id="Coscine.Action" version="1.18.0-topic-1202-pidap0008" targetFramework="net461" />
   <package id="Coscine.ApiCommons" version="1.11.0" targetFramework="net461" />
   <package id="Coscine.Configuration" version="1.5.0" targetFramework="net461" />
   <package id="Coscine.Database" version="1.27.0" targetFramework="net461" />
-- 
GitLab