71 lines
2.7 KiB
C#
71 lines
2.7 KiB
C#
using Bring2mind.InMemoriam.Common;
|
|
using Bring2mind.InMemoriam.Core.Models.Stories;
|
|
using Bring2mind.InMemoriam.Core.Repositories;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web.Http;
|
|
|
|
namespace Bring2mind.InMemoriam.Api
|
|
{
|
|
public class StoriesController : InMemoriamApiController
|
|
{
|
|
[HttpGet]
|
|
[InMemoriamAuthorize(SecurityAccessLevel.View)]
|
|
public HttpResponseMessage GetStories()
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.OK, StoryRepository.Instance.GetStories(ActiveModule.ModuleID).OrderByDescending(s => s.CreatedOnDate));
|
|
}
|
|
|
|
[HttpPost]
|
|
[InMemoriamAuthorize(SecurityAccessLevel.AddContent)]
|
|
public HttpResponseMessage EditStory(int id, [FromBody] string data)
|
|
{
|
|
var story = Newtonsoft.Json.JsonConvert.DeserializeObject<StoryBase>(data);
|
|
if (story == null || string.IsNullOrEmpty(story.Title.Trim()) || string.IsNullOrEmpty(story.Contents.Trim()))
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid story data");
|
|
}
|
|
if (id == -1)
|
|
{
|
|
story.ModuleId = ActiveModule.ModuleID;
|
|
story = StoryRepository.Instance.AddStory(story, UserInfo.UserID);
|
|
return Request.CreateResponse(HttpStatusCode.OK, StoryRepository.Instance.GetStory(ActiveModule.ModuleID, story.StoryId));
|
|
}
|
|
else
|
|
{
|
|
var originalStory = StoryRepository.Instance.GetStory(ActiveModule.ModuleID, id);
|
|
if (originalStory == null)
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.NotFound, "Story not found");
|
|
}
|
|
if (!this.InMemoriamModuleContext.Security.IsFamily && originalStory.CreatedByUserID != UserInfo.UserID)
|
|
{
|
|
return AccessViolation("You are not allowed to edit this story");
|
|
}
|
|
originalStory.ReadEditedStoryBase(story);
|
|
StoryRepository.Instance.UpdateStory(originalStory, UserInfo.UserID);
|
|
|
|
return Request.CreateResponse(HttpStatusCode.OK, StoryRepository.Instance.GetStory(ActiveModule.ModuleID, id));
|
|
}
|
|
}
|
|
|
|
[HttpPost]
|
|
[InMemoriamAuthorize(SecurityAccessLevel.AddContent)]
|
|
public HttpResponseMessage DeleteStory(int id)
|
|
{
|
|
var story = StoryRepository.Instance.GetStory(ActiveModule.ModuleID, id);
|
|
if (story == null)
|
|
{
|
|
return Request.CreateResponse(HttpStatusCode.NotFound, "Story not found");
|
|
}
|
|
if (!this.InMemoriamModuleContext.Security.IsFamily && story.CreatedByUserID != UserInfo.UserID)
|
|
{
|
|
return AccessViolation("You are not allowed to delete this story");
|
|
}
|
|
StoryRepository.Instance.DeleteStory(ActiveModule.ModuleID, story.StoryId);
|
|
return Request.CreateResponse(HttpStatusCode.OK, "Story deleted");
|
|
}
|
|
}
|
|
}
|