Skip to content
Snippets Groups Projects
Commit 28fbf308 authored by Petar Hristov's avatar Petar Hristov :speech_balloon:
Browse files

Merge branch 'Issue/1746-ApplicationProfileStoringMethod' into 'Sprint/2021-23'

New: Application Profile Storing

See merge request !75
parents af4ef1ce 1172cf29
Branches Sprint/2021-23
Tags
2 merge requests!76Sprint/2021 23,!75New: Application Profile Storing
......@@ -16,6 +16,7 @@ namespace Coscine.Action
private readonly List<IPIDAction> pidActions = new List<IPIDAction>();
private readonly List<IAdminAction> adminActions = new List<IAdminAction>();
private readonly List<IContactChangeAction> contactChangeActions = new List<IContactChangeAction>();
private readonly List<IApplicationProfileAction> applicationProfileActions = new List<IApplicationProfileAction>();
public IConfiguration Configuration { get; }
......@@ -46,6 +47,9 @@ namespace Coscine.Action
var adminA = InstantiateAllImplementations<IAdminAction>(assembly);
adminActions.AddRange(adminA);
var apa = InstantiateAllImplementations<IApplicationProfileAction>(assembly);
applicationProfileActions.AddRange(apa);
}
private static IEnumerable<T> InstantiateAllImplementations<T>(System.Reflection.Assembly assembly) where T : IAction
......@@ -128,5 +132,13 @@ namespace Coscine.Action
a.OnQutaChanged(args);
}
}
public void EmitApplicationProfileRequest(ApplicationProfileEventArgs args)
{
foreach (var a in applicationProfileActions)
{
a.OnApplicationProfileRequest(args);
}
}
}
}
using Coscine.Configuration;
using Coscine.Database.DataModel;
namespace Coscine.Action.EventArgs
{
public class ApplicationProfileEventArgs : ActionEventArgs
{
public IConfiguration Configuration { get; set; }
public User RequestOwner { get; set; }
public string ApplicationProfileName { get; set; }
public string MergeRequestURL { get; set; }
public ApplicationProfileEventArgs(IConfiguration configuration, object[] args) : base(args)
{
Configuration = configuration;
}
public ApplicationProfileEventArgs(IConfiguration configuration) : this(configuration, new object[0])
{
}
}
}
using Coscine.Action.EventArgs;
namespace Coscine.Action
{
public interface IApplicationProfileAction : IAction
{
void OnApplicationProfileRequest(ApplicationProfileEventArgs applicationProfileEventArgs);
}
}
using Coscine.Action.EventArgs;
using Coscine.Action.Utils;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
namespace Coscine.Action.Implementations.ApplicationProfile
{
public class NotificationAction : IApplicationProfileAction
{
public int Priority { get { return 1; } }
public bool Enabled { get { return true; } }
public void OnApplicationProfileRequest(ApplicationProfileEventArgs applicationProfileEventArgs)
{
if (!applicationProfileEventArgs.SilentMode)
{
var args = new JObject()
{
["Args"] = new JObject()
{
["placeholder"] = new JObject()
{
["applicationProfileName"] = applicationProfileEventArgs.ApplicationProfileName,
["mergeRequestURL"] = applicationProfileEventArgs.MergeRequestURL
}
}
};
NotificationBusUtil.SendAsync(applicationProfileEventArgs.Configuration, "request_applicationprofile", JArray.FromObject(new List<Database.DataModel.User>() { applicationProfileEventArgs.RequestOwner }), null, args);
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment