diff --git a/src/comissions.app.api/Controllers/RequestsController.cs b/src/comissions.app.api/Controllers/RequestsController.cs index 9c0b537..6911c86 100644 --- a/src/comissions.app.api/Controllers/RequestsController.cs +++ b/src/comissions.app.api/Controllers/RequestsController.cs @@ -919,7 +919,7 @@ public class RequestsController : Controller .Where(x=>x.UserId==User.GetUserId()) .CountAsync(); - var artist = await _dbContext.UserArtists.FirstOrDefaultAsync(x=>x.Id==model.ArtistId); + var artist = await _dbContext.UserArtists.Include(x=>x.User).FirstOrDefaultAsync(x=>x.User.DisplayName==model.ArtistDisplayName); if(artist==null) return NotFound("Artist not found."); @@ -932,7 +932,7 @@ public class RequestsController : Controller Message = model.Message, RequestDate = DateTime.UtcNow, UserId = userId, - ArtistId = model.ArtistId, + ArtistId = artist.Id, Accepted = false, AcceptedDate = null, Declined = false, diff --git a/src/comissions.app.api/Controllers/UserController.cs b/src/comissions.app.api/Controllers/UserController.cs index e9775fb..1de79f2 100644 --- a/src/comissions.app.api/Controllers/UserController.cs +++ b/src/comissions.app.api/Controllers/UserController.cs @@ -35,6 +35,10 @@ public class UserController : Controller { var userId = User.GetUserId(); var existingUser = await _dbContext.Users.FirstAsync(user=>user.Id==userId); + + if(_dbContext.Users.Any(x=>x.DisplayName==model.DisplayName && x.Id!=userId)) + return BadRequest("Display name is already in use."); + var updatedUser = model.ToEntity(existingUser); updatedUser = _dbContext.Users.Update(updatedUser).Entity; await _dbContext.SaveChangesAsync(); diff --git a/src/comissions.app.api/Middleware/UserMiddleware.cs b/src/comissions.app.api/Middleware/UserMiddleware.cs index e657086..0435e0d 100644 --- a/src/comissions.app.api/Middleware/UserMiddleware.cs +++ b/src/comissions.app.api/Middleware/UserMiddleware.cs @@ -31,10 +31,12 @@ public class UserMiddleware if (user == null) { + var displayName = context.User.Claims.FirstOrDefault(x=>x.Type==ClaimTypes.Name)?.Value ?? "Anonymous"; + displayName = $"{displayName}#{Guid.NewGuid().ToString().Substring(0, 4)}"; user = new User { Id = userId, - DisplayName = context.User.Claims.FirstOrDefault(x=>x.Type==ClaimTypes.Name)?.Value ?? "Anonymous", + DisplayName = displayName, Biography = string.Empty, Email = context.User.Claims.FirstOrDefault(x=>x.Type==ClaimTypes.Email)?.Value ?? string.Empty, }; diff --git a/src/comissions.app.api/Models/Request/RequestCreateModel.cs b/src/comissions.app.api/Models/Request/RequestCreateModel.cs index 1918385..75607ac 100644 --- a/src/comissions.app.api/Models/Request/RequestCreateModel.cs +++ b/src/comissions.app.api/Models/Request/RequestCreateModel.cs @@ -2,7 +2,7 @@ namespace comissions.app.database.Models.Request; public class RequestCreateModel { - public int ArtistId { get; set; } + public string ArtistDisplayName { get; set; } public string Message { get; set; } public decimal Amount { get; set; } } \ No newline at end of file