feat: fixed naming

This commit is contained in:
Damien Ostler 2024-02-19 04:50:48 -05:00
parent 1dc7ecdc8f
commit 2b23da286e
48 changed files with 1701 additions and 1061 deletions

View File

@ -41,10 +41,10 @@ public class ApplicationDbContext:DbContext
#region DB Sets
public DbSet<User> Users { get; set; } = null!;
public DbSet<SellerProfilePageSettings> SellerProfilePageSettings { get; set; }= null!;
public DbSet<UserSellerProfile> UserSellerProfiles { get; set; }= null!;
public DbSet<SellerProfileRequest> SellerProfileRequests { get; set; }= null!;
public DbSet<SellerProfilePortfolioPiece> SellerProfilePortfolioPieces { get; set; }= null!;
public DbSet<SellerService> SellerServices { get; set; }= null!;
public DbSet<ArtistPageSettings> ArtistPageSettings { get; set; }= null!;
public DbSet<UserArtist> UserArtists { get; set; }= null!;
public DbSet<ArtistRequest> ArtistRequests { get; set; }= null!;
public DbSet<ArtistPortfolioPiece> ArtistPortfolioPieces { get; set; }= null!;
public DbSet<Request> Requests { get; set; }= null!;
#endregion
}

View File

@ -1,4 +1,4 @@
using comissions.app.api.Models.SellerProfileRequest;
using comissions.app.api.Models.ArtistRequest;
using comissions.app.api.Services.Payment;
using comissions.app.database;
using comissions.app.database.Entities;
@ -11,12 +11,12 @@ namespace comissions.app.api.Controllers;
[ApiController]
[Authorize("admin")]
[Route("api/admin/[controller]")]
public class AdminSellerRequestsController : Controller
public class AdminArtistRequestsController : Controller
{
private readonly ApplicationDbContext _dbContext;
private readonly IPaymentService _paymentService;
public AdminSellerRequestsController(ApplicationDbContext dbContext, IPaymentService paymentService)
public AdminArtistRequestsController(ApplicationDbContext dbContext, IPaymentService paymentService)
{
_paymentService = paymentService;
_dbContext = dbContext;
@ -30,9 +30,9 @@ public class AdminSellerRequestsController : Controller
/// <returns>A list of seller profile requests</returns>
[HttpGet]
[Authorize("read:seller-profile-request")]
public async Task<IActionResult> GetSellerRequests(int offset = 0, int pageSize = 10)
public async Task<IActionResult> GetArtistRequests(int offset = 0, int pageSize = 10)
{
var requests = _dbContext.SellerProfileRequests.Skip(offset).Take(pageSize).ToList();
var requests = _dbContext.ArtistRequests.Skip(offset).Take(pageSize).ToList();
var result = requests.Select(x=>x.ToModel()).ToList();
return Ok(result);
}
@ -44,9 +44,9 @@ public class AdminSellerRequestsController : Controller
[HttpGet]
[Authorize("read:seller-profile-request")]
[Route("Count")]
public async Task<IActionResult> GetSellerRequestsCount()
public async Task<IActionResult> GetArtistRequestsCount()
{
var result = _dbContext.SellerProfileRequests.Count();
var result = _dbContext.ArtistRequests.Count();
return Ok(result);
}
@ -58,9 +58,9 @@ public class AdminSellerRequestsController : Controller
[HttpPut]
[Authorize("write:seller-profile-request")]
[Route("{userId}")]
public async Task<IActionResult> AcceptSellerRequest(string userId)
public async Task<IActionResult> AcceptArtistRequest(string userId)
{
var request = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId);
var request = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId);
if(request==null)
return NotFound("No request for that user exists.");
@ -70,8 +70,8 @@ public class AdminSellerRequestsController : Controller
request.Accepted = true;
request.AcceptedDate = DateTime.UtcNow;
var accountId = _paymentService.CreateSellerAccount();
var newSellerProfile = new UserSellerProfile()
var accountId = _paymentService.CreateArtistAccount();
var newArtist = new UserArtist()
{
UserId = userId,
AgeRestricted = false,
@ -84,11 +84,11 @@ public class AdminSellerRequestsController : Controller
RequestGuidelines = "",
Name = "Default Shop",
};
var dbProfile = _dbContext.UserSellerProfiles.Add(newSellerProfile).Entity;
var dbProfile = _dbContext.UserArtists.Add(newArtist).Entity;
await _dbContext.SaveChangesAsync();
var newSettings = new SellerProfilePageSettings()
var newSettings = new ArtistPageSettings()
{
SellerProfileId = dbProfile.Id,
ArtistId = dbProfile.Id,
BackgroundColor = "rgb(126, 115, 115)",
HeaderColor = "rgb(194, 187, 187)",
HeaderTextSize = 5,
@ -123,10 +123,10 @@ public class AdminSellerRequestsController : Controller
RequestButtonTextColor = "rgb(194, 187, 187)",
RequestButtonHoverBGColor = "rgb(98, 98, 98)"
};
var dbSettings = _dbContext.SellerProfilePageSettings.Add(newSettings).Entity;
var dbSettings = _dbContext.ArtistPageSettings.Add(newSettings).Entity;
await _dbContext.SaveChangesAsync();
request = _dbContext.SellerProfileRequests.Update(request).Entity;
request = _dbContext.ArtistRequests.Update(request).Entity;
await _dbContext.SaveChangesAsync();
var result = request.ToModel();
return Ok(result);

View File

@ -10,37 +10,37 @@ namespace comissions.app.api.Controllers;
[ApiController]
[Authorize("admin")]
[Route("api/admin/[controller]")]
public class AdminSellersController:ControllerBase
public class AdminArtistsController:ControllerBase
{
private readonly ApplicationDbContext _dbContext;
public AdminSellersController(ApplicationDbContext dbContext)
public AdminArtistsController(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
[HttpGet]
public async Task<IActionResult> GetSellers(string search="", int offset = 0, int pageSize = 10)
public async Task<IActionResult> GetArtists(string search="", int offset = 0, int pageSize = 10)
{
var sellers = await _dbContext.UserSellerProfiles.Include(x=>x.User)
var sellers = await _dbContext.UserArtists.Include(x=>x.User)
.Where(x=>x.User.DisplayName.Contains(search) || x.User.Email.Contains(search))
.Skip(offset).Take(pageSize).ToListAsync();
return Ok(sellers);
}
[HttpGet("Count")]
public async Task<IActionResult> GetSellersCount(string search="")
public async Task<IActionResult> GetArtistsCount(string search="")
{
var result = await _dbContext.UserSellerProfiles.Include(x=>x.User)
var result = await _dbContext.UserArtists.Include(x=>x.User)
.Where(x=>x.User.DisplayName.Contains(search) || x.User.Email.Contains(search))
.CountAsync();
return Ok(result);
}
[HttpGet("{sellerId:int}")]
public async Task<IActionResult> GetSeller(int sellerId)
public async Task<IActionResult> GetArtist(int sellerId)
{
var seller = await _dbContext.UserSellerProfiles.Include(x=>x.User)
var seller = await _dbContext.UserArtists.Include(x=>x.User)
.FirstOrDefaultAsync(x=>x.Id==sellerId);
if (seller == null)
@ -51,9 +51,9 @@ public class AdminSellersController:ControllerBase
[HttpPut("{sellerId:int}/Suspend")]
public async Task<IActionResult> SuspendSeller(int sellerId, [FromQuery]string reason, [FromQuery]int days)
public async Task<IActionResult> SuspendArtist(int sellerId, [FromQuery]string reason, [FromQuery]int days)
{
var seller = _dbContext.UserSellerProfiles.FirstOrDefault(x=>x.Id==sellerId);
var seller = _dbContext.UserArtists.FirstOrDefault(x=>x.Id==sellerId);
if (seller == null)
return NotFound();
@ -66,16 +66,16 @@ public class AdminSellersController:ControllerBase
seller.UnsuspendDate = DateTime.UtcNow.AddDays(days);
seller.SuspendedReason = reason;
seller.SuspendAdminId = User.GetUserId();
_dbContext.UserSellerProfiles.Update(seller);
_dbContext.UserArtists.Update(seller);
await _dbContext.SaveChangesAsync();
return Ok();
}
[HttpPut("{sellerId:int}/Unsuspend")]
public async Task<IActionResult> UnsuspendSeller(int sellerId)
public async Task<IActionResult> UnsuspendArtist(int sellerId)
{
var seller = _dbContext.UserSellerProfiles.FirstOrDefault(x=>x.Id==sellerId);
var seller = _dbContext.UserArtists.FirstOrDefault(x=>x.Id==sellerId);
if (seller == null)
return NotFound();
@ -88,16 +88,16 @@ public class AdminSellersController:ControllerBase
seller.UnsuspendDate = null;
seller.SuspendedReason = null;
seller.SuspendAdminId = null;
_dbContext.UserSellerProfiles.Update(seller);
_dbContext.UserArtists.Update(seller);
await _dbContext.SaveChangesAsync();
return Ok();
}
[HttpPut("{sellerId:int}/Terminate")]
public async Task<IActionResult> TerminateSeller(int sellerId)
public async Task<IActionResult> TerminateArtist(int sellerId)
{
var seller = _dbContext.UserSellerProfiles.FirstOrDefault(x=>x.Id==sellerId);
var seller = _dbContext.UserArtists.FirstOrDefault(x=>x.Id==sellerId);
if (seller == null)
return NotFound();
@ -105,7 +105,7 @@ public class AdminSellersController:ControllerBase
if (!seller.Suspended)
return BadRequest();
_dbContext.UserSellerProfiles.Remove(seller);
_dbContext.UserArtists.Remove(seller);
await _dbContext.SaveChangesAsync();
return Ok();
}
@ -113,7 +113,7 @@ public class AdminSellersController:ControllerBase
[HttpPut("{sellerId:int}/SetBiography")]
public async Task<IActionResult> SetBiography(int sellerId, [FromBody]string biography)
{
var seller = _dbContext.UserSellerProfiles.FirstOrDefault(x=>x.Id==sellerId);
var seller = _dbContext.UserArtists.FirstOrDefault(x=>x.Id==sellerId);
if (seller == null)
return NotFound();
@ -122,7 +122,7 @@ public class AdminSellersController:ControllerBase
return BadRequest();
seller.Description = biography;
_dbContext.UserSellerProfiles.Update(seller);
_dbContext.UserArtists.Update(seller);
await _dbContext.SaveChangesAsync();
return Ok();
}

View File

@ -0,0 +1,291 @@
using comissions.app.api.Extensions;
using comissions.app.api.Models.PortfolioModel;
using comissions.app.api.Models.Artist;
using comissions.app.api.Models.ArtistRequest;
using comissions.app.api.Services.Payment;
using comissions.app.api.Services.Storage;
using comissions.app.database;
using comissions.app.database.Entities;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
namespace comissions.app.api.Controllers;
[ApiController]
[Route("api/[controller]")]
public class ArtistController : Controller
{
private readonly ApplicationDbContext _dbContext;
private readonly IStorageService _storageService;
private readonly IPaymentService _paymentService;
public ArtistController(ApplicationDbContext dbContext, IPaymentService paymentService, IStorageService storageService)
{
_paymentService = paymentService;
_storageService = storageService;
_dbContext = dbContext;
}
[HttpGet]
[Authorize("read:seller-profile")]
public async Task<IActionResult> GetArtist()
{
var userId = User.GetUserId();
var Artist = await _dbContext.UserArtists.FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if(Artist==null)
{
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(ArtistRequest!=null)
return BadRequest();
return Unauthorized();
}
var result = Artist.ToModel();
return Ok(result);
}
[HttpPut]
[Authorize("write:seller-profile")]
public async Task<IActionResult> UpdateArtist(ArtistModel model)
{
var userId = User.GetUserId();
var existingArtist = await _dbContext.UserArtists.FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if (existingArtist == null)
{
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(ArtistRequest!=null)
return BadRequest();
return Unauthorized();
}
if (_dbContext.UserArtists.Any(x => x.Name.ToLower() == model.Name.ToLower()))
return BadRequest();
var updatedArtist = model.ToModel(existingArtist);
updatedArtist = _dbContext.UserArtists.Update(updatedArtist).Entity;
await _dbContext.SaveChangesAsync();
var result = updatedArtist.ToModel();
return Ok(result);
}
[HttpGet]
[Authorize("read:seller-profile")]
[Route("Request")]
public async Task<IActionResult> GetArtistRequest()
{
var userId = User.GetUserId();
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId);
if(ArtistRequest==null)
return NotFound();
var result = ArtistRequest.ToModel();
return Ok(result);
}
[HttpGet]
[Authorize("read:seller-profile")]
[Route("Page")]
public async Task<IActionResult> GetArtistPage()
{
var userId = User.GetUserId();
var Artist = await _dbContext.UserArtists.Include(x=>x.ArtistPageSettings).FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if(Artist==null)
return NotFound();
var result = Artist.ArtistPageSettings.ToModel();
return Ok(result);
}
[HttpPut]
[Authorize("write:seller-profile")]
[Route("Page")]
public async Task<IActionResult> UpdateArtistPage([FromBody]ArtistPageSettingsModel model)
{
var userId = User.GetUserId();
var existingArtist = await _dbContext.UserArtists
.Include(x=>x.ArtistPageSettings).FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if (existingArtist == null)
{
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(ArtistRequest!=null)
return BadRequest();
return Unauthorized();
}
var updatedArtist = model.ToModel(existingArtist.ArtistPageSettings);
updatedArtist = _dbContext.ArtistPageSettings.Update(updatedArtist).Entity;
await _dbContext.SaveChangesAsync();
var result = updatedArtist.ToModel();
return Ok(result);
}
[HttpPost]
[Authorize("write:seller-profile")]
public async Task<IActionResult> RequestArtist()
{
var userId = User.GetUserId();
var existingArtist = await _dbContext.UserArtists.FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if (existingArtist != null)
{
return Unauthorized();
}
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId);
if (ArtistRequest != null)
return Ok(ArtistRequest.ToModel());
ArtistRequest = new ArtistRequest()
{
Accepted = false,
RequestDate = DateTime.UtcNow,
UserId = userId
};
_dbContext.ArtistRequests.Add(ArtistRequest);
await _dbContext.SaveChangesAsync();
return Ok();
}
[HttpGet]
[Authorize("read:seller-profile")]
[Route("{sellerServiceId:int}/Portfolio/{portfolioId:int}")]
public async Task<IActionResult> GetPortfolio(int sellerServiceId, int portfolioId)
{
var userId = User.GetUserId();
var existingArtist = await _dbContext.UserArtists.FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if (existingArtist == null)
{
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(ArtistRequest!=null)
return BadRequest();
return Unauthorized();
}
if(existingArtist.Suspended)
return BadRequest();
var portfolio = await _dbContext.ArtistPortfolioPieces
.FirstAsync(x => x.ArtistId == existingArtist.Id && x.Id==portfolioId);
var content = await _storageService.DownloadImageAsync(portfolio.FileReference);
return new FileStreamResult(content, "application/octet-stream");
}
[HttpGet]
[Route("Portfolio")]
[Authorize("read:seller-profile")]
public async Task<IActionResult> GetPortfolio()
{
var userId = User.GetUserId();
var existingArtist = await _dbContext.UserArtists.FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if (existingArtist == null)
{
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(ArtistRequest!=null)
return BadRequest();
return Unauthorized();
}
if(existingArtist.Suspended)
return BadRequest();
var portfolio = await _dbContext.ArtistPortfolioPieces.Where(x=>x.ArtistId==existingArtist.Id).ToListAsync();
var result = portfolio.Select(x=>x.ToModel()).ToList();
return Ok(result);
}
[HttpPost]
[Route("Portfolio")]
[Authorize("write:seller-profile")]
public async Task<IActionResult> AddPortfolio()
{
var userId = User.GetUserId();
var existingArtist = await _dbContext.UserArtists.FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if (existingArtist == null)
{
return BadRequest();
}
if(existingArtist.Suspended)
return BadRequest();
var url = await _storageService.UploadImageAsync(HttpContext.Request.Body, Guid.NewGuid().ToString());
var portfolio = new ArtistPortfolioPiece()
{
ArtistId = existingArtist.Id,
FileReference = url
};
portfolio.ArtistId = existingArtist.Id;
_dbContext.ArtistPortfolioPieces.Add(portfolio);
await _dbContext.SaveChangesAsync();
var result = portfolio.ToModel();
return Ok(result);
}
[HttpDelete]
[Authorize("write:seller-profile")]
[Route("Portfolio/{portfolioId:int}")]
public async Task<IActionResult> DeletePortfolio(int portfolioId)
{
var userId = User.GetUserId();
var existingArtist = await _dbContext.UserArtists.FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if (existingArtist == null)
{
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(ArtistRequest!=null)
return BadRequest();
return Unauthorized();
}
if(existingArtist.Suspended)
return BadRequest();
var portfolio = await _dbContext.ArtistPortfolioPieces.FirstOrDefaultAsync(x=>x.Id==portfolioId);
if(portfolio==null)
return NotFound();
if(portfolio.ArtistId!=existingArtist.Id)
return BadRequest();
_dbContext.ArtistPortfolioPieces.Remove(portfolio);
await _dbContext.SaveChangesAsync();
return Ok();
}
[HttpGet]
[Authorize("write:seller-profile")]
[Route("Onboard")]
public async Task<IActionResult> PaymentAccountStatus()
{
var userId = User.GetUserId();
var existingArtist = await _dbContext.UserArtists.FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if (existingArtist == null)
{
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(ArtistRequest!=null)
return BadRequest();
return Unauthorized();
}
if(existingArtist.Suspended)
return BadRequest();
var result = _paymentService.ArtistAccountIsOnboarded(existingArtist.StripeAccountId);
return Ok(new ArtistOnboardStatusModel(){ Onboarded= result });
}
[HttpGet]
[Authorize("write:seller-profile")]
[Route("Onboard/Url")]
public async Task<IActionResult> GetPaymentAccount()
{
var userId = User.GetUserId();
var existingArtist = await _dbContext.UserArtists.FirstOrDefaultAsync(Artist=>Artist.UserId==userId);
if (existingArtist == null)
{
var ArtistRequest = await _dbContext.ArtistRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(ArtistRequest!=null)
return BadRequest();
return Unauthorized();
}
if(existingArtist.Suspended)
return BadRequest();
if(existingArtist.StripeAccountId==null)
return BadRequest();
var result = _paymentService.CreateArtistAccountOnboardingUrl(existingArtist.StripeAccountId);
return Ok(new ArtistOnboardUrlModel()
{
OnboardUrl = result
});
}
}

View File

@ -1,6 +1,4 @@
using comissions.app.api.Models.SellerProfile;
using comissions.app.api.Models.SellerService;
using comissions.app.api.Models.Discovery;
using comissions.app.api.Models.Artist;
using comissions.app.api.Models.PortfolioModel;
using comissions.app.api.Services.Storage;
using comissions.app.database;
@ -24,10 +22,10 @@ public class DiscoveryController : Controller
[HttpGet]
[Route("Sellers")]
public async Task<IActionResult> GetSellers(string search="",int offset = 0, int pageSize = 10)
[Route("Artists")]
public async Task<IActionResult> GetArtists(string search="",int offset = 0, int pageSize = 10)
{
var sellers = await _dbContext.UserSellerProfiles
var sellers = await _dbContext.UserArtists
.Where(x=>x.User.DisplayName.Contains(search))
.Include(x=>x.User)
.Skip(offset).Take(pageSize).ToListAsync();
@ -36,11 +34,10 @@ public class DiscoveryController : Controller
}
[HttpGet]
[Route("Sellers/{sellerId:int}")]
public async Task<IActionResult> GetSeller(int sellerId)
[Route("Artists/{sellerId:int}")]
public async Task<IActionResult> GetArtist(int sellerId)
{
var seller = await _dbContext.UserSellerProfiles
.Include(x=>x.SellerServices)
var seller = await _dbContext.UserArtists
.FirstOrDefaultAsync(x=>x.Id==sellerId);
if(seller==null)
return NotFound();
@ -50,59 +47,59 @@ public class DiscoveryController : Controller
[HttpGet]
[Route("Sellers/{sellerName}/Page")]
public async Task<IActionResult> GetSellerPage(string sellerName)
[Route("Artists/{sellerName}/Page")]
public async Task<IActionResult> GetArtistPage(string sellerName)
{
var seller = await _dbContext.UserSellerProfiles
.Include(x=>x.SellerProfilePageSettings)
var seller = await _dbContext.UserArtists
.Include(x=>x.ArtistPageSettings)
.FirstOrDefaultAsync(x=>x.Name==sellerName.Replace('-', ' '));
if(seller==null)
return NotFound();
var result = seller.SellerProfilePageSettings;
var result = seller.ArtistPageSettings.ToModel();
return Ok(result);
}
[HttpGet]
[Route("Sellers/{sellerId:int}/Portfolio")]
public async Task<IActionResult> GetSellerPortfolio(int sellerId, int offset = 0, int pageSize = 10)
[Route("Artists/{sellerId:int}/Portfolio")]
public async Task<IActionResult> GetArtistPortfolio(int sellerId, int offset = 0, int pageSize = 10)
{
var seller = await _dbContext.UserSellerProfiles
var seller = await _dbContext.UserArtists
.Include(x=>x.User)
.FirstOrDefaultAsync(x=>x.Id==sellerId);
if(seller==null)
return NotFound();
var sellerPortfolio = await _dbContext.SellerProfilePortfolioPieces
.Where(x=>x.SellerProfileId==sellerId)
var sellerPortfolio = await _dbContext.ArtistPortfolioPieces
.Where(x=>x.ArtistId==sellerId)
.Skip(offset).Take(pageSize).ToListAsync();
var result = sellerPortfolio.Select(x=>x.ToModel()).ToList();
return Ok(result);
}
[HttpGet]
[Route("Sellers/{sellerId:int}/Portfolio/Count")]
public async Task<IActionResult> GetSellerPortfolioCount(int sellerId)
[Route("Artists/{sellerId:int}/Portfolio/Count")]
public async Task<IActionResult> GetArtistPortfolioCount(int sellerId)
{
var seller = await _dbContext.UserSellerProfiles
var seller = await _dbContext.UserArtists
.Include(x=>x.User)
.FirstOrDefaultAsync(x=>x.Id==sellerId);
if(seller==null)
return NotFound();
var sellerPortfolio = await _dbContext.SellerProfilePortfolioPieces
.Where(x=>x.SellerProfileId==sellerId)
var sellerPortfolio = await _dbContext.ArtistPortfolioPieces
.Where(x=>x.ArtistId==sellerId)
.CountAsync();
return Ok(sellerPortfolio);
}
[HttpGet]
[Route("Sellers/{sellerId:int}/Portfolio/{portfolioId:int}")]
public async Task<IActionResult> GetSellerPortfolioPiece(int sellerId, int portfolioId)
[Route("Artists/{sellerId:int}/Portfolio/{portfolioId:int}")]
public async Task<IActionResult> GetArtistPortfolioPiece(int sellerId, int portfolioId)
{
var seller = await _dbContext.UserSellerProfiles
var seller = await _dbContext.UserArtists
.Include(x=>x.User)
.FirstOrDefaultAsync(x=>x.Id==sellerId);
if(seller==null)
return NotFound();
var sellerPortfolio = await _dbContext.SellerProfilePortfolioPieces
var sellerPortfolio = await _dbContext.ArtistPortfolioPieces
.FirstOrDefaultAsync(x=>x.Id==portfolioId);
if(sellerPortfolio==null)
return NotFound("Portfolio piece not found.");
@ -112,10 +109,10 @@ public class DiscoveryController : Controller
}
[HttpGet]
[Route("Sellers/Count")]
public async Task<IActionResult> GetSellersCount(string search="")
[Route("Artists/Count")]
public async Task<IActionResult> GetArtistsCount(string search="")
{
var result = await _dbContext.UserSellerProfiles
var result = await _dbContext.UserArtists
.Where(x=>x.User.DisplayName.Contains(search))
.Include(x=>x.User)
.CountAsync();

View File

@ -0,0 +1,66 @@
using comissions.app.api.Services.Payment;
using comissions.app.api.Services.Storage;
using comissions.app.database;
using comissions.app.database.Entities;
using comissions.app.database.Models.Request;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
namespace comissions.app.api.Controllers;
[ApiController]
[Route("api/[controller]")]
public class RequestsController : Controller
{
private readonly ApplicationDbContext _dbContext;
private readonly IStorageService _storageService;
private readonly IPaymentService _paymentService;
public RequestsController(ApplicationDbContext dbContext, IPaymentService paymentService, IStorageService storageService)
{
_paymentService = paymentService;
_storageService = storageService;
_dbContext = dbContext;
}
[HttpGet]
[Route("Requests")]
public async Task<IActionResult> GetRequests(string search="",int offset = 0, int pageSize = 10)
{
var requests = await _dbContext.Requests
.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);
}
[HttpGet]
[Route("Requests/{requestId:int}")]
public async Task<IActionResult> GetRequest(int requestId)
{
var request = await _dbContext.Requests
.Include(x=>x.Artist)
.FirstOrDefaultAsync(x=>x.Id==requestId);
if(request==null)
return NotFound();
var result = request.ToModel();
return Ok(result);
}
[HttpPost]
[Route("Requests")]
public async Task<IActionResult> CreateRequest([FromBody] RequestModel model)
{
var request = new Request()
{
Amount = model.Amount,
Message = model.Message,
RequestDate = DateTime.Now
};
_dbContext.Requests.Add(request);
await _dbContext.SaveChangesAsync();
return Ok(request.ToModel());
}
}

View File

@ -1,291 +0,0 @@
using comissions.app.api.Extensions;
using comissions.app.api.Models.PortfolioModel;
using comissions.app.api.Models.SellerProfile;
using comissions.app.api.Models.SellerProfileRequest;
using comissions.app.api.Services.Payment;
using comissions.app.api.Services.Storage;
using comissions.app.database;
using comissions.app.database.Entities;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
namespace comissions.app.api.Controllers;
[ApiController]
[Route("api/[controller]")]
public class SellerProfileController : Controller
{
private readonly ApplicationDbContext _dbContext;
private readonly IStorageService _storageService;
private readonly IPaymentService _paymentService;
public SellerProfileController(ApplicationDbContext dbContext, IPaymentService paymentService, IStorageService storageService)
{
_paymentService = paymentService;
_storageService = storageService;
_dbContext = dbContext;
}
[HttpGet]
[Authorize("read:seller-profile")]
public async Task<IActionResult> GetSellerProfile()
{
var userId = User.GetUserId();
var sellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if(sellerProfile==null)
{
var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(sellerProfileRequest!=null)
return BadRequest();
return Unauthorized();
}
var result = sellerProfile.ToModel();
return Ok(result);
}
[HttpPut]
[Authorize("write:seller-profile")]
public async Task<IActionResult> UpdateSellerProfile(SellerProfileModel model)
{
var userId = User.GetUserId();
var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if (existingSellerProfile == null)
{
var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(sellerProfileRequest!=null)
return BadRequest();
return Unauthorized();
}
if (_dbContext.UserSellerProfiles.Any(x => x.Name.ToLower() == model.Name.ToLower()))
return BadRequest();
var updatedSellerProfile = model.ToModel(existingSellerProfile);
updatedSellerProfile = _dbContext.UserSellerProfiles.Update(updatedSellerProfile).Entity;
await _dbContext.SaveChangesAsync();
var result = updatedSellerProfile.ToModel();
return Ok(result);
}
[HttpGet]
[Authorize("read:seller-profile")]
[Route("Request")]
public async Task<IActionResult> GetSellerProfileRequest()
{
var userId = User.GetUserId();
var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId);
if(sellerProfileRequest==null)
return NotFound();
var result = sellerProfileRequest.ToModel();
return Ok(result);
}
[HttpGet]
[Authorize("read:seller-profile")]
[Route("Page")]
public async Task<IActionResult> GetSellerProfilePage()
{
var userId = User.GetUserId();
var sellerProfile = await _dbContext.UserSellerProfiles.Include(x=>x.SellerProfilePageSettings).FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if(sellerProfile==null)
return NotFound();
var result = sellerProfile.SellerProfilePageSettings.ToModel();
return Ok(result);
}
[HttpPut]
[Authorize("write:seller-profile")]
[Route("Page")]
public async Task<IActionResult> UpdateSellerProfilePage([FromBody]SellerProfilePageSettingsModel model)
{
var userId = User.GetUserId();
var existingSellerProfile = await _dbContext.UserSellerProfiles
.Include(x=>x.SellerProfilePageSettings).FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if (existingSellerProfile == null)
{
var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(sellerProfileRequest!=null)
return BadRequest();
return Unauthorized();
}
var updatedSellerProfile = model.ToModel(existingSellerProfile.SellerProfilePageSettings);
updatedSellerProfile = _dbContext.SellerProfilePageSettings.Update(updatedSellerProfile).Entity;
await _dbContext.SaveChangesAsync();
var result = updatedSellerProfile.ToModel();
return Ok(result);
}
[HttpPost]
[Authorize("write:seller-profile")]
public async Task<IActionResult> RequestSellerProfile()
{
var userId = User.GetUserId();
var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if (existingSellerProfile != null)
{
return Unauthorized();
}
var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId);
if (sellerProfileRequest != null)
return Ok(sellerProfileRequest.ToModel());
sellerProfileRequest = new SellerProfileRequest()
{
Accepted = false,
RequestDate = DateTime.UtcNow,
UserId = userId
};
_dbContext.SellerProfileRequests.Add(sellerProfileRequest);
await _dbContext.SaveChangesAsync();
return Ok();
}
[HttpGet]
[Authorize("read:seller-profile")]
[Route("{sellerServiceId:int}/Portfolio/{portfolioId:int}")]
public async Task<IActionResult> GetPortfolio(int sellerServiceId, int portfolioId)
{
var userId = User.GetUserId();
var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if (existingSellerProfile == null)
{
var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(sellerProfileRequest!=null)
return BadRequest();
return Unauthorized();
}
if(existingSellerProfile.Suspended)
return BadRequest();
var portfolio = await _dbContext.SellerProfilePortfolioPieces
.FirstAsync(x => x.SellerProfileId == existingSellerProfile.Id && x.Id==portfolioId);
var content = await _storageService.DownloadImageAsync(portfolio.FileReference);
return new FileStreamResult(content, "application/octet-stream");
}
[HttpGet]
[Route("Portfolio")]
[Authorize("read:seller-profile")]
public async Task<IActionResult> GetPortfolio()
{
var userId = User.GetUserId();
var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if (existingSellerProfile == null)
{
var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(sellerProfileRequest!=null)
return BadRequest();
return Unauthorized();
}
if(existingSellerProfile.Suspended)
return BadRequest();
var portfolio = await _dbContext.SellerProfilePortfolioPieces.Where(x=>x.SellerProfileId==existingSellerProfile.Id).ToListAsync();
var result = portfolio.Select(x=>x.ToModel()).ToList();
return Ok(result);
}
[HttpPost]
[Route("Portfolio")]
[Authorize("write:seller-profile")]
public async Task<IActionResult> AddPortfolio()
{
var userId = User.GetUserId();
var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if (existingSellerProfile == null)
{
return BadRequest();
}
if(existingSellerProfile.Suspended)
return BadRequest();
var url = await _storageService.UploadImageAsync(HttpContext.Request.Body, Guid.NewGuid().ToString());
var portfolio = new SellerProfilePortfolioPiece()
{
SellerProfileId = existingSellerProfile.Id,
FileReference = url
};
portfolio.SellerProfileId = existingSellerProfile.Id;
_dbContext.SellerProfilePortfolioPieces.Add(portfolio);
await _dbContext.SaveChangesAsync();
var result = portfolio.ToModel();
return Ok(result);
}
[HttpDelete]
[Authorize("write:seller-profile")]
[Route("Portfolio/{portfolioId:int}")]
public async Task<IActionResult> DeletePortfolio(int portfolioId)
{
var userId = User.GetUserId();
var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if (existingSellerProfile == null)
{
var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(sellerProfileRequest!=null)
return BadRequest();
return Unauthorized();
}
if(existingSellerProfile.Suspended)
return BadRequest();
var portfolio = await _dbContext.SellerProfilePortfolioPieces.FirstOrDefaultAsync(x=>x.Id==portfolioId);
if(portfolio==null)
return NotFound();
if(portfolio.SellerProfileId!=existingSellerProfile.Id)
return BadRequest();
_dbContext.SellerProfilePortfolioPieces.Remove(portfolio);
await _dbContext.SaveChangesAsync();
return Ok();
}
[HttpGet]
[Authorize("write:seller-profile")]
[Route("Onboard")]
public async Task<IActionResult> PaymentAccountStatus()
{
var userId = User.GetUserId();
var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if (existingSellerProfile == null)
{
var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(sellerProfileRequest!=null)
return BadRequest();
return Unauthorized();
}
if(existingSellerProfile.Suspended)
return BadRequest();
var result = _paymentService.SellerAccountIsOnboarded(existingSellerProfile.StripeAccountId);
return Ok(new SellerOnboardStatusModel(){ Onboarded= result });
}
[HttpGet]
[Authorize("write:seller-profile")]
[Route("Onboard/Url")]
public async Task<IActionResult> GetPaymentAccount()
{
var userId = User.GetUserId();
var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId);
if (existingSellerProfile == null)
{
var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false);
if(sellerProfileRequest!=null)
return BadRequest();
return Unauthorized();
}
if(existingSellerProfile.Suspended)
return BadRequest();
if(existingSellerProfile.StripeAccountId==null)
return BadRequest();
var result = _paymentService.CreateSellerAccountOnboardingUrl(existingSellerProfile.StripeAccountId);
return Ok(new SellerOnboardUrlModel()
{
OnboardUrl = result
});
}
}

