Select Git revision
bootstrap-grid.css.map
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
PidController.cs 2.95 KiB
using Coscine.Database.Models;
using Coscine.Database.ReturnObjects;
using Coscine.ApiCommons;
using Coscine.ApiCommons.Factories;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Linq;
using Coscine.Configuration;
using Microsoft.AspNetCore.Authorization;
using Newtonsoft.Json.Linq;
using Coscine.Database.DataModel;
using Coscine.Database.Util;
using Coscine.Logging;
using Microsoft.Extensions.Logging;
using Coscine.Api.Pid.Models;
using Coscine.Action;
using Coscine.Action.EventArgs;
namespace Coscine.Api.Pid.Controllers
{
/// <summary>
/// This controller represents the actions to contact pid owner.
/// </summary>
public class PidController : Controller
{
private readonly ResourceModel _resourceModel;
private readonly ProjectModel _projectModel;
private readonly IConfiguration _configuration;
private readonly Emitter _emitter;
/// <summary>
/// PidController constructor for contacting the pid owner.
/// </summary>
public PidController(ILogger<PidController> logger)
{
_configuration = Program.Configuration;
_emitter = new Emitter(this._configuration);
_resourceModel = new ResourceModel();
_projectModel = new ProjectModel();
}
/// <summary>
/// Sends a request to the pid owner.
/// </summary>
/// <param name="messageObject">Entry with the information for the email to the pid owner.</param>
/// <returns>JSON object.</returns>
[HttpPost("[controller]/sendMailToOwner")]
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,
EmailAddress = messageObject.Email
};
var placeholder = new JObject()
{
["requesterName"] = messageObject.Name,
["requesterMail"] = messageObject.Email,
["requestMessage"] = messageObject.Message,
["pid"] = messageObject.Pid
};
PIDEventArgs pidEventArgs = new PIDEventArgs(_configuration)
{
Requester = user,
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" });
}
}
}