Added front-end ReactApp, with basic CRUD functionality for Bookmark entries
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
using AutoMapper;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.JsonPatch;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Net;
|
||||
using YABA.API.ViewModels.Bookmarks;
|
||||
@ -9,8 +10,10 @@ using YABA.Service.Interfaces;
|
||||
|
||||
namespace YABA.API.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[ApiVersion("1")]
|
||||
[Authorize, Route("api/v{version:apiVersion}/[controller]")]
|
||||
[Authorize]
|
||||
[Route("api/v{version:apiVersion}/[controller]")]
|
||||
public class BookmarksController : ControllerBase
|
||||
{
|
||||
private readonly IMapper _mapper;
|
||||
@ -55,7 +58,6 @@ namespace YABA.API.Controllers
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> UpdateBookmark(int id, [FromBody] UpdateBookmarkRequestDTO request)
|
||||
{
|
||||
// TODO: Add support for HTTP PATCH
|
||||
var result = await _bookmarkService.UpdateBookmark(id, request);
|
||||
|
||||
if (result == null) return NotFound();
|
||||
@ -63,11 +65,32 @@ namespace YABA.API.Controllers
|
||||
return Ok(_mapper.Map<BookmarkResponse>(result));
|
||||
}
|
||||
|
||||
[HttpPatch("{id}")]
|
||||
[ProducesResponseType(typeof(BookmarkResponse), (int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> PatchBookmark(int id, [FromBody] JsonPatchDocument<PatchBookmarkRequest> request)
|
||||
{
|
||||
if (request == null || !ModelState.IsValid) return BadRequest(ModelState);
|
||||
|
||||
var entryToEdit = await _bookmarkService.Get(id);
|
||||
if(entryToEdit == null) return NotFound();
|
||||
|
||||
var entryToEditAsPatchRequest = _mapper.Map<PatchBookmarkRequest>(entryToEdit);
|
||||
request.ApplyTo(entryToEditAsPatchRequest, ModelState);
|
||||
|
||||
var updateRequest = _mapper.Map<UpdateBookmarkRequestDTO>(entryToEditAsPatchRequest);
|
||||
var result = await _bookmarkService.UpdateBookmark(id, updateRequest);
|
||||
|
||||
if (result == null) return NotFound();
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[ProducesResponseType(typeof(IEnumerable<BookmarkResponse>), (int)HttpStatusCode.OK)]
|
||||
public IActionResult GetAll()
|
||||
public IActionResult GetAll(bool isHidden = false)
|
||||
{
|
||||
var result = _bookmarkService.GetAll();
|
||||
var result = _bookmarkService.GetAll(isHidden);
|
||||
return Ok(_mapper.Map<IEnumerable<BookmarkResponse>>(result));
|
||||
}
|
||||
|
||||
@ -110,6 +133,7 @@ namespace YABA.API.Controllers
|
||||
[HttpDelete]
|
||||
[ProducesResponseType((int)HttpStatusCode.NoContent)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest)]
|
||||
public async Task<IActionResult> DeleteBookmarks([FromBody] DeleteBookmarksRequest request)
|
||||
{
|
||||
if (request.Ids == null || !request.Ids.Any()) return BadRequest();
|
||||
@ -120,5 +144,21 @@ namespace YABA.API.Controllers
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[HttpPost("Hide")]
|
||||
[ProducesResponseType((int)HttpStatusCode.NoContent)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest)]
|
||||
public async Task<IActionResult> HideBookmarks([FromBody] HideBookmarksRequest request)
|
||||
{
|
||||
if (request.Ids == null || !request.Ids.Any()) return BadRequest();
|
||||
|
||||
var result = await _bookmarkService.HideBookmarks(request.Ids);
|
||||
|
||||
if (result == null) return NotFound();
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user