blog tags api

This commit is contained in:
Paul Schneider 2017-09-20 13:07:13 +02:00
commit 71c16c1436
4 changed files with 161 additions and 8 deletions

View file

@ -0,0 +1,148 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc;
using Microsoft.Data.Entity;
using Yavsc.Models;
using Yavsc.Models.Relationship;
namespace Yavsc.Controllers
{
[Produces("application/json")]
[Route("api/blogtags")]
public class BlogTagsApiController : Controller
{
private ApplicationDbContext _context;
public BlogTagsApiController(ApplicationDbContext context)
{
_context = context;
}
// GET: api/BlogTagsApi
[HttpGet]
public IEnumerable<BlogTag> GetTagsDomain()
{
return _context.TagsDomain;
}
// GET: api/BlogTagsApi/5
[HttpGet("{id}", Name = "GetBlogTag")]
public async Task<IActionResult> GetBlogTag([FromRoute] long id)
{
if (!ModelState.IsValid)
{
return HttpBadRequest(ModelState);
}
BlogTag blogTag = await _context.TagsDomain.SingleAsync(m => m.PostId == id);
if (blogTag == null)
{
return HttpNotFound();
}
return Ok(blogTag);
}
// PUT: api/BlogTagsApi/5
[HttpPut("{id}")]
public async Task<IActionResult> PutBlogTag([FromRoute] long id, [FromBody] BlogTag blogTag)
{
if (!ModelState.IsValid)
{
return HttpBadRequest(ModelState);
}
if (id != blogTag.PostId)
{
return HttpBadRequest();
}
_context.Entry(blogTag).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!BlogTagExists(id))
{
return HttpNotFound();
}
else
{
throw;
}
}
return new HttpStatusCodeResult(StatusCodes.Status204NoContent);
}
// POST: api/BlogTagsApi
[HttpPost]
public async Task<IActionResult> PostBlogTag([FromBody] BlogTag blogTag)
{
if (!ModelState.IsValid)
{
return HttpBadRequest(ModelState);
}
_context.TagsDomain.Add(blogTag);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (BlogTagExists(blogTag.PostId))
{
return new HttpStatusCodeResult(StatusCodes.Status409Conflict);
}
else
{
throw;
}
}
return CreatedAtRoute("GetBlogTag", new { id = blogTag.PostId }, blogTag);
}
// DELETE: api/BlogTagsApi/5
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteBlogTag([FromRoute] long id)
{
if (!ModelState.IsValid)
{
return HttpBadRequest(ModelState);
}
BlogTag blogTag = await _context.TagsDomain.SingleAsync(m => m.PostId == id);
if (blogTag == null)
{
return HttpNotFound();
}
_context.TagsDomain.Remove(blogTag);
await _context.SaveChangesAsync();
return Ok(blogTag);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
_context.Dispose();
}
base.Dispose(disposing);
}
private bool BlogTagExists(long id)
{
return _context.TagsDomain.Count(e => e.PostId == id) > 0;
}
}
}

View file

@ -23,7 +23,7 @@ namespace Yavsc.Controllers
// GET: api/PostTagsApi
[HttpGet]
public IEnumerable<PostTag> GetTagsDomain()
public IEnumerable<BlogTag> GetTagsDomain()
{
return _context.TagsDomain;
}
@ -37,7 +37,7 @@ namespace Yavsc.Controllers
return HttpBadRequest(ModelState);
}
PostTag postTag = _context.TagsDomain.Single(m => m.PostId == id);
BlogTag postTag = _context.TagsDomain.Single(m => m.PostId == id);
if (postTag == null)
{
@ -49,7 +49,7 @@ namespace Yavsc.Controllers
// PUT: api/PostTagsApi/5
[HttpPut("{id}")]
public IActionResult PutPostTag(long id, [FromBody] PostTag postTag)
public IActionResult PutPostTag(long id, [FromBody] BlogTag postTag)
{
if (!ModelState.IsValid)
{
@ -84,7 +84,7 @@ namespace Yavsc.Controllers
// POST: api/PostTagsApi
[HttpPost]
public IActionResult PostPostTag([FromBody] PostTag postTag)
public IActionResult PostPostTag([FromBody] BlogTag postTag)
{
if (!ModelState.IsValid)
{
@ -120,7 +120,7 @@ namespace Yavsc.Controllers
return HttpBadRequest(ModelState);
}
PostTag postTag = _context.TagsDomain.Single(m => m.PostId == id);
BlogTag postTag = _context.TagsDomain.Single(m => m.PostId == id);
if (postTag == null)
{
return HttpNotFound();