mirror of
				https://github.com/D4M13N-D3V/comissions-app-core-api.git
				synced 2025-10-31 09:35:25 +00:00 
			
		
		
		
	feat: redid the ban/suspension system
This commit is contained in:
		
							parent
							
								
									850288258a
								
							
						
					
					
						commit
						a3f137cb12
					
				| @ -49,5 +49,7 @@ public class ApplicationDbContext:DbContext | |||||||
|     public DbSet<RequestReference> RequestReferences { get; set; }= null!; |     public DbSet<RequestReference> RequestReferences { get; set; }= null!; | ||||||
|     public DbSet<RequestAsset> RequestAssets { get; set; }= null!; |     public DbSet<RequestAsset> RequestAssets { get; set; }= null!; | ||||||
|     public DbSet<ArtistRequestMessage> ArtistRequestMessages { get; set; }= null!; |     public DbSet<ArtistRequestMessage> ArtistRequestMessages { get; set; }= null!; | ||||||
|  |     public DbSet<Ban> Bans { get; set; }= null!; | ||||||
|  |     public DbSet<Suspension> Suspensions { get; set; }= null!; | ||||||
|     #endregion |     #endregion | ||||||
| } | } | ||||||
| @ -50,50 +50,6 @@ public class AdminArtistsController:ControllerBase | |||||||
|     } |     } | ||||||
|      |      | ||||||
|      |      | ||||||
|     [HttpPut("{sellerId:int}/Suspend")] |  | ||||||
|     public async Task<IActionResult> SuspendArtist(int sellerId, [FromQuery]string reason, [FromQuery]int days) |  | ||||||
|     { |  | ||||||
|         var seller = _dbContext.UserArtists.FirstOrDefault(x=>x.Id==sellerId); |  | ||||||
|          |  | ||||||
|         if (seller == null) |  | ||||||
|             return NotFound(); |  | ||||||
| 
 |  | ||||||
|         if (seller.Suspended) |  | ||||||
|             return BadRequest(); |  | ||||||
|          |  | ||||||
|         seller.Suspended = true; |  | ||||||
|         seller.SuspendedDate = DateTime.UtcNow; |  | ||||||
|         seller.UnsuspendDate = DateTime.UtcNow.AddDays(days); |  | ||||||
|         seller.SuspendedReason = reason; |  | ||||||
|         seller.SuspendAdminId = User.GetUserId(); |  | ||||||
|         _dbContext.UserArtists.Update(seller); |  | ||||||
|          |  | ||||||
|         await _dbContext.SaveChangesAsync(); |  | ||||||
|         return Ok(); |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     [HttpPut("{sellerId:int}/Unsuspend")] |  | ||||||
|     public async Task<IActionResult> UnsuspendArtist(int sellerId) |  | ||||||
|     { |  | ||||||
|         var seller = _dbContext.UserArtists.FirstOrDefault(x=>x.Id==sellerId); |  | ||||||
|          |  | ||||||
|         if (seller == null) |  | ||||||
|             return NotFound(); |  | ||||||
| 
 |  | ||||||
|         if (!seller.Suspended) |  | ||||||
|             return BadRequest(); |  | ||||||
|          |  | ||||||
|         seller.Suspended = false; |  | ||||||
|         seller.SuspendedDate = null; |  | ||||||
|         seller.UnsuspendDate = null; |  | ||||||
|         seller.SuspendedReason = null; |  | ||||||
|         seller.SuspendAdminId = null; |  | ||||||
|         _dbContext.UserArtists.Update(seller); |  | ||||||
|          |  | ||||||
|         await _dbContext.SaveChangesAsync(); |  | ||||||
|         return Ok(); |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     [HttpPut("{sellerId:int}/Terminate")] |     [HttpPut("{sellerId:int}/Terminate")] | ||||||
|     public async Task<IActionResult> TerminateArtist(int sellerId) |     public async Task<IActionResult> TerminateArtist(int sellerId) | ||||||
|     { |     { | ||||||
| @ -102,9 +58,6 @@ public class AdminArtistsController:ControllerBase | |||||||
|         if (seller == null) |         if (seller == null) | ||||||
|             return NotFound(); |             return NotFound(); | ||||||
| 
 | 
 | ||||||
|         if (!seller.Suspended) |  | ||||||
|             return BadRequest(); |  | ||||||
| 
 |  | ||||||
|         _dbContext.UserArtists.Remove(seller); |         _dbContext.UserArtists.Remove(seller); | ||||||
|         await _dbContext.SaveChangesAsync(); |         await _dbContext.SaveChangesAsync(); | ||||||
|         return Ok(); |         return Ok(); | ||||||
| @ -118,9 +71,6 @@ public class AdminArtistsController:ControllerBase | |||||||
|         if (seller == null) |         if (seller == null) | ||||||
|             return NotFound(); |             return NotFound(); | ||||||
| 
 | 
 | ||||||
|         if (!seller.Suspended) |  | ||||||
|             return BadRequest(); |  | ||||||
| 
 |  | ||||||
|         seller.Description = biography; |         seller.Description = biography; | ||||||
|         _dbContext.UserArtists.Update(seller); |         _dbContext.UserArtists.Update(seller); | ||||||
|         await _dbContext.SaveChangesAsync(); |         await _dbContext.SaveChangesAsync(); | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| using comissions.app.api.Extensions; | using comissions.app.api.Extensions; | ||||||
| using comissions.app.database; | using comissions.app.database; | ||||||
|  | using comissions.app.database.Entities; | ||||||
| using Microsoft.AspNetCore.Authorization; | using Microsoft.AspNetCore.Authorization; | ||||||
| using Microsoft.AspNetCore.Mvc; | using Microsoft.AspNetCore.Mvc; | ||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
| @ -56,12 +57,16 @@ public class AdminUsersController:ControllerBase | |||||||
|         if (user == null) |         if (user == null) | ||||||
|             return NotFound(); |             return NotFound(); | ||||||
|          |          | ||||||
|         user.Suspended = true; |         var newSuspension = new Suspension() | ||||||
|         user.SuspendedDate = DateTime.UtcNow; |         { | ||||||
|         user.SuspendedReason = reason; |             UserId = userId, | ||||||
|         user.SuspendAdminId = User.GetUserId(); |             Reason = reason, | ||||||
|         user.UnsuspendDate = DateTime.UtcNow.AddDays(days); |             AdminId = User.GetUserId(), | ||||||
|         _dbContext.Users.Update(user); |             SuspensionDate = DateTime.UtcNow, | ||||||
|  |             UnsuspensionDate = DateTime.UtcNow.AddDays(days), | ||||||
|  |             Voided = false | ||||||
|  |         }; | ||||||
|  |         _dbContext.Suspensions.Add(newSuspension); | ||||||
|         await _dbContext.SaveChangesAsync(); |         await _dbContext.SaveChangesAsync(); | ||||||
|         return Ok(); |         return Ok(); | ||||||
|     } |     } | ||||||
| @ -73,13 +78,13 @@ public class AdminUsersController:ControllerBase | |||||||
|          |          | ||||||
|         if (user == null) |         if (user == null) | ||||||
|             return NotFound(); |             return NotFound(); | ||||||
|  |         var suspension = await _dbContext.Suspensions.FirstOrDefaultAsync(x=>x.UserId==userId && x.UnsuspensionDate>DateTime.UtcNow); | ||||||
| 
 | 
 | ||||||
|         user.Suspended = false; |         if (suspension == null) | ||||||
|         user.SuspendedDate = null; |             return BadRequest(); | ||||||
|         user.SuspendedReason = null; |          | ||||||
|         user.SuspendAdminId = null; |         suspension.Voided = true; | ||||||
|         user.UnsuspendDate = null; |         _dbContext.Suspensions.Update(suspension); | ||||||
|         _dbContext.Users.Update(user); |  | ||||||
|         await _dbContext.SaveChangesAsync(); |         await _dbContext.SaveChangesAsync(); | ||||||
|         return Ok(); |         return Ok(); | ||||||
|     } |     } | ||||||
| @ -92,12 +97,16 @@ public class AdminUsersController:ControllerBase | |||||||
|         if (user == null) |         if (user == null) | ||||||
|             return NotFound(); |             return NotFound(); | ||||||
|          |          | ||||||
|         user.Banned = true; |         var ban = new Ban() | ||||||
|         user.BannedDate = DateTime.UtcNow; |         { | ||||||
|         user.BannedReason = reason; |             UserId = userId, | ||||||
|         user.BanAdminId = User.GetUserId(); |             Reason = reason, | ||||||
|         user.UnbanDate = DateTime.UtcNow.AddDays(days); |             AdminId = User.GetUserId(), | ||||||
|         _dbContext.Users.Update(user); |             BanDate = DateTime.UtcNow, | ||||||
|  |             UnbanDate = DateTime.UtcNow.AddDays(days), | ||||||
|  |             Voided = false | ||||||
|  |         }; | ||||||
|  |         _dbContext.Bans.Add(ban); | ||||||
|         await _dbContext.SaveChangesAsync(); |         await _dbContext.SaveChangesAsync(); | ||||||
|         return Ok(); |         return Ok(); | ||||||
|     } |     } | ||||||
| @ -110,11 +119,13 @@ public class AdminUsersController:ControllerBase | |||||||
|         if (user == null) |         if (user == null) | ||||||
|             return NotFound(); |             return NotFound(); | ||||||
|          |          | ||||||
|         user.Banned = false; |         var ban = await _dbContext.Bans.FirstOrDefaultAsync(x=>x.UserId==userId && x.UnbanDate>DateTime.UtcNow); | ||||||
|         user.BannedDate = null; | 
 | ||||||
