diff --git a/server/nt.microservice/services/ReviewService/ReviewService.Domain/Repositories/IGenericRepository.cs b/server/nt.microservice/services/ReviewService/ReviewService.Application.Interfaces/Repositories/IGenericRepository.cs similarity index 85% rename from server/nt.microservice/services/ReviewService/ReviewService.Domain/Repositories/IGenericRepository.cs rename to server/nt.microservice/services/ReviewService/ReviewService.Application.Interfaces/Repositories/IGenericRepository.cs index 6313535f..0226877c 100644 --- a/server/nt.microservice/services/ReviewService/ReviewService.Domain/Repositories/IGenericRepository.cs +++ b/server/nt.microservice/services/ReviewService/ReviewService.Application.Interfaces/Repositories/IGenericRepository.cs @@ -1,6 +1,6 @@ using ReviewService.Domain.Entities; -namespace ReviewService.Domain.Repositories; +namespace ReviewService.Application.Interfaces.Repositories; public interface IGenericRepository where TEntity : class, IEntity, new() { diff --git a/server/nt.microservice/services/ReviewService/ReviewService.Domain/Repositories/IReviewRepository.cs b/server/nt.microservice/services/ReviewService/ReviewService.Application.Interfaces/Repositories/IReviewRepository.cs similarity index 90% rename from server/nt.microservice/services/ReviewService/ReviewService.Domain/Repositories/IReviewRepository.cs rename to server/nt.microservice/services/ReviewService/ReviewService.Application.Interfaces/Repositories/IReviewRepository.cs index e757f3c0..b3bd0d40 100644 --- a/server/nt.microservice/services/ReviewService/ReviewService.Domain/Repositories/IReviewRepository.cs +++ b/server/nt.microservice/services/ReviewService/ReviewService.Application.Interfaces/Repositories/IReviewRepository.cs @@ -1,6 +1,6 @@ using ReviewService.Domain.Entities; -namespace ReviewService.Domain.Repositories; +namespace ReviewService.Application.Interfaces.Repositories; public interface IReviewRepository : IGenericRepository { diff --git a/server/nt.microservice/services/ReviewService/ReviewService.Application.Services/Operations/ReviewService.cs b/server/nt.microservice/services/ReviewService/ReviewService.Application.Services/Operations/ReviewService.cs index f250eaa0..ce9b4dfe 100644 --- a/server/nt.microservice/services/ReviewService/ReviewService.Application.Services/Operations/ReviewService.cs +++ b/server/nt.microservice/services/ReviewService/ReviewService.Application.Services/Operations/ReviewService.cs @@ -5,7 +5,7 @@ using ReviewService.Application.Interfaces.Services; using ReviewService.Application.Services.Extensions; using ReviewService.Domain.Entities; -using ReviewService.Domain.Repositories; +using ReviewService.Application.Interfaces.Repositories; namespace ReviewService.Application.Services.Operations; diff --git a/server/nt.microservice/services/ReviewService/ReviewService.Domain/Entities/ReviewEntity.cs b/server/nt.microservice/services/ReviewService/ReviewService.Domain/Entities/ReviewEntity.cs index da27038d..62bb539f 100644 --- a/server/nt.microservice/services/ReviewService/ReviewService.Domain/Entities/ReviewEntity.cs +++ b/server/nt.microservice/services/ReviewService/ReviewService.Domain/Entities/ReviewEntity.cs @@ -1,13 +1,80 @@ namespace ReviewService.Domain.Entities; public class ReviewEntity : IEntity { + private string _title = null!; + private string _movieId = null!; + private string _content = null!; + private string _author = null!; + private int _rating = 0; + public Guid Id { get; set; } - public string MovieId { get; set; } = null!; - public string Title { get; set; } = null!; - public string Content { get; set; } = null!; - public string Author { get; set; } = null!; + + public string MovieId + { + get => _movieId; + set + { + if (string.IsNullOrWhiteSpace(value)) + { + throw new ArgumentException("MovieId cannot be null or empty."); + } + _movieId = value; + } + } + + public string Title + { + get => _title; + set + { + if (string.IsNullOrWhiteSpace(value)) + { + throw new ArgumentException("Title cannot be null or empty."); + } + _title = value; + } + } + + public string Content + { + get => _content; + set + { + if (string.IsNullOrWhiteSpace(value)) + { + throw new ArgumentException("Content cannot be null or empty."); + } + _content = value; + } + } + + public string Author + { + get => _author; + set + { + if (string.IsNullOrWhiteSpace(value)) + { + throw new ArgumentException("Author cannot be null or empty."); + } + _author = value; + } + } + public DateTime CreatedOn { get; set; } = DateTime.UtcNow; public IEnumerable UpvotedBy { get; set; } = []; public IEnumerable DownvotedBy { get; set; } = []; - public int Rating { get; set; } = 0; + + public int Rating + { + get => _rating; + set + { + if (value is < 0 or > 5) + { + throw new ArgumentOutOfRangeException(nameof(Rating), "Rating must be between 0 and 5."); + } + _rating = value; + } + } } diff --git a/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/Repositories/GenericRepository.cs b/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/Repositories/GenericRepository.cs index 96d03526..8e72fd41 100644 --- a/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/Repositories/GenericRepository.cs +++ b/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/Repositories/GenericRepository.cs @@ -1,7 +1,7 @@ using AutoMapper; using MongoDB.Driver; using MongoDB.Entities; -using ReviewService.Domain.Repositories; +using ReviewService.Application.Interfaces.Repositories; namespace ReviewService.Infrastructure.Repository.Repositories; diff --git a/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/Repositories/ReviewRepository.cs b/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/Repositories/ReviewRepository.cs index 4ca7d54d..a353d04b 100644 --- a/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/Repositories/ReviewRepository.cs +++ b/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/Repositories/ReviewRepository.cs @@ -1,7 +1,7 @@ using AutoMapper; using MongoDB.Driver; using ReviewService.Domain.Entities; -using ReviewService.Domain.Repositories; +using ReviewService.Application.Interfaces.Repositories; using ReviewService.Infrastructure.Repository.Documents; namespace ReviewService.Infrastructure.Repository.Repositories; diff --git a/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/ReviewService.Infrastructure.Repository.csproj b/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/ReviewService.Infrastructure.Repository.csproj index cc515cd5..6736e8d9 100644 --- a/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/ReviewService.Infrastructure.Repository.csproj +++ b/server/nt.microservice/services/ReviewService/ReviewService.Infrastructure.Repository/ReviewService.Infrastructure.Repository.csproj @@ -12,6 +12,7 @@ + diff --git a/server/nt.microservice/services/ReviewService/ReviewService.Presentation.Api/Helpers/IServiceCollectionExtension.cs b/server/nt.microservice/services/ReviewService/ReviewService.Presentation.Api/Helpers/IServiceCollectionExtension.cs index 587dff07..bf97818d 100644 --- a/server/nt.microservice/services/ReviewService/ReviewService.Presentation.Api/Helpers/IServiceCollectionExtension.cs +++ b/server/nt.microservice/services/ReviewService/ReviewService.Presentation.Api/Helpers/IServiceCollectionExtension.cs @@ -58,7 +58,7 @@ private static void RegisterRepositories(IServiceCollection serviceCollection) { // Register your repositories here // Example: serviceCollection.AddScoped(); - serviceCollection.AddScoped(); + serviceCollection.AddScoped(); } private static void RegisterInitializersAndProviders(IServiceCollection serviceCollection) {