From 3338485ec6773a8d58ca995f2293761b8b8f4e16 Mon Sep 17 00:00:00 2001 From: Damien Ostler Date: Thu, 22 Feb 2024 00:59:46 -0500 Subject: [PATCH] fix: added endpoints for accepting and denying requests --- .../Controllers/RequestsController.cs | 82 ++++++++++++++++++- 1 file changed, 78 insertions(+), 4 deletions(-) diff --git a/src/comissions.app.api/Controllers/RequestsController.cs b/src/comissions.app.api/Controllers/RequestsController.cs index 7f698e5..b4ad5bf 100644 --- a/src/comissions.app.api/Controllers/RequestsController.cs +++ b/src/comissions.app.api/Controllers/RequestsController.cs @@ -28,7 +28,7 @@ public class RequestsController : Controller [Authorize("read:request")] [HttpGet] - [Route("Requests")] + [Route("Customer/Requests")] public async Task GetRequests(string search="",int offset = 0, int pageSize = 10) { var userId = User.GetUserId(); @@ -43,7 +43,7 @@ public class RequestsController : Controller [Authorize("read:request")] [HttpGet] - [Route("Requests/{requestId:int}")] + [Route("Customer/Requests/{requestId:int}")] public async Task GetRequest(int requestId) { var userId = User.GetUserId(); @@ -57,9 +57,83 @@ public class RequestsController : Controller return Ok(result); } + [Authorize("read:request")] + [HttpGet] + [Route("Artist/Requests")] + public async Task GetArtistRequests(string search="",int offset = 0, int pageSize = 10) + { + var userId = User.GetUserId(); + var requests = await _dbContext.Requests + .Where(x=>x.UserId==userId) + .Include(x=>x.Artist) + .Where(x=>x.Artist.Name.Contains(search) || x.Message.Contains(search)) + .Skip(offset).Take(pageSize).ToListAsync(); + var result = requests.Select(x=>x.ToModel()).ToList(); + return Ok(result); + } + + [Authorize("read:request")] + [HttpGet] + [Route("Artist/Requests/{requestId:int}")] + public async Task GetArtistRequest(int requestId) + { + var userId = User.GetUserId(); + var request = await _dbContext.Requests + .Where(x=>x.UserId==userId) + .Include(x=>x.Artist) + .FirstOrDefaultAsync(x=>x.Id==requestId); + if(request==null) + return NotFound(); + var result = request.ToModel(); + return Ok(result); + } + + [Authorize("write:request")] + [HttpGet] + [Route("Artist/Requests/{requestId:int}")] + public async Task AcceptRequest(int requestId) + { + var userId = User.GetUserId(); + var request = await _dbContext.Requests + .Where(x=>x.UserId==userId) + .Include(x=>x.Artist) + .FirstOrDefaultAsync(x=>x.Id==requestId); + if(request==null) + return NotFound(); + + request.Accepted = true; + request.AcceptedDate = DateTime.UtcNow; + _dbContext.Entry(request).State = EntityState.Modified; + await _dbContext.SaveChangesAsync(); + + var result = request.ToModel(); + return Ok(result); + } + + + [Authorize("write:request")] + [HttpGet] + [Route("Artist/Requests/{requestId:int}")] + public async Task DenyRequest(int requestId) + { + var userId = User.GetUserId(); + var request = await _dbContext.Requests + .Where(x=>x.UserId==userId) + .Include(x=>x.Artist) + .FirstOrDefaultAsync(x=>x.Id==requestId); + if(request==null) + return NotFound(); + request.Declined = true; + request.DeclinedDate = DateTime.UtcNow; + _dbContext.Entry(request).State = EntityState.Modified; + await _dbContext.SaveChangesAsync(); + var result = request.ToModel(); + return Ok(result); + } + [Authorize("write:request")] [HttpPost] - [Route("Requests")] + [Route("Request")] public async Task CreateRequest([FromBody] RequestCreateModel model) { var openRequests = await _dbContext.Requests @@ -73,7 +147,7 @@ public class RequestsController : Controller { Amount = model.Amount, Message = model.Message, - RequestDate = DateTime.Now, + RequestDate = DateTime.UtcNow, UserId = User.GetUserId(), ArtistId = model.ArtistId, Accepted = false,