Add project files.
This commit is contained in:
		
							
								
								
									
										25
									
								
								Core.Blueprint.DAL.SQLServer/Context/SqlServerContext.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								Core.Blueprint.DAL.SQLServer/Context/SqlServerContext.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| using Core.Blueprint.DAL.SQLServer.Entities; | ||||
| using Core.Blueprint.SQLServer.Entities; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
|  | ||||
| namespace Core.Blueprint.DAL.SQLServer.Context | ||||
| { | ||||
|     public sealed class SqlServerContext : DbContext | ||||
|     { | ||||
|         public SqlServerContext(DbContextOptions<SqlServerContext> options) : base(options) { } | ||||
|         public DbSet<UserProject> UserProjects { get; set; } | ||||
|  | ||||
|         protected override void OnModelCreating(ModelBuilder modelBuilder) | ||||
|         { | ||||
|             foreach (var entityType in modelBuilder.Model.GetEntityTypes() | ||||
|                 .Where(t => typeof(BaseSQLAdapter).IsAssignableFrom(t.ClrType))) | ||||
|             { | ||||
|                 modelBuilder.Entity(entityType.ClrType) | ||||
|                     .HasKey("Id"); | ||||
|  | ||||
|                 modelBuilder.Entity(entityType.ClrType).Property("Status") | ||||
|                     .HasConversion<string>(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,19 @@ | ||||
| using Core.Blueprint.DAL.SQLServer.Entities; | ||||
| using Core.Blueprint.DAL.SQLServer.Entities.Request; | ||||
|  | ||||
| namespace Core.Blueprint.DAL.SQLServer.Contracts | ||||
| { | ||||
|     public interface IUserProjectService | ||||
|     { | ||||
|         Task<IEnumerable<UserProject>> GetAllUserProjects(); | ||||
|  | ||||
|         Task<UserProject?> GetUserProjectById(int id); | ||||
|  | ||||
|         Task<UserProject> AddUserProject(UserProjectRequest newUserProject); | ||||
|  | ||||
|         Task<UserProject?> UpdateUserProject(UserProject userProject); | ||||
|  | ||||
|         Task<UserProject?> DeleteUserProject(int id); | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,19 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
|  | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>net8.0</TargetFramework> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <Nullable>enable</Nullable> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="Core.Blueprint.Redis" Version="0.3.0-alpha0032" /> | ||||
|     <PackageReference Include="Core.Blueprint.SQLServer" Version="0.3.0-alpha0030" /> | ||||
|     <PackageReference Include="Mapster" Version="7.4.1-pre01" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.0" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0" /> | ||||
|     <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.0" /> | ||||
|     <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.0" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
| </Project> | ||||
| @@ -0,0 +1,9 @@ | ||||
| namespace Core.Blueprint.DAL.SQLServer.Entities.Request | ||||
| { | ||||
|     public class UserProjectRequest | ||||
|     { | ||||
|         public string ProjectCode { get; set; } = null!; | ||||
|         public string ProjectDescription { get; set; } = null!; | ||||
|         public string UserId { get; set; } = null!; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										13
									
								
								Core.Blueprint.DAL.SQLServer/Entities/UserProject.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								Core.Blueprint.DAL.SQLServer/Entities/UserProject.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| using Core.Blueprint.SQLServer.Entities; | ||||
| using System.ComponentModel.DataAnnotations.Schema; | ||||
|  | ||||
| namespace Core.Blueprint.DAL.SQLServer.Entities | ||||
| { | ||||
|     [Table("UserProjects")] | ||||
|     public class UserProject : BaseSQLAdapter | ||||
|     { | ||||
|         public string ProjectCode { get; set; } = null!; | ||||
|         public string ProjectDescription { get; set; } = null!; | ||||
|         public string UserId { get; set; } = null!; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										82
									
								
								Core.Blueprint.DAL.SQLServer/Services/UserProjectService.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								Core.Blueprint.DAL.SQLServer/Services/UserProjectService.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,82 @@ | ||||
| using Core.Blueprint.DAL.SQLServer; | ||||
| using Core.Blueprint.DAL.SQLServer.Context; | ||||
| using Core.Blueprint.DAL.SQLServer.Contracts; | ||||
| using Core.Blueprint.DAL.SQLServer.Entities; | ||||
| using Core.Blueprint.DAL.SQLServer.Entities.Request; | ||||
| using Core.Blueprint.Redis; | ||||
| using Core.Blueprint.Redis.Helpers; | ||||
| using Mapster; | ||||
| using Microsoft.Extensions.Options; | ||||
|  | ||||
| public class UserProjectService : IUserProjectService | ||||
| { | ||||
|     private readonly IEntityRepository<UserProject, SqlServerContext> _userProjectRepository; | ||||
|     private readonly CacheSettings cacheSettings; | ||||
|     private readonly IRedisCacheProvider cacheProvider; | ||||
|  | ||||
|     public UserProjectService(IEntityRepository<UserProject, SqlServerContext> userProjectRepository, IRedisCacheProvider cacheProvider, IOptions<CacheSettings> cacheSettings) | ||||
|     { | ||||
|         _userProjectRepository = userProjectRepository; | ||||
|         this.cacheSettings = cacheSettings.Value; | ||||
|         this.cacheProvider = cacheProvider; | ||||
|     } | ||||
|  | ||||
|     public async Task<IEnumerable<UserProject>> GetAllUserProjects() | ||||
|     { | ||||
|         var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllUserProjects"); | ||||
|         var cachedData = await cacheProvider.GetAsync<IEnumerable<UserProject>>(cacheKey) ?? []; | ||||
|  | ||||
|         if (cachedData.Any()) return cachedData; | ||||
|  | ||||
|         var userProjects = await _userProjectRepository.GetAllAsync(); | ||||
|  | ||||
|         await cacheProvider.SetAsync(cacheKey, userProjects); | ||||
|  | ||||
|         return userProjects; | ||||
|     } | ||||
|  | ||||
|     public async Task<UserProject?> GetUserProjectById(int id) | ||||
|     { | ||||
|         var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserProjectById", id); | ||||
|         var cachedData = await cacheProvider.GetAsync<UserProject>(cacheKey); | ||||
|  | ||||
|         if (cachedData is not null) { return cachedData; } | ||||
|  | ||||
|         var userProject = await _userProjectRepository.GetByIdAsync(id); | ||||
|  | ||||
|         await cacheProvider.SetAsync(cacheKey, userProject); | ||||
|  | ||||
|         return userProject; | ||||
|     } | ||||
|  | ||||
|     public async Task<UserProject> AddUserProject(UserProjectRequest newUserProject) | ||||
|     { | ||||
|         var userProject = newUserProject.Adapt<UserProject>(); | ||||
|  | ||||
|         await _userProjectRepository.AddAsync(userProject); | ||||
|         await _userProjectRepository.SaveAsync(); | ||||
|         return userProject; | ||||
|     } | ||||
|  | ||||
|     public async Task<UserProject?> UpdateUserProject(UserProject userProject) | ||||
|     { | ||||
|         var existingEntity = await _userProjectRepository.GetByIdAsync(userProject.Id); | ||||
|  | ||||
|         if (existingEntity is null) return existingEntity; | ||||
|  | ||||
|         _userProjectRepository.Update(userProject); | ||||
|         await _userProjectRepository.SaveAsync(); | ||||
|         return userProject; | ||||
|     } | ||||
|  | ||||
|     public async Task<UserProject?> DeleteUserProject(int id) | ||||
|     { | ||||
|         var userProject = await _userProjectRepository.GetByIdAsync(id); | ||||
|         if (userProject == null) | ||||
|             return null; | ||||
|  | ||||
|         _userProjectRepository.Delete(userProject); | ||||
|         await _userProjectRepository.SaveAsync(); | ||||
|         return userProject; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Sergio Matias Urquin
					Sergio Matias Urquin