diff --git a/build.cake b/build.cake
index e8e4bb8c0..07a20587f 100644
--- a/build.cake
+++ b/build.cake
@@ -81,9 +81,9 @@ Task("SetVersionInfo")
versionInfo = GitVersion(settings);
- Information("GitResults -> {0}", versionInfo.Dump());
+// Information("GitResults -> {0}", versionInfo.Dump());
- Information(@"Build:{0}",AppVeyor.Environment.Build.Dump());
+//Information(@"Build:{0}",AppVeyor.Environment.Build.Dump());
var buildVersion = string.Empty;
if(string.IsNullOrEmpty(AppVeyor.Environment.Build.Version))
diff --git a/src/Ombi.Core/Rule/Rules/Search/AvailabilityRuleHelper.cs b/src/Ombi.Core/Rule/Rules/Search/AvailabilityRuleHelper.cs
index dd4f6c918..ab1a0af98 100644
--- a/src/Ombi.Core/Rule/Rules/Search/AvailabilityRuleHelper.cs
+++ b/src/Ombi.Core/Rule/Rules/Search/AvailabilityRuleHelper.cs
@@ -24,7 +24,7 @@ namespace Ombi.Core.Rule.Rules.Search
if (!airedButNotAvailable)
{
var unairedEpisodes = search.SeasonRequests.Any(x =>
- x.Episodes.Any(c => !c.Available && c.AirDate > DateTime.Now.Date && c.AirDate != DateTime.MinValue));
+ x.Episodes.Any(c => !c.Available && c.AirDate > DateTime.Now.Date || c.AirDate != DateTime.MinValue));
if (unairedEpisodes)
{
search.FullyAvailable = true;
diff --git a/src/Ombi.Store/Ombi.Store.csproj b/src/Ombi.Store/Ombi.Store.csproj
index 31c69c8d8..8dfcc1c28 100644
--- a/src/Ombi.Store/Ombi.Store.csproj
+++ b/src/Ombi.Store/Ombi.Store.csproj
@@ -15,6 +15,7 @@
+
diff --git a/src/Ombi.Store/Repository/BaseRepository.cs b/src/Ombi.Store/Repository/BaseRepository.cs
index efd277f43..21dd2dac5 100644
--- a/src/Ombi.Store/Repository/BaseRepository.cs
+++ b/src/Ombi.Store/Repository/BaseRepository.cs
@@ -5,6 +5,7 @@ using System.Linq.Expressions;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Query;
+using Nito.AsyncEx;
using Ombi.Store.Context;
using Ombi.Store.Entities;
@@ -19,6 +20,7 @@ namespace Ombi.Store.Repository
}
public DbSet _db { get; }
private readonly U _ctx;
+ private readonly AsyncLock _mutex = new AsyncLock();
public async Task Find(object key)
{
@@ -40,32 +42,32 @@ namespace Ombi.Store.Repository
_db.AddRange(content);
if (save)
{
- await SaveChangesAsync();
+ await InternalSaveChanges();
}
}
public async Task Add(T content)
{
await _db.AddAsync(content);
- await SaveChangesAsync();
+ await InternalSaveChanges();
return content;
}
public async Task Delete(T request)
{
_db.Remove(request);
- await SaveChangesAsync();
+ await InternalSaveChanges();
}
public async Task DeleteRange(IEnumerable req)
{
_db.RemoveRange(req);
- await SaveChangesAsync();
+ await InternalSaveChanges();
}
public async Task SaveChangesAsync()
{
- return await _ctx.SaveChangesAsync();
+ return await InternalSaveChanges();
}
public IIncludableQueryable Include(
@@ -79,6 +81,14 @@ namespace Ombi.Store.Repository
{
await _ctx.Database.ExecuteSqlCommandAsync(sql);
}
+
+ private async Task InternalSaveChanges()
+ {
+ using (await _mutex.LockAsync())
+ {
+ return await _ctx.SaveChangesAsync();
+ }
+ }
private bool _disposed;
diff --git a/src/Ombi/wwwroot/translations/de.json b/src/Ombi/wwwroot/translations/de.json
index 592d69f9c..b3e93f306 100644
--- a/src/Ombi/wwwroot/translations/de.json
+++ b/src/Ombi/wwwroot/translations/de.json
@@ -13,7 +13,7 @@
"ContinueButton": "Weiter",
"Available": "Verfügbar",
"PartiallyAvailable": "Teilweise verfügbar",
- "Monitored": "Monitored",
+ "Monitored": "Überwacht",
"NotAvailable": "Nicht verfügbar",
"ProcessingRequest": "Anfrage wird bearbeitet",
"PendingApproval": "Genehmigung ausstehend",
@@ -68,13 +68,13 @@
"MusicTab": "Musik",
"Suggestions": "Vorschläge",
"NoResults": "Es tut uns leid, wir haben keine Ergebnisse gefunden!",
- "DigitalDate": "Digital Release: {{date}}",
+ "DigitalDate": "Veröffentlichung der digitalen Version: {{date}}",
"TheatricalRelease": "Kinostart: {{date}}",
"ViewOnPlex": "In Plex anschauen",
"ViewOnEmby": "In Emby anschauen",
"RequestAdded": "Anfrage für {{title}} wurde erfolgreich hinzugefügt",
"Similar": "Ähnliche",
- "Refine": "Refine",
+ "Refine": "Auswahl verfeinern",
"Movies": {
"PopularMovies": "Beliebte Filme",
"UpcomingMovies": "Kommende Filme",
@@ -112,7 +112,7 @@
"TheatricalRelease": "Kinostart: {{date}}",
"ReleaseDate": "Veröffentlicht: {{date}}",
"TheatricalReleaseSort": "Kinostart",
- "DigitalRelease": "Digital Release: {{date}}",
+ "DigitalRelease": "Veröffentlichung der digitalen Version: {{date}}",
"RequestDate": "Datum der Anfrage:",
"QualityOverride": "Qualitäts Überschreiben:",
"RootFolderOverride": "Stammverzeichnis Überschreiben:",
@@ -132,16 +132,16 @@
"SeasonNumberHeading": "Staffel: {seasonNumber}",
"SortTitleAsc": "Titel ▲",
"SortTitleDesc": "Titel ▼",
- "SortRequestDateAsc": "Request Date ▲",
- "SortRequestDateDesc": "Request Date ▼",
+ "SortRequestDateAsc": "Datum der Anfrage ▲",
+ "SortRequestDateDesc": "Datum der Anfrage ▼",
"SortStatusAsc": "Status ▲",
"SortStatusDesc": "Status ▼",
"Remaining": {
"Quota": "{{remaining}}/{{total}} Anfragen verbleiben",
- "NextDays": "Another request will be added in {{time}} days",
- "NextHours": "Another request will be added in {{time}} hours",
- "NextMinutes": "Another request will be added in {{time}} minutes",
- "NextMinute": "Another request will be added in {{time}} minute"
+ "NextDays": "Eine weitere Anfrage wird in {{time}} Tagen hinzugefügt",
+ "NextHours": "Eine weitere Anfrage wird in {{time}} Stunden hinzugefügt",
+ "NextMinutes": "Eine weitere Anfrage wird in {{time}} Minuten hinzugefügt",
+ "NextMinute": "Eine weitere Anfrage wird in {{time}} Minute hinzugefügt"
}
},
"Issues": {
diff --git a/src/Ombi/wwwroot/translations/no.json b/src/Ombi/wwwroot/translations/no.json
index 93ed1342e..b65c9b53c 100644
--- a/src/Ombi/wwwroot/translations/no.json
+++ b/src/Ombi/wwwroot/translations/no.json
@@ -13,7 +13,7 @@
"ContinueButton": "Gå videre",
"Available": "Tilgjengelig",
"PartiallyAvailable": "Partially Available",
- "Monitored": "Monitored",
+ "Monitored": "Overvåket",
"NotAvailable": "Ikke tilgjengelig",
"ProcessingRequest": "Behandler forespørsel",
"PendingApproval": "Venter på godkjenning",
@@ -48,7 +48,7 @@
"Requests": "Forespørsler",
"UserManagement": "Brukeradministrasjon",
"Issues": "Mangler",
- "Vote": "Vote",
+ "Vote": "Stem",
"Donate": "Doner!",
"DonateLibraryMaintainer": "Doner til vedlikeholderen av biblioteket",
"DonateTooltip": "Dette er hvordan jeg overbevise min kone til å la meg bruke min fritid til å utvikle Ombi ;)",
@@ -58,14 +58,14 @@
"UpdateDetails": "Oppdater detaljer",
"Logout": "Logg av",
"OpenMobileApp": "Åpne mobilapp",
- "RecentlyAdded": "Recently Added"
+ "RecentlyAdded": "Nylig lagt til"
},
"Search": {
"Title": "Søk",
"Paragraph": "Vil du se noe som foreløpig ikke er tilgjengelig? Ikke noe problem, bare søk etter det nedenfor og be om det!",
"MoviesTab": "Filmer",
"TvTab": "TV serier",
- "MusicTab": "Music",
+ "MusicTab": "Musikk",
"Suggestions": "Forslag",
"NoResults": "Beklager, vi fant ingen resultater!",
"DigitalDate": "Digital utgivelse: {{date}}",
@@ -104,7 +104,7 @@
"Paragraph": "Nedenfor kan du se dine og alle andres forespørsler, du ser også status for nedlasting og godkjenning.",
"MoviesTab": "Filmer",
"TvTab": "TV serier",
- "MusicTab": "Music",
+ "MusicTab": "Musikk",
"RequestedBy": "Etterspurt av:",
"Status": "Status:",
"RequestStatus": "Status for forespørsel:",
@@ -128,10 +128,10 @@
"GridStatus": "Status",
"ReportIssue": "Rapportér en feil",
"Filter": "Filter",
- "Sort": "Sort",
+ "Sort": "Sorter",
"SeasonNumberHeading": "Sesong: {seasonNumber}",
- "SortTitleAsc": "Title ▲",
- "SortTitleDesc": "Title ▼",
+ "SortTitleAsc": "Tittel ▲",
+ "SortTitleDesc": "Tittel ▼",
"SortRequestDateAsc": "Request Date ▲",
"SortRequestDateDesc": "Request Date ▼",
"SortStatusAsc": "Status ▲",
@@ -168,18 +168,18 @@
"FilterHeaderAvailability": "Tilgjengelighet",
"FilterHeaderRequestStatus": "Status",
"Approved": "Godkjent",
- "PendingApproval": "Pending Approval"
+ "PendingApproval": "Venter på godkjenning"
},
"UserManagment": {
- "TvRemaining": "TV: {{remaining}}/{{total}} remaining",
- "MovieRemaining": "Movies: {{remaining}}/{{total}} remaining",
- "MusicRemaining": "Music: {{remaining}}/{{total}} remaining",
+ "TvRemaining": "TV: {{remaining}}/{{total}} gjenstående",
+ "MovieRemaining": "Filmer: {{remaining}}/{{total}} gjenstående",
+ "MusicRemaining": "Musikk: {{remaining}}/{{total}} gjenstående",
"TvDue": "TV: {{date}}",
- "MovieDue": "Movie: {{date}}",
- "MusicDue": "Music: {{date}}"
+ "MovieDue": "Film:{{date}}",
+ "MusicDue": "Musikk:{{date}}"
},
"Votes": {
- "CompletedVotesTab": "Voted",
+ "CompletedVotesTab": "Stemt",
"VotesTab": "Votes Needed"
}
}