mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-20 13:23:20 -07:00
Added the test button and done a bunch of testing. Almost ready !wip
This commit is contained in:
parent
6005db374a
commit
11442e2ea7
13 changed files with 102 additions and 74 deletions
|
@ -69,7 +69,8 @@ namespace Ombi.Core.Engine
|
||||||
{
|
{
|
||||||
AddedAt = DateTime.Now,
|
AddedAt = DateTime.Now,
|
||||||
Type = RecentlyAddedType.Plex,
|
Type = RecentlyAddedType.Plex,
|
||||||
ContentId = p.Id
|
ContentId = p.Id,
|
||||||
|
ContentType = ContentType.Parent
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -81,7 +82,8 @@ namespace Ombi.Core.Engine
|
||||||
{
|
{
|
||||||
AddedAt = DateTime.Now,
|
AddedAt = DateTime.Now,
|
||||||
Type = RecentlyAddedType.Plex,
|
Type = RecentlyAddedType.Plex,
|
||||||
ContentId = ep.Id
|
ContentId = ep.Id,
|
||||||
|
ContentType = ContentType.Episode
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,7 +97,8 @@ namespace Ombi.Core.Engine
|
||||||
{
|
{
|
||||||
AddedAt = DateTime.Now,
|
AddedAt = DateTime.Now,
|
||||||
Type = RecentlyAddedType.Emby,
|
Type = RecentlyAddedType.Emby,
|
||||||
ContentId = e.Id
|
ContentId = e.Id,
|
||||||
|
ContentType = ContentType.Parent
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -106,8 +109,9 @@ namespace Ombi.Core.Engine
|
||||||
recentlyAddedLog.Add(new RecentlyAddedLog
|
recentlyAddedLog.Add(new RecentlyAddedLog
|
||||||
{
|
{
|
||||||
AddedAt = DateTime.Now,
|
AddedAt = DateTime.Now,
|
||||||
Type = RecentlyAddedType.Plex,
|
Type = RecentlyAddedType.Emby,
|
||||||
ContentId = ep.Id
|
ContentId = ep.Id,
|
||||||
|
ContentType = ContentType.Episode
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Ombi.Settings.Settings.Models.Notifications;
|
||||||
|
|
||||||
namespace Ombi.Schedule.Jobs.Ombi
|
namespace Ombi.Schedule.Jobs.Ombi
|
||||||
{
|
{
|
||||||
public interface INewsletterJob : IBaseJob
|
public interface INewsletterJob : IBaseJob
|
||||||
{
|
{
|
||||||
Task Start();
|
Task Start();
|
||||||
|
Task Start(NewsletterSettings settings, bool test);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -38,6 +38,9 @@ namespace Ombi.Schedule.Jobs.Ombi
|
||||||
_emailSettings = emailSettings;
|
_emailSettings = emailSettings;
|
||||||
_newsletterSettings = newsletter;
|
_newsletterSettings = newsletter;
|
||||||
_userManager = um;
|
_userManager = um;
|
||||||
|
_emailSettings.ClearCache();
|
||||||
|
_customizationSettings.ClearCache();
|
||||||
|
_newsletterSettings.ClearCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly IPlexContentRepository _plex;
|
private readonly IPlexContentRepository _plex;
|
||||||
|
@ -52,10 +55,9 @@ namespace Ombi.Schedule.Jobs.Ombi
|
||||||
private readonly ISettingsService<NewsletterSettings> _newsletterSettings;
|
private readonly ISettingsService<NewsletterSettings> _newsletterSettings;
|
||||||
private readonly UserManager<OmbiUser> _userManager;
|
private readonly UserManager<OmbiUser> _userManager;
|
||||||
|
|
||||||
public async Task Start()
|
public async Task Start(NewsletterSettings settings, bool test)
|
||||||
{
|
{
|
||||||
var newsletterSettings = await _newsletterSettings.GetSettingsAsync();
|
if (!settings.Enabled)
|
||||||
if (!newsletterSettings.Enabled)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -85,17 +87,33 @@ namespace Ombi.Schedule.Jobs.Ombi
|
||||||
var addedEmbyEpisodesLogIds = addedLog.Where(x => x.Type == RecentlyAddedType.Emby && x.ContentType == ContentType.Episode).Select(x => x.ContentId);
|
var addedEmbyEpisodesLogIds = addedLog.Where(x => x.Type == RecentlyAddedType.Emby && x.ContentType == ContentType.Episode).Select(x => x.ContentId);
|
||||||
|
|
||||||
// Filter out the ones that we haven't sent yet
|
// Filter out the ones that we haven't sent yet
|
||||||
var plexContentMoviesToSend = plexContent.Where(x => !addedPlexMovieLogIds.Contains(x.Id));
|
var plexContentMoviesToSend = plexContent.Where(x => x.Type == PlexMediaTypeEntity.Movie && !addedPlexMovieLogIds.Contains(x.Id));
|
||||||
var embyContentMoviesToSend = embyContent.Where(x => !addedEmbyMoviesLogIds.Contains(x.Id));
|
var embyContentMoviesToSend = embyContent.Where(x => x.Type == EmbyMediaType.Movie && !addedEmbyMoviesLogIds.Contains(x.Id));
|
||||||
|
|
||||||
var plexContentTvToSend = plexContent.Where(x => x.Episodes.Any(e => !addedPlexEpisodesLogIds.Contains(e.Id)));
|
var plexContentTvToSend = plexContent.Where(x => x.Type == PlexMediaTypeEntity.Show && x.Episodes.Any(e => !addedPlexEpisodesLogIds.Contains(e.Id)));
|
||||||
var embyContentTvToSend = embyContent.Where(x => x.Episodes.Any(e => !addedEmbyEpisodesLogIds.Contains(e.Id)));
|
var embyContentTvToSend = embyContent.Where(x => x.Type == EmbyMediaType.Series && x.Episodes.Any(e => !addedEmbyEpisodesLogIds.Contains(e.Id)));
|
||||||
|
|
||||||
var plexContentToSend = plexContentMoviesToSend.Union(plexContentTvToSend);
|
var plexContentToSend = plexContentMoviesToSend.Union(plexContentTvToSend);
|
||||||
var embyContentToSend = embyContentMoviesToSend.Union(embyContentTvToSend);
|
var embyContentToSend = embyContentMoviesToSend.Union(embyContentTvToSend);
|
||||||
|
|
||||||
|
var body = string.Empty;
|
||||||
|
if (test)
|
||||||
|
{
|
||||||
|
var plexm = plexContent.Where(x => x.Type == PlexMediaTypeEntity.Movie).OrderByDescending(x => x.AddedAt).Take(10);
|
||||||
|
var embym = embyContent.Where(x => x.Type == EmbyMediaType.Movie).OrderByDescending(x => x.AddedAt).Take(10);
|
||||||
|
var plext = plexContent.Where(x => x.Type == PlexMediaTypeEntity.Show).OrderByDescending(x => x.AddedAt).Take(10);
|
||||||
|
var embyt = embyContent.Where(x => x.Type == EmbyMediaType.Series).OrderByDescending(x => x.AddedAt).Take(10);
|
||||||
|
body = await BuildHtml(plexm.Union(plext), embym.Union(embyt));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
body = await BuildHtml(plexContentToSend, embyContentToSend);
|
||||||
|
if (body.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var body = await BuildHtml(plexContentToSend, embyContentToSend);
|
}
|
||||||
|
|
||||||
// Get the users to send it to
|
// Get the users to send it to
|
||||||
var users = await _userManager.GetUsersInRoleAsync(OmbiRoles.RecievesNewsletter);
|
var users = await _userManager.GetUsersInRoleAsync(OmbiRoles.RecievesNewsletter);
|
||||||
|
@ -174,6 +192,12 @@ namespace Ombi.Schedule.Jobs.Ombi
|
||||||
await Task.WhenAll(emailTasks.ToArray());
|
await Task.WhenAll(emailTasks.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task Start()
|
||||||
|
{
|
||||||
|
var newsletterSettings = await _newsletterSettings.GetSettingsAsync();
|
||||||
|
await Start(newsletterSettings, false);
|
||||||
|
}
|
||||||
|
|
||||||
private string LoadTemplate(string body, NotificationTemplates template, CustomizationSettings settings, string username)
|
private string LoadTemplate(string body, NotificationTemplates template, CustomizationSettings settings, string username)
|
||||||
{
|
{
|
||||||
var email = new NewsletterTemplate();
|
var email = new NewsletterTemplate();
|
||||||
|
|
|
@ -14,7 +14,7 @@ using System;
|
||||||
namespace Ombi.Store.Migrations
|
namespace Ombi.Store.Migrations
|
||||||
{
|
{
|
||||||
[DbContext(typeof(OmbiContext))]
|
[DbContext(typeof(OmbiContext))]
|
||||||
[Migration("20180322085345_RecentlyAddedLog")]
|
[Migration("20180322204610_RecentlyAddedLog")]
|
||||||
partial class RecentlyAddedLog
|
partial class RecentlyAddedLog
|
||||||
{
|
{
|
||||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||||
|
@ -440,6 +440,8 @@ namespace Ombi.Store.Migrations
|
||||||
|
|
||||||
b.Property<int>("ContentId");
|
b.Property<int>("ContentId");
|
||||||
|
|
||||||
|
b.Property<int>("ContentType");
|
||||||
|
|
||||||
b.Property<int>("Type");
|
b.Property<int>("Type");
|
||||||
|
|
||||||
b.HasKey("Id");
|
b.HasKey("Id");
|
|
@ -16,6 +16,7 @@ namespace Ombi.Store.Migrations
|
||||||
.Annotation("Sqlite:Autoincrement", true),
|
.Annotation("Sqlite:Autoincrement", true),
|
||||||
AddedAt = table.Column<DateTime>(nullable: false),
|
AddedAt = table.Column<DateTime>(nullable: false),
|
||||||
ContentId = table.Column<int>(nullable: false),
|
ContentId = table.Column<int>(nullable: false),
|
||||||
|
ContentType = table.Column<int>(nullable: false),
|
||||||
Type = table.Column<int>(nullable: false)
|
Type = table.Column<int>(nullable: false)
|
||||||
},
|
},
|
||||||
constraints: table =>
|
constraints: table =>
|
|
@ -439,6 +439,8 @@ namespace Ombi.Store.Migrations
|
||||||
|
|
||||||
b.Property<int>("ContentId");
|
b.Property<int>("ContentId");
|
||||||
|
|
||||||
|
b.Property<int>("ContentType");
|
||||||
|
|
||||||
b.Property<int>("Type");
|
b.Property<int>("Type");
|
||||||
|
|
||||||
b.HasKey("Id");
|
b.HasKey("Id");
|
||||||
|
|
|
@ -40,6 +40,11 @@ namespace Ombi.Store.Repository
|
||||||
|
|
||||||
public async Task Update(NotificationTemplates template)
|
public async Task Update(NotificationTemplates template)
|
||||||
{
|
{
|
||||||
|
if (Db.Entry(template).State == EntityState.Detached)
|
||||||
|
{
|
||||||
|
Db.Attach(template);
|
||||||
|
Db.Entry(template).State = EntityState.Modified;
|
||||||
|
}
|
||||||
await Db.SaveChangesAsync();
|
await Db.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ export class RecentlyAddedComponent implements OnInit {
|
||||||
public tv: IRecentlyAddedTvShows[];
|
public tv: IRecentlyAddedTvShows[];
|
||||||
public range: Date[];
|
public range: Date[];
|
||||||
|
|
||||||
public groupTv: boolean;
|
public groupTv: boolean = false;
|
||||||
|
|
||||||
// https://github.com/sheikalthaf/ngu-carousel
|
// https://github.com/sheikalthaf/ngu-carousel
|
||||||
public carouselTile: NguCarousel;
|
public carouselTile: NguCarousel;
|
||||||
|
|
|
@ -12,6 +12,7 @@ import {
|
||||||
IEmailNotificationSettings,
|
IEmailNotificationSettings,
|
||||||
IEmbyServer,
|
IEmbyServer,
|
||||||
IMattermostNotifcationSettings,
|
IMattermostNotifcationSettings,
|
||||||
|
INewsletterNotificationSettings,
|
||||||
IPlexServer,
|
IPlexServer,
|
||||||
IPushbulletNotificationSettings,
|
IPushbulletNotificationSettings,
|
||||||
IPushoverNotificationSettings,
|
IPushoverNotificationSettings,
|
||||||
|
@ -78,4 +79,7 @@ export class TesterService extends ServiceHelpers {
|
||||||
public sickrageTest(settings: ISickRageSettings): Observable<boolean> {
|
public sickrageTest(settings: ISickRageSettings): Observable<boolean> {
|
||||||
return this.http.post<boolean>(`${this.url}sickrage`, JSON.stringify(settings), {headers: this.headers});
|
return this.http.post<boolean>(`${this.url}sickrage`, JSON.stringify(settings), {headers: this.headers});
|
||||||
}
|
}
|
||||||
|
public newsletterTest(settings: INewsletterNotificationSettings): Observable<boolean> {
|
||||||
|
return this.http.post<boolean>(`${this.url}newsletter`, JSON.stringify(settings), {headers: this.headers});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,47 +1,37 @@
|
||||||
<settings-menu></settings-menu>
|
<settings-menu></settings-menu>
|
||||||
|
|
||||||
<div *ngIf="form">
|
<div *ngIf="settings">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Newsletter</legend>
|
<legend>Newsletter</legend>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<form novalidate [formGroup]="form" (ngSubmit)="onSubmit(form)">
|
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<input type="checkbox" id="enable" formControlName="enabled">
|
<input type="checkbox" id="enabled" [(ngModel)]="settings.enabled" ng-checked="settings.enabled"><label for="enabled">Enable</label>
|
||||||
<label for="enable">Enabled</label>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="checkbox">
|
|
||||||
<input type="checkbox" id="enabled" [(ngModel)]="template.enabled" ng-checked="template.enabled">
|
|
||||||
<label for="enabled">Enable</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group" *ngIf="showSubject">
|
|
||||||
<label class="control-label">Subject</label>
|
<label class="control-label">Subject</label>
|
||||||
<div>
|
<div>
|
||||||
<input type="text" class="form-control form-control-custom" [(ngModel)]="template.subject" value="{{template.subject}}">
|
<input type="text" class="form-control form-control-custom" [(ngModel)]="settings.notificationTemplate.subject" value="{{settings.notificationTemplate.subject}}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label">Message</label>
|
<label class="control-label">Message</label>
|
||||||
<div>
|
<div>
|
||||||
<textarea type="text" class="form-control form-control-custom" [(ngModel)]="template.message" value="{{template.message}}"></textarea>
|
<textarea type="text" class="form-control form-control-custom" [(ngModel)]="settings.notificationTemplate.message" value="{{settings.notificationTemplate.message}}"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div>
|
<div>
|
||||||
<button [disabled]="form.invalid" type="submit" id="save" class="btn btn-primary-outline">Submit</button>
|
<button type="submit" id="save" (click)="onSubmit()" class="btn btn-primary-outline">Submit</button>
|
||||||
<button [disabled]="form.invalid" type="button" (click)="updateDatabase()" class="btn btn-info-outline" tooltipPosition="top" pTooltip="I reccomend running this with a fresh Ombi install, this will set all the current *found* content to have been sent via Newsletter,
|
<button type="button" (click)="test()" class="btn btn-danger-outline">Test</button>
|
||||||
if you do not do this then eventhing that Ombi has found in your libraries will go out on the first email!">Update Database</button>
|
<button type="button" (click)="updateDatabase()" class="btn btn-info-outline" tooltipPosition="top" pTooltip="I recommend running this with a fresh Ombi install, this will set all the current *found* content to have been sent via Newsletter,
|
||||||
|
if you do not do this then everything that Ombi has found in your libraries will go out on the first email!">Update Database</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
import { Component, OnInit } from "@angular/core";
|
import { TesterService } from './../../services/applications/tester.service';
|
||||||
import { FormBuilder, FormGroup } from "@angular/forms";
|
import { Component, OnInit } from "@angular/core";
|
||||||
|
|
||||||
import { INewsletterNotificationSettings, INotificationTemplates, NotificationType } from "../../interfaces";
|
import { INewsletterNotificationSettings, NotificationType } from "../../interfaces";
|
||||||
import { TesterService } from "../../services";
|
|
||||||
import { NotificationService } from "../../services";
|
import { NotificationService } from "../../services";
|
||||||
import { SettingsService } from "../../services";
|
import { SettingsService } from "../../services";
|
||||||
|
|
||||||
|
@ -12,21 +11,15 @@ import { SettingsService } from "../../services";
|
||||||
export class NewsletterComponent implements OnInit {
|
export class NewsletterComponent implements OnInit {
|
||||||
|
|
||||||
public NotificationType = NotificationType;
|
public NotificationType = NotificationType;
|
||||||
public template: INotificationTemplates;
|
public settings: INewsletterNotificationSettings;
|
||||||
public form: FormGroup;
|
|
||||||
|
|
||||||
constructor(private settingsService: SettingsService,
|
constructor(private settingsService: SettingsService,
|
||||||
private notificationService: NotificationService,
|
private notificationService: NotificationService,
|
||||||
private fb: FormBuilder,
|
private testService: TesterService) { }
|
||||||
private testerService: TesterService) { }
|
|
||||||
|
|
||||||
public ngOnInit() {
|
public ngOnInit() {
|
||||||
this.settingsService.getNewsletterSettings().subscribe(x => {
|
this.settingsService.getNewsletterSettings().subscribe(x => {
|
||||||
this.template = x.notificationTemplate;
|
this.settings = x;
|
||||||
|
|
||||||
this.form = this.fb.group({
|
|
||||||
enabled: [x.enabled],
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,16 +27,12 @@ export class NewsletterComponent implements OnInit {
|
||||||
this.settingsService.updateNewsletterDatabase().subscribe();
|
this.settingsService.updateNewsletterDatabase().subscribe();
|
||||||
}
|
}
|
||||||
|
|
||||||
public onSubmit(form: FormGroup) {
|
public test() {
|
||||||
if (form.invalid) {
|
this.testService.testNewsletter(this.settings).subscribe();
|
||||||
this.notificationService.error("Please check your entered values");
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const settings = <INewsletterNotificationSettings>form.value;
|
public onSubmit() {
|
||||||
settings.notificationTemplate = this.template;
|
this.settingsService.saveNewsletterSettings(this.settings).subscribe(x => {
|
||||||
|
|
||||||
this.settingsService.saveNewsletterSettings(settings).subscribe(x => {
|
|
||||||
if (x) {
|
if (x) {
|
||||||
this.notificationService.success("Successfully saved the Newsletter settings");
|
this.notificationService.success("Successfully saved the Newsletter settings");
|
||||||
} else {
|
} else {
|
||||||
|
@ -52,20 +41,4 @@ export class NewsletterComponent implements OnInit {
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public test(form: FormGroup) {
|
|
||||||
if (form.invalid) {
|
|
||||||
this.notificationService.error("Please check your entered values");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.testerService.discordTest(form.value).subscribe(x => {
|
|
||||||
if (x) {
|
|
||||||
this.notificationService.success("Successfully sent a Discord message, please check the discord channel");
|
|
||||||
} else {
|
|
||||||
this.notificationService.error("There was an error when sending the Discord message. Please check your settings");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,12 +10,14 @@ using Ombi.Api.Radarr;
|
||||||
using Ombi.Api.SickRage;
|
using Ombi.Api.SickRage;
|
||||||
using Ombi.Api.Sonarr;
|
using Ombi.Api.Sonarr;
|
||||||
using Ombi.Attributes;
|
using Ombi.Attributes;
|
||||||
|
using Ombi.Core.Models.UI;
|
||||||
using Ombi.Core.Notifications;
|
using Ombi.Core.Notifications;
|
||||||
using Ombi.Core.Settings.Models.External;
|
using Ombi.Core.Settings.Models.External;
|
||||||
using Ombi.Helpers;
|
using Ombi.Helpers;
|
||||||
using Ombi.Notifications;
|
using Ombi.Notifications;
|
||||||
using Ombi.Notifications.Agents;
|
using Ombi.Notifications.Agents;
|
||||||
using Ombi.Notifications.Models;
|
using Ombi.Notifications.Models;
|
||||||
|
using Ombi.Schedule.Jobs.Ombi;
|
||||||
using Ombi.Settings.Settings.Models.External;
|
using Ombi.Settings.Settings.Models.External;
|
||||||
using Ombi.Settings.Settings.Models.Notifications;
|
using Ombi.Settings.Settings.Models.Notifications;
|
||||||
|
|
||||||
|
@ -35,7 +37,7 @@ namespace Ombi.Controllers.External
|
||||||
public TesterController(INotificationService service, IDiscordNotification notification, IEmailNotification emailN,
|
public TesterController(INotificationService service, IDiscordNotification notification, IEmailNotification emailN,
|
||||||
IPushbulletNotification pushbullet, ISlackNotification slack, IPushoverNotification po, IMattermostNotification mm,
|
IPushbulletNotification pushbullet, ISlackNotification slack, IPushoverNotification po, IMattermostNotification mm,
|
||||||
IPlexApi plex, IEmbyApi emby, IRadarrApi radarr, ISonarrApi sonarr, ILogger<TesterController> log, IEmailProvider provider,
|
IPlexApi plex, IEmbyApi emby, IRadarrApi radarr, ISonarrApi sonarr, ILogger<TesterController> log, IEmailProvider provider,
|
||||||
ICouchPotatoApi cpApi, ITelegramNotification telegram, ISickRageApi srApi)
|
ICouchPotatoApi cpApi, ITelegramNotification telegram, ISickRageApi srApi, INewsletterJob newsletter)
|
||||||
{
|
{
|
||||||
Service = service;
|
Service = service;
|
||||||
DiscordNotification = notification;
|
DiscordNotification = notification;
|
||||||
|
@ -53,6 +55,7 @@ namespace Ombi.Controllers.External
|
||||||
CouchPotatoApi = cpApi;
|
CouchPotatoApi = cpApi;
|
||||||
TelegramNotification = telegram;
|
TelegramNotification = telegram;
|
||||||
SickRageApi = srApi;
|
SickRageApi = srApi;
|
||||||
|
Newsletter = newsletter;
|
||||||
}
|
}
|
||||||
|
|
||||||
private INotificationService Service { get; }
|
private INotificationService Service { get; }
|
||||||
|
@ -71,6 +74,7 @@ namespace Ombi.Controllers.External
|
||||||
private IEmailProvider EmailProvider { get; }
|
private IEmailProvider EmailProvider { get; }
|
||||||
private ITelegramNotification TelegramNotification { get; }
|
private ITelegramNotification TelegramNotification { get; }
|
||||||
private ISickRageApi SickRageApi { get; }
|
private ISickRageApi SickRageApi { get; }
|
||||||
|
private INewsletterJob Newsletter { get; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -368,5 +372,21 @@ namespace Ombi.Controllers.External
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpPost("newsletter")]
|
||||||
|
public async Task<bool> NewsletterTest([FromBody] NewsletterNotificationViewModel settings)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
settings.Enabled = true;
|
||||||
|
await Newsletter.Start(settings, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Log.LogError(LoggingEvents.Api, e, "Could not test Newsletter");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -71,6 +71,7 @@ namespace Ombi.Controllers
|
||||||
_radarrSync = radarrSync;
|
_radarrSync = radarrSync;
|
||||||
_cache = memCache;
|
_cache = memCache;
|
||||||
_githubApi = githubApi;
|
_githubApi = githubApi;
|
||||||
|
_recentlyAdded = engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ISettingsResolver SettingsResolver { get; }
|
private ISettingsResolver SettingsResolver { get; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue