コード例 #1
0
ファイル: PeriodicalMapper.cs プロジェクト: inshapardaz/api
 public static PeriodicalView Map(this PeriodicalModel source)
 => source == null ? null : new PeriodicalView
 {
     Id          = source.Id,
     Title       = source.Title,
     Description = source.Description,
     IssueCount  = source.IssueCount
 };
コード例 #2
0
 public async Task UpdatePeriodical(int libraryId, PeriodicalModel periodical, CancellationToken cancellationToken)
 {
     using (var connection = _connectionProvider.GetConnection())
     {
         var sql       = @"Update Periodical
                     Set Title = @Title, Description = @Description, CategoryId = @CategoryId
                     Where Id = @Id AND LibraryId = @LibraryId";
         var parameter = new
         {
             Id          = periodical.Id,
             LibraryId   = libraryId,
             Title       = periodical.Title,
             Description = periodical.Description,
             CategoryId  = periodical.CategoryId,
         };
         var command = new CommandDefinition(sql, parameter, cancellationToken: cancellationToken);
         await connection.ExecuteScalarAsync <int>(command);
     }
 }
コード例 #3
0
        public async Task <PeriodicalModel> AddPeriodical(int libraryId, PeriodicalModel periodical, CancellationToken cancellationToken)
        {
            int id;

            using (var connection = _connectionProvider.GetConnection())
            {
                var sql       = "Insert Into Periodical (Title, [Description], CategoryId, ImageId, LibraryId) Output Inserted.Id Values (@Title, @Description, @CategoryId, @ImageId, @LibraryId)";
                var parameter = new
                {
                    LibraryId   = libraryId,
                    Title       = periodical.Title,
                    Description = periodical.Description,
                    CategoryId  = periodical.CategoryId,
                    ImageId     = periodical.ImageId,
                };
                var command = new CommandDefinition(sql, parameter, cancellationToken: cancellationToken);
                id = await connection.ExecuteScalarAsync <int>(command);
            }

            return(await GetPeriodicalById(libraryId, id, cancellationToken));
        }
コード例 #4
0
        public ActionResult Edit(PeriodicalModel model)
        {
            if (model.UploadImage != null)
            {
                string filePath = System.IO.Path.GetFileName(model.UploadImage.FileName);

                model.UploadImage.SaveAs(Server.MapPath("~/Images/" + filePath));
                model.ImageName = filePath;
            }

            if (!ModelState.IsValid)
            {
                DataForDropDown();

                return(View(model));
            }

            var modelBL = _mapper.Map <PeriodicalBL>(model);

            _periodical.Update(modelBL);

            return(RedirectToAction("Index"));
        }
コード例 #5
0
ファイル: PeriodicalRenderer.cs プロジェクト: inshapardaz/api
        public PeriodicalView Render(PeriodicalModel source, int libraryId)
        {
            var result = source.Map();

            var links = new List <LinkView>
            {
                _linkRenderer.Render(new Link
                {
                    ActionName = nameof(PeriodicalController.GetPeriodicalById),
                    Method     = HttpMethod.Get,
                    Rel        = RelTypes.Self,
                    Parameters = new { libraryId = libraryId, periodicalId = source.Id }
                }),
                _linkRenderer.Render(new Link
                {
                    ActionName  = nameof(IssueController.GetIssues),
                    Method      = HttpMethod.Get,
                    Rel         = RelTypes.Issues,
                    Parameters  = new { libraryId = libraryId, periodicalId = source.Id },
                    QueryString = new Dictionary <string, string>
                    {
                        { "authorid", source.Id.ToString() }
                    }
                })
            };

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

            if (_userHelper.IsWriter(libraryId) || _userHelper.IsAdmin || _userHelper.IsLibraryAdmin(libraryId))
            {
                links.Add(_linkRenderer.Render(new Link
                {
                    ActionName = nameof(PeriodicalController.UpdatePeriodical),
                    Method     = HttpMethod.Put,
                    Rel        = RelTypes.Update,
                    Parameters = new { libraryId = libraryId, periodicalId = source.Id }
                }));

                links.Add(_linkRenderer.Render(new Link
                {
                    ActionName = nameof(PeriodicalController.DeletePeriodical),
                    Method     = HttpMethod.Delete,
                    Rel        = RelTypes.Delete,
                    Parameters = new { libraryId = libraryId, periodicalId = source.Id }
                }));

                links.Add(_linkRenderer.Render(new Link
                {
                    ActionName = nameof(IssueController.CreateIssue),
                    Method     = HttpMethod.Post,
                    Rel        = RelTypes.CreateIssue,
                    Parameters = new { libraryId = libraryId, periodicalId = source.Id }
                }));

                links.Add(_linkRenderer.Render(new Link
                {
                    ActionName = nameof(PeriodicalController.UpdatePeriodicalImage),
                    Method     = HttpMethod.Put,
                    Rel        = RelTypes.ImageUpload,
                    Parameters = new { libraryId = libraryId, periodicalId = source.Id }
                }));
            }

            result.Links = links;
            return(result);
        }
コード例 #6
0
        public ActionResult Delete(PeriodicalModel model)
        {
            _periodical.Remove(model.Id);

            return(RedirectToAction("Index"));
        }