View File

@ -2,13 +2,13 @@ using System.ComponentModel.DataAnnotations.Schema;
namespace comissions.app.database.Entities;
public class SellerProfilePageSettings
public class ArtistPageSettings
{
public int Id { get; set; }
[ForeignKey("SellerProfile")]
public int SellerProfileId { get; set; }
public virtual UserSellerProfile SellerProfile { get; set; } = null!;
[ForeignKey("Artist")]
public int ArtistId { get; set; }
public virtual UserArtist Artist { get; set; } = null!;
public string RequestButtonHoverBGColor { get; set; }
public string RequestButtonHoverTextColor { get; set; }

View File

@ -0,0 +1,9 @@
namespace comissions.app.database.Entities;
public class ArtistPortfolioPiece
{
public int Id { get; set; }
public int ArtistId { get; set; }
public string FileReference { get; set; }
public virtual UserArtist Artist { get; set; } = null!;
}

View File

@ -1,6 +1,6 @@
namespace comissions.app.database.Entities;
public class SellerProfileRequest
public class ArtistRequest
{
public int Id { get; set; }
public string UserId { get; set; } = null!;

View File

@ -0,0 +1,20 @@
namespace comissions.app.database.Entities;
public class Request
{
public int Id { get; set; }
public string Message { get; set; }
public decimal Amount { get; set; }
public string UserId { get; set; }
public int ArtistId { get; set; }
public DateTime RequestDate { get; set; }
public bool Accepted { get; set; } = false;
public DateTime? AcceptedDate { get; set; }
public bool Declined { get; set; } = false;
public DateTime? DeclinedDate { get; set; }
public bool Completed { get; set; } = false;
public DateTime? CompletedDate { get; set; }
public virtual User User { get; set; } = null!;
public virtual UserArtist Artist { get; set; } = null!;
}

View File

@ -1,11 +0,0 @@
namespace comissions.app.database.Entities;
public class SellerProfilePortfolioPiece
{
public int Id { get; set; }
public int SellerProfileId { get; set; }
public string FileReference { get; set; }
public int? SellerServiceId { get; set; }
public virtual SellerService SellerService { get; set; } = null!;
public virtual UserSellerProfile SellerProfile { get; set; } = null!;
}

View File

@ -1,14 +0,0 @@
namespace comissions.app.database.Entities;
public class SellerService
{
public int Id { get; set; }
public int SellerProfileId { get; set; }
public string Name { get; set; } = null!;
public string Description { get; set; } = null!;
public double Price { get; set; }
public bool Archived { get; set; } = false;
public virtual ICollection<SellerProfilePortfolioPiece> PortfolioPieces { get; set; } = new List<SellerProfilePortfolioPiece>();
public virtual UserSellerProfile SellerProfile { get; set; } = null!;
}

View File

@ -10,7 +10,7 @@ public record User
public string DisplayName { get; set; } = null!;
public string Biography { get; set; } = null!;
public string Email { get; set; } = null!;
public int? UserSellerProfileId { get; set; }
public int? UserArtistId { get; set; }
public bool Banned { get; set; } = false;
public DateTime? BannedDate { get; set; }
@ -24,5 +24,5 @@ public record User
public string? SuspendedReason { get; set; }
public string? SuspendAdminId { get; set; }
[JsonIgnore] public virtual UserSellerProfile? UserSellerProfile { get; set; }
[JsonIgnore] public virtual UserArtist? UserArtist { get; set; }
}

View File

@ -2,7 +2,7 @@ using System.ComponentModel.DataAnnotations.Schema;
namespace comissions.app.database.Entities;
public record UserSellerProfile
public record UserArtist
{
public int Id { get; set; }
[ForeignKey(nameof(User))]
@ -24,9 +24,7 @@ public record UserSellerProfile
public string? SuspendAdminId { get; set; }
public virtual User User { get; set; } = null!;
public int SellerProfilePageSettingsId { get; set; }
public virtual SellerProfilePageSettings SellerProfilePageSettings { get; set; } = null!;
public virtual ICollection<SellerService> SellerServices { get; set; } = new List<SellerService>();
public virtual ICollection<SellerProfilePortfolioPiece> PortfolioPieces { get; set; } = new List<SellerProfilePortfolioPiece>();
public int ArtistPageSettingsId { get; set; }
public virtual ArtistPageSettings ArtistPageSettings { get; set; } = null!;
public virtual ICollection<ArtistPortfolioPiece> PortfolioPieces { get; set; } = new List<ArtistPortfolioPiece>();
}

View File

@ -22,7 +22,7 @@ public class UserMiddleware
{
var userId = context.User.Claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value;
var user = await dbContext.Users.Include(x=>x.UserSellerProfile).FirstOrDefaultAsync(x=>x.Id==userId);
var user = await dbContext.Users.Include(x=>x.UserArtist).FirstOrDefaultAsync(x=>x.Id==userId);
if (user == null)
{
@ -87,23 +87,23 @@ public class UserMiddleware
}
}
if (user.UserSellerProfile != null && user.UserSellerProfile.Suspended)
if (user.UserArtist != null && user.UserArtist.Suspended)
{
if (user.UserSellerProfile.UnsuspendDate < DateTime.UtcNow)
if (user.UserArtist.UnsuspendDate < DateTime.UtcNow)
{
user.UserSellerProfile.Suspended = false;
user.UserSellerProfile.SuspendedDate = null;
user.UserSellerProfile.UnsuspendDate = null;
user.UserSellerProfile.SuspendedReason = null;
user.UserSellerProfile.SuspendAdminId = null;
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.UserSellerProfile.SuspendedDate.Value.ToString("MM/dd/yyyy");
var unsuspendDate = user.UserSellerProfile.UnsuspendDate.Value.ToString("MM/dd/yyyy");
await context.Response.WriteAsync($"Banned on {suspendDate} until {unsuspendDate} for {user.UserSellerProfile.SuspendedReason} by {user.UserSellerProfile.SuspendAdminId}.");
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;
}

View File

@ -26,7 +26,7 @@ namespace comissions.app.api.Migrations
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePortfolioPiece", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPortfolioPiece", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -38,22 +38,22 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerProfileId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<int?>("SellerServiceId")
b.Property<int?>("ArtistServiceId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SellerProfileId");
b.HasIndex("ArtistId");
b.HasIndex("SellerServiceId");
b.HasIndex("ArtistServiceId");
b.ToTable("SellerProfilePortfolioPieces");
b.ToTable("ArtistPortfolioPieces");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfileRequest", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistRequest", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -78,10 +78,10 @@ namespace comissions.app.api.Migrations
b.HasIndex("UserId");
b.ToTable("SellerProfileRequests");
b.ToTable("ArtistRequests");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistService", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -103,17 +103,17 @@ namespace comissions.app.api.Migrations
b.Property<double>("Price")
.HasColumnType("double precision");
b.Property<int>("SellerProfileId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SellerProfileId");
b.HasIndex("ArtistId");
b.ToTable("SellerServices");
b.ToTable("ArtistServices");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrder", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -137,10 +137,10 @@ namespace comissions.app.api.Migrations
b.Property<double>("Price")
.HasColumnType("double precision");
b.Property<int>("SellerId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<int>("SellerServiceId")
b.Property<int>("ArtistServiceId")
.HasColumnType("integer");
b.Property<int>("Status")
@ -153,14 +153,14 @@ namespace comissions.app.api.Migrations
b.HasIndex("BuyerId");
b.HasIndex("SellerId");
b.HasIndex("ArtistId");
b.HasIndex("SellerServiceId");
b.HasIndex("ArtistServiceId");
b.ToTable("SellerServiceOrders");
b.ToTable("ArtistServiceOrders");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrderReview", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -181,21 +181,21 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerServiceId")
b.Property<int>("ArtistServiceId")
.HasColumnType("integer");
b.Property<int>("SellerServiceOrderId")
b.Property<int>("ArtistServiceOrderId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ReviewerId");
b.HasIndex("SellerServiceId");
b.HasIndex("ArtistServiceId");
b.HasIndex("SellerServiceOrderId");
b.HasIndex("ArtistServiceOrderId");
b.ToTable("SellerServiceOrderReviews");
b.ToTable("ArtistServiceOrderReviews");
});
modelBuilder.Entity("comissions.app.database.Entities.User", b =>
@ -245,7 +245,7 @@ namespace comissions.app.api.Migrations
b.Property<DateTime?>("UnsuspendDate")
.HasColumnType("timestamp with time zone");
b.Property<int?>("UserSellerProfileId")
b.Property<int?>("UserArtistId")
.HasColumnType("integer");
b.HasKey("Id");
@ -253,7 +253,7 @@ namespace comissions.app.api.Migrations
b.ToTable("Users");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -302,27 +302,27 @@ namespace comissions.app.api.Migrations
b.HasIndex("UserId")
.IsUnique();
b.ToTable("UserSellerProfiles");
b.ToTable("UserArtists");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePortfolioPiece", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPortfolioPiece", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany("PortfolioPieces")
.HasForeignKey("SellerProfileId")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
b.HasOne("comissions.app.database.Entities.ArtistService", "ArtistService")
.WithMany("PortfolioPieces")
.HasForeignKey("SellerServiceId");
.HasForeignKey("ArtistServiceId");
b.Navigation("SellerProfile");
b.Navigation("Artist");
b.Navigation("SellerService");
b.Navigation("ArtistService");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfileRequest", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistRequest", b =>
{
b.HasOne("comissions.app.database.Entities.User", "User")
.WithMany()
@ -333,18 +333,18 @@ namespace comissions.app.api.Migrations
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistService", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
.WithMany("SellerServices")
.HasForeignKey("SellerProfileId")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany("ArtistServices")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("SellerProfile");
b.Navigation("Artist");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrder", b =>
{
b.HasOne("comissions.app.database.Entities.User", "Buyer")
.WithMany("Orders")
@ -352,26 +352,26 @@ namespace comissions.app.api.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "Seller")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany()
.HasForeignKey("SellerId")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
b.HasOne("comissions.app.database.Entities.ArtistService", "ArtistService")
.WithMany()
.HasForeignKey("SellerServiceId")
.HasForeignKey("ArtistServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Buyer");
b.Navigation("Seller");
b.Navigation("Artist");
b.Navigation("SellerService");
b.Navigation("ArtistService");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrderReview", b =>
{
b.HasOne("comissions.app.database.Entities.User", "Reviewer")
.WithMany()
@ -379,44 +379,44 @@ namespace comissions.app.api.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
b.HasOne("comissions.app.database.Entities.ArtistService", "ArtistService")
.WithMany("Reviews")
.HasForeignKey("SellerServiceId")
.HasForeignKey("ArtistServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerServiceOrder", "SellerServiceOrder")
b.HasOne("comissions.app.database.Entities.ArtistServiceOrder", "ArtistServiceOrder")
.WithMany("Reviews")
.HasForeignKey("SellerServiceOrderId")
.HasForeignKey("ArtistServiceOrderId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Reviewer");
b.Navigation("SellerService");
b.Navigation("ArtistService");
b.Navigation("SellerServiceOrder");
b.Navigation("ArtistServiceOrder");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.HasOne("comissions.app.database.Entities.User", "User")
.WithOne("UserSellerProfile")
.HasForeignKey("comissions.app.database.Entities.UserSellerProfile", "UserId")
.WithOne("UserArtist")
.HasForeignKey("comissions.app.database.Entities.UserArtist", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistService", b =>
{
b.Navigation("PortfolioPieces");
b.Navigation("Reviews");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrder", b =>
{
b.Navigation("Reviews");
});
@ -425,14 +425,14 @@ namespace comissions.app.api.Migrations
{
b.Navigation("Orders");
b.Navigation("UserSellerProfile");
b.Navigation("UserArtist");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.Navigation("PortfolioPieces");
b.Navigation("SellerServices");
b.Navigation("ArtistServices");
});
#pragma warning restore 612, 618
}

View File

@ -21,7 +21,7 @@ namespace comissions.app.api.Migrations
DisplayName = table.Column<string>(type: "text", nullable: false),
Biography = table.Column<string>(type: "text", nullable: false),
Email = table.Column<string>(type: "text", nullable: false),
UserSellerProfileId = table.Column<int>(type: "integer", nullable: true),
UserArtistId = table.Column<int>(type: "integer", nullable: true),
Banned = table.Column<bool>(type: "boolean", nullable: false),
BannedDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
UnbanDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
@ -39,7 +39,7 @@ namespace comissions.app.api.Migrations
});
migrationBuilder.CreateTable(
name: "SellerProfileRequests",
name: "ArtistRequests",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
@ -51,9 +51,9 @@ namespace comissions.app.api.Migrations
},
constraints: table =>
{
table.PrimaryKey("PK_SellerProfileRequests", x => x.Id);
table.PrimaryKey("PK_ArtistRequests", x => x.Id);
table.ForeignKey(
name: "FK_SellerProfileRequests_Users_UserId",
name: "FK_ArtistRequests_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id",
@ -61,7 +61,7 @@ namespace comissions.app.api.Migrations
});
migrationBuilder.CreateTable(
name: "UserSellerProfiles",
name: "UserArtists",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
@ -80,9 +80,9 @@ namespace comissions.app.api.Migrations
},
constraints: table =>
{
table.PrimaryKey("PK_UserSellerProfiles", x => x.Id);
table.PrimaryKey("PK_UserArtists", x => x.Id);
table.ForeignKey(
name: "FK_UserSellerProfiles_Users_UserId",
name: "FK_UserArtists_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id",
@ -90,12 +90,12 @@ namespace comissions.app.api.Migrations
});
migrationBuilder.CreateTable(
name: "SellerServices",
name: "ArtistServices",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
SellerProfileId = table.Column<int>(type: "integer", nullable: false),
ArtistId = table.Column<int>(type: "integer", nullable: false),
Name = table.Column<string>(type: "text", nullable: false),
Description = table.Column<string>(type: "text", nullable: false),
Price = table.Column<double>(type: "double precision", nullable: false),
@ -103,50 +103,50 @@ namespace comissions.app.api.Migrations
},
constraints: table =>
{
table.PrimaryKey("PK_SellerServices", x => x.Id);
table.PrimaryKey("PK_ArtistServices", x => x.Id);
table.ForeignKey(
name: "FK_SellerServices_UserSellerProfiles_SellerProfileId",
column: x => x.SellerProfileId,
principalTable: "UserSellerProfiles",
name: "FK_ArtistServices_UserArtists_ArtistId",
column: x => x.ArtistId,
principalTable: "UserArtists",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "SellerProfilePortfolioPieces",
name: "ArtistPortfolioPieces",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
SellerProfileId = table.Column<int>(type: "integer", nullable: false),
ArtistId = table.Column<int>(type: "integer", nullable: false),
FileReference = table.Column<string>(type: "text", nullable: false),
SellerServiceId = table.Column<int>(type: "integer", nullable: true)
ArtistServiceId = table.Column<int>(type: "integer", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_SellerProfilePortfolioPieces", x => x.Id);
table.PrimaryKey("PK_ArtistPortfolioPieces", x => x.Id);
table.ForeignKey(
name: "FK_SellerProfilePortfolioPieces_SellerServices_SellerServiceId",
column: x => x.SellerServiceId,
principalTable: "SellerServices",
name: "FK_ArtistPortfolioPieces_ArtistServices_ArtistServiceId",
column: x => x.ArtistServiceId,
principalTable: "ArtistServices",
principalColumn: "Id");
table.ForeignKey(
name: "FK_SellerProfilePortfolioPieces_UserSellerProfiles_SellerProfi~",
column: x => x.SellerProfileId,
principalTable: "UserSellerProfiles",
name: "FK_ArtistPortfolioPieces_UserArtists_ArtistProfi~",
column: x => x.ArtistId,
principalTable: "UserArtists",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "SellerServiceOrders",
name: "ArtistServiceOrders",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
BuyerId = table.Column<string>(type: "text", nullable: false),
SellerServiceId = table.Column<int>(type: "integer", nullable: false),
SellerId = table.Column<int>(type: "integer", nullable: false),
ArtistServiceId = table.Column<int>(type: "integer", nullable: false),
ArtistId = table.Column<int>(type: "integer", nullable: false),
Status = table.Column<int>(type: "integer", nullable: false),
Price = table.Column<double>(type: "double precision", nullable: false),
CreatedDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
@ -156,21 +156,21 @@ namespace comissions.app.api.Migrations
},
constraints: table =>
{
table.PrimaryKey("PK_SellerServiceOrders", x => x.Id);
table.PrimaryKey("PK_ArtistServiceOrders", x => x.Id);
table.ForeignKey(
name: "FK_SellerServiceOrders_SellerServices_SellerServiceId",
column: x => x.SellerServiceId,
principalTable: "SellerServices",
name: "FK_ArtistServiceOrders_ArtistServices_ArtistServiceId",
column: x => x.ArtistServiceId,
principalTable: "ArtistServices",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_SellerServiceOrders_UserSellerProfiles_SellerId",
column: x => x.SellerId,
principalTable: "UserSellerProfiles",
name: "FK_ArtistServiceOrders_UserArtists_ArtistId",
column: x => x.ArtistId,
principalTable: "UserArtists",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_SellerServiceOrders_Users_BuyerId",
name: "FK_ArtistServiceOrders_Users_BuyerId",
column: x => x.BuyerId,
principalTable: "Users",
principalColumn: "Id",
@ -178,35 +178,35 @@ namespace comissions.app.api.Migrations
});
migrationBuilder.CreateTable(
name: "SellerServiceOrderReviews",
name: "ArtistServiceOrderReviews",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
ReviewerId = table.Column<string>(type: "text", nullable: false),
SellerServiceOrderId = table.Column<int>(type: "integer", nullable: false),
SellerServiceId = table.Column<int>(type: "integer", nullable: false),
ArtistServiceOrderId = table.Column<int>(type: "integer", nullable: false),
ArtistServiceId = table.Column<int>(type: "integer", nullable: false),
ReviewDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
Review = table.Column<string>(type: "text", nullable: true),
Rating = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_SellerServiceOrderReviews", x => x.Id);
table.PrimaryKey("PK_ArtistServiceOrderReviews", x => x.Id);
table.ForeignKey(
name: "FK_SellerServiceOrderReviews_SellerServiceOrders_SellerService~",
column: x => x.SellerServiceOrderId,
principalTable: "SellerServiceOrders",
name: "FK_ArtistServiceOrderReviews_ArtistServiceOrders_ArtistService~",
column: x => x.ArtistServiceOrderId,
principalTable: "ArtistServiceOrders",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_SellerServiceOrderReviews_SellerServices_SellerServiceId",
column: x => x.SellerServiceId,
principalTable: "SellerServices",
name: "FK_ArtistServiceOrderReviews_ArtistServices_ArtistServiceId",
column: x => x.ArtistServiceId,
principalTable: "ArtistServices",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_SellerServiceOrderReviews_Users_ReviewerId",
name: "FK_ArtistServiceOrderReviews_Users_ReviewerId",
column: x => x.ReviewerId,
principalTable: "Users",
principalColumn: "Id",
@ -214,58 +214,58 @@ namespace comissions.app.api.Migrations
});
migrationBuilder.CreateIndex(
name: "IX_SellerProfilePortfolioPieces_SellerProfileId",
table: "SellerProfilePortfolioPieces",
column: "SellerProfileId");
name: "IX_ArtistPortfolioPieces_ArtistId",
table: "ArtistPortfolioPieces",
column: "ArtistId");
migrationBuilder.CreateIndex(
name: "IX_SellerProfilePortfolioPieces_SellerServiceId",
table: "SellerProfilePortfolioPieces",
column: "SellerServiceId");
name: "IX_ArtistPortfolioPieces_ArtistServiceId",
table: "ArtistPortfolioPieces",
column: "ArtistServiceId");
migrationBuilder.CreateIndex(
name: "IX_SellerProfileRequests_UserId",
table: "SellerProfileRequests",
name: "IX_ArtistRequests_UserId",
table: "ArtistRequests",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_SellerServiceOrderReviews_ReviewerId",
table: "SellerServiceOrderReviews",
name: "IX_ArtistServiceOrderReviews_ReviewerId",
table: "ArtistServiceOrderReviews",
column: "ReviewerId");
migrationBuilder.CreateIndex(
name: "IX_SellerServiceOrderReviews_SellerServiceId",
table: "SellerServiceOrderReviews",
column: "SellerServiceId");
name: "IX_ArtistServiceOrderReviews_ArtistServiceId",
table: "ArtistServiceOrderReviews",
column: "ArtistServiceId");
migrationBuilder.CreateIndex(
name: "IX_SellerServiceOrderReviews_SellerServiceOrderId",
table: "SellerServiceOrderReviews",
column: "SellerServiceOrderId");
name: "IX_ArtistServiceOrderReviews_ArtistServiceOrderId",
table: "ArtistServiceOrderReviews",
column: "ArtistServiceOrderId");
migrationBuilder.CreateIndex(
name: "IX_SellerServiceOrders_BuyerId",
table: "SellerServiceOrders",
name: "IX_ArtistServiceOrders_BuyerId",
table: "ArtistServiceOrders",
column: "BuyerId");
migrationBuilder.CreateIndex(
name: "IX_SellerServiceOrders_SellerId",
table: "SellerServiceOrders",
column: "SellerId");
name: "IX_ArtistServiceOrders_ArtistId",
table: "ArtistServiceOrders",
column: "ArtistId");
migrationBuilder.CreateIndex(
name: "IX_SellerServiceOrders_SellerServiceId",
table: "SellerServiceOrders",
column: "SellerServiceId");
name: "IX_ArtistServiceOrders_ArtistServiceId",
table: "ArtistServiceOrders",
column: "ArtistServiceId");
migrationBuilder.CreateIndex(
name: "IX_SellerServices_SellerProfileId",
table: "SellerServices",
column: "SellerProfileId");
name: "IX_ArtistServices_ArtistId",
table: "ArtistServices",
column: "ArtistId");
migrationBuilder.CreateIndex(
name: "IX_UserSellerProfiles_UserId",
table: "UserSellerProfiles",
name: "IX_UserArtists_UserId",
table: "UserArtists",
column: "UserId",
unique: true);
}
@ -274,22 +274,22 @@ namespace comissions.app.api.Migrations
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "SellerProfilePortfolioPieces");
name: "ArtistPortfolioPieces");
migrationBuilder.DropTable(
name: "SellerProfileRequests");
name: "ArtistRequests");
migrationBuilder.DropTable(
name: "SellerServiceOrderReviews");
name: "ArtistServiceOrderReviews");
migrationBuilder.DropTable(
name: "SellerServiceOrders");
name: "ArtistServiceOrders");
migrationBuilder.DropTable(
name: "SellerServices");
name: "ArtistServices");
migrationBuilder.DropTable(
name: "UserSellerProfiles");
name: "UserArtists");
migrationBuilder.DropTable(
name: "Users");