|         user.BannedReason = null; |         if (ban == null) | ||||||
|         user.BanAdminId = null; |             return BadRequest(); | ||||||
|         user.UnbanDate = null; |          | ||||||
|  |         ban.Voided = true; | ||||||
|  |         _dbContext.Bans.Update(ban); | ||||||
|         _dbContext.Users.Update(user); |         _dbContext.Users.Update(user); | ||||||
|         await _dbContext.SaveChangesAsync(); |         await _dbContext.SaveChangesAsync(); | ||||||
|         return Ok(); |         return Ok(); | ||||||
|  | |||||||
| @ -73,8 +73,6 @@ public class ArtistPaymentController:Controller | |||||||
|             return BadRequest(); |             return BadRequest(); | ||||||
|         } |         } | ||||||
|          |          | ||||||
|         if(existingArtist.Suspended) |  | ||||||
|             return BadRequest(); |  | ||||||
|         var result = _paymentService.ArtistAccountIsOnboarded(existingArtist.StripeAccountId); |         var result = _paymentService.ArtistAccountIsOnboarded(existingArtist.StripeAccountId); | ||||||
|         return Ok(new ArtistOnboardStatusModel(){ Onboarded= result }); |         return Ok(new ArtistOnboardStatusModel(){ Onboarded= result }); | ||||||
|     } |     } | ||||||
| @ -93,8 +91,7 @@ public class ArtistPaymentController:Controller | |||||||
|                 return BadRequest(); |                 return BadRequest(); | ||||||
|             return Unauthorized(); |             return Unauthorized(); | ||||||
|         } |         } | ||||||
|         if(existingArtist.Suspended) |          | ||||||
|             return BadRequest(); |  | ||||||
|         if(existingArtist.StripeAccountId==null) |         if(existingArtist.StripeAccountId==null) | ||||||
|             return BadRequest(); |             return BadRequest(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -43,8 +43,6 @@ public class ArtistPortfolioController: Controller | |||||||
|                 return BadRequest(); |                 return BadRequest(); | ||||||
|             return Unauthorized(); |             return Unauthorized(); | ||||||
|         } |         } | ||||||
|         if(existingArtist.Suspended) |  | ||||||
|             return BadRequest(); |  | ||||||
| 
 | 
 | ||||||
