Beispiel #1
0
        public SeriesView Render(SeriesModel series, int libraryId)
        {
            var view = series.Map();

            view.Links.Add(_linkRenderer.Render(new Link
            {
                ActionName = nameof(SeriesController.GetSeriesById),
                Method     = HttpMethod.Get,
                Rel        = RelTypes.Self,
                Parameters = new { libraryId = libraryId, seriesId = series.Id }
            }));

            view.Links.Add(_linkRenderer.Render(new Link
            {
                ActionName  = nameof(BookController.GetBooks),
                Method      = HttpMethod.Get,
                Rel         = RelTypes.Books,
                Parameters  = new { libraryId = libraryId },
                QueryString = new Dictionary <string, string>
                {
                    { "seriesid", series.Id.ToString() }
                }
            }));

            if (!string.IsNullOrWhiteSpace(series.ImageUrl) && _fileStorage.SupportsPublicLink)
            {
                view.Links.Add(new LinkView {
                    Href   = _fileStorage.GetPublicUrl(series.ImageUrl),
                    Method = "GET",
                    Rel    = RelTypes.Image,
                    Accept = MimeTypes.Jpg
                });
            }
            else if (series.ImageId.HasValue)
            {
                view.Links.Add(_linkRenderer.Render(new Link
                {
                    ActionName = nameof(FileController.GetFile),
                    Method     = HttpMethod.Get,
                    Rel        = RelTypes.Image,
                    Parameters = new { fileId = series.ImageId.Value }
                }));
            }

            if (_userHelper.IsWriter(libraryId) || _userHelper.IsLibraryAdmin(libraryId) || _userHelper.IsAdmin)
            {
                view.Links.Add(_linkRenderer.Render(new Link
                {
                    ActionName = nameof(SeriesController.UpdateSeries),
                    Method     = HttpMethod.Put,
                    Rel        = RelTypes.Update,
                    Parameters = new { libraryId = libraryId, seriesId = series.Id }
                }));

                view.Links.Add(_linkRenderer.Render(new Link
                {
                    ActionName = nameof(SeriesController.DeleteSeries),
                    Method     = HttpMethod.Delete,
                    Rel        = RelTypes.Delete,
                    Parameters = new { libraryId = libraryId, seriesId = series.Id }
                }));

                view.Links.Add(_linkRenderer.Render(new Link
                {
                    ActionName = nameof(SeriesController.UpdateSeriesImage),
                    Method     = HttpMethod.Put,
                    Rel        = RelTypes.ImageUpload,
                    Parameters = new { libraryId = libraryId, seriesId = series.Id }
                }));
            }

            return(view);
        }