mirror of
https://github.com/sphildreth/roadie
synced 2024-11-22 12:13:10 +00:00
Better error handling and unique key constraint checks on updates.
This commit is contained in:
parent
7710fef6b0
commit
872350763a
18 changed files with 658 additions and 119 deletions
|
@ -619,7 +619,18 @@ namespace Roadie.Api.Services
|
||||||
.Include("Genres.Genre")
|
.Include("Genres.Genre")
|
||||||
.FirstOrDefault(x => x.RoadieId == model.Id);
|
.FirstOrDefault(x => x.RoadieId == model.Id);
|
||||||
if (artist == null)
|
if (artist == null)
|
||||||
|
{
|
||||||
return new OperationResult<bool>(true, $"Artist Not Found [{model.Id}]");
|
return new OperationResult<bool>(true, $"Artist Not Found [{model.Id}]");
|
||||||
|
}
|
||||||
|
// If artist is being renamed, see if artist already exists with new model supplied name
|
||||||
|
if(artist.Name.ToAlphanumericName() != model.Name.ToAlphanumericName())
|
||||||
|
{
|
||||||
|
var existingArtist = DbContext.Artists.FirstOrDefault(x => x.Name == model.Name);
|
||||||
|
if(existingArtist != null)
|
||||||
|
{
|
||||||
|
return new OperationResult<bool>($"Artist already exists with name [{ model.Name }].");
|
||||||
|
}
|
||||||
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var now = DateTime.UtcNow;
|
var now = DateTime.UtcNow;
|
||||||
|
@ -653,12 +664,17 @@ namespace Roadie.Api.Services
|
||||||
artist.URLs = model.URLsList.ToDelimitedList();
|
artist.URLs = model.URLsList.ToDelimitedList();
|
||||||
|
|
||||||
var newArtistFolder = artist.ArtistFileFolder(Configuration);
|
var newArtistFolder = artist.ArtistFileFolder(Configuration);
|
||||||
|
// Rename artist folder to reflect new artist name
|
||||||
if (!newArtistFolder.Equals(originalArtistFolder, StringComparison.OrdinalIgnoreCase))
|
if (!newArtistFolder.Equals(originalArtistFolder, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
|
// If folder already exists for new artist name that means another artist has that folder (usually sort name)
|
||||||
|
if (Directory.Exists(newArtistFolder))
|
||||||
|
{
|
||||||
|
return new OperationResult<bool>($"Artist Folder [{ newArtistFolder }] already exists.");
|
||||||
|
}
|
||||||
didRenameArtist = true;
|
didRenameArtist = true;
|
||||||
if (Directory.Exists(originalArtistFolder))
|
if (Directory.Exists(originalArtistFolder))
|
||||||
{
|
{
|
||||||
// Rename artist folder to reflect new artist name
|
|
||||||
Logger.LogInformation("Moving Artist From Folder [{0}] -> [{1}]", originalArtistFolder, newArtistFolder);
|
Logger.LogInformation("Moving Artist From Folder [{0}] -> [{1}]", originalArtistFolder, newArtistFolder);
|
||||||
Directory.Move(originalArtistFolder, newArtistFolder);
|
Directory.Move(originalArtistFolder, newArtistFolder);
|
||||||
}
|
}
|
||||||
|
|
|
@ -132,7 +132,9 @@ namespace Roadie.Api.Services
|
||||||
if (!user.IsEditor)
|
if (!user.IsEditor)
|
||||||
{
|
{
|
||||||
Logger.LogWarning($"DeleteCollection: Access Denied: `{collection}`, By User `{user}`");
|
Logger.LogWarning($"DeleteCollection: Access Denied: `{collection}`, By User `{user}`");
|
||||||
return new OperationResult<bool>("Access Denied");
|
var r = new OperationResult<bool>("Access Denied");
|
||||||
|
r.IsAccessDeniedResult = true;
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -237,8 +239,16 @@ namespace Roadie.Api.Services
|
||||||
{
|
{
|
||||||
return new OperationResult<bool>(true, string.Format("Collection Not Found [{0}]", model.Id));
|
return new OperationResult<bool>(true, string.Format("Collection Not Found [{0}]", model.Id));
|
||||||
}
|
}
|
||||||
|
// If collection is being renamed, see if collection already exists with new model supplied name
|
||||||
|
if (collection.Name.ToAlphanumericName() != model.Name.ToAlphanumericName())
|
||||||
|
{
|
||||||
|
var existingCollection = DbContext.Collections.FirstOrDefault(x => x.Name == model.Name);
|
||||||
|
if (existingCollection != null)
|
||||||
|
{
|
||||||
|
return new OperationResult<bool>($"Collection already exists with name [{ model.Name }].");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
collection.IsLocked = model.IsLocked;
|
collection.IsLocked = model.IsLocked;
|
||||||
var oldPathToImage = collection.PathToImage(Configuration);
|
var oldPathToImage = collection.PathToImage(Configuration);
|
||||||
var didChangeName = collection.Name != model.Name;
|
var didChangeName = collection.Name != model.Name;
|
||||||
|
|
|
@ -254,7 +254,19 @@ namespace Roadie.Api.Services
|
||||||
sw.Start();
|
sw.Start();
|
||||||
var errors = new List<Exception>();
|
var errors = new List<Exception>();
|
||||||
var label = DbContext.Labels.FirstOrDefault(x => x.RoadieId == model.Id);
|
var label = DbContext.Labels.FirstOrDefault(x => x.RoadieId == model.Id);
|
||||||
if (label == null) return new OperationResult<bool>(true, string.Format("Label Not Found [{0}]", model.Id));
|
if (label == null)
|
||||||
|
{
|
||||||
|
return new OperationResult<bool>(true, string.Format("Label Not Found [{0}]", model.Id));
|
||||||
|
}
|
||||||
|
// If label is being renamed, see if label already exists with new model supplied name
|
||||||
|
if (label.Name.ToAlphanumericName() != model.Name.ToAlphanumericName())
|
||||||
|
{
|
||||||
|
var existingLabel = DbContext.Labels.FirstOrDefault(x => x.Name == model.Name);
|
||||||
|
if (existingLabel != null)
|
||||||
|
{
|
||||||
|
return new OperationResult<bool>($"Label already exists with name [{ model.Name }].");
|
||||||
|
}
|
||||||
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var now = DateTime.UtcNow;
|
var now = DateTime.UtcNow;
|
||||||
|
|
|
@ -166,7 +166,10 @@ namespace Roadie.Api.Services
|
||||||
var sw = new Stopwatch();
|
var sw = new Stopwatch();
|
||||||
sw.Start();
|
sw.Start();
|
||||||
var playlist = DbContext.Playlists.FirstOrDefault(x => x.RoadieId == id);
|
var playlist = DbContext.Playlists.FirstOrDefault(x => x.RoadieId == id);
|
||||||
if (playlist == null) return new OperationResult<bool>(true, string.Format("Playlist Not Found [{0}]", id));
|
if (playlist == null)
|
||||||
|
{
|
||||||
|
return new OperationResult<bool>(true, string.Format("Playlist Not Found [{0}]", id));
|
||||||
|
}
|
||||||
if (!user.IsAdmin && user.Id != playlist.UserId)
|
if (!user.IsAdmin && user.Id != playlist.UserId)
|
||||||
{
|
{
|
||||||
Logger.LogWarning("User `{0}` attempted to delete Playlist `{1}`", user, playlist);
|
Logger.LogWarning("User `{0}` attempted to delete Playlist `{1}`", user, playlist);
|
||||||
|
@ -288,7 +291,17 @@ namespace Roadie.Api.Services
|
||||||
var errors = new List<Exception>();
|
var errors = new List<Exception>();
|
||||||
var playlist = DbContext.Playlists.FirstOrDefault(x => x.RoadieId == model.Id);
|
var playlist = DbContext.Playlists.FirstOrDefault(x => x.RoadieId == model.Id);
|
||||||
if (playlist == null)
|
if (playlist == null)
|
||||||
return new OperationResult<bool>(true, string.Format("Label Not Found [{0}]", model.Id));
|
{
|
||||||
|
return new OperationResult<bool>(true, string.Format("Playlist Not Found [{0}]", model.Id));
|
||||||
|
}
|
||||||
|
if (!user.IsAdmin && user.Id != playlist.UserId)
|
||||||
|
{
|
||||||
|
Logger.LogWarning("User `{0}` attempted to update Playlist `{1}`", user, playlist);
|
||||||
|
return new OperationResult<bool>("Access Denied")
|
||||||
|
{
|
||||||
|
IsAccessDeniedResult = true
|
||||||
|
};
|
||||||
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var now = DateTime.UtcNow;
|
var now = DateTime.UtcNow;
|
||||||
|
@ -349,7 +362,17 @@ namespace Roadie.Api.Services
|
||||||
var errors = new List<Exception>();
|
var errors = new List<Exception>();
|
||||||
var playlist = DbContext.Playlists.Include(x => x.Tracks).FirstOrDefault(x => x.RoadieId == request.Id);
|
var playlist = DbContext.Playlists.Include(x => x.Tracks).FirstOrDefault(x => x.RoadieId == request.Id);
|
||||||
if (playlist == null)
|
if (playlist == null)
|
||||||
|
{
|
||||||
return new OperationResult<bool>(true, string.Format("Label Not Found [{0}]", request.Id));
|
return new OperationResult<bool>(true, string.Format("Label Not Found [{0}]", request.Id));
|
||||||
|
}
|
||||||
|
if (!user.IsAdmin && user.Id != playlist.UserId)
|
||||||
|
{
|
||||||
|
Logger.LogWarning("User `{0}` attempted to update Playlist Tracks `{1}`", user, playlist);
|
||||||
|
return new OperationResult<bool>("Access Denied")
|
||||||
|
{
|
||||||
|
IsAccessDeniedResult = true
|
||||||
|
};
|
||||||
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var now = DateTime.UtcNow;
|
var now = DateTime.UtcNow;
|
||||||
|
|
|
@ -1357,6 +1357,15 @@ namespace Roadie.Api.Services
|
||||||
{
|
{
|
||||||
return new OperationResult<bool>(true, string.Format("Release Not Found [{0}]", model.Id));
|
return new OperationResult<bool>(true, string.Format("Release Not Found [{0}]", model.Id));
|
||||||
}
|
}
|
||||||
|
// If release is being renamed, see if release already exists for artist with new model supplied name
|
||||||
|
if (release.Title.ToAlphanumericName() != model.Title.ToAlphanumericName())
|
||||||
|
{
|
||||||
|
var existingRelease = DbContext.Releases.FirstOrDefault(x => x.Title == model.Title && x.ArtistId == release.ArtistId);
|
||||||
|
if (existingRelease != null)
|
||||||
|
{
|
||||||
|
return new OperationResult<bool>($"Release already exists for Artist with title [{ model.Title }].");
|
||||||
|
}
|
||||||
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var now = DateTime.UtcNow;
|
var now = DateTime.UtcNow;
|
||||||
|
|
|
@ -58,7 +58,9 @@ namespace Roadie.Api.Services
|
||||||
{
|
{
|
||||||
if(user.UserId != id && !user.IsAdmin)
|
if(user.UserId != id && !user.IsAdmin)
|
||||||
{
|
{
|
||||||
return new OperationResult<User>(new Exception("Access Denied"));
|
var r = new OperationResult<User>("Access Denied");
|
||||||
|
r.IsAccessDeniedResult = true;
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var sw = Stopwatch.StartNew();
|
var sw = Stopwatch.StartNew();
|
||||||
|
@ -371,18 +373,16 @@ namespace Roadie.Api.Services
|
||||||
}
|
}
|
||||||
if (user.Id != userPerformingUpdate.Id && !userPerformingUpdate.IsAdmin)
|
if (user.Id != userPerformingUpdate.Id && !userPerformingUpdate.IsAdmin)
|
||||||
{
|
{
|
||||||
return new OperationResult<bool>
|
var r = new OperationResult<bool>("Access Denied")
|
||||||
{
|
{
|
||||||
Errors = new List<Exception> { new Exception("Access Denied") }
|
IsAccessDeniedResult = true
|
||||||
};
|
};
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
// Check concurrency stamp
|
// Check concurrency stamp
|
||||||
if (user.ConcurrencyStamp != userBeingUpdatedModel.ConcurrencyStamp)
|
if (user.ConcurrencyStamp != userBeingUpdatedModel.ConcurrencyStamp)
|
||||||
{
|
{
|
||||||
return new OperationResult<bool>
|
return new OperationResult<bool>("User data is stale.");
|
||||||
{
|
|
||||||
Errors = new List<Exception> { new Exception("User data is stale.") }
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
// Check that username (if changed) doesn't already exist
|
// Check that username (if changed) doesn't already exist
|
||||||
if (user.UserName != userBeingUpdatedModel.UserName)
|
if (user.UserName != userBeingUpdatedModel.UserName)
|
||||||
|
@ -390,10 +390,7 @@ namespace Roadie.Api.Services
|
||||||
var userByUsername = DbContext.Users.FirstOrDefault(x => x.NormalizedUserName == userBeingUpdatedModel.UserName.ToUpper());
|
var userByUsername = DbContext.Users.FirstOrDefault(x => x.NormalizedUserName == userBeingUpdatedModel.UserName.ToUpper());
|
||||||
if (userByUsername != null)
|
if (userByUsername != null)
|
||||||
{
|
{
|
||||||
return new OperationResult<bool>
|
return new OperationResult<bool>("Username already in use");
|
||||||
{
|
|
||||||
Errors = new List<Exception> { new Exception("Username already in use") }
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,10 +400,7 @@ namespace Roadie.Api.Services
|
||||||
var userByEmail = DbContext.Users.FirstOrDefault(x => x.NormalizedEmail == userBeingUpdatedModel.Email.ToUpper());
|
var userByEmail = DbContext.Users.FirstOrDefault(x => x.NormalizedEmail == userBeingUpdatedModel.Email.ToUpper());
|
||||||
if (userByEmail != null)
|
if (userByEmail != null)
|
||||||
{
|
{
|
||||||
return new OperationResult<bool>
|
return new OperationResult<bool>("Email already in use");
|
||||||
{
|
|
||||||
Errors = new List<Exception> { new Exception("Email already in use") }
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var oldPathToImage = user.PathToImage(Configuration);
|
var oldPathToImage = user.PathToImage(Configuration);
|
||||||
|
|
|
@ -8,6 +8,7 @@ using Roadie.Library.Configuration;
|
||||||
using Roadie.Library.Identity;
|
using Roadie.Library.Identity;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
@ -42,7 +43,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeleteArtist(Guid id)
|
public async Task<IActionResult> DeleteArtist(Guid id)
|
||||||
{
|
{
|
||||||
var result = await AdminService.DeleteArtist(await UserManager.GetUserAsync(User), id);
|
var result = await AdminService.DeleteArtist(await UserManager.GetUserAsync(User), id);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +59,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeleteArtistReleases(Guid id)
|
public async Task<IActionResult> DeleteArtistReleases(Guid id)
|
||||||
{
|
{
|
||||||
var result = await AdminService.DeleteArtistReleases(await UserManager.GetUserAsync(User), id);
|
var result = await AdminService.DeleteArtistReleases(await UserManager.GetUserAsync(User), id);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +75,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeleteArtistSecondaryImage(Guid id, int index)
|
public async Task<IActionResult> DeleteArtistSecondaryImage(Guid id, int index)
|
||||||
{
|
{
|
||||||
var result = await AdminService.DeleteArtistSecondaryImage(await UserManager.GetUserAsync(User), id, index);
|
var result = await AdminService.DeleteArtistSecondaryImage(await UserManager.GetUserAsync(User), id, index);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +91,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeleteRelease(Guid id, bool? doDeleteFiles)
|
public async Task<IActionResult> DeleteRelease(Guid id, bool? doDeleteFiles)
|
||||||
{
|
{
|
||||||
var result = await AdminService.DeleteRelease(await UserManager.GetUserAsync(User), id, doDeleteFiles);
|
var result = await AdminService.DeleteRelease(await UserManager.GetUserAsync(User), id, doDeleteFiles);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,7 +107,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeleteLabel(Guid id)
|
public async Task<IActionResult> DeleteLabel(Guid id)
|
||||||
{
|
{
|
||||||
var result = await AdminService.DeleteLabel(await UserManager.GetUserAsync(User), id);
|
var result = await AdminService.DeleteLabel(await UserManager.GetUserAsync(User), id);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,7 +123,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeleteGenre(Guid id)
|
public async Task<IActionResult> DeleteGenre(Guid id)
|
||||||
{
|
{
|
||||||
var result = await AdminService.DeleteGenre(await UserManager.GetUserAsync(User), id);
|
var result = await AdminService.DeleteGenre(await UserManager.GetUserAsync(User), id);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +149,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeleteTracks([FromBody]IEnumerable<Guid> ids, bool? doDeleteFile)
|
public async Task<IActionResult> DeleteTracks([FromBody]IEnumerable<Guid> ids, bool? doDeleteFile)
|
||||||
{
|
{
|
||||||
var result = await AdminService.DeleteTracks(await UserManager.GetUserAsync(User), ids, doDeleteFile);
|
var result = await AdminService.DeleteTracks(await UserManager.GetUserAsync(User), ids, doDeleteFile);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +166,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeleteTrack(Guid id, bool? doDeleteFile)
|
public async Task<IActionResult> DeleteTrack(Guid id, bool? doDeleteFile)
|
||||||
{
|
{
|
||||||
var result = await AdminService.DeleteTracks(await UserManager.GetUserAsync(User), new Guid[1] { id }, doDeleteFile);
|
var result = await AdminService.DeleteTracks(await UserManager.GetUserAsync(User), new Guid[1] { id }, doDeleteFile);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +182,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeleteUser(Guid id)
|
public async Task<IActionResult> DeleteUser(Guid id)
|
||||||
{
|
{
|
||||||
var result = await AdminService.DeleteUser(await UserManager.GetUserAsync(User), id);
|
var result = await AdminService.DeleteUser(await UserManager.GetUserAsync(User), id);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +198,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> MissingCollectionReleases()
|
public async Task<IActionResult> MissingCollectionReleases()
|
||||||
{
|
{
|
||||||
var result = await AdminService.MissingCollectionReleases(await UserManager.GetUserAsync(User));
|
var result = await AdminService.MissingCollectionReleases(await UserManager.GetUserAsync(User));
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +214,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> ScanAllCollections()
|
public async Task<IActionResult> ScanAllCollections()
|
||||||
{
|
{
|
||||||
var result = await AdminService.ScanAllCollections(await UserManager.GetUserAsync(User));
|
var result = await AdminService.ScanAllCollections(await UserManager.GetUserAsync(User));
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +230,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> ScanArtist(Guid id)
|
public async Task<IActionResult> ScanArtist(Guid id)
|
||||||
{
|
{
|
||||||
var result = await AdminService.ScanArtist(await UserManager.GetUserAsync(User), id);
|
var result = await AdminService.ScanArtist(await UserManager.GetUserAsync(User), id);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,7 +246,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> ScanArtists(IEnumerable<Guid> ids)
|
public async Task<IActionResult> ScanArtists(IEnumerable<Guid> ids)
|
||||||
{
|
{
|
||||||
var result = await AdminService.ScanArtists(await UserManager.GetUserAsync(User), ids);
|
var result = await AdminService.ScanArtists(await UserManager.GetUserAsync(User), ids);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,7 +263,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> ScanCollection(Guid id)
|
public async Task<IActionResult> ScanCollection(Guid id)
|
||||||
{
|
{
|
||||||
var result = await AdminService.ScanCollection(await UserManager.GetUserAsync(User), id);
|
var result = await AdminService.ScanCollection(await UserManager.GetUserAsync(User), id);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,7 +279,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> ScanInbound()
|
public async Task<IActionResult> ScanInbound()
|
||||||
{
|
{
|
||||||
var result = await AdminService.ScanInboundFolder(await UserManager.GetUserAsync(User));
|
var result = await AdminService.ScanInboundFolder(await UserManager.GetUserAsync(User));
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +295,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> ScanLibrary()
|
public async Task<IActionResult> ScanLibrary()
|
||||||
{
|
{
|
||||||
var result = await AdminService.ScanLibraryFolder(await UserManager.GetUserAsync(User));
|
var result = await AdminService.ScanLibraryFolder(await UserManager.GetUserAsync(User));
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +311,14 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> ScanRelease(Guid id)
|
public async Task<IActionResult> ScanRelease(Guid id)
|
||||||
{
|
{
|
||||||
var result = await AdminService.ScanRelease(await UserManager.GetUserAsync(User), id);
|
var result = await AdminService.ScanRelease(await UserManager.GetUserAsync(User), id);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ using Roadie.Library.Configuration;
|
||||||
using Roadie.Library.Identity;
|
using Roadie.Library.Identity;
|
||||||
using Roadie.Library.Models.Pagination;
|
using Roadie.Library.Models.Pagination;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
|
@ -80,7 +81,18 @@ namespace Roadie.Api.Controllers
|
||||||
var result =
|
var result =
|
||||||
await ArtistService.MergeArtists(await UserManager.GetUserAsync(User), artistToMergeId, artistToMergeIntoId);
|
await ArtistService.MergeArtists(await UserManager.GetUserAsync(User), artistToMergeId, artistToMergeIntoId);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +105,18 @@ namespace Roadie.Api.Controllers
|
||||||
var result =
|
var result =
|
||||||
await ArtistService.SetReleaseImageByUrl(await UserManager.GetUserAsync(User), id, HttpUtility.UrlDecode(imageUrl));
|
await ArtistService.SetReleaseImageByUrl(await UserManager.GetUserAsync(User), id, HttpUtility.UrlDecode(imageUrl));
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,10 +126,27 @@ namespace Roadie.Api.Controllers
|
||||||
[Authorize(Policy = "Editor")]
|
[Authorize(Policy = "Editor")]
|
||||||
public async Task<IActionResult> Update(models.Artist artist)
|
public async Task<IActionResult> Update(models.Artist artist)
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid) return BadRequest(ModelState);
|
if (!ModelState.IsValid)
|
||||||
|
{
|
||||||
|
return BadRequest(ModelState);
|
||||||
|
}
|
||||||
var result = await ArtistService.UpdateArtist(await UserManager.GetUserAsync(User), artist);
|
var result = await ArtistService.UpdateArtist(await UserManager.GetUserAsync(User), artist);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult)
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,7 +158,18 @@ namespace Roadie.Api.Controllers
|
||||||
{
|
{
|
||||||
var result = await ArtistService.UploadArtistImage(await UserManager.GetUserAsync(User), id, file);
|
var result = await ArtistService.UploadArtistImage(await UserManager.GetUserAsync(User), id, file);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,34 +29,6 @@ namespace Roadie.Api.Controllers
|
||||||
BookmarkService = bookmarkService;
|
BookmarkService = bookmarkService;
|
||||||
}
|
}
|
||||||
|
|
||||||
//[EnableQuery]
|
|
||||||
//public IActionResult Get()
|
|
||||||
//{
|
|
||||||
// return Ok(this._RoadieDbContext.Labels.ProjectToType<models.Label>());
|
|
||||||
//}
|
|
||||||
|
|
||||||
//[HttpGet("{id}")]
|
|
||||||
//[ProducesResponseType(200)]
|
|
||||||
//[ProducesResponseType(404)]
|
|
||||||
//public IActionResult Get(Guid id)
|
|
||||||
//{
|
|
||||||
// var key = id.ToString();
|
|
||||||
// var result = this._cacheManager.Get<models.Label>(key, () =>
|
|
||||||
// {
|
|
||||||
// var d = this._RoadieDbContext.Labels.FirstOrDefault(x => x.RoadieId == id);
|
|
||||||
// if (d != null)
|
|
||||||
// {
|
|
||||||
// return d.Adapt<models.Label>();
|
|
||||||
// }
|
|
||||||
// return null;
|
|
||||||
// }, key);
|
|
||||||
// if (result == null)
|
|
||||||
// {
|
|
||||||
// return NotFound();
|
|
||||||
// }
|
|
||||||
// return Ok(result);
|
|
||||||
//}
|
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[ProducesResponseType(200)]
|
[ProducesResponseType(200)]
|
||||||
public async Task<IActionResult> List([FromQuery] PagedRequest request)
|
public async Task<IActionResult> List([FromQuery] PagedRequest request)
|
||||||
|
|
|
@ -9,6 +9,7 @@ using Roadie.Library.Identity;
|
||||||
using Roadie.Library.Models.Collections;
|
using Roadie.Library.Models.Collections;
|
||||||
using Roadie.Library.Models.Pagination;
|
using Roadie.Library.Models.Pagination;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
@ -37,7 +38,18 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> Add()
|
public async Task<IActionResult> Add()
|
||||||
{
|
{
|
||||||
var result = CollectionService.Add(await CurrentUserModel());
|
var result = CollectionService.Add(await CurrentUserModel());
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +60,22 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeleteCollection(Guid id)
|
public async Task<IActionResult> DeleteCollection(Guid id)
|
||||||
{
|
{
|
||||||
var result = await CollectionService.DeleteCollection(await CurrentUserModel(), id);
|
var result = await CollectionService.DeleteCollection(await CurrentUserModel(), id);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (result == null || result.IsNotFoundResult)
|
||||||
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +87,18 @@ namespace Roadie.Api.Controllers
|
||||||
var result = await CollectionService.ById(await CurrentUserModel(), id,
|
var result = await CollectionService.ById(await CurrentUserModel(), id,
|
||||||
(inc ?? Collection.DefaultIncludes).ToLower().Split(","));
|
(inc ?? Collection.DefaultIncludes).ToLower().Split(","));
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,8 +108,7 @@ namespace Roadie.Api.Controllers
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var result = await CollectionService.List(await CurrentUserModel(),
|
var result = await CollectionService.List(await CurrentUserModel(), request);
|
||||||
request);
|
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
@ -93,10 +130,27 @@ namespace Roadie.Api.Controllers
|
||||||
[Authorize(Policy = "Editor")]
|
[Authorize(Policy = "Editor")]
|
||||||
public async Task<IActionResult> Update(Collection collection)
|
public async Task<IActionResult> Update(Collection collection)
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid) return BadRequest(ModelState);
|
if (!ModelState.IsValid)
|
||||||
|
{
|
||||||
|
return BadRequest(ModelState);
|
||||||
|
}
|
||||||
var result = await CollectionService.UpdateCollection(await CurrentUserModel(), collection);
|
var result = await CollectionService.UpdateCollection(await CurrentUserModel(), collection);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult)
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ using Roadie.Library.Configuration;
|
||||||
using Roadie.Library.Enums;
|
using Roadie.Library.Enums;
|
||||||
using Roadie.Library.Identity;
|
using Roadie.Library.Identity;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using models = Roadie.Library.Models;
|
using models = Roadie.Library.Models;
|
||||||
|
@ -39,7 +40,18 @@ namespace Roadie.Api.Controllers
|
||||||
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
||||||
var result = await CommentService.AddNewArtistComment(await CurrentUserModel(), id, model.Cmt);
|
var result = await CommentService.AddNewArtistComment(await CurrentUserModel(), id, model.Cmt);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +63,18 @@ namespace Roadie.Api.Controllers
|
||||||
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
||||||
var result = await CommentService.AddNewCollectionComment(await CurrentUserModel(), id, model.Cmt);
|
var result = await CommentService.AddNewCollectionComment(await CurrentUserModel(), id, model.Cmt);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +86,18 @@ namespace Roadie.Api.Controllers
|
||||||
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
||||||
var result = await CommentService.AddNewGenreComment(await CurrentUserModel(), id, model.Cmt);
|
var result = await CommentService.AddNewGenreComment(await CurrentUserModel(), id, model.Cmt);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +109,18 @@ namespace Roadie.Api.Controllers
|
||||||
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
||||||
var result = await CommentService.AddNewLabelComment(await CurrentUserModel(), id, model.Cmt);
|
var result = await CommentService.AddNewLabelComment(await CurrentUserModel(), id, model.Cmt);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,7 +132,18 @@ namespace Roadie.Api.Controllers
|
||||||
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
||||||
var result = await CommentService.AddNewPlaylistComment(await CurrentUserModel(), id, model.Cmt);
|
var result = await CommentService.AddNewPlaylistComment(await CurrentUserModel(), id, model.Cmt);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +155,18 @@ namespace Roadie.Api.Controllers
|
||||||
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
||||||
var result = await CommentService.AddNewReleaseComment(await CurrentUserModel(), id, model.Cmt);
|
var result = await CommentService.AddNewReleaseComment(await CurrentUserModel(), id, model.Cmt);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +178,18 @@ namespace Roadie.Api.Controllers
|
||||||
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
if (string.IsNullOrEmpty(model.Cmt)) return StatusCode((int)HttpStatusCode.BadRequest, "Invalid Comment");
|
||||||
var result = await CommentService.AddNewTrackComment(await CurrentUserModel(), id, model.Cmt);
|
var result = await CommentService.AddNewTrackComment(await CurrentUserModel(), id, model.Cmt);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +200,18 @@ namespace Roadie.Api.Controllers
|
||||||
{
|
{
|
||||||
var result = await CommentService.DeleteComment(await CurrentUserModel(), id);
|
var result = await CommentService.DeleteComment(await CurrentUserModel(), id);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,7 +222,18 @@ namespace Roadie.Api.Controllers
|
||||||
{
|
{
|
||||||
var result = await CommentService.SetCommentReaction(await CurrentUserModel(), id, reaction);
|
var result = await CommentService.SetCommentReaction(await CurrentUserModel(), id, reaction);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,11 +44,19 @@ namespace Roadie.Api.Controllers
|
||||||
protected async Task<models.User> CurrentUserModel()
|
protected async Task<models.User> CurrentUserModel()
|
||||||
{
|
{
|
||||||
if (_currentUser == null)
|
if (_currentUser == null)
|
||||||
|
{
|
||||||
if (User.Identity.IsAuthenticated)
|
if (User.Identity.IsAuthenticated)
|
||||||
_currentUser = await CacheManager.GetAsync($"urn:controller_user:{User.Identity.Name}",
|
{
|
||||||
async () => { return UserModelForUser(await UserManager.GetUserAsync(User)); },
|
_currentUser = await CacheManager.GetAsync($"urn:controller_user:{User.Identity.Name}", async () =>
|
||||||
ControllerCacheRegionUrn);
|
{
|
||||||
if (_currentUser == null) throw new UnauthorizedAccessException("Access Denied");
|
return UserModelForUser(await UserManager.GetUserAsync(User));
|
||||||
|
}, ControllerCacheRegionUrn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_currentUser == null)
|
||||||
|
{
|
||||||
|
throw new UnauthorizedAccessException("Access Denied");
|
||||||
|
}
|
||||||
return _currentUser;
|
return _currentUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ using Roadie.Library.Configuration;
|
||||||
using Roadie.Library.Identity;
|
using Roadie.Library.Identity;
|
||||||
using Roadie.Library.Models.Pagination;
|
using Roadie.Library.Models.Pagination;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
|
@ -80,6 +81,14 @@ namespace Roadie.Api.Controllers
|
||||||
}
|
}
|
||||||
if (!result.IsSuccess)
|
if (!result.IsSuccess)
|
||||||
{
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
return StatusCode((int)HttpStatusCode.InternalServerError);
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
}
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
|
@ -93,7 +102,18 @@ namespace Roadie.Api.Controllers
|
||||||
{
|
{
|
||||||
var result = await GenreService.UploadGenreImage(await CurrentUserModel(), id, file);
|
var result = await GenreService.UploadGenreImage(await CurrentUserModel(), id, file);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ using Roadie.Library.Configuration;
|
||||||
using Roadie.Library.Identity;
|
using Roadie.Library.Identity;
|
||||||
using Roadie.Library.Models.Pagination;
|
using Roadie.Library.Models.Pagination;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
|
@ -110,10 +111,23 @@ namespace Roadie.Api.Controllers
|
||||||
[Authorize(Policy = "Editor")]
|
[Authorize(Policy = "Editor")]
|
||||||
public async Task<IActionResult> Update(models.Label label)
|
public async Task<IActionResult> Update(models.Label label)
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid) return BadRequest(ModelState);
|
if (!ModelState.IsValid)
|
||||||
|
{
|
||||||
|
return BadRequest(ModelState);
|
||||||
|
}
|
||||||
var result = await LabelService.UpdateLabel(await CurrentUserModel(), label);
|
var result = await LabelService.UpdateLabel(await CurrentUserModel(), label);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult)
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ using Roadie.Library.Identity;
|
||||||
using Roadie.Library.Models.Pagination;
|
using Roadie.Library.Models.Pagination;
|
||||||
using Roadie.Library.Models.Playlists;
|
using Roadie.Library.Models.Playlists;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
@ -36,7 +37,18 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> AddNewPlaylist([FromBody] Playlist model)
|
public async Task<IActionResult> AddNewPlaylist([FromBody] Playlist model)
|
||||||
{
|
{
|
||||||
var result = await PlaylistService.AddNewPlaylist(await CurrentUserModel(), model);
|
var result = await PlaylistService.AddNewPlaylist(await CurrentUserModel(), model);
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,9 +58,22 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> DeletePlaylist(Guid id)
|
public async Task<IActionResult> DeletePlaylist(Guid id)
|
||||||
{
|
{
|
||||||
var result = await PlaylistService.DeletePlaylist(await CurrentUserModel(), id);
|
var result = await PlaylistService.DeletePlaylist(await CurrentUserModel(), id);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult)
|
||||||
if (result != null && result.IsAccessDeniedResult) return StatusCode((int)HttpStatusCode.Forbidden);
|
{
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
return NotFound();
|
||||||
|
}
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,10 +82,23 @@ namespace Roadie.Api.Controllers
|
||||||
[ProducesResponseType(404)]
|
[ProducesResponseType(404)]
|
||||||
public async Task<IActionResult> Get(Guid id, string inc = null)
|
public async Task<IActionResult> Get(Guid id, string inc = null)
|
||||||
{
|
{
|
||||||
var result = await PlaylistService.ById(await CurrentUserModel(), id,
|
var result = await PlaylistService.ById(await CurrentUserModel(), id,(inc ?? Playlist.DefaultIncludes).ToLower().Split(","));
|
||||||
(inc ?? Playlist.DefaultIncludes).ToLower().Split(","));
|
if (result == null || result.IsNotFoundResult)
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
{
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
return NotFound();
|
||||||
|
}
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,8 +119,22 @@ namespace Roadie.Api.Controllers
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid) return BadRequest(ModelState);
|
if (!ModelState.IsValid) return BadRequest(ModelState);
|
||||||
var result = await PlaylistService.UpdatePlaylist(await CurrentUserModel(), playlist);
|
var result = await PlaylistService.UpdatePlaylist(await CurrentUserModel(), playlist);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult)
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,8 +144,22 @@ namespace Roadie.Api.Controllers
|
||||||
public async Task<IActionResult> UpdateTracks(PlaylistTrackModifyRequest request)
|
public async Task<IActionResult> UpdateTracks(PlaylistTrackModifyRequest request)
|
||||||
{
|
{
|
||||||
var result = await PlaylistService.UpdatePlaylistTracks(await CurrentUserModel(), request);
|
var result = await PlaylistService.UpdatePlaylistTracks(await CurrentUserModel(), request);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult)
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ using Roadie.Library.Identity;
|
||||||
using Roadie.Library.Models.Pagination;
|
using Roadie.Library.Models.Pagination;
|
||||||
using Roadie.Library.Models.Releases;
|
using Roadie.Library.Models.Releases;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
|
@ -78,7 +79,18 @@ namespace Roadie.Api.Controllers
|
||||||
{
|
{
|
||||||
var result = await ReleaseService.MergeReleases(await UserManager.GetUserAsync(User), releaseToMergeId, releaseToMergeIntoId, addAsMedia);
|
var result = await ReleaseService.MergeReleases(await UserManager.GetUserAsync(User), releaseToMergeId, releaseToMergeIntoId, addAsMedia);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +102,18 @@ namespace Roadie.Api.Controllers
|
||||||
{
|
{
|
||||||
var result = await ReleaseService.SetReleaseImageByUrl(await UserManager.GetUserAsync(User), id, HttpUtility.UrlDecode(imageUrl));
|
var result = await ReleaseService.SetReleaseImageByUrl(await UserManager.GetUserAsync(User), id, HttpUtility.UrlDecode(imageUrl));
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,10 +123,23 @@ namespace Roadie.Api.Controllers
|
||||||
[Authorize(Policy = "Editor")]
|
[Authorize(Policy = "Editor")]
|
||||||
public async Task<IActionResult> Update(Release release)
|
public async Task<IActionResult> Update(Release release)
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid) return BadRequest(ModelState);
|
if (!ModelState.IsValid)
|
||||||
|
{
|
||||||
|
return BadRequest(ModelState);
|
||||||
|
}
|
||||||
var result = await ReleaseService.UpdateRelease(await UserManager.GetUserAsync(User), release);
|
var result = await ReleaseService.UpdateRelease(await UserManager.GetUserAsync(User), release);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult)
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +151,18 @@ namespace Roadie.Api.Controllers
|
||||||
{
|
{
|
||||||
var result = await ReleaseService.UploadReleaseImage(await UserManager.GetUserAsync(User), id, file);
|
var result = await ReleaseService.UploadReleaseImage(await UserManager.GetUserAsync(User), id, file);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ using Roadie.Library.Configuration;
|
||||||
using Roadie.Library.Identity;
|
using Roadie.Library.Identity;
|
||||||
using Roadie.Library.Models.Pagination;
|
using Roadie.Library.Models.Pagination;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using models = Roadie.Library.Models;
|
using models = Roadie.Library.Models;
|
||||||
|
@ -75,7 +76,18 @@ namespace Roadie.Api.Controllers
|
||||||
if (!ModelState.IsValid) return BadRequest(ModelState);
|
if (!ModelState.IsValid) return BadRequest(ModelState);
|
||||||
var result = await TrackService.UpdateTrack(await CurrentUserModel(), track);
|
var result = await TrackService.UpdateTrack(await CurrentUserModel(), track);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if (result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ using Roadie.Library.Models.Users;
|
||||||
using Roadie.Library.Utility;
|
using Roadie.Library.Utility;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
@ -273,13 +274,23 @@ namespace Roadie.Api.Controllers
|
||||||
var user = await CurrentUserModel();
|
var user = await CurrentUserModel();
|
||||||
var result = await UserService.UpdateProfile(user, model);
|
var result = await UserService.UpdateProfile(user, model);
|
||||||
if (result == null || result.IsNotFoundResult) return NotFound();
|
if (result == null || result.IsNotFoundResult) return NotFound();
|
||||||
if (!result.IsSuccess) return StatusCode((int)HttpStatusCode.InternalServerError);
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
if(result.IsAccessDeniedResult)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.Forbidden);
|
||||||
|
}
|
||||||
|
if (result.Messages?.Any() ?? false)
|
||||||
|
{
|
||||||
|
return StatusCode((int)HttpStatusCode.BadRequest, result.Messages);
|
||||||
|
}
|
||||||
|
return StatusCode((int)HttpStatusCode.InternalServerError);
|
||||||
|
}
|
||||||
CacheManager.ClearRegion(ControllerCacheRegionUrn);
|
CacheManager.ClearRegion(ControllerCacheRegionUrn);
|
||||||
var modelUser = await UserManager.FindByNameAsync(model.UserName);
|
var modelUser = await UserManager.FindByNameAsync(model.UserName);
|
||||||
var t = await TokenService.GenerateToken(modelUser, UserManager);
|
var t = await TokenService.GenerateToken(modelUser, UserManager);
|
||||||
CacheManager.ClearRegion(ControllerCacheRegionUrn);
|
CacheManager.ClearRegion(ControllerCacheRegionUrn);
|
||||||
var avatarUrl =
|
var avatarUrl = $"{RoadieHttpContext.ImageBaseUrl}/user/{modelUser.RoadieId}/{RoadieSettings.ThumbnailImageSize.Width}/{RoadieSettings.ThumbnailImageSize.Height}";
|
||||||
$"{RoadieHttpContext.ImageBaseUrl}/user/{modelUser.RoadieId}/{RoadieSettings.ThumbnailImageSize.Width}/{RoadieSettings.ThumbnailImageSize.Height}";
|
|
||||||
return Ok(new
|
return Ok(new
|
||||||
{
|
{
|
||||||
IsSuccess = true,
|
IsSuccess = true,
|
||||||
|
|
Loading…
Reference in a new issue