using System.Linq; using Nancy; using Nancy.ModelBinding; using Sony.Filtr.Applications; using Sony.Filtr.Contracts.Entities.Genre; using Sony.Filtr.Core.Genres; namespace Sony.Filtr.AdminAPI.Modules.PublicData { public class TagCategoryModule : BaseModule { public TagCategoryModule(ApplicationInstanceManager applicationInstanceManager, GenreManager genreManager) : base(applicationInstanceManager) { Get["GetTagCategories", "/tagCategories"] = parameters => { var genreCategories = genreManager.GetGenreCategories(); return Response.AsJson(genreCategories); }; Post["AddTagCategory", "/tagCategories"] = parameters => { var genreCategory = this.Bind(); if (genreCategory.ID != 0) return HttpStatusCode.BadRequest; genreCategory = genreManager.SaveGenreCategory(genreCategory); return Response.AsJson(genreCategory); }; Get["GetSingleTagCategory", "/tagCategories/{id}"] = parameters => { int genreCategoryId; if (!int.TryParse((string) parameters.ID, out genreCategoryId)) return HttpStatusCode.BadRequest; var genreCategory = genreManager.GetGenreCategory(genreCategoryId); if (genreCategory == null) return HttpStatusCode.NotFound; return Response.AsJson(genreCategory); }; Put["UpdateTagCategory", "/tagCategories/{id}"] = parameters => { int genreCategoryId; if (!int.TryParse((string)parameters.ID, out genreCategoryId)) return HttpStatusCode.BadRequest; var existingGenreCategory = genreManager.GetGenreCategory(genreCategoryId); if (existingGenreCategory == null) return HttpStatusCode.NotFound; var genreCategory = this.Bind(); genreCategory.ID = existingGenreCategory.ID; genreCategory = genreManager.SaveGenreCategory(genreCategory); return Response.AsJson(genreCategory); }; Delete["DeleteTagCategory", "/tagCategories/{id}"] = parameters => { int genreCategoryId; if (!int.TryParse((string)parameters.ID, out genreCategoryId)) return HttpStatusCode.BadRequest; var existingGenreCategory = genreManager.GetGenreCategory(genreCategoryId); if (existingGenreCategory == null) return HttpStatusCode.NotFound; genreManager.DeleteGenreCategory(existingGenreCategory); return HttpStatusCode.NoContent; }; } } }