View File

@ -25,7 +25,7 @@ namespace comissions.app.api.Migrations
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePageSettings", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPageSettings", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -152,18 +152,18 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerProfileId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SellerProfileId")
b.HasIndex("ArtistId")
.IsUnique();
b.ToTable("SellerProfilePageSettings");
b.ToTable("ArtistPageSettings");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePortfolioPiece", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPortfolioPiece", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -175,22 +175,22 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerProfileId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<int?>("SellerServiceId")
b.Property<int?>("ArtistServiceId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SellerProfileId");
b.HasIndex("ArtistId");
b.HasIndex("SellerServiceId");
b.HasIndex("ArtistServiceId");
b.ToTable("SellerProfilePortfolioPieces");
b.ToTable("ArtistPortfolioPieces");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfileRequest", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistRequest", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -215,10 +215,10 @@ namespace comissions.app.api.Migrations
b.HasIndex("UserId");
b.ToTable("SellerProfileRequests");
b.ToTable("ArtistRequests");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistService", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -240,17 +240,17 @@ namespace comissions.app.api.Migrations
b.Property<double>("Price")
.HasColumnType("double precision");
b.Property<int>("SellerProfileId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SellerProfileId");
b.HasIndex("ArtistId");
b.ToTable("SellerServices");
b.ToTable("ArtistServices");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrder", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -274,10 +274,10 @@ namespace comissions.app.api.Migrations
b.Property<double>("Price")
.HasColumnType("double precision");
b.Property<int>("SellerId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<int>("SellerServiceId")
b.Property<int>("ArtistServiceId")
.HasColumnType("integer");
b.Property<int>("Status")
@ -290,14 +290,14 @@ namespace comissions.app.api.Migrations
b.HasIndex("BuyerId");
b.HasIndex("SellerId");
b.HasIndex("ArtistId");
b.HasIndex("SellerServiceId");
b.HasIndex("ArtistServiceId");
b.ToTable("SellerServiceOrders");
b.ToTable("ArtistServiceOrders");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrderReview", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -318,21 +318,21 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerServiceId")
b.Property<int>("ArtistServiceId")
.HasColumnType("integer");
b.Property<int>("SellerServiceOrderId")
b.Property<int>("ArtistServiceOrderId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ReviewerId");
b.HasIndex("SellerServiceId");
b.HasIndex("ArtistServiceId");
b.HasIndex("SellerServiceOrderId");
b.HasIndex("ArtistServiceOrderId");
b.ToTable("SellerServiceOrderReviews");
b.ToTable("ArtistServiceOrderReviews");
});
modelBuilder.Entity("comissions.app.database.Entities.User", b =>
@ -382,7 +382,7 @@ namespace comissions.app.api.Migrations
b.Property<DateTime?>("UnsuspendDate")
.HasColumnType("timestamp with time zone");
b.Property<int?>("UserSellerProfileId")
b.Property<int?>("UserArtistId")
.HasColumnType("integer");
b.HasKey("Id");
@ -390,7 +390,7 @@ namespace comissions.app.api.Migrations
b.ToTable("Users");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -416,7 +416,7 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerProfilePageSettingsId")
b.Property<int>("ArtistPageSettingsId")
.HasColumnType("integer");
b.Property<string>("SocialMediaLink1")
@ -462,38 +462,38 @@ namespace comissions.app.api.Migrations
b.HasIndex("UserId")
.IsUnique();
b.ToTable("UserSellerProfiles");
b.ToTable("UserArtists");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePageSettings", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPageSettings", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
.WithOne("SellerProfilePageSettings")
.HasForeignKey("comissions.app.database.Entities.SellerProfilePageSettings", "SellerProfileId")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithOne("ArtistPageSettings")
.HasForeignKey("comissions.app.database.Entities.ArtistPageSettings", "ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("SellerProfile");
b.Navigation("Artist");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePortfolioPiece", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPortfolioPiece", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany("PortfolioPieces")
.HasForeignKey("SellerProfileId")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
b.HasOne("comissions.app.database.Entities.ArtistService", "ArtistService")
.WithMany("PortfolioPieces")
.HasForeignKey("SellerServiceId");
.HasForeignKey("ArtistServiceId");
b.Navigation("SellerProfile");
b.Navigation("Artist");
b.Navigation("SellerService");
b.Navigation("ArtistService");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfileRequest", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistRequest", b =>
{
b.HasOne("comissions.app.database.Entities.User", "User")
.WithMany()
@ -504,18 +504,18 @@ namespace comissions.app.api.Migrations
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistService", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
.WithMany("SellerServices")
.HasForeignKey("SellerProfileId")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany("ArtistServices")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("SellerProfile");
b.Navigation("Artist");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrder", b =>
{
b.HasOne("comissions.app.database.Entities.User", "Buyer")
.WithMany("Orders")
@ -523,26 +523,26 @@ namespace comissions.app.api.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "Seller")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany()
.HasForeignKey("SellerId")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
b.HasOne("comissions.app.database.Entities.ArtistService", "ArtistService")
.WithMany()
.HasForeignKey("SellerServiceId")
.HasForeignKey("ArtistServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Buyer");
b.Navigation("Seller");
b.Navigation("Artist");
b.Navigation("SellerService");
b.Navigation("ArtistService");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrderReview", b =>
{
b.HasOne("comissions.app.database.Entities.User", "Reviewer")
.WithMany()
@ -550,44 +550,44 @@ namespace comissions.app.api.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
b.HasOne("comissions.app.database.Entities.ArtistService", "ArtistService")
.WithMany("Reviews")
.HasForeignKey("SellerServiceId")
.HasForeignKey("ArtistServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerServiceOrder", "SellerServiceOrder")
b.HasOne("comissions.app.database.Entities.ArtistServiceOrder", "ArtistServiceOrder")
.WithMany("Reviews")
.HasForeignKey("SellerServiceOrderId")
.HasForeignKey("ArtistServiceOrderId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Reviewer");
b.Navigation("SellerService");
b.Navigation("ArtistService");
b.Navigation("SellerServiceOrder");
b.Navigation("ArtistServiceOrder");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.HasOne("comissions.app.database.Entities.User", "User")
.WithOne("UserSellerProfile")
.HasForeignKey("comissions.app.database.Entities.UserSellerProfile", "UserId")
.WithOne("UserArtist")
.HasForeignKey("comissions.app.database.Entities.UserArtist", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistService", b =>
{
b.Navigation("PortfolioPieces");
b.Navigation("Reviews");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrder", b =>
{
b.Navigation("Reviews");
});
@ -596,17 +596,17 @@ namespace comissions.app.api.Migrations
{
b.Navigation("Orders");
b.Navigation("UserSellerProfile");
b.Navigation("UserArtist");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.Navigation("PortfolioPieces");
b.Navigation("SellerProfilePageSettings")
b.Navigation("ArtistPageSettings")
.IsRequired();
b.Navigation("SellerServices");
b.Navigation("ArtistServices");
});
#pragma warning restore 612, 618
}

View File

@ -14,69 +14,69 @@ namespace comissions.app.api.Migrations
{
migrationBuilder.DropColumn(
name: "SocialMediaLinks",
table: "UserSellerProfiles");
table: "UserArtists");
migrationBuilder.RenameColumn(
name: "Biography",
table: "UserSellerProfiles",
table: "UserArtists",
newName: "SocialMediaLink4");
migrationBuilder.AddColumn<string>(
name: "Description",
table: "UserSellerProfiles",
table: "UserArtists",
type: "text",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "Name",
table: "UserSellerProfiles",
table: "UserArtists",
type: "text",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "RequestGuidelines",
table: "UserSellerProfiles",
table: "UserArtists",
type: "text",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<int>(
name: "SellerProfilePageSettingsId",
table: "UserSellerProfiles",
name: "ArtistPageSettingsId",
table: "UserArtists",
type: "integer",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<string>(
name: "SocialMediaLink1",
table: "UserSellerProfiles",
table: "UserArtists",
type: "text",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "SocialMediaLink2",
table: "UserSellerProfiles",
table: "UserArtists",
type: "text",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "SocialMediaLink3",
table: "UserSellerProfiles",
table: "UserArtists",
type: "text",
nullable: false,
defaultValue: "");
migrationBuilder.CreateTable(
name: "SellerProfilePageSettings",
name: "ArtistPageSettings",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
SellerProfileId = table.Column<int>(type: "integer", nullable: false),
ArtistId = table.Column<int>(type: "integer", nullable: false),
RequestButtonHoverBGColor = table.Column<string>(type: "text", nullable: false),
RequestButtonTextColor = table.Column<string>(type: "text", nullable: false),
RequestButtonBGColor = table.Column<string>(type: "text", nullable: false),
@ -113,19 +113,19 @@ namespace comissions.app.api.Migrations
},
constraints: table =>
{
table.PrimaryKey("PK_SellerProfilePageSettings", x => x.Id);
table.PrimaryKey("PK_ArtistPageSettings", x => x.Id);
table.ForeignKey(
name: "FK_SellerProfilePageSettings_UserSellerProfiles_SellerProfileId",
column: x => x.SellerProfileId,
principalTable: "UserSellerProfiles",
name: "FK_ArtistPageSettings_UserArtists_ArtistId",
column: x => x.ArtistId,
principalTable: "UserArtists",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_SellerProfilePageSettings_SellerProfileId",
table: "SellerProfilePageSettings",
column: "SellerProfileId",
name: "IX_ArtistPageSettings_ArtistId",
table: "ArtistPageSettings",
column: "ArtistId",
unique: true);
}
@ -133,44 +133,44 @@ namespace comissions.app.api.Migrations
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "SellerProfilePageSettings");
name: "ArtistPageSettings");
migrationBuilder.DropColumn(
name: "Description",
table: "UserSellerProfiles");
table: "UserArtists");
migrationBuilder.DropColumn(
name: "Name",
table: "UserSellerProfiles");
table: "UserArtists");
migrationBuilder.DropColumn(
name: "RequestGuidelines",
table: "UserSellerProfiles");
table: "UserArtists");
migrationBuilder.DropColumn(
name: "SellerProfilePageSettingsId",
table: "UserSellerProfiles");
name: "ArtistPageSettingsId",
table: "UserArtists");
migrationBuilder.DropColumn(
name: "SocialMediaLink1",
table: "UserSellerProfiles");
table: "UserArtists");
migrationBuilder.DropColumn(
name: "SocialMediaLink2",
table: "UserSellerProfiles");
table: "UserArtists");
migrationBuilder.DropColumn(
name: "SocialMediaLink3",
table: "UserSellerProfiles");
table: "UserArtists");
migrationBuilder.RenameColumn(
name: "SocialMediaLink4",
table: "UserSellerProfiles",
table: "UserArtists",
newName: "Biography");
migrationBuilder.AddColumn<List<string>>(
name: "SocialMediaLinks",
table: "UserSellerProfiles",
table: "UserArtists",
type: "text[]",
nullable: false);
}

