diff --git a/src/.idea/.idea.NzbDrone/.idea/contentModel.xml b/src/.idea/.idea.NzbDrone/.idea/contentModel.xml index cdf041d4b..52b29c10d 100644 --- a/src/.idea/.idea.NzbDrone/.idea/contentModel.xml +++ b/src/.idea/.idea.NzbDrone/.idea/contentModel.xml @@ -1,24 +1,21 @@ - + - - - + + + - - - - - - - + + + + - + @@ -70,10 +67,10 @@ - - - - + + + + @@ -578,17 +575,6 @@ - - - - - - - - - - - @@ -614,6 +600,10 @@ + + + + @@ -670,14 +660,23 @@ + + + + + + + - + + + @@ -755,22 +754,7 @@ - - - - - - - - - - - - - - - @@ -801,9 +785,7 @@ - - @@ -1154,6 +1136,7 @@ + @@ -1174,23 +1157,6 @@ - - - - - - - - - - - - - - - - - @@ -1361,6 +1327,8 @@ + + @@ -1393,13 +1361,11 @@ - - @@ -1414,16 +1380,12 @@ - + - - - - - + @@ -1633,7 +1595,6 @@ - @@ -1662,7 +1623,6 @@ - @@ -1767,18 +1727,17 @@ - - + - + @@ -1911,25 +1870,13 @@ - - - - - - - - - - - - @@ -1976,52 +1923,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2031,9 +1939,6 @@ - - - @@ -2050,17 +1955,40 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -2096,9 +2024,7 @@ - - @@ -2109,7 +2035,7 @@ - + @@ -2129,17 +2055,40 @@ + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2403,12 +2352,9 @@ - - - @@ -2491,12 +2437,6 @@ - - - - - - @@ -2520,63 +2460,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2612,9 +2495,6 @@ - - - @@ -2635,16 +2515,6 @@ - - - - - - - - - - @@ -2684,14 +2554,12 @@ - - - + @@ -2704,9 +2572,8 @@ - - + @@ -2908,11 +2775,10 @@ - - + @@ -2923,9 +2789,7 @@ - - @@ -2958,7 +2822,6 @@ - @@ -2994,18 +2857,6 @@ - - - - - - - - - - - - @@ -3016,7 +2867,19 @@ - + + + + + + + + + + + + + @@ -3040,12 +2903,26 @@ - + + + + + + + + + + + + + + + @@ -3068,35 +2945,23 @@ - - - - - - - - - - - - - + @@ -3106,7 +2971,6 @@ - @@ -3148,46 +3012,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3207,6 +3037,7 @@ + @@ -3243,18 +3074,17 @@ - - + + + + - - - @@ -3262,11 +3092,10 @@ - + - @@ -3448,7 +3277,7 @@ - + @@ -3460,7 +3289,7 @@ - + diff --git a/src/NzbDrone.Api/Calendar/CalendarFeedModule.cs b/src/NzbDrone.Api/Calendar/CalendarFeedModule.cs index 11497f05e..aae8630a2 100644 --- a/src/NzbDrone.Api/Calendar/CalendarFeedModule.cs +++ b/src/NzbDrone.Api/Calendar/CalendarFeedModule.cs @@ -98,44 +98,8 @@ namespace NzbDrone.Api.Calendar continue; } - var occurrence = calendar.Create(); - occurrence.Uid = "NzbDrone_movie_" + movie.Id; - occurrence.Status = movie.HasFile ? EventStatus.Confirmed : EventStatus.Tentative; - - switch (movie.Status) - { - case MovieStatusType.PreDB: - if (movie.PhysicalRelease != null) - { - occurrence.Start = new CalDateTime(movie.PhysicalRelease.Value) { HasTime = true }; - occurrence.End = new CalDateTime(movie.PhysicalRelease.Value.AddMinutes(movie.Runtime)) { HasTime = true }; - } - break; - - case MovieStatusType.InCinemas: - if (movie.InCinemas != null) - { - occurrence.Start = new CalDateTime(movie.InCinemas.Value) { HasTime = true }; - occurrence.End = new CalDateTime(movie.InCinemas.Value.AddMinutes(movie.Runtime)) { HasTime = true }; - } - break; - - case MovieStatusType.Announced: - continue; // no date - - default: - if (movie.PhysicalRelease != null) - { - occurrence.Start = new CalDateTime(movie.PhysicalRelease.Value) { HasTime = true }; - occurrence.End = new CalDateTime(movie.PhysicalRelease.Value.AddMinutes(movie.Runtime)) { HasTime = true }; - } - break; - } - - occurrence.Description = movie.Overview; - occurrence.Categories = new List() { movie.Studio }; - - occurrence.Summary = $"{movie.Title}"; + CreateEvent(calendar, movie, true); + CreateEvent(calendar, movie, false); } @@ -144,5 +108,30 @@ namespace NzbDrone.Api.Calendar return new TextResponse(icalendar, "text/calendar"); } + + private void CreateEvent(Ical.Net.Calendar calendar, Movie movie, bool cinemasRelease) + { + var date = cinemasRelease ? movie.InCinemas : movie.PhysicalRelease; + if (!date.HasValue) + { + return; + } + + var occurrence = calendar.Create(); + occurrence.Uid = "NzbDrone_movie_" + movie.Id + (cinemasRelease ? "_cinemas" : "_physical"); + occurrence.Status = movie.Status == MovieStatusType.Announced ? EventStatus.Tentative : EventStatus.Confirmed; + + occurrence.Start = new CalDateTime(date.Value); + occurrence.End = occurrence.Start; + occurrence.IsAllDay = true; + + occurrence.Description = movie.Overview; + occurrence.Categories = new List() { movie.Studio }; + + var physicalText = movie.PhysicalReleaseNote.IsNotNullOrWhiteSpace() + ? $"(Physical Release, {movie.PhysicalReleaseNote})" + : "(Physical Release)"; + occurrence.Summary = $"{movie.Title} " + (cinemasRelease ? "(Theatrical Release)" : physicalText); + } } }