|         var portfolio = await _dbContext.ArtistPortfolioPieces |         var portfolio = await _dbContext.ArtistPortfolioPieces | ||||||
|             .FirstAsync(x => x.ArtistId == existingArtist.Id && x.Id==portfolioId); |             .FirstAsync(x => x.ArtistId == existingArtist.Id && x.Id==portfolioId); | ||||||
| @ -66,8 +64,7 @@ public class ArtistPortfolioController: Controller | |||||||
|                 return BadRequest(); |                 return BadRequest(); | ||||||
|             return Unauthorized(); |             return Unauthorized(); | ||||||
|         } |         } | ||||||
|         if(existingArtist.Suspended) |          | ||||||
|             return BadRequest(); |  | ||||||
|         var portfolio = await _dbContext.ArtistPortfolioPieces.Where(x=>x.ArtistId==existingArtist.Id).ToListAsync(); |         var portfolio = await _dbContext.ArtistPortfolioPieces.Where(x=>x.ArtistId==existingArtist.Id).ToListAsync(); | ||||||
|         var result = portfolio.Select(x=>x.ToModel()).ToList(); |         var result = portfolio.Select(x=>x.ToModel()).ToList(); | ||||||
|         return Ok(result); |         return Ok(result); | ||||||
| @ -85,8 +82,6 @@ public class ArtistPortfolioController: Controller | |||||||
|             return BadRequest(); |             return BadRequest(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if(existingArtist.Suspended) |  | ||||||
|             return BadRequest(); |  | ||||||
|         var url = await _storageService.UploadImageAsync(HttpContext.Request.Body, Guid.NewGuid().ToString()); |         var url = await _storageService.UploadImageAsync(HttpContext.Request.Body, Guid.NewGuid().ToString()); | ||||||
|         var portfolio = new ArtistPortfolioPiece() |         var portfolio = new ArtistPortfolioPiece() | ||||||
|         { |         { | ||||||
| @ -114,8 +109,7 @@ public class ArtistPortfolioController: Controller | |||||||
|                 return BadRequest(); |                 return BadRequest(); | ||||||
|             return Unauthorized(); |             return Unauthorized(); | ||||||
|         } |         } | ||||||
|         if(existingArtist.Suspended) |          | ||||||
|             return BadRequest(); |  | ||||||
|         var portfolio = await _dbContext.ArtistPortfolioPieces.FirstOrDefaultAsync(x=>x.Id==portfolioId); |         var portfolio = await _dbContext.ArtistPortfolioPieces.FirstOrDefaultAsync(x=>x.Id==portfolioId); | ||||||
|         if(portfolio==null) |         if(portfolio==null) | ||||||
|             return NotFound(); |             return NotFound(); | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								src/comissions.app.api/Entities/Ban.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/comissions.app.api/Entities/Ban.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | namespace comissions.app.database.Entities; | ||||||
|  | 
 | ||||||
|  | public class Ban | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public string UserId { get; set; } | ||||||
|  |     public DateTime BanDate { get; set; } | ||||||
|  |     public DateTime UnbanDate { get; set; } | ||||||
|  |     public bool Voided { get; set; } = false; | ||||||
|  |     public string Reason { get; set; } | ||||||
|  |     public string AdminId { get; set; } | ||||||
|  |     public virtual User Admin { get; set; } | ||||||
|  |     public virtual User User { get; set; } | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								src/comissions.app.api/Entities/Suspension.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/comissions.app.api/Entities/Suspension.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | namespace comissions.app.database.Entities; | ||||||
|  | 
 | ||||||
|  | public class Suspension | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public string UserId { get; set; } | ||||||
|  |     public DateTime SuspensionDate { get; set; } | ||||||
|  |     public DateTime UnsuspensionDate { get; set; } | ||||||
|  |     public bool Voided { get; set; } = false; | ||||||
|  |     public string Reason { get; set; } | ||||||
|  |     public string AdminId { get; set; } | ||||||
|  |     public virtual User Admin { get; set; } | ||||||
|  |     public virtual User User { get; set; } | ||||||
|  | } | ||||||
| @ -10,19 +10,10 @@ public record User | |||||||
|     public string DisplayName { get; set; } = null!; |     public string DisplayName { get; set; } = null!; | ||||||
|     public string Biography { get; set; } = null!; |     public string Biography { get; set; } = null!; | ||||||
|     public string Email { get; set; } = null!; |     public string Email { get; set; } = null!; | ||||||
|  |      | ||||||
|     public int? UserArtistId { get; set; } |     public int? UserArtistId { get; set; } | ||||||
|      |  | ||||||
|     public bool Banned { get; set; } = false; |  | ||||||
|     public DateTime? BannedDate { get; set; } |  | ||||||
|     public DateTime? UnbanDate { get; set; } |  | ||||||
|     public string? BannedReason { get; set; } |  | ||||||
|     public string? BanAdminId { get; set; } |  | ||||||
|      |  | ||||||
|     public bool Suspended { get; set; } = false; |  | ||||||
|     public DateTime? SuspendedDate { get; set; } |  | ||||||
|     public DateTime? UnsuspendDate { get; set; } |  | ||||||
|     public string? SuspendedReason { get; set; } |  | ||||||
|     public string? SuspendAdminId { get; set; } |  | ||||||
|      |  | ||||||
|     [JsonIgnore] public virtual UserArtist? UserArtist { get; set; } |     [JsonIgnore] public virtual UserArtist? UserArtist { get; set; } | ||||||
|  |     [JsonIgnore] public virtual ICollection<Request> Requests { get; set; } = new List<Request>(); | ||||||
|  |     [JsonIgnore] public virtual ICollection<Suspension> Suspensions { get; set; } = new List<Suspension>(); | ||||||
|  |     [JsonIgnore] public virtual ICollection<Ban> Bans { get; set; } = new List<Ban>(); | ||||||
| } | } | ||||||
| @ -17,11 +17,6 @@ public record UserArtist | |||||||
|     public bool AgeRestricted { get; set; } |     public bool AgeRestricted { get; set; } | ||||||
|     public string? StripeAccountId { get; set; } |     public string? StripeAccountId { get; set; } | ||||||
|     public bool PrepaymentRequired { get; set; } = false; |     public bool PrepaymentRequired { get; set; } = false; | ||||||
|     public bool Suspended { get; set; } = false; |  | ||||||
|     public DateTime? SuspendedDate { get; set; } |  | ||||||
|     public DateTime? UnsuspendDate { get; set; } |  | ||||||
|     public string? SuspendedReason { get; set; } |  | ||||||
|     public string? SuspendAdminId { get; set; } |  | ||||||
|     public virtual User User { get; set; } = null!; |     public virtual User User { get; set; } = null!; | ||||||
|      |      | ||||||
|     public int ArtistPageSettingsId { get; set; } |     public int ArtistPageSettingsId { get; set; } | ||||||
|  | |||||||
| @ -27,7 +27,10 @@ public class UserMiddleware | |||||||
|         { |         { | ||||||
|             var userId = context.User.Claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value; |             var userId = context.User.Claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value; | ||||||
| 
 | 
 | ||||||
|             var user = await dbContext.Users.Include(x=>x.UserArtist).FirstOrDefaultAsync(x=>x.Id==userId); |             var user = await dbContext.Users.Include(x=>x.UserArtist) | ||||||
|  |                 .Include(x=>x.Bans).ThenInclude(x=>x.Admin) | ||||||
|  |                 .Include(x=>x.Suspensions).ThenInclude(x=>x.Admin) | ||||||
|  |                 .FirstOrDefaultAsync(x=>x.Id==userId); | ||||||
| 
 | 
 | ||||||
|             if (user == null) |             if (user == null) | ||||||
|             { |             { | ||||||
| @ -59,71 +62,24 @@ public class UserMiddleware | |||||||
|                 Email = user.Email |                 Email = user.Email | ||||||
|             }; |             }; | ||||||
|             var subscriber = await _client.Subscriber.Create(newSubscriberDto); |             var subscriber = await _client.Subscriber.Create(newSubscriberDto); | ||||||
|              |             var suspension = user.Suspensions.FirstOrDefault(x => x.UnsuspensionDate > DateTime.UtcNow && x.Voided==false); | ||||||
|             if (user.Suspended) |             if (suspension!=null) | ||||||
|             { |             { | ||||||
|                 if (user.UnsuspendDate < DateTime.UtcNow) |                 var suspendDate = suspension.SuspensionDate.ToString("MM/dd/yyyy"); | ||||||
|                 { |                 var unsuspendDate = suspension.UnsuspensionDate.ToString("MM/dd/yyyy"); | ||||||
|                     user.Suspended = false; |                 await context.Response.WriteAsync($"Suspended on {suspendDate} until {unsuspendDate} for {suspension.Reason} by {suspension.Admin.DisplayName}."); | ||||||
|                     user.SuspendedDate = null; |                 context.Response.StatusCode = StatusCodes.Status403Forbidden; | ||||||
|                     user.UnsuspendDate = null; |                 return; | ||||||
|                     user.SuspendedReason = null; |  | ||||||
|                     user.SuspendAdminId = null; |  | ||||||
|                     dbContext.Users.Update(user); |  | ||||||
|                     await dbContext.SaveChangesAsync(); |  | ||||||
|                 } |  | ||||||
|                 else |  | ||||||
|                 { |  | ||||||
|                     var suspendDate = user.SuspendedDate.Value.ToString("MM/dd/yyyy"); |  | ||||||
|                     var unsuspendDate = user.UnsuspendDate.Value.ToString("MM/dd/yyyy"); |  | ||||||
|                     await context.Response.WriteAsync($"Suspended on {suspendDate} until {unsuspendDate} for {user.SuspendedReason} by {user.SuspendAdminId}."); |  | ||||||
|                     context.Response.StatusCode = StatusCodes.Status403Forbidden; |  | ||||||
|                     return; |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if (user.Banned) |             var ban = user.Bans.FirstOrDefault(x => x.UnbanDate > DateTime.UtcNow && x.Voided==false); | ||||||
|  |             if (ban!=null) | ||||||
|             { |             { | ||||||
|                 if (user.UnsuspendDate < DateTime.UtcNow) |                 var suspendDate = ban.BanDate.ToString("MM/dd/yyyy"); | ||||||
|                 { |                 var unsuspendDate = ban.UnbanDate.ToString("MM/dd/yyyy"); | ||||||
|                     user.Banned = false; |                 await context.Response.WriteAsync($"Banned on {suspendDate} until {unsuspendDate} for {ban.Reason} by {ban.Admin.DisplayName}."); | ||||||
|                     user.BannedDate = null; |                 context.Response.StatusCode = StatusCodes.Status403Forbidden; | ||||||
|                     user.BannedDate = null; |                 return; | ||||||
|                     user.BannedReason = null; |  | ||||||
|                     user.BanAdminId = null; |  | ||||||
|                     dbContext.Users.Update(user); |  | ||||||
|                     await dbContext.SaveChangesAsync(); |  | ||||||
|                 } |  | ||||||
|                 else |  | ||||||
|                 { |  | ||||||
|                     var suspendDate = user.BannedDate.Value.ToString("MM/dd/yyyy"); |  | ||||||
|                     var unsuspendDate = user.UnbanDate.Value.ToString("MM/dd/yyyy"); |  | ||||||
|                     await context.Response.WriteAsync($"Banned on {suspendDate} until {unsuspendDate} for {user.BannedReason} by {user.BanAdminId}."); |  | ||||||
|                     context.Response.StatusCode = StatusCodes.Status403Forbidden; |  | ||||||
|                     return; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             if (user.UserArtist != null && user.UserArtist.Suspended) |  | ||||||
|             { |  | ||||||
|                 if (user.UserArtist.UnsuspendDate < DateTime.UtcNow) |  | ||||||
|                 { |  | ||||||
|                     user.UserArtist.Suspended = false; |  | ||||||
|                     user.UserArtist.SuspendedDate = null; |  | ||||||
|                     user.UserArtist.UnsuspendDate = null; |  | ||||||
|                     user.UserArtist.SuspendedReason = null; |  | ||||||
|                     user.UserArtist.SuspendAdminId = null; |  | ||||||
|                     dbContext.Users.Update(user); |  | ||||||
|                     await dbContext.SaveChangesAsync(); |  | ||||||
|                 } |  | ||||||
|                 else |  | ||||||
|                 { |  | ||||||
|                     var suspendDate = user.UserArtist.SuspendedDate.Value.ToString("MM/dd/yyyy"); |  | ||||||
|                     var unsuspendDate = user.UserArtist.UnsuspendDate.Value.ToString("MM/dd/yyyy"); |  | ||||||
|                     await context.Response.WriteAsync($"Banned on {suspendDate} until {unsuspendDate} for {user.UserArtist.SuspendedReason} by {user.UserArtist.SuspendAdminId}."); |  | ||||||
|                     context.Response.StatusCode = StatusCodes.Status403Forbidden; |  | ||||||
|                     return; |  | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Damien Ostler
						Damien Ostler