diff --git a/src/comissions.app.api/ApplicationDbContext.cs b/src/comissions.app.api/ApplicationDbContext.cs index 136a8ce..1c93a08 100644 --- a/src/comissions.app.api/ApplicationDbContext.cs +++ b/src/comissions.app.api/ApplicationDbContext.cs @@ -45,9 +45,7 @@ public class ApplicationDbContext:DbContext public DbSet SellerProfileRequests { get; set; }= null!; public DbSet SellerProfilePortfolioPieces { get; set; }= null!; public DbSet SellerServices { get; set; }= null!; - public DbSet SellerServiceOrders { get; set; }= null!; - public DbSet SellerServiceOrderMessages { get; set; }= null!; - public DbSet SellerServiceOrderMessageAttachments { get; set; }= null!; + public DbSet SellerServiceOrders { get; set; } = null!; public DbSet SellerServiceOrderReviews { get; set; }= null!; #endregion } \ No newline at end of file diff --git a/src/comissions.app.api/Controllers/Admin/AdminOrdersController.cs b/src/comissions.app.api/Controllers/Admin/AdminOrdersController.cs index 0bc6200..bc56f3b 100644 --- a/src/comissions.app.api/Controllers/Admin/AdminOrdersController.cs +++ b/src/comissions.app.api/Controllers/Admin/AdminOrdersController.cs @@ -58,26 +58,6 @@ public class AdminOrdersController:ControllerBase return Ok(order); } - [HttpPost("{orderId:int}")] - public async Task SendMessage(int orderId, [FromBody]string message) - { - var order = await _dbContext.SellerServiceOrders.Include(x=>x.Seller).ThenInclude(x=>x.User).Include(x=>x.Buyer) - .FirstOrDefaultAsync(x=>x.Id==orderId); - - if (order == null) - return NotFound("Order not found."); - - order.Messages.Add(new SellerServiceOrderMessage() - { - Message = message, - SenderId = User.GetUserId(), - SentAt = DateTime.UtcNow - }); - _dbContext.SellerServiceOrders.Update(order); - await _dbContext.SaveChangesAsync(); - return Ok(order); - } - [HttpPut("{orderId:int}/Terminate")] public async Task TerminateOrder(int orderId) @@ -88,7 +68,7 @@ public class AdminOrdersController:ControllerBase if (order == null) return NotFound("Order not found."); - order.Status = EnumOrderStatus.Cancelled; + order.Status = EnumOrderStatus.Declined; _dbContext.SellerServiceOrders.Update(order); await _dbContext.SaveChangesAsync(); return Ok(order); diff --git a/src/comissions.app.api/Controllers/OrderController.cs b/src/comissions.app.api/Controllers/OrderController.cs index 45ae4fe..31e0ce6 100644 --- a/src/comissions.app.api/Controllers/OrderController.cs +++ b/src/comissions.app.api/Controllers/OrderController.cs @@ -69,10 +69,7 @@ public class OrderController : Controller .FirstOrDefaultAsync(x=>x.Id==int.Parse(orderId)); if (order != null && order.Seller.StripeAccountId==connectedAccountId && order.Status == EnumOrderStatus.WaitingForPayment) { - if (order.Seller.PrepaymentRequired) - order.Status = EnumOrderStatus.InProgress; - else - order.Status = EnumOrderStatus.Completed; + order.Status = EnumOrderStatus.InProgress; } } return Ok(); @@ -105,7 +102,7 @@ public class OrderController : Controller [HttpPost] [Route("/api/Sellers/{sellerId:int}/Services/{serviceId:int}")] [Authorize("write:orders")] - public async Task CreateOrder(int sellerId, int serviceId) + public async Task CreateOrder(int sellerId, int serviceId, double amount) { var userId = User.GetUserId(); var seller = await _dbContext.UserSellerProfiles @@ -125,7 +122,7 @@ public class OrderController : Controller if(service.Archived) return BadRequest("Service is archived."); - if(_dbContext.SellerServiceOrders.Where(x=>x.BuyerId==userId && x.Status!=EnumOrderStatus.Completed && x.Status!=EnumOrderStatus.Cancelled).Count()>=3) + if(_dbContext.SellerServiceOrders.Where(x=>x.BuyerId==userId && x.Status!=EnumOrderStatus.Completed && x.Status!=EnumOrderStatus.Declined).Count()>=3) return BadRequest("You already have an order in progress. There is a limit of three at a time."); var order = new SellerServiceOrder() @@ -135,7 +132,7 @@ public class OrderController : Controller SellerServiceId = serviceId, Status = EnumOrderStatus.PendingAcceptance, CreatedDate = DateTime.UtcNow, - Price = service.Price, + Price = amount, SellerService = service, Buyer = await _dbContext.Users.FirstOrDefaultAsync(x=>x.Id==userId), }; @@ -160,7 +157,7 @@ public class OrderController : Controller return BadRequest("You are not the buyer of this order."); if(order.Status==EnumOrderStatus.Completed) return BadRequest("/Order is not in a cancellable state."); - order.Status = EnumOrderStatus.Cancelled; + order.Status = EnumOrderStatus.Declined; order.EndDate = DateTime.UtcNow; order = _dbContext.SellerServiceOrders.Update(order).Entity; await _dbContext.SaveChangesAsync(); @@ -168,51 +165,6 @@ public class OrderController : Controller return Ok(result); } - [HttpPut] - [Authorize("write:orders")] - [Route("/api/Orders/{orderId:int}/AcceptPrice")] - public async Task AcceptPrice(int orderId) - { - var userId = User.GetUserId(); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.SellerService) - .Include(x=>x.Buyer) - .Include(x=>x.Seller) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); - if(order==null) - return NotFound("/Order not found."); - if(order.Seller.UserId!=userId) - return BadRequest("You are not the seller of this order."); - if(order.Status==EnumOrderStatus.Completed) - return BadRequest("/Order is already complete."); - if(order.Status Accept(int orderId) - { - var userId = User.GetUserId(); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Seller) - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); - if(order==null) - return NotFound("/Order not found."); - if(order.Seller.UserId!=userId) - return BadRequest("You are not the seller of this order."); - if(order.Status==EnumOrderStatus.Completed) - return BadRequest("/Order is already complete."); - if(order.Status Deny(int orderId) - { - var userId = User.GetUserId(); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Seller) - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); - if(order==null) - return NotFound("/Order not found."); - if(order.Seller.UserId!=userId) - return BadRequest("You are not the seller of this order."); - if(order.Status==EnumOrderStatus.Completed) - return BadRequest("/Order is already complete."); - if(order.Status GetMessages(int orderId, int offset = 0, int pageSize = 10) - { - var userId = User.GetUserId(); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Seller) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); - if(order==null) - return NotFound("/Order not found."); - if(order.BuyerId!=userId && order.Seller.UserId!=userId) - return BadRequest("You are not the buyer or seller of this order."); - var messages = _dbContext.SellerServiceOrderMessages - .Include(x=>x.Sender) - .Include(x=>x.Attachments) - .OrderBy(x=>x.SentAt) - .Where(x=>x.SellerServiceOrderId==orderId) - .Skip(offset).Take(pageSize).ToList(); - var result = messages.Select(x=>x.ToModel()).ToList(); - return Ok(result); - } - - [HttpPost] - [Authorize("write:orders")] - [Route("/api/Orders/{orderId:int}/Message")] - public async Task Message(int orderId, [FromBody] SellerServiceOrderMessageModel model) - { - var userId = User.GetUserId(); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Messages) - .Include(x=>x.Seller) - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); - if(order==null) - return NotFound("/Order not found."); - if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) - return BadRequest("/Order is already complete."); - if(order.BuyerId!=userId && order.Seller.UserId!=userId) - return BadRequest("You are not the buyer or seller of this order."); - if(order.Statusx.Id==userId), - }; - var dbMessage = _dbContext.SellerServiceOrderMessages.Add(message).Entity; - await _dbContext.SaveChangesAsync(); - return Ok(); - } - - [HttpPost] - [Authorize("write:orders")] - [Route("/api/Orders/{orderId:int}/Message/{messageId:int}/Attachment")] - public async Task MessageAttachment(int orderId, int messageId,IFormFile file) - { - var userId = User.GetUserId(); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Messages) - .Include(x=>x.Seller) - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId); - if(order==null) - return NotFound("/Order not found."); - if(order.BuyerId!=userId && order.Seller.UserId!=userId) - return BadRequest("You are not the buyer or seller of this order."); - if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) - return BadRequest("/Order is already complete."); - if(order.Statusx.Id==messageId && x.SellerServiceOrderId==orderId); - if(message==null) - return BadRequest("Message does not exist or does not belong to this order."); - - var url = await _storageService.UploadImageAsync(file, Guid.NewGuid().ToString()); - var attachment = new SellerServiceOrderMessageAttachment() - { - SellerServiceOrderMessageId = message.Id, - FileReference = url - }; - _dbContext.SellerServiceOrderMessageAttachments.Add(attachment); - await _dbContext.SaveChangesAsync(); - return Ok(); - } - [HttpGet] - [Authorize("read:orders")] - [Route("/api/Orders/{orderId:int}/Message/{messageId:int}/Attachment")] - public async Task MessageAttachments(int orderId, int messageId) - { - var userId = User.GetUserId(); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Messages) - .Include(x=>x.Seller) - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId); - if(order==null) - return NotFound("/Order not found."); - if(order.BuyerId!=userId && order.Seller.UserId!=userId) - return BadRequest("You are not the buyer or seller of this order."); - if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) - return BadRequest("/Order is already complete."); - if(order.Statusx.Attachments) - .First(x=>x.Id==messageId && x.SellerServiceOrderId==orderId); - if(message==null) - return BadRequest("Message does not exist or does not belong to this order."); - - var content = await _storageService.DownloadImageAsync(message.Attachments.First().FileReference); - return new FileStreamResult(content, "application/octet-stream"); - } } diff --git a/src/comissions.app.api/Controllers/SellerOrderController.cs b/src/comissions.app.api/Controllers/SellerOrderController.cs index 6dc7e42..b00010d 100644 --- a/src/comissions.app.api/Controllers/SellerOrderController.cs +++ b/src/comissions.app.api/Controllers/SellerOrderController.cs @@ -68,111 +68,81 @@ public class SellerOrderController : Controller .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); if(order==null) return NotFound("Order not found."); - if(order.Status==EnumOrderStatus.Completed || order.Status== EnumOrderStatus.Cancelled) + if(order.Status==EnumOrderStatus.Completed || order.Status== EnumOrderStatus.Declined) return BadRequest("Order is already complete."); if(order.BuyerId!=userId) return BadRequest("You are not the buyer of this order."); - if(order.Status!=EnumOrderStatus.Completed && order.Status!= EnumOrderStatus.Cancelled) + if(order.Status!=EnumOrderStatus.Completed && order.Status!= EnumOrderStatus.Declined) return BadRequest("Order is not in a cancellable state."); - order.Status = EnumOrderStatus.Cancelled; + order.Status = EnumOrderStatus.Declined; order.EndDate = DateTime.UtcNow; order = _dbContext.SellerServiceOrders.Update(order).Entity; await _dbContext.SaveChangesAsync(); var result = order.ToModel(); return Ok(result); } - + [HttpPut] [Authorize("write:seller-orders")] [Route("/api/SellerOrders/{orderId:int}/Accept")] public async Task AcceptOrder(int orderId) { var userId = User.GetUserId(); - var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(x=>x.UserId==userId); - if(seller==null) + var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(x => x.UserId == userId); + if (seller == null) return NotFound("User it not a seller."); - if(seller.Suspended) + if (seller.Suspended) return BadRequest("Seller is suspended."); var order = await _dbContext.SellerServiceOrders - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); - if(order==null) + .Include(x => x.SellerService) + .FirstOrDefaultAsync(x => x.Id == orderId && x.Seller.UserId == userId); + if (order == null) return NotFound("Order not found."); - if(order.Status==EnumOrderStatus.Completed || order.Status== EnumOrderStatus.Cancelled) + if (order.Status == EnumOrderStatus.Completed || order.Status == EnumOrderStatus.Declined) return BadRequest("Order is already complete."); - if(order.BuyerId!=userId) + if (order.BuyerId != userId) return BadRequest("You are not the buyer of this order."); - if(order.Status!=EnumOrderStatus.PendingAcceptance) + if (order.Status != EnumOrderStatus.PendingAcceptance) return BadRequest("Order has already been accepted."); - order.Status = EnumOrderStatus.Waitlist; + if (order.Status == EnumOrderStatus.Declined) + return BadRequest("Order has already been declined."); + order.Status = EnumOrderStatus.WaitingForPayment; order = _dbContext.SellerServiceOrders.Update(order).Entity; await _dbContext.SaveChangesAsync(); var result = order.ToModel(); return Ok(result); } - + [HttpPut] [Authorize("write:seller-orders")] - [Route("/api/SellerOrders/{orderId:int}/Start")] - public async Task StartOrder(int orderId) + [Route("/api/SellerOrders/{orderId:int}/Decline")] + public async Task DeclineOrder(int orderId) { var userId = User.GetUserId(); - var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(x=>x.UserId==userId); - if(seller==null) + var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(x => x.UserId == userId); + if (seller == null) return NotFound("User it not a seller."); - if(seller.Suspended) + if (seller.Suspended) return BadRequest("Seller is suspended."); var order = await _dbContext.SellerServiceOrders - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); - if(order==null) + .Include(x => x.SellerService) + .FirstOrDefaultAsync(x => x.Id == orderId && x.Seller.UserId == userId); + if (order == null) return NotFound("Order not found."); - if(order.Status==EnumOrderStatus.Completed || order.Status== EnumOrderStatus.Cancelled) + if (order.Status == EnumOrderStatus.Completed || order.Status == EnumOrderStatus.Declined) return BadRequest("Order is already complete."); - if(order.BuyerId!=userId) + if (order.BuyerId != userId) return BadRequest("You are not the buyer of this order."); - if(order.Status!=EnumOrderStatus.Waitlist) - return BadRequest("Order has already been started."); - order.Status = EnumOrderStatus.DiscussingRequirements; + if (order.Status != EnumOrderStatus.PendingAcceptance) + return BadRequest("Order has already been accepted or declined."); + order.Status = EnumOrderStatus.Declined; order = _dbContext.SellerServiceOrders.Update(order).Entity; await _dbContext.SaveChangesAsync(); var result = order.ToModel(); return Ok(result); } - - [HttpPut] - [Authorize("write:seller-orders")] - [Route("/api/SellerOrders/{orderId:int}/AdjustPrice")] - public async Task AdjustPrice(int orderId,[FromQuery]double price) - { - var userId = User.GetUserId(); - var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(x=>x.UserId==userId); - if(seller==null) - return NotFound("User it not a seller."); - if(seller.Suspended) - return BadRequest("Seller is suspended."); - - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Seller) - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); - if(order==null) - return NotFound("Order not found."); - if(order.Seller.UserId!=userId) - return BadRequest("You are not the seller of this order."); - if(order.Status==EnumOrderStatus.Completed || order.Status== EnumOrderStatus.Cancelled) - return BadRequest("Order is already complete."); - if(order.Status>EnumOrderStatus.DiscussingRequirements) - return BadRequest("Order requirements and price have already been confirmed."); - if(order.StatusEnumOrderStatus.InProgress) return BadRequest("Order is pending review already."); - order.Status = EnumOrderStatus.PendingReview; + order.Status = EnumOrderStatus.Completed; order = _dbContext.SellerServiceOrders.Update(order).Entity; await _dbContext.SaveChangesAsync(); var result = order.ToModel(); return Ok(result); } - - [HttpGet] - [Authorize("read:orders")] - [Route("/api/SellerOrders/{orderId:int}/Messages")] - public async Task GetMessages(int orderId, int offset = 0, int pageSize = 10) - { - var userId = User.GetUserId(); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Seller) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); - var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(x=>x.UserId==userId); - if(seller==null) - return NotFound("User it not a seller."); - if(seller.Suspended) - return BadRequest("Seller is suspended."); - if(order==null) - return NotFound("Order not found."); - if(order.BuyerId!=userId && order.Seller.UserId!=userId) - return BadRequest("You are not the buyer or seller of this order."); - var messages = _dbContext.SellerServiceOrderMessages - .Include(x=>x.Sender) - .Include(x=>x.Attachments) - .OrderBy(x=>x.SentAt) - .Where(x=>x.SellerServiceOrderId==orderId) - .Skip(offset).Take(pageSize).ToList(); - var result = messages.Select(x=>x.ToModel()).ToList(); - return Ok(result); - } - [HttpPost] - [Authorize("write:orders")] - [Route("/api/SellerOrders/{orderId:int}/Message")] - public async Task Message(int orderId, [FromBody] SellerServiceOrderMessageModel model) - { - var userId = User.GetUserId(); - var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(x=>x.UserId==userId); - if(seller==null) - return NotFound("User it not a seller."); - if(seller.Suspended) - return BadRequest("Seller is suspended."); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Messages) - .Include(x=>x.Seller) - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); - if(order==null) - return NotFound("Order not found."); - if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) - return BadRequest("Order is already complete."); - if(order.BuyerId!=userId && order.Seller.UserId!=userId) - return BadRequest("You are not the buyer or seller of this order."); - if(order.Statusx.Id==userId), - }; - var dbMessage = _dbContext.SellerServiceOrderMessages.Add(message).Entity; - await _dbContext.SaveChangesAsync(); - return Ok(); - } - - [HttpPost] - [Authorize("write:orders")] - [Route("/api/SellerOrders/{orderId:int}/Message/{messageId:int}/Attachment")] - public async Task MessageAttachment(int orderId, int messageId,IFormFile file) - { - var userId = User.GetUserId(); - var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(x=>x.UserId==userId); - if(seller==null) - return NotFound("User it not a seller."); - if(seller.Suspended) - return BadRequest("Seller is suspended."); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Messages) - .Include(x=>x.Seller) - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); - if(order==null) - return NotFound("Order not found."); - if(order.BuyerId!=userId && order.Seller.UserId!=userId) - return BadRequest("You are not the buyer or seller of this order."); - if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) - return BadRequest("Order is already complete."); - if(order.Statusx.Id==messageId && x.SellerServiceOrderId==orderId); - if(message==null) - return BadRequest("Message does not exist or does not belong to this order."); - - var url = await _storageService.UploadImageAsync(file, Guid.NewGuid().ToString()); - var attachment = new SellerServiceOrderMessageAttachment() - { - SellerServiceOrderMessageId = message.Id, - FileReference = url - }; - _dbContext.SellerServiceOrderMessageAttachments.Add(attachment); - await _dbContext.SaveChangesAsync(); - return Ok(); - } - [HttpGet] - [Authorize("read:orders")] - [Route("/api/SellerOrders/{orderId:int}/Message/{messageId:int}/Attachment")] - public async Task MessageAttachments(int orderId, int messageId) - { - var userId = User.GetUserId(); - var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(x=>x.UserId==userId); - if(seller==null) - return NotFound("User it not a seller."); - if(seller.Suspended) - return BadRequest("Seller is suspended."); - var order = await _dbContext.SellerServiceOrders - .Include(x=>x.Messages) - .Include(x=>x.Seller) - .Include(x=>x.SellerService) - .FirstOrDefaultAsync(x=>x.Id==orderId); - if(order==null) - return NotFound("Order not found."); - if(order.BuyerId!=userId && order.Seller.UserId!=userId) - return BadRequest("You are not the buyer or seller of this order."); - if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) - return BadRequest("Order is already complete."); - if(order.Statusx.Attachments) - .First(x=>x.Id==messageId && x.SellerServiceOrderId==orderId); - if(message==null) - return BadRequest("Message does not exist or does not belong to this order."); - var attachment = message.Attachments.FirstOrDefault(); - if(attachment==null) - return BadRequest("Message does not have an attachment."); - var content = await _storageService.DownloadImageAsync(message.Attachments.First().FileReference); - return new FileStreamResult(content, "application/octet-stream"); - } } \ No newline at end of file diff --git a/src/comissions.app.api/Entities/SellerServiceOrder.cs b/src/comissions.app.api/Entities/SellerServiceOrder.cs index 5b9b637..30be3ab 100644 --- a/src/comissions.app.api/Entities/SellerServiceOrder.cs +++ b/src/comissions.app.api/Entities/SellerServiceOrder.cs @@ -19,6 +19,5 @@ public class SellerServiceOrder public virtual UserSellerProfile Seller { get; set; } = null!; public virtual ICollection Reviews { get; set; } = new List(); - public virtual ICollection Messages { get; set; } = new List(); public string? PaymentUrl { get; set; } } \ No newline at end of file diff --git a/src/comissions.app.api/Entities/SellerServiceOrderMessage.cs b/src/comissions.app.api/Entities/SellerServiceOrderMessage.cs deleted file mode 100644 index 8ac716f..0000000 --- a/src/comissions.app.api/Entities/SellerServiceOrderMessage.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace comissions.app.database.Entities; - -public class SellerServiceOrderMessage -{ - public int Id { get; set; } - public int SellerServiceOrderId { get; set; } - public string SenderId { get; set; } - public string Message { get; set; } = null!; - public DateTime SentAt { get; set; } - - public virtual SellerServiceOrder SellerServiceOrder { get; set; } = null!; - public virtual User Sender { get; set; } = null!; - public virtual ICollection Attachments { get; set; } = null!; -} \ No newline at end of file diff --git a/src/comissions.app.api/Entities/SellerServiceOrderMessageAttachment.cs b/src/comissions.app.api/Entities/SellerServiceOrderMessageAttachment.cs deleted file mode 100644 index 259b381..0000000 --- a/src/comissions.app.api/Entities/SellerServiceOrderMessageAttachment.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace comissions.app.database.Entities; - -public class SellerServiceOrderMessageAttachment -{ - public int Id { get; set; } - public int SellerServiceOrderMessageId { get; set; } - public string FileReference { get; set; } = null!; - - public virtual SellerServiceOrderMessage SellerServiceOrderMessage { get; set; } = null!; -} \ No newline at end of file diff --git a/src/comissions.app.api/Enums/EnumOrderStatus.cs b/src/comissions.app.api/Enums/EnumOrderStatus.cs index b8d1ceb..73d156e 100644 --- a/src/comissions.app.api/Enums/EnumOrderStatus.cs +++ b/src/comissions.app.api/Enums/EnumOrderStatus.cs @@ -3,11 +3,9 @@ namespace comissions.app.database.Enums; public enum EnumOrderStatus { PendingAcceptance, - Waitlist, - DiscussingRequirements, InProgress, PendingReview, Completed, - Cancelled, + Declined, WaitingForPayment } \ No newline at end of file diff --git a/src/comissions.app.api/Migrations/20240210073843_Initial.Designer.cs b/src/comissions.app.api/Migrations/20240212032736_Initial.Designer.cs similarity index 81% rename from src/comissions.app.api/Migrations/20240210073843_Initial.Designer.cs rename to src/comissions.app.api/Migrations/20240212032736_Initial.Designer.cs index b84cf23..4f971b0 100644 --- a/src/comissions.app.api/Migrations/20240210073843_Initial.Designer.cs +++ b/src/comissions.app.api/Migrations/20240212032736_Initial.Designer.cs @@ -10,10 +10,10 @@ using comissions.app.database; #nullable disable -namespace ArtPlatform.Database.Migrations +namespace comissions.app.api.Migrations { [DbContext(typeof(ApplicationDbContext))] - [Migration("20240210073843_Initial")] + [Migration("20240212032736_Initial")] partial class Initial { /// @@ -160,59 +160,6 @@ namespace ArtPlatform.Database.Migrations b.ToTable("SellerServiceOrders"); }); - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Message") - .IsRequired() - .HasColumnType("text"); - - b.Property("SellerServiceOrderId") - .HasColumnType("integer"); - - b.Property("SenderId") - .IsRequired() - .HasColumnType("text"); - - b.Property("SentAt") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("SellerServiceOrderId"); - - b.HasIndex("SenderId"); - - b.ToTable("SellerServiceOrderMessages"); - }); - - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderMessageAttachment", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FileReference") - .IsRequired() - .HasColumnType("text"); - - b.Property("SellerServiceOrderMessageId") - .HasColumnType("integer"); - - b.HasKey("Id"); - - b.HasIndex("SellerServiceOrderMessageId"); - - b.ToTable("SellerServiceOrderMessageAttachments"); - }); - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b => { b.Property("Id") @@ -424,36 +371,6 @@ namespace ArtPlatform.Database.Migrations b.Navigation("SellerService"); }); - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderMessage", b => - { - b.HasOne("comissions.app.database.Entities.SellerServiceOrder", "SellerServiceOrder") - .WithMany("Messages") - .HasForeignKey("SellerServiceOrderId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("comissions.app.database.Entities.User", "Sender") - .WithMany() - .HasForeignKey("SenderId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("SellerServiceOrder"); - - b.Navigation("Sender"); - }); - - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderMessageAttachment", b => - { - b.HasOne("comissions.app.database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") - .WithMany("Attachments") - .HasForeignKey("SellerServiceOrderMessageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("SellerServiceOrderMessage"); - }); - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b => { b.HasOne("comissions.app.database.Entities.User", "Reviewer") @@ -501,16 +418,9 @@ namespace ArtPlatform.Database.Migrations modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b => { - b.Navigation("Messages"); - b.Navigation("Reviews"); }); - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderMessage", b => - { - b.Navigation("Attachments"); - }); - modelBuilder.Entity("comissions.app.database.Entities.User", b => { b.Navigation("Orders"); diff --git a/src/comissions.app.api/Migrations/20240210073843_Initial.cs b/src/comissions.app.api/Migrations/20240212032736_Initial.cs similarity index 80% rename from src/comissions.app.api/Migrations/20240210073843_Initial.cs rename to src/comissions.app.api/Migrations/20240212032736_Initial.cs index 36e5e90..fcf7563 100644 --- a/src/comissions.app.api/Migrations/20240210073843_Initial.cs +++ b/src/comissions.app.api/Migrations/20240212032736_Initial.cs @@ -5,7 +5,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable -namespace ArtPlatform.Database.Migrations +namespace comissions.app.api.Migrations { /// public partial class Initial : Migration @@ -177,34 +177,6 @@ namespace ArtPlatform.Database.Migrations onDelete: ReferentialAction.Cascade); }); - migrationBuilder.CreateTable( - name: "SellerServiceOrderMessages", - columns: table => new - { - Id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - SellerServiceOrderId = table.Column(type: "integer", nullable: false), - SenderId = table.Column(type: "text", nullable: false), - Message = table.Column(type: "text", nullable: false), - SentAt = table.Column(type: "timestamp with time zone", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_SellerServiceOrderMessages", x => x.Id); - table.ForeignKey( - name: "FK_SellerServiceOrderMessages_SellerServiceOrders_SellerServic~", - column: x => x.SellerServiceOrderId, - principalTable: "SellerServiceOrders", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_SellerServiceOrderMessages_Users_SenderId", - column: x => x.SenderId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - migrationBuilder.CreateTable( name: "SellerServiceOrderReviews", columns: table => new @@ -241,26 +213,6 @@ namespace ArtPlatform.Database.Migrations onDelete: ReferentialAction.Cascade); }); - migrationBuilder.CreateTable( - name: "SellerServiceOrderMessageAttachments", - columns: table => new - { - Id = table.Column(type: "integer", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - SellerServiceOrderMessageId = table.Column(type: "integer", nullable: false), - FileReference = table.Column(type: "text", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_SellerServiceOrderMessageAttachments", x => x.Id); - table.ForeignKey( - name: "FK_SellerServiceOrderMessageAttachments_SellerServiceOrderMess~", - column: x => x.SellerServiceOrderMessageId, - principalTable: "SellerServiceOrderMessages", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - migrationBuilder.CreateIndex( name: "IX_SellerProfilePortfolioPieces_SellerProfileId", table: "SellerProfilePortfolioPieces", @@ -276,21 +228,6 @@ namespace ArtPlatform.Database.Migrations table: "SellerProfileRequests", column: "UserId"); - migrationBuilder.CreateIndex( - name: "IX_SellerServiceOrderMessageAttachments_SellerServiceOrderMess~", - table: "SellerServiceOrderMessageAttachments", - column: "SellerServiceOrderMessageId"); - - migrationBuilder.CreateIndex( - name: "IX_SellerServiceOrderMessages_SellerServiceOrderId", - table: "SellerServiceOrderMessages", - column: "SellerServiceOrderId"); - - migrationBuilder.CreateIndex( - name: "IX_SellerServiceOrderMessages_SenderId", - table: "SellerServiceOrderMessages", - column: "SenderId"); - migrationBuilder.CreateIndex( name: "IX_SellerServiceOrderReviews_ReviewerId", table: "SellerServiceOrderReviews", @@ -342,15 +279,9 @@ namespace ArtPlatform.Database.Migrations migrationBuilder.DropTable( name: "SellerProfileRequests"); - migrationBuilder.DropTable( - name: "SellerServiceOrderMessageAttachments"); - migrationBuilder.DropTable( name: "SellerServiceOrderReviews"); - migrationBuilder.DropTable( - name: "SellerServiceOrderMessages"); - migrationBuilder.DropTable( name: "SellerServiceOrders"); diff --git a/src/comissions.app.api/Migrations/ApplicationDbContextModelSnapshot.cs b/src/comissions.app.api/Migrations/ApplicationDbContextModelSnapshot.cs index 6f9b00c..9a59006 100644 --- a/src/comissions.app.api/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/src/comissions.app.api/Migrations/ApplicationDbContextModelSnapshot.cs @@ -9,7 +9,7 @@ using comissions.app.database; #nullable disable -namespace ArtPlatform.Database.Migrations +namespace comissions.app.api.Migrations { [DbContext(typeof(ApplicationDbContext))] partial class ApplicationDbContextModelSnapshot : ModelSnapshot @@ -157,59 +157,6 @@ namespace ArtPlatform.Database.Migrations b.ToTable("SellerServiceOrders"); }); - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderMessage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Message") - .IsRequired() - .HasColumnType("text"); - - b.Property("SellerServiceOrderId") - .HasColumnType("integer"); - - b.Property("SenderId") - .IsRequired() - .HasColumnType("text"); - - b.Property("SentAt") - .HasColumnType("timestamp with time zone"); - - b.HasKey("Id"); - - b.HasIndex("SellerServiceOrderId"); - - b.HasIndex("SenderId"); - - b.ToTable("SellerServiceOrderMessages"); - }); - - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderMessageAttachment", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FileReference") - .IsRequired() - .HasColumnType("text"); - - b.Property("SellerServiceOrderMessageId") - .HasColumnType("integer"); - - b.HasKey("Id"); - - b.HasIndex("SellerServiceOrderMessageId"); - - b.ToTable("SellerServiceOrderMessageAttachments"); - }); - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b => { b.Property("Id") @@ -421,36 +368,6 @@ namespace ArtPlatform.Database.Migrations b.Navigation("SellerService"); }); - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderMessage", b => - { - b.HasOne("comissions.app.database.Entities.SellerServiceOrder", "SellerServiceOrder") - .WithMany("Messages") - .HasForeignKey("SellerServiceOrderId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("comissions.app.database.Entities.User", "Sender") - .WithMany() - .HasForeignKey("SenderId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("SellerServiceOrder"); - - b.Navigation("Sender"); - }); - - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderMessageAttachment", b => - { - b.HasOne("comissions.app.database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") - .WithMany("Attachments") - .HasForeignKey("SellerServiceOrderMessageId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("SellerServiceOrderMessage"); - }); - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderReview", b => { b.HasOne("comissions.app.database.Entities.User", "Reviewer") @@ -498,16 +415,9 @@ namespace ArtPlatform.Database.Migrations modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrder", b => { - b.Navigation("Messages"); - b.Navigation("Reviews"); }); - modelBuilder.Entity("comissions.app.database.Entities.SellerServiceOrderMessage", b => - { - b.Navigation("Attachments"); - }); - modelBuilder.Entity("comissions.app.database.Entities.User", b => { b.Navigation("Orders"); diff --git a/src/comissions.app.api/Models/Order/MessageModel.cs b/src/comissions.app.api/Models/Order/MessageModel.cs deleted file mode 100644 index 13ab4c3..0000000 --- a/src/comissions.app.api/Models/Order/MessageModel.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace comissions.app.api.Models.Order; - -public class MessageModel -{ - public int Id { get; set; } - public string SenderId { get; set; } - public string SenderDisplayName { get; set; } - public string Message { get; set; } - public int[] Attachments { get; set; } -} \ No newline at end of file diff --git a/src/comissions.app.api/Models/Order/MessageModelExtensions.cs b/src/comissions.app.api/Models/Order/MessageModelExtensions.cs deleted file mode 100644 index 6e5177a..0000000 --- a/src/comissions.app.api/Models/Order/MessageModelExtensions.cs +++ /dev/null @@ -1,20 +0,0 @@ -using ArtPlatform.Database.Entities; -using comissions.app.database.Entities; - -namespace comissions.app.api.Models.Order; - -public static class MessageModelExtensions -{ - - public static MessageModel ToModel(this SellerServiceOrderMessage sellerProfile) - { - return new MessageModel() - { - Id = sellerProfile.Id, - SenderId = sellerProfile.SenderId, - SenderDisplayName = sellerProfile.Sender.DisplayName, - Message = sellerProfile.Message, - Attachments = sellerProfile.Attachments.Select(x=>x.Id).ToArray() - }; - } -} \ No newline at end of file diff --git a/src/comissions.app.api/comissions.app.api.csproj b/src/comissions.app.api/comissions.app.api.csproj index 900d680..a2003d7 100644 --- a/src/comissions.app.api/comissions.app.api.csproj +++ b/src/comissions.app.api/comissions.app.api.csproj @@ -15,6 +15,11 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + diff --git a/src/comissions.app.database.migrator/obj/Debug/net8.0/comissions.app.database.migrator.AssemblyInfo.cs b/src/comissions.app.database.migrator/obj/Debug/net8.0/comissions.app.database.migrator.AssemblyInfo.cs index dc26226..f183e8d 100644 --- a/src/comissions.app.database.migrator/obj/Debug/net8.0/comissions.app.database.migrator.AssemblyInfo.cs +++ b/src/comissions.app.database.migrator/obj/Debug/net8.0/comissions.app.database.migrator.AssemblyInfo.cs @@ -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+7d6ca309de4b95217468fc190ac2465eebaeb070")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+39c13a24ce87e41d0a98d64f71a8873e6e0fb7f2")] [assembly: System.Reflection.AssemblyProductAttribute("comissions.app.database.migrator")] [assembly: System.Reflection.AssemblyTitleAttribute("comissions.app.database.migrator")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/comissions.app.database.migrator/obj/Debug/net8.0/comissions.app.database.migrator.AssemblyInfoInputs.cache b/src/comissions.app.database.migrator/obj/Debug/net8.0/comissions.app.database.migrator.AssemblyInfoInputs.cache index d02ed90..6ceb745 100644 --- a/src/comissions.app.database.migrator/obj/Debug/net8.0/comissions.app.database.migrator.AssemblyInfoInputs.cache +++ b/src/comissions.app.database.migrator/obj/Debug/net8.0/comissions.app.database.migrator.AssemblyInfoInputs.cache @@ -1 +1 @@ -4b812d03f91bd01a621a8ea1e43b31ad28a68b439981d547a25d799557852f47 +17d901dc318786e00800140359f2c1fd4726c24e195f53230c47f722959e350f diff --git a/src/comissions.app.database.migrator/obj/rider.project.model.nuget.info b/src/comissions.app.database.migrator/obj/rider.project.model.nuget.info index 37cb55a..a632641 100644 --- a/src/comissions.app.database.migrator/obj/rider.project.model.nuget.info +++ b/src/comissions.app.database.migrator/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17074580684655604 \ No newline at end of file +17076145079561012 \ No newline at end of file diff --git a/src/comissions.app.database.migrator/obj/rider.project.restore.info b/src/comissions.app.database.migrator/obj/rider.project.restore.info index a632641..1d23b23 100644 --- a/src/comissions.app.database.migrator/obj/rider.project.restore.info +++ b/src/comissions.app.database.migrator/obj/rider.project.restore.info @@ -1 +1 @@ -17076145079561012 \ No newline at end of file +17077084151680581 \ No newline at end of file