View File

@ -25,7 +25,7 @@ namespace comissions.app.api.Migrations
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePageSettings", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPageSettings", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -156,18 +156,18 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerProfileId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SellerProfileId")
b.HasIndex("ArtistId")
.IsUnique();
b.ToTable("SellerProfilePageSettings");
b.ToTable("ArtistPageSettings");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePortfolioPiece", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPortfolioPiece", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -179,22 +179,22 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerProfileId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<int?>("SellerServiceId")
b.Property<int?>("ArtistServiceId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SellerProfileId");
b.HasIndex("ArtistId");
b.HasIndex("SellerServiceId");
b.HasIndex("ArtistServiceId");
b.ToTable("SellerProfilePortfolioPieces");
b.ToTable("ArtistPortfolioPieces");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfileRequest", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistRequest", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -219,10 +219,10 @@ namespace comissions.app.api.Migrations
b.HasIndex("UserId");
b.ToTable("SellerProfileRequests");
b.ToTable("ArtistRequests");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistService", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -244,17 +244,17 @@ namespace comissions.app.api.Migrations
b.Property<double>("Price")
.HasColumnType("double precision");
b.Property<int>("SellerProfileId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SellerProfileId");
b.HasIndex("ArtistId");
b.ToTable("SellerServices");
b.ToTable("ArtistServices");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrder", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -278,10 +278,10 @@ namespace comissions.app.api.Migrations
b.Property<double>("Price")
.HasColumnType("double precision");
b.Property<int>("SellerId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<int>("SellerServiceId")
b.Property<int>("ArtistServiceId")
.HasColumnType("integer");
b.Property<int>("Status")
@ -294,14 +294,14 @@ namespace comissions.app.api.Migrations
b.HasIndex("BuyerId");
b.HasIndex("SellerId");
b.HasIndex("ArtistId");
b.HasIndex("SellerServiceId");
b.HasIndex("ArtistServiceId");
b.ToTable("SellerServiceOrders");
b.ToTable("ArtistServiceOrders");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrderReview", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -322,21 +322,21 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerServiceId")
b.Property<int>("ArtistServiceId")
.HasColumnType("integer");
b.Property<int>("SellerServiceOrderId")
b.Property<int>("ArtistServiceOrderId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ReviewerId");
b.HasIndex("SellerServiceId");
b.HasIndex("ArtistServiceId");
b.HasIndex("SellerServiceOrderId");
b.HasIndex("ArtistServiceOrderId");
b.ToTable("SellerServiceOrderReviews");
b.ToTable("ArtistServiceOrderReviews");
});
modelBuilder.Entity("comissions.app.database.Entities.User", b =>
@ -386,7 +386,7 @@ namespace comissions.app.api.Migrations
b.Property<DateTime?>("UnsuspendDate")
.HasColumnType("timestamp with time zone");
b.Property<int?>("UserSellerProfileId")
b.Property<int?>("UserArtistId")
.HasColumnType("integer");
b.HasKey("Id");
@ -394,7 +394,7 @@ namespace comissions.app.api.Migrations
b.ToTable("Users");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -420,7 +420,7 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerProfilePageSettingsId")
b.Property<int>("ArtistPageSettingsId")
.HasColumnType("integer");
b.Property<string>("SocialMediaLink1")
@ -466,38 +466,38 @@ namespace comissions.app.api.Migrations
b.HasIndex("UserId")
.IsUnique();
b.ToTable("UserSellerProfiles");
b.ToTable("UserArtists");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePageSettings", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPageSettings", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
.WithOne("SellerProfilePageSettings")
.HasForeignKey("comissions.app.database.Entities.SellerProfilePageSettings", "SellerProfileId")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithOne("ArtistPageSettings")
.HasForeignKey("comissions.app.database.Entities.ArtistPageSettings", "ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("SellerProfile");
b.Navigation("Artist");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePortfolioPiece", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPortfolioPiece", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany("PortfolioPieces")
.HasForeignKey("SellerProfileId")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
b.HasOne("comissions.app.database.Entities.ArtistService", "ArtistService")
.WithMany("PortfolioPieces")
.HasForeignKey("SellerServiceId");
.HasForeignKey("ArtistServiceId");
b.Navigation("SellerProfile");
b.Navigation("Artist");
b.Navigation("SellerService");
b.Navigation("ArtistService");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfileRequest", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistRequest", b =>
{
b.HasOne("comissions.app.database.Entities.User", "User")
.WithMany()
@ -508,18 +508,18 @@ namespace comissions.app.api.Migrations
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistService", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
.WithMany("SellerServices")
.HasForeignKey("SellerProfileId")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany("ArtistServices")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("SellerProfile");
b.Navigation("Artist");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrder", b =>
{
b.HasOne("comissions.app.database.Entities.User", "Buyer")
.WithMany("Orders")
@ -527,26 +527,26 @@ namespace comissions.app.api.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "Seller")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany()
.HasForeignKey("SellerId")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
b.HasOne("comissions.app.database.Entities.ArtistService", "ArtistService")
.WithMany()
.HasForeignKey("SellerServiceId")
.HasForeignKey("ArtistServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Buyer");
b.Navigation("Seller");
b.Navigation("Artist");
b.Navigation("SellerService");
b.Navigation("ArtistService");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrderReview", b =>
{
b.HasOne("comissions.app.database.Entities.User", "Reviewer")
.WithMany()
@ -554,44 +554,44 @@ namespace comissions.app.api.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
b.HasOne("comissions.app.database.Entities.ArtistService", "ArtistService")
.WithMany("Reviews")
.HasForeignKey("SellerServiceId")
.HasForeignKey("ArtistServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerServiceOrder", "SellerServiceOrder")
b.HasOne("comissions.app.database.Entities.ArtistServiceOrder", "ArtistServiceOrder")
.WithMany("Reviews")
.HasForeignKey("SellerServiceOrderId")
.HasForeignKey("ArtistServiceOrderId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Reviewer");
b.Navigation("SellerService");
b.Navigation("ArtistService");
b.Navigation("SellerServiceOrder");
b.Navigation("ArtistServiceOrder");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.HasOne("comissions.app.database.Entities.User", "User")
.WithOne("UserSellerProfile")
.HasForeignKey("comissions.app.database.Entities.UserSellerProfile", "UserId")
.WithOne("UserArtist")
.HasForeignKey("comissions.app.database.Entities.UserArtist", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistService", b =>
{
b.Navigation("PortfolioPieces");
b.Navigation("Reviews");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistServiceOrder", b =>
{
b.Navigation("Reviews");
});
@ -600,17 +600,17 @@ namespace comissions.app.api.Migrations
{
b.Navigation("Orders");
b.Navigation("UserSellerProfile");
b.Navigation("UserArtist");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.Navigation("PortfolioPieces");
b.Navigation("SellerProfilePageSettings")
b.Navigation("ArtistPageSettings")
.IsRequired();
b.Navigation("SellerServices");
b.Navigation("ArtistServices");
});
#pragma warning restore 612, 618
}

View File

@ -12,7 +12,7 @@ namespace comissions.app.api.Migrations
{
migrationBuilder.AddColumn<string>(
name: "RequestButtonHoverTextColor",
table: "SellerProfilePageSettings",
table: "ArtistPageSettings",
type: "text",
nullable: false,
defaultValue: "");
@ -23,7 +23,7 @@ namespace comissions.app.api.Migrations
{
migrationBuilder.DropColumn(
name: "RequestButtonHoverTextColor",
table: "SellerProfilePageSettings");
table: "ArtistPageSettings");
}
}
}

View File

@ -0,0 +1,480 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using comissions.app.database;
#nullable disable
namespace comissions.app.api.Migrations
{
[DbContext(typeof(ApplicationDbContext))]
[Migration("20240219095038_naming fixes")]
partial class namingfixes
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.1")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("comissions.app.database.Entities.ArtistPageSettings", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<string>("BackgroundColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("DescriptionBackgroundColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("DescriptionHeaderColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("DescriptionHeaderImageUrl")
.IsRequired()
.HasColumnType("text");
b.Property<int>("DescriptionHeaderSize")
.HasColumnType("integer");
b.Property<string>("DescriptionHeaderText")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("DescriptionHeaderUseImage")
.HasColumnType("boolean");
b.Property<string>("DescriptionTextColor")
.IsRequired()
.HasColumnType("text");
b.Property<int>("DescriptionTextSize")
.HasColumnType("integer");
b.Property<string>("HeaderColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("HeaderImageUrl")
.IsRequired()
.HasColumnType("text");
b.Property<int>("HeaderTextSize")
.HasColumnType("integer");
b.Property<bool>("HeaderUseImage")
.HasColumnType("boolean");
b.Property<string>("PortfolioBackgroundColor")
.IsRequired()
.HasColumnType("text");
b.Property<int>("PortfolioColumns")
.HasColumnType("integer");
b.Property<bool>("PortfolioEnabledScrolling")
.HasColumnType("boolean");
b.Property<bool>("PortfolioMasonry")
.HasColumnType("boolean");
b.Property<int>("PortfolioMaximumSize")
.HasColumnType("integer");
b.Property<string>("PortfolionHeaderColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("PortfolionHeaderImageUrl")
.IsRequired()
.HasColumnType("text");
b.Property<int>("PortfolionHeaderSize")
.HasColumnType("integer");
b.Property<string>("PortfolionHeaderText")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("PortfolionHeaderUseImage")
.HasColumnType("boolean");
b.Property<string>("RequestBackgroundColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("RequestButtonBGColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("RequestButtonHoverBGColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("RequestButtonHoverTextColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("RequestButtonTextColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("RequestHeaderColor")
.IsRequired()
.HasColumnType("text");
b.Property<string>("RequestHeaderImageUrl")
.IsRequired()
.HasColumnType("text");
b.Property<int>("RequestHeaderSize")
.HasColumnType("integer");
b.Property<string>("RequestHeaderText")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("RequestHeaderUseImage")
.HasColumnType("boolean");
b.Property<string>("RequestTermsColor")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ArtistId")
.IsUnique();
b.ToTable("ArtistPageSettings");
});
modelBuilder.Entity("comissions.app.database.Entities.ArtistPortfolioPiece", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<string>("FileReference")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ArtistId");
b.ToTable("ArtistPortfolioPieces");
});
modelBuilder.Entity("comissions.app.database.Entities.ArtistRequest", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Accepted")
.HasColumnType("boolean");
b.Property<DateTime?>("AcceptedDate")
.HasColumnType("timestamp with time zone");
b.Property<DateTime>("RequestDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("UserId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("ArtistRequests");
});
modelBuilder.Entity("comissions.app.database.Entities.Request", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Accepted")
.HasColumnType("boolean");
b.Property<DateTime?>("AcceptedDate")
.HasColumnType("timestamp with time zone");
b.Property<decimal>("Amount")
.HasColumnType("numeric");
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<bool>("Completed")
.HasColumnType("boolean");
b.Property<DateTime?>("CompletedDate")
.HasColumnType("timestamp with time zone");
b.Property<bool>("Declined")
.HasColumnType("boolean");
b.Property<DateTime?>("DeclinedDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("Message")
.IsRequired()
.HasColumnType("text");
b.Property<DateTime>("RequestDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("UserId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ArtistId");
b.HasIndex("UserId");
b.ToTable("Requests");
});
modelBuilder.Entity("comissions.app.database.Entities.User", b =>
{
b.Property<string>("Id")
.HasColumnType("text");
b.Property<string>("BanAdminId")
.HasColumnType("text");
b.Property<bool>("Banned")
.HasColumnType("boolean");
b.Property<DateTime?>("BannedDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("BannedReason")
.HasColumnType("text");
b.Property<string>("Biography")
.IsRequired()
.HasColumnType("text");
b.Property<string>("DisplayName")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("text");
b.Property<string>("SuspendAdminId")
.HasColumnType("text");
b.Property<bool>("Suspended")
.HasColumnType("boolean");
b.Property<DateTime?>("SuspendedDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("SuspendedReason")
.HasColumnType("text");
b.Property<DateTime?>("UnbanDate")
.HasColumnType("timestamp with time zone");
b.Property<DateTime?>("UnsuspendDate")
.HasColumnType("timestamp with time zone");
b.Property<int?>("UserArtistId")
.HasColumnType("integer");
b.HasKey("Id");
b.ToTable("Users");
});
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("AgeRestricted")
.HasColumnType("boolean");
b.Property<int>("ArtistPageSettingsId")
.HasColumnType("integer");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<bool>("PrepaymentRequired")
.HasColumnType("boolean");
b.Property<string>("RequestGuidelines")
.IsRequired()
.HasColumnType("text");
b.Property<string>("SocialMediaLink1")
.IsRequired()
.HasColumnType("text");
b.Property<string>("SocialMediaLink2")
.IsRequired()
.HasColumnType("text");
b.Property<string>("SocialMediaLink3")
.IsRequired()
.HasColumnType("text");
b.Property<string>("SocialMediaLink4")
.IsRequired()
.HasColumnType("text");
b.Property<string>("StripeAccountId")
.HasColumnType("text");
b.Property<string>("SuspendAdminId")
.HasColumnType("text");
b.Property<bool>("Suspended")
.HasColumnType("boolean");
b.Property<DateTime?>("SuspendedDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("SuspendedReason")
.HasColumnType("text");
b.Property<DateTime?>("UnsuspendDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("UserId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("UserId")
.IsUnique();
b.ToTable("UserArtists");
});
modelBuilder.Entity("comissions.app.database.Entities.ArtistPageSettings", b =>
{
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithOne("ArtistPageSettings")
.HasForeignKey("comissions.app.database.Entities.ArtistPageSettings", "ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Artist");
});
modelBuilder.Entity("comissions.app.database.Entities.ArtistPortfolioPiece", b =>
{
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany("PortfolioPieces")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Artist");
});
modelBuilder.Entity("comissions.app.database.Entities.ArtistRequest", b =>
{
b.HasOne("comissions.app.database.Entities.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.Request", b =>
{
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany()
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Artist");
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.HasOne("comissions.app.database.Entities.User", "User")
.WithOne("UserArtist")
.HasForeignKey("comissions.app.database.Entities.UserArtist", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.User", b =>
{
b.Navigation("UserArtist");
});
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.Navigation("ArtistPageSettings")
.IsRequired();
b.Navigation("PortfolioPieces");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,240 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace comissions.app.api.Migrations
{
/// <inheritdoc />
public partial class namingfixes : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_ArtistPortfolioPieces_ArtistServices_ArtistServiceId",
table: "ArtistPortfolioPieces");
migrationBuilder.DropTable(
name: "ArtistServiceOrderReviews");
migrationBuilder.DropTable(
name: "ArtistServiceOrders");
migrationBuilder.DropTable(
name: "ArtistServices");
migrationBuilder.DropIndex(
name: "IX_ArtistPortfolioPieces_ArtistServiceId",
table: "ArtistPortfolioPieces");
migrationBuilder.DropColumn(
name: "ArtistServiceId",
table: "ArtistPortfolioPieces");
migrationBuilder.CreateTable(
name: "Requests",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
Message = table.Column<string>(type: "text", nullable: false),
Amount = table.Column<decimal>(type: "numeric", nullable: false),
UserId = table.Column<string>(type: "text", nullable: false),
ArtistId = table.Column<int>(type: "integer", nullable: false),
RequestDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
Accepted = table.Column<bool>(type: "boolean", nullable: false),
AcceptedDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
Declined = table.Column<bool>(type: "boolean", nullable: false),
DeclinedDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
Completed = table.Column<bool>(type: "boolean", nullable: false),
CompletedDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Requests", x => x.Id);
table.ForeignKey(
name: "FK_Requests_UserArtists_ArtistId",
column: x => x.ArtistId,
principalTable: "UserArtists",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Requests_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_Requests_ArtistId",
table: "Requests",
column: "ArtistId");
migrationBuilder.CreateIndex(
name: "IX_Requests_UserId",
table: "Requests",
column: "UserId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Requests");
migrationBuilder.AddColumn<int>(
name: "ArtistServiceId",
table: "ArtistPortfolioPieces",
type: "integer",
nullable: true);
migrationBuilder.CreateTable(
name: "ArtistServices",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
ArtistId = table.Column<int>(type: "integer", nullable: false),
Archived = table.Column<bool>(type: "boolean", nullable: false),
Description = table.Column<string>(type: "text", nullable: false),
Name = table.Column<string>(type: "text", nullable: false),
Price = table.Column<double>(type: "double precision", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ArtistServices", x => x.Id);
table.ForeignKey(
name: "FK_ArtistServices_UserArtists_ArtistId",
column: x => x.ArtistId,
principalTable: "UserArtists",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "ArtistServiceOrders",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
ArtistId = table.Column<int>(type: "integer", nullable: false),
ArtistServiceId = table.Column<int>(type: "integer", nullable: false),
BuyerId = table.Column<string>(type: "text", nullable: false),
CreatedDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
EndDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
PaymentUrl = table.Column<string>(type: "text", nullable: true),
Price = table.Column<double>(type: "double precision", nullable: false),
Status = table.Column<int>(type: "integer", nullable: false),
TermsAcceptedDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_ArtistServiceOrders", x => x.Id);
table.ForeignKey(
name: "FK_ArtistServiceOrders_ArtistServices_ArtistServiceId",
column: x => x.ArtistServiceId,
principalTable: "ArtistServices",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ArtistServiceOrders_UserArtists_ArtistId",
column: x => x.ArtistId,
principalTable: "UserArtists",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ArtistServiceOrders_Users_BuyerId",
column: x => x.BuyerId,
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "ArtistServiceOrderReviews",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
ArtistServiceId = table.Column<int>(type: "integer", nullable: false),
ArtistServiceOrderId = table.Column<int>(type: "integer", nullable: false),
ReviewerId = table.Column<string>(type: "text", nullable: false),
Rating = table.Column<int>(type: "integer", nullable: false),
Review = table.Column<string>(type: "text", nullable: true),
ReviewDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ArtistServiceOrderReviews", x => x.Id);
table.ForeignKey(
name: "FK_ArtistServiceOrderReviews_ArtistServiceOrders_ArtistService~",
column: x => x.ArtistServiceOrderId,
principalTable: "ArtistServiceOrders",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ArtistServiceOrderReviews_ArtistServices_ArtistServiceId",
column: x => x.ArtistServiceId,
principalTable: "ArtistServices",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ArtistServiceOrderReviews_Users_ReviewerId",
column: x => x.ReviewerId,
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_ArtistPortfolioPieces_ArtistServiceId",
table: "ArtistPortfolioPieces",
column: "ArtistServiceId");
migrationBuilder.CreateIndex(
name: "IX_ArtistServiceOrderReviews_ArtistServiceId",
table: "ArtistServiceOrderReviews",
column: "ArtistServiceId");
migrationBuilder.CreateIndex(
name: "IX_ArtistServiceOrderReviews_ArtistServiceOrderId",
table: "ArtistServiceOrderReviews",
column: "ArtistServiceOrderId");
migrationBuilder.CreateIndex(
name: "IX_ArtistServiceOrderReviews_ReviewerId",
table: "ArtistServiceOrderReviews",
column: "ReviewerId");
migrationBuilder.CreateIndex(
name: "IX_ArtistServiceOrders_ArtistId",
table: "ArtistServiceOrders",
column: "ArtistId");
migrationBuilder.CreateIndex(
name: "IX_ArtistServiceOrders_ArtistServiceId",
table: "ArtistServiceOrders",
column: "ArtistServiceId");
migrationBuilder.CreateIndex(
name: "IX_ArtistServiceOrders_BuyerId",
table: "ArtistServiceOrders",
column: "BuyerId");
migrationBuilder.CreateIndex(
name: "IX_ArtistServices_ArtistId",
table: "ArtistServices",
column: "ArtistId");
migrationBuilder.AddForeignKey(
name: "FK_ArtistPortfolioPieces_ArtistServices_ArtistServiceId",
table: "ArtistPortfolioPieces",
column: "ArtistServiceId",
principalTable: "ArtistServices",
principalColumn: "Id");
}
}
}

View File

@ -22,7 +22,7 @@ namespace comissions.app.api.Migrations
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePageSettings", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPageSettings", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -30,6 +30,9 @@ namespace comissions.app.api.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<string>("BackgroundColor")
.IsRequired()
.HasColumnType("text");
@ -153,18 +156,15 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerProfileId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SellerProfileId")
b.HasIndex("ArtistId")
.IsUnique();
b.ToTable("SellerProfilePageSettings");
b.ToTable("ArtistPageSettings");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePortfolioPiece", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPortfolioPiece", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -172,26 +172,21 @@ namespace comissions.app.api.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<string>("FileReference")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerProfileId")
.HasColumnType("integer");
b.Property<int?>("SellerServiceId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SellerProfileId");
b.HasIndex("ArtistId");
b.HasIndex("SellerServiceId");
b.ToTable("SellerProfilePortfolioPieces");
b.ToTable("ArtistPortfolioPieces");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfileRequest", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistRequest", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -216,10 +211,10 @@ namespace comissions.app.api.Migrations
b.HasIndex("UserId");
b.ToTable("SellerProfileRequests");
b.ToTable("ArtistRequests");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.Request", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -227,113 +222,48 @@ namespace comissions.app.api.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("Archived")
b.Property<bool>("Accepted")
.HasColumnType("boolean");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
b.Property<DateTime?>("AcceptedDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.Property<decimal>("Amount")
.HasColumnType("numeric");
b.Property<double>("Price")
.HasColumnType("double precision");
b.Property<int>("SellerProfileId")
b.Property<int>("ArtistId")
.HasColumnType("integer");
b.Property<bool>("Completed")
.HasColumnType("boolean");
b.Property<DateTime?>("CompletedDate")
.HasColumnType("timestamp with time zone");
b.Property<bool>("Declined")
.HasColumnType("boolean");
b.Property<DateTime?>("DeclinedDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("Message")
.IsRequired()
.HasColumnType("text");
b.Property<DateTime>("RequestDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("UserId")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("SellerProfileId");
b.HasIndex("ArtistId");
b.ToTable("SellerServices");
});
b.HasIndex("UserId");
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("BuyerId")
.IsRequired()
.HasColumnType("text");
b.Property<DateTime>("CreatedDate")
.HasColumnType("timestamp with time zone");
b.Property<DateTime?>("EndDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("PaymentUrl")
.HasColumnType("text");
b.Property<double>("Price")
.HasColumnType("double precision");
b.Property<int>("SellerId")
.HasColumnType("integer");
b.Property<int>("SellerServiceId")
.HasColumnType("integer");
b.Property<int>("Status")
.HasColumnType("integer");
b.Property<DateTime?>("TermsAcceptedDate")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.HasIndex("BuyerId");
b.HasIndex("SellerId");
b.HasIndex("SellerServiceId");
b.ToTable("SellerServiceOrders");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Rating")
.HasColumnType("integer");
b.Property<string>("Review")
.HasColumnType("text");
b.Property<DateTime>("ReviewDate")
.HasColumnType("timestamp with time zone");
b.Property<string>("ReviewerId")
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerServiceId")
.HasColumnType("integer");
b.Property<int>("SellerServiceOrderId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ReviewerId");
b.HasIndex("SellerServiceId");
b.HasIndex("SellerServiceOrderId");
b.ToTable("SellerServiceOrderReviews");
b.ToTable("Requests");
});
modelBuilder.Entity("comissions.app.database.Entities.User", b =>
@ -383,7 +313,7 @@ namespace comissions.app.api.Migrations
b.Property<DateTime?>("UnsuspendDate")
.HasColumnType("timestamp with time zone");
b.Property<int?>("UserSellerProfileId")
b.Property<int?>("UserArtistId")
.HasColumnType("integer");
b.HasKey("Id");
@ -391,7 +321,7 @@ namespace comissions.app.api.Migrations
b.ToTable("Users");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@ -402,6 +332,9 @@ namespace comissions.app.api.Migrations
b.Property<bool>("AgeRestricted")
.HasColumnType("boolean");
b.Property<int>("ArtistPageSettingsId")
.HasColumnType("integer");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("text");
@ -417,9 +350,6 @@ namespace comissions.app.api.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<int>("SellerProfilePageSettingsId")
.HasColumnType("integer");
b.Property<string>("SocialMediaLink1")
.IsRequired()
.HasColumnType("text");
@ -463,38 +393,32 @@ namespace comissions.app.api.Migrations
b.HasIndex("UserId")
.IsUnique();
b.ToTable("UserSellerProfiles");
b.ToTable("UserArtists");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePageSettings", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPageSettings", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
.WithOne("SellerProfilePageSettings")
.HasForeignKey("comissions.app.database.Entities.SellerProfilePageSettings", "SellerProfileId")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithOne("ArtistPageSettings")
.HasForeignKey("comissions.app.database.Entities.ArtistPageSettings", "ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("SellerProfile");
b.Navigation("Artist");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfilePortfolioPiece", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistPortfolioPiece", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany("PortfolioPieces")
.HasForeignKey("SellerProfileId")
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
.WithMany("PortfolioPieces")
.HasForeignKey("SellerServiceId");
b.Navigation("SellerProfile");
b.Navigation("SellerService");
b.Navigation("Artist");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerProfileRequest", b =>
modelBuilder.Entity("comissions.app.database.Entities.ArtistRequest", b =>
{
b.HasOne("comissions.app.database.Entities.User", "User")
.WithMany()
@ -505,109 +429,47 @@ namespace comissions.app.api.Migrations
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
modelBuilder.Entity("comissions.app.database.Entities.Request", b =>
{
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "SellerProfile")
.WithMany("SellerServices")
.HasForeignKey("SellerProfileId")
b.HasOne("comissions.app.database.Entities.UserArtist", "Artist")
.WithMany()
.HasForeignKey("ArtistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("SellerProfile");
b.HasOne("comissions.app.database.Entities.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Artist");
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
{
b.HasOne("comissions.app.database.Entities.User", "Buyer")
.WithMany("Orders")
.HasForeignKey("BuyerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.UserSellerProfile", "Seller")
.WithMany()
.HasForeignKey("SellerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
.WithMany()
.HasForeignKey("SellerServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Buyer");
b.Navigation("Seller");
b.Navigation("SellerService");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b =>
{
b.HasOne("comissions.app.database.Entities.User", "Reviewer")
.WithMany()
.HasForeignKey("ReviewerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerService", "SellerService")
.WithMany("Reviews")
.HasForeignKey("SellerServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("comissions.app.database.Entities.SellerServiceOrder", "SellerServiceOrder")
.WithMany("Reviews")
.HasForeignKey("SellerServiceOrderId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Reviewer");
b.Navigation("SellerService");
b.Navigation("SellerServiceOrder");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.HasOne("comissions.app.database.Entities.User", "User")
.WithOne("UserSellerProfile")
.HasForeignKey("comissions.app.database.Entities.UserSellerProfile", "UserId")
.WithOne("UserArtist")
.HasForeignKey("comissions.app.database.Entities.UserArtist", "UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerService", b =>
{
b.Navigation("PortfolioPieces");
b.Navigation("Reviews");
});
modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b =>
{
b.Navigation("Reviews");
});
modelBuilder.Entity("comissions.app.database.Entities.User", b =>
{
b.Navigation("Orders");
b.Navigation("UserSellerProfile");
b.Navigation("UserArtist");
});
modelBuilder.Entity("comissions.app.database.Entities.UserSellerProfile", b =>
modelBuilder.Entity("comissions.app.database.Entities.UserArtist", b =>
{
b.Navigation("PortfolioPieces");
b.Navigation("SellerProfilePageSettings")
b.Navigation("ArtistPageSettings")
.IsRequired();
b.Navigation("SellerServices");
b.Navigation("PortfolioPieces");
});
#pragma warning restore 612, 618
}

View File

@ -1,6 +1,6 @@
namespace comissions.app.api.Models.Discovery;
public class DiscoverySellerModel
public class DiscoveryArtistModel
{
public int Id { get; set; }
public string Name { get; set; }

View File

@ -3,5 +3,4 @@ namespace comissions.app.api.Models.PortfolioModel;
public class PortfolioModel
{
public int Id { get; set; }
public int? SellerServiceId { get; set; }
}

View File

@ -4,12 +4,11 @@ namespace comissions.app.api.Models.PortfolioModel;
public static class PortfolioModelExtensions
{
public static PortfolioModel ToModel(this SellerProfilePortfolioPiece sellerProfileRequest)
public static PortfolioModel ToModel(this ArtistPortfolioPiece sellerProfileRequest)
{
return new PortfolioModel()
{
Id = sellerProfileRequest.Id,
SellerServiceId = sellerProfileRequest.SellerServiceId
Id = sellerProfileRequest.Id
};
}
}

View File

@ -0,0 +1,16 @@
namespace comissions.app.database.Models.Request;
public class RequestModel
{
public int Id { get; set; }
public string Message { get; set; }
public decimal Amount { get; set; }
public string UserId { get; set; }
public DateTime RequestDate { get; set; }
public bool Accepted { get; set; } = false;
public DateTime? AcceptedDate { get; set; }
public bool Declined { get; set; } = false;
public DateTime? DeclinedDate { get; set; }
public bool Completed { get; set; } = false;
public DateTime? CompletedDate { get; set; }
}

View File

@ -0,0 +1,22 @@
namespace comissions.app.database.Models.Request;
public static class RequestModelExtensions
{
public static RequestModel ToModel(this Entities.Request sellerProfile)
{
return new RequestModel()
{
Id = sellerProfile.Id,
UserId = sellerProfile.UserId,
RequestDate = sellerProfile.RequestDate,
AcceptedDate = sellerProfile.AcceptedDate,
Accepted = sellerProfile.Accepted,
Amount = sellerProfile.Amount,
Completed = sellerProfile.Completed,
CompletedDate = sellerProfile.CompletedDate,
Declined = sellerProfile.Declined,
DeclinedDate = sellerProfile.DeclinedDate,
Message = sellerProfile.Message
};
}
}

View File

@ -0,0 +1,6 @@
namespace comissions.app.api.Models.Artist;
public class ArtistOnboardStatusModel
{
public bool Onboarded { get; set; }
}

View File

@ -0,0 +1,6 @@
namespace comissions.app.api.Models.Artist;
public class ArtistOnboardUrlModel
{
public string OnboardUrl { get; set; }
}

View File

@ -1,6 +1,6 @@
namespace comissions.app.api.Models.SellerProfile;
namespace comissions.app.api.Models.Artist;
public class SellerProfileModel
public class ArtistModel
{
public int Id { get; set; }
public bool PrepaymentRequired { get; set; }

View File

@ -1,13 +1,13 @@
using comissions.app.api.Models.Discovery;
using comissions.app.database.Entities;
namespace comissions.app.api.Models.SellerProfile;
namespace comissions.app.api.Models.Artist;
public static class SellerProfileModelExtensions
public static class ArtistModelExtensions
{
public static SellerProfileModel ToModel(this UserSellerProfile sellerProfile)
public static ArtistModel ToModel(this UserArtist sellerProfile)
{
return new SellerProfileModel()
return new ArtistModel()
{
Id = sellerProfile.Id,
Name = sellerProfile.Name,
@ -21,9 +21,9 @@ public static class SellerProfileModelExtensions
};
}
public static DiscoverySellerModel ToDiscoveryModelWithoutReviews(this UserSellerProfile sellerProfile)
public static DiscoveryArtistModel ToDiscoveryModelWithoutReviews(this UserArtist sellerProfile)
{
return new DiscoverySellerModel()
return new DiscoveryArtistModel()
{
Name = sellerProfile.User.DisplayName,
Id = sellerProfile.Id,
@ -36,10 +36,10 @@ public static class SellerProfileModelExtensions
PrepaymentRequired = sellerProfile.PrepaymentRequired,
};
}
public static DiscoverySellerModel ToDiscoveryModel(this UserSellerProfile sellerProfile)
public static DiscoveryArtistModel ToDiscoveryModel(this UserArtist sellerProfile)
{
return new DiscoverySellerModel()
return new DiscoveryArtistModel()
{
Name = sellerProfile.User.DisplayName,
Id = sellerProfile.Id,
@ -52,16 +52,16 @@ public static class SellerProfileModelExtensions
PrepaymentRequired = sellerProfile.PrepaymentRequired
};
}
public static UserSellerProfile ToModel(this SellerProfileModel sellerProfile, UserSellerProfile existingSellerProfile)
public static UserArtist ToModel(this ArtistModel sellerProfile, UserArtist existingArtist)
{
existingSellerProfile.Name = sellerProfile.Name;
existingSellerProfile.SocialMediaLink1 = sellerProfile.SocialMeidaLink1;
existingSellerProfile.SocialMediaLink2 = sellerProfile.SocialMeidaLink2;
existingSellerProfile.SocialMediaLink3 = sellerProfile.SocialMeidaLink3;
existingSellerProfile.SocialMediaLink4 = sellerProfile.SocialMeidaLink4;
existingSellerProfile.Description = sellerProfile.Description;
existingSellerProfile.RequestGuidelines = sellerProfile.RequestGuidelines;
existingSellerProfile.PrepaymentRequired = sellerProfile.PrepaymentRequired;
return existingSellerProfile;
existingArtist.Name = sellerProfile.Name;
existingArtist.SocialMediaLink1 = sellerProfile.SocialMeidaLink1;
existingArtist.SocialMediaLink2 = sellerProfile.SocialMeidaLink2;
existingArtist.SocialMediaLink3 = sellerProfile.SocialMeidaLink3;
existingArtist.SocialMediaLink4 = sellerProfile.SocialMeidaLink4;
existingArtist.Description = sellerProfile.Description;
existingArtist.RequestGuidelines = sellerProfile.RequestGuidelines;
existingArtist.PrepaymentRequired = sellerProfile.PrepaymentRequired;
return existingArtist;
}
}

View File

@ -1,6 +1,8 @@
namespace comissions.app.api.Models.SellerProfile;
using comissions.app.database.Entities;
public class SellerProfilePageSettingsModel
namespace comissions.app.api.Models.Artist;
public class ArtistPageSettingsModel
{
public string RequestButtonHoverBGColor { get; set; }
@ -37,4 +39,5 @@ public class SellerProfilePageSettingsModel
public string HeaderColor { get; set; }
public string BackgroundColor { get; set; }
public string RequestButtonHoverTextColor { get; set; }
public ArtistModel Artist { get; set; }
}

View File

@ -1,14 +1,15 @@
using comissions.app.database.Entities;
namespace comissions.app.api.Models.SellerProfile;
namespace comissions.app.api.Models.Artist;
public static class SellerProfilePageSettingsModelExtensions
public static class ArtistPageSettingsModelExtensions
{
public static SellerProfilePageSettingsModel ToModel(this SellerProfilePageSettings sellerProfile)
public static ArtistPageSettingsModel ToModel(this ArtistPageSettings sellerProfile)
{
return new SellerProfilePageSettingsModel()
return new ArtistPageSettingsModel()
{
Artist = sellerProfile.Artist.ToModel(),
BackgroundColor = sellerProfile.BackgroundColor,
HeaderColor = sellerProfile.HeaderColor,
HeaderTextSize = sellerProfile.HeaderTextSize,
@ -45,7 +46,7 @@ public static class SellerProfilePageSettingsModelExtensions
RequestButtonHoverTextColor = sellerProfile.RequestButtonHoverTextColor
};
}
public static SellerProfilePageSettings ToModel(this SellerProfilePageSettingsModel sellerProfile, SellerProfilePageSettings existing)
public static ArtistPageSettings ToModel(this ArtistPageSettingsModel sellerProfile, ArtistPageSettings existing)
{
existing.BackgroundColor = sellerProfile.BackgroundColor;
existing.HeaderColor = sellerProfile.HeaderColor;

View File

@ -1,6 +0,0 @@
namespace comissions.app.api.Models.SellerProfile;
public class SellerOnboardStatusModel
{
public bool Onboarded { get; set; }
}

View File

@ -1,6 +0,0 @@
namespace comissions.app.api.Models.SellerProfile;
public class SellerOnboardUrlModel
{
public string OnboardUrl { get; set; }
}

View File

@ -1,6 +1,6 @@
namespace comissions.app.api.Models.SellerProfileRequest;
namespace comissions.app.api.Models.ArtistRequest;
public class SellerProfileRequestModel
public class ArtistRequestModel
{
public int Id { get; set; }
public DateTime RequestDate { get; set; }

View File

@ -1,10 +1,10 @@
namespace comissions.app.api.Models.SellerProfileRequest;
namespace comissions.app.api.Models.ArtistRequest;
public static class SellerProfileRequestModelExtensions
public static class ArtistRequestModelExtensions
{
public static SellerProfileRequestModel ToModel(this database.Entities.SellerProfileRequest sellerProfileRequest)
public static ArtistRequestModel ToModel(this database.Entities.ArtistRequest sellerProfileRequest)
{
return new SellerProfileRequestModel()
return new ArtistRequestModel()
{
Id = sellerProfileRequest.Id,
UserId = sellerProfileRequest.UserId,

View File

@ -1,8 +0,0 @@
namespace comissions.app.api.Models.SellerService;
public class SellerServiceCreateModel
{
public string Name { get; set; }
public string Description { get; set; }
public double Price { get; set; }
}

View File

@ -1,11 +0,0 @@
namespace comissions.app.api.Models.SellerService;
public class SellerServiceModel
{
public int Id { get; set; }
public string Name { get; set; } = null!;
public string Description { get; set; } = null!;
public double Price { get; set; }
public double AverageRating { get; set; }
public int NumberOfRatings { get; set; }
}

View File

@ -1,20 +0,0 @@
namespace comissions.app.api.Models.SellerService;
public static class SellerServiceModelExtensions
{
public static SellerServiceModel ToModel(this database.Entities.SellerService sellerProfileRequest)
{
double avgRating = 0;
int reviewCount = 0;
return new SellerServiceModel()
{
Id = sellerProfileRequest.Id,
Name = sellerProfileRequest.Name,
Description = sellerProfileRequest.Description,
Price = sellerProfileRequest.Price,
AverageRating = avgRating,
NumberOfRatings = reviewCount
};
}
}

View File

@ -1,8 +0,0 @@
namespace comissions.app.api.Models.SellerService;
public class SellerServiceUpdateModel
{
public string Name { get; set; }
public string Description { get; set; }
public double Price { get; set; }
}

View File

@ -4,8 +4,8 @@ namespace comissions.app.api.Services.Payment;
public interface IPaymentService
{
public string CreateCustomer();
string CreateSellerAccount();
string CreateSellerAccountOnboardingUrl(string accountId);
bool SellerAccountIsOnboarded(string accountId);
string ChargeForService(int orderSellerServiceId, string? sellerStripeAccountId, double orderPrice);
string CreateArtistAccount();
string CreateArtistAccountOnboardingUrl(string accountId);
bool ArtistAccountIsOnboarded(string accountId);
string ChargeForService(int orderArtistServiceId, string? sellerStripeAccountId, double orderPrice);
}

View File

@ -48,7 +48,7 @@ public class StripePaymentServiceProvider:IPaymentService
// var intent = service.Create(options, requestOptions);
// throw new NotImplementedException();
// }
public string CreateSellerAccount()
public string CreateArtistAccount()
{
var accountCreateOptions = new AccountCreateOptions { Type = "express",
Capabilities
@ -66,7 +66,7 @@ public class StripePaymentServiceProvider:IPaymentService
return account.Id;
}
public string CreateSellerAccountOnboardingUrl(string accountId)
public string CreateArtistAccountOnboardingUrl(string accountId)
{
var options = new AccountLinkCreateOptions
{
@ -80,14 +80,14 @@ public class StripePaymentServiceProvider:IPaymentService
return url.Url;
}
public bool SellerAccountIsOnboarded(string accountId)
public bool ArtistAccountIsOnboarded(string accountId)
{
var service = new AccountService();
var account = service.Get(accountId);
return account.Requirements.CurrentlyDue.Count == 0 && account.ChargesEnabled==true && account.DetailsSubmitted==true;
}
public string ChargeForService(int orderSellerServiceOrderId, string? sellerStripeAccountId,
public string ChargeForService(int orderArtistServiceOrderId, string? sellerStripeAccountId,
double orderPrice)
{
var feeAmount = (long)Math.Round((orderPrice*0.05) * 100);
@ -117,7 +117,7 @@ public class StripePaymentServiceProvider:IPaymentService
CancelUrl = "https://example.com/failure",
Metadata = new Dictionary<string, string>()
{
["orderId"] = orderSellerServiceOrderId.ToString()
["orderId"] = orderArtistServiceOrderId.ToString()
}
};
var requestOptions = new RequestOptions

View File

@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("comissions.app.database.migrator")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0d63aae1311642c2e8c803966369f5da0ea18ce2")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1dc7ecdc8f45a8e7eebb50091a558ad010f54dc5")]
[assembly: System.Reflection.AssemblyProductAttribute("comissions.app.database.migrator")]
[assembly: System.Reflection.AssemblyTitleAttribute("comissions.app.database.migrator")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@ -1 +1 @@
a4159fd41a43dc7f19501c196bc7d0764162eaaba63418d3ac373794c8e4237f
7ecd7fd3ed0865bcfbf8e22720cbe9d2bfd825c1ff3b4a43eca6d079e64d08a0