diff --git a/GlobalExceptions/GlobalExceptions.sln b/GlobalExceptions/GlobalExceptions.sln
new file mode 100644
index 0000000..7396d41
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.12.35506.116 d17.12
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GlobalExceptions", "GlobalExceptions\GlobalExceptions.csproj", "{DACC5DD3-A363-4A33-B169-DAF873F7ADC4}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {DACC5DD3-A363-4A33-B169-DAF873F7ADC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DACC5DD3-A363-4A33-B169-DAF873F7ADC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DACC5DD3-A363-4A33-B169-DAF873F7ADC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DACC5DD3-A363-4A33-B169-DAF873F7ADC4}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/GlobalExceptions/GlobalExceptions/GlobalExceptions.csproj b/GlobalExceptions/GlobalExceptions/GlobalExceptions.csproj
new file mode 100644
index 0000000..4ee5476
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/GlobalExceptions.csproj
@@ -0,0 +1,21 @@
+
+
+
+ net9.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
diff --git a/GlobalExceptions/GlobalExceptions/Migrations/20241205220123_InitialCreate.Designer.cs b/GlobalExceptions/GlobalExceptions/Migrations/20241205220123_InitialCreate.Designer.cs
new file mode 100644
index 0000000..72ed9f5
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/Migrations/20241205220123_InitialCreate.Designer.cs
@@ -0,0 +1,50 @@
+//
+using GlobalExceptions.src.Context;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace GlobalExceptions.Migrations
+{
+ [DbContext(typeof(StudentDbContext))]
+ [Migration("20241205220123_InitialCreate")]
+ partial class InitialCreate
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "9.0.0")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("GlobalExceptions.src.Modles.Student", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Biography")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Students");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/Migrations/20241205220123_InitialCreate.cs b/GlobalExceptions/GlobalExceptions/Migrations/20241205220123_InitialCreate.cs
new file mode 100644
index 0000000..db3c191
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/Migrations/20241205220123_InitialCreate.cs
@@ -0,0 +1,35 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace GlobalExceptions.Migrations
+{
+ ///
+ public partial class InitialCreate : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "Students",
+ columns: table => new
+ {
+ Id = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Name = table.Column(type: "nvarchar(max)", nullable: false),
+ Biography = table.Column(type: "nvarchar(max)", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Students", x => x.Id);
+ });
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "Students");
+ }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/Migrations/20241205222045_Update.Designer.cs b/GlobalExceptions/GlobalExceptions/Migrations/20241205222045_Update.Designer.cs
new file mode 100644
index 0000000..73fbde1
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/Migrations/20241205222045_Update.Designer.cs
@@ -0,0 +1,50 @@
+//
+using GlobalExceptions.src.Context;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace GlobalExceptions.Migrations
+{
+ [DbContext(typeof(StudentDbContext))]
+ [Migration("20241205222045_Update")]
+ partial class Update
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "9.0.0")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("GlobalExceptions.src.Modles.Student", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Biography")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Students");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/Migrations/20241205222045_Update.cs b/GlobalExceptions/GlobalExceptions/Migrations/20241205222045_Update.cs
new file mode 100644
index 0000000..179aab1
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/Migrations/20241205222045_Update.cs
@@ -0,0 +1,22 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace GlobalExceptions.Migrations
+{
+ ///
+ public partial class Update : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+
+ }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/Migrations/StudentDbContextModelSnapshot.cs b/GlobalExceptions/GlobalExceptions/Migrations/StudentDbContextModelSnapshot.cs
new file mode 100644
index 0000000..607d2be
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/Migrations/StudentDbContextModelSnapshot.cs
@@ -0,0 +1,47 @@
+//
+using GlobalExceptions.src.Context;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace GlobalExceptions.Migrations
+{
+ [DbContext(typeof(StudentDbContext))]
+ partial class StudentDbContextModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "9.0.0")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("GlobalExceptions.src.Modles.Student", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Biography")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Students");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/Properties/launchSettings.json b/GlobalExceptions/GlobalExceptions/Properties/launchSettings.json
new file mode 100644
index 0000000..2a4b46e
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/Properties/launchSettings.json
@@ -0,0 +1,23 @@
+{
+ "$schema": "https://json.schemastore.org/launchsettings.json",
+ "profiles": {
+ "http": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": false,
+ "applicationUrl": "http://localhost:5083",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "https": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": false,
+ "applicationUrl": "https://localhost:7236;http://localhost:5083",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/appsettings.Development.json b/GlobalExceptions/GlobalExceptions/appsettings.Development.json
new file mode 100644
index 0000000..2427c50
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/appsettings.Development.json
@@ -0,0 +1,14 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+
+ "ConnectionStrings": {
+ "sqlConnection": "Server=localhost;Database=studentDb;Integrated Security=true;TrustServerCertificate=true;"
+ },
+
+ "AllowedHosts": "*"
+}
\ No newline at end of file
diff --git a/GlobalExceptions/GlobalExceptions/appsettings.json b/GlobalExceptions/GlobalExceptions/appsettings.json
new file mode 100644
index 0000000..10f68b8
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/appsettings.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*"
+}
diff --git a/GlobalExceptions/GlobalExceptions/src/Context/StudentDbContext.cs b/GlobalExceptions/GlobalExceptions/src/Context/StudentDbContext.cs
new file mode 100644
index 0000000..ea5a46f
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/src/Context/StudentDbContext.cs
@@ -0,0 +1,13 @@
+using GlobalExceptions.src.Modles;
+using Microsoft.EntityFrameworkCore;
+
+namespace GlobalExceptions.src.Context
+{
+ public class StudentDbContext : DbContext
+ {
+ public StudentDbContext(DbContextOptions options) : base(options)
+ {
+ }
+ public DbSet Students { get; set; }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/src/Contracts/ErrorResponse.cs b/GlobalExceptions/GlobalExceptions/src/Contracts/ErrorResponse.cs
new file mode 100644
index 0000000..fafa727
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/src/Contracts/ErrorResponse.cs
@@ -0,0 +1,9 @@
+namespace GlobalExceptions.src.Contracts
+{
+ public class ErrorResponse
+ {
+ public string Title { get; set; }
+ public int StatusCode { get; set; }
+ public string Message { get; set; }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/src/Contracts/StudentDto.cs b/GlobalExceptions/GlobalExceptions/src/Contracts/StudentDto.cs
new file mode 100644
index 0000000..0032a61
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/src/Contracts/StudentDto.cs
@@ -0,0 +1,6 @@
+namespace GlobalExceptions.src.Contracts
+{
+ public record CreateStudent(string Name, string Biography);
+ public record UpdateStudent(int Id, string Name, string Biography);
+ public record StudentDto(int Id, string Name, string Biography);
+}
diff --git a/GlobalExceptions/GlobalExceptions/src/Controllers/StudentController.cs b/GlobalExceptions/GlobalExceptions/src/Controllers/StudentController.cs
new file mode 100644
index 0000000..0996b6f
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/src/Controllers/StudentController.cs
@@ -0,0 +1,96 @@
+using GlobalExceptions.src.Contracts;
+using GlobalExceptions.src.Service;
+using Microsoft.AspNetCore.Mvc;
+
+namespace GlobalExceptions.src.Controllers
+{
+ ///
+ /// Controller for managing student-related operations.
+ ///
+ [ApiController]
+ public class StudentController : ControllerBase
+ {
+ private readonly IStudentService _studentService;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The student service.
+ public StudentController(IStudentService studentService)
+ {
+ _studentService = studentService;
+ }
+
+ ///
+ /// Gets the list of all students.
+ ///
+ /// A list of students.
+ [HttpGet("api/students")]
+ public async Task GetStudents()
+ {
+ var students = await _studentService.GetStudents();
+ return Ok(students);
+ }
+
+ ///
+ /// Gets a student by the specified identifier.
+ ///
+ /// The student identifier.
+ /// The student with the specified identifier.
+ [HttpGet("api/students/{id}")]
+ public async Task GetStudent(int id)
+ {
+
+ var student = await _studentService.GetStudent(id);
+
+ if (student == null)
+ {
+ throw new Exception($"Student with id: {id} not found");
+
+
+ }
+ return Ok(student);
+ }
+
+ ///
+ /// Creates a new student.
+ ///
+ /// The student creation details.
+ /// The created student.
+ [HttpPost("api/students")]
+ public async Task CreateStudent([FromBody] CreateStudent createStudent)
+ {
+ var student = await _studentService.CreateStudent(createStudent);
+ return CreatedAtAction(nameof(GetStudent), new { id = student.Id }, student);
+ }
+
+ ///
+ /// Updates an existing student.
+ ///
+ /// The student identifier.
+ /// The student update details.
+ /// The updated student.
+ [HttpPut("api/students/{id}")]
+ public async Task UpdateStudent(int id, [FromBody] UpdateStudent updateStudent)
+ {
+ if (id != updateStudent.Id)
+ {
+ throw new Exception("The student ID in the URL does not match the student ID in the request body.");
+ }
+ var student = await _studentService.UpdateStudent(updateStudent);
+ return Ok(student);
+ }
+
+ ///
+ /// Deletes a student by the specified identifier.
+ ///
+ /// The student identifier.
+ /// The deleted student.
+ [HttpDelete("api/students/{id}")]
+ public async Task DeleteStudent(int id)
+ {
+ var student = await _studentService.DeleteStudent(id);
+ return Ok(student);
+ }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/src/Exceptions/GlobalExceptionHandler.cs b/GlobalExceptions/GlobalExceptions/src/Exceptions/GlobalExceptionHandler.cs
new file mode 100644
index 0000000..3a12695
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/src/Exceptions/GlobalExceptionHandler.cs
@@ -0,0 +1,47 @@
+using GlobalExceptions.src.Contracts;
+using Microsoft.AspNetCore.Diagnostics;
+using System.Net;
+
+namespace GlobalExceptions.src.Exceptions
+{
+ public class GlobalExceptionHandler : IExceptionHandler
+ {
+ private readonly ILogger _logger;
+
+ public GlobalExceptionHandler(ILogger logger)
+ {
+ _logger = logger;
+ }
+
+ public async ValueTask TryHandleAsync(HttpContext httpContext, Exception exception, CancellationToken cancellationToken)
+ {
+ _logger.LogError(exception, "An unhandled exception occurred.");
+ var errorResponse = new ErrorResponse
+ {
+ Message = exception.Message,
+ };
+
+ switch (exception)
+ {
+ case BadHttpRequestException:
+ errorResponse.StatusCode = (int)HttpStatusCode.BadRequest;
+ errorResponse.Title = exception.GetType().Name;
+ break;
+
+
+ default:
+ errorResponse.StatusCode = (int)HttpStatusCode.InternalServerError;
+ errorResponse.Title = "Internal Server Error";
+ break;
+
+
+ }
+
+ httpContext.Response.StatusCode = errorResponse.StatusCode;
+
+ await httpContext.Response.WriteAsJsonAsync(errorResponse, cancellationToken);
+
+ return true;
+ }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/src/Mapping/MappingProfile.cs b/GlobalExceptions/GlobalExceptions/src/Mapping/MappingProfile.cs
new file mode 100644
index 0000000..e330818
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/src/Mapping/MappingProfile.cs
@@ -0,0 +1,16 @@
+using AutoMapper;
+using GlobalExceptions.src.Contracts;
+using GlobalExceptions.src.Modles;
+
+namespace GlobalExceptions.src.Mapping
+{
+ public class MappingProfile : Profile
+ {
+ public MappingProfile()
+ {
+ CreateMap();
+ CreateMap();
+ CreateMap();
+ }
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/src/Modles/Student.cs b/GlobalExceptions/GlobalExceptions/src/Modles/Student.cs
new file mode 100644
index 0000000..acbbb60
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/src/Modles/Student.cs
@@ -0,0 +1,10 @@
+namespace GlobalExceptions.src.Modles
+{
+ public class Student
+ {
+ public int Id { get; set; }
+ public string Name { get; set; }
+ public string Biography { get; set; }
+
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/src/Program.cs b/GlobalExceptions/GlobalExceptions/src/Program.cs
new file mode 100644
index 0000000..b24f578
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/src/Program.cs
@@ -0,0 +1,51 @@
+using GlobalExceptions.src.Context;
+using GlobalExceptions.src.Exceptions;
+using GlobalExceptions.src.Mapping;
+using GlobalExceptions.src.Service;
+using Microsoft.EntityFrameworkCore;
+
+var builder = WebApplication.CreateBuilder(args);
+
+// Add services to the container.
+
+builder.Services.AddControllers();
+// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
+builder.Services.AddOpenApi();
+
+builder.Services.AddProblemDetails();
+
+builder.Services.AddExceptionHandler();
+
+builder.Services.AddSwaggerGen(c =>
+{
+ c.SwaggerDoc("v1", new() { Title = "GlobalExceptions.src", Version = "v1" });
+});
+
+
+builder.Services.AddDbContext(options =>
+{
+ options.UseSqlServer(builder.Configuration.GetConnectionString("sqlConnection"));
+});
+
+builder.Services.AddScoped();
+builder.Services.AddAutoMapper(typeof(MappingProfile).Assembly);
+
+
+var app = builder.Build();
+
+// Configure the HTTP request pipeline.
+if (app.Environment.IsDevelopment())
+{
+ app.MapOpenApi();
+ app.UseSwagger();
+ app.UseSwaggerUI();
+}
+
+app.UseHttpsRedirection();
+
+app.UseAuthorization();
+app.UseExceptionHandler();
+
+app.MapControllers();
+
+app.Run();
diff --git a/GlobalExceptions/GlobalExceptions/src/Service/IStudentService.cs b/GlobalExceptions/GlobalExceptions/src/Service/IStudentService.cs
new file mode 100644
index 0000000..9db818d
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/src/Service/IStudentService.cs
@@ -0,0 +1,14 @@
+using GlobalExceptions.src.Contracts;
+
+namespace GlobalExceptions.src.Service
+{
+ public interface IStudentService
+ {
+ public Task> GetStudents();
+ public Task GetStudent(int id);
+ public Task CreateStudent(CreateStudent createStudent);
+ public Task UpdateStudent(UpdateStudent updateStudent);
+ public Task DeleteStudent(int id);
+
+ }
+}
diff --git a/GlobalExceptions/GlobalExceptions/src/Service/StudentService.cs b/GlobalExceptions/GlobalExceptions/src/Service/StudentService.cs
new file mode 100644
index 0000000..fc7d45c
--- /dev/null
+++ b/GlobalExceptions/GlobalExceptions/src/Service/StudentService.cs
@@ -0,0 +1,122 @@
+using AutoMapper;
+using GlobalExceptions.src.Context;
+using GlobalExceptions.src.Contracts;
+using GlobalExceptions.src.Modles;
+using Microsoft.EntityFrameworkCore;
+
+namespace GlobalExceptions.src.Service
+{
+ ///
+ /// Service class for managing student operations.
+ ///
+ public class StudentService : IStudentService
+ {
+ private readonly IMapper _mapper;
+ private readonly StudentDbContext _context;
+ private readonly ILogger _logger;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The mapper instance for object mapping.
+ /// The database context for student operations.
+ /// The logger instance for logging operations.
+ public StudentService(IMapper mapper, StudentDbContext context, ILogger logger)
+ {
+ _mapper = mapper;
+ _context = context;
+ _logger = logger;
+ }
+
+ ///
+ /// Creates a new student.
+ ///
+ /// The student creation data.
+ /// The created student data transfer object.
+ public async Task CreateStudent(CreateStudent createStudent)
+ {
+ var student = _mapper.Map(createStudent);
+ await _context.Students.AddAsync(student);
+ await _context.SaveChangesAsync();
+
+ return _mapper.Map(student);
+ }
+
+ ///
+ /// Gets a student by ID.
+ ///
+ /// The student ID.
+ /// The student data transfer object.
+ /// Thrown when the student is not found.
+ public async Task GetStudent(int id)
+ {
+ var student = await _context.Students.FindAsync(id);
+ if (student == null)
+ {
+ _logger.LogError($"Student with id: {id} not found");
+ throw new Exception($"Student with id: {id} not found");
+ }
+
+ _logger.LogInformation($"Student with id: {id} found");
+ return _mapper.Map(student);
+ }
+
+ ///
+ /// Gets all students.
+ ///
+ /// A collection of student data transfer objects.
+ public async Task> GetStudents()
+ {
+ var students = await _context.Students.ToListAsync();
+
+ if (students == null || !students.Any())
+ {
+ _logger.LogError("No students found");
+ return Enumerable.Empty();
+ }
+
+ _logger.LogInformation("Students found");
+ return _mapper.Map>(students);
+ }
+
+ ///
+ /// Updates an existing student.
+ ///
+ /// The student update data.
+ /// The updated student data transfer object.
+ /// Thrown when the student is not found.
+ public async Task UpdateStudent(UpdateStudent updateStudent)
+ {
+ var student = await _context.Students.FindAsync(updateStudent.Id);
+ if (student == null)
+ {
+ _logger.LogError($"Student with id: {updateStudent.Id} not found");
+ throw new Exception($"Student with id: {updateStudent.Id} not found");
+ }
+ student.Name = updateStudent.Name;
+ student.Biography = updateStudent.Biography;
+ _context.Students.Update(student);
+ await _context.SaveChangesAsync();
+ return _mapper.Map(student);
+ }
+
+ ///
+ /// Deletes a student by ID.
+ ///
+ /// The student ID.
+ /// The deleted student data transfer object.
+ /// Thrown when the student is not found.
+ public async Task DeleteStudent(int id)
+ {
+ var student = await _context.Students.FindAsync(id);
+ if (student == null)
+ {
+ _logger.LogError($"Student with id: {id} not found");
+ throw new Exception($"Student with id: {id} not found");
+ }
+ _context.Students.Remove(student);
+ await _context.SaveChangesAsync();
+ return _mapper.Map(student);
+ }
+ }
+}
diff --git a/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.metadata.v9.bin b/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.metadata.v9.bin
index 28b1639..9e560c4 100644
Binary files a/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.metadata.v9.bin and b/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.metadata.v9.bin differ
diff --git a/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.projects.v9.bin b/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.projects.v9.bin
index 965e5d7..f40e74d 100644
Binary files a/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.projects.v9.bin and b/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.projects.v9.bin differ
diff --git a/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.strings.v9.bin b/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.strings.v9.bin
index 249c221..4b237d6 100644
Binary files a/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.strings.v9.bin and b/dotnet9-crash-course/.vs/ProjectEvaluation/dotnet9-crash-course.strings.v9.bin differ
diff --git a/dotnet9-crash-course/.vs/dotnet9-crash-course/CopilotIndices/17.12.31.40377/SemanticSymbols.db-shm b/dotnet9-crash-course/.vs/dotnet9-crash-course/CopilotIndices/17.12.31.40377/SemanticSymbols.db-shm
index 3ac6c96..8922f59 100644
Binary files a/dotnet9-crash-course/.vs/dotnet9-crash-course/CopilotIndices/17.12.31.40377/SemanticSymbols.db-shm and b/dotnet9-crash-course/.vs/dotnet9-crash-course/CopilotIndices/17.12.31.40377/SemanticSymbols.db-shm differ
diff --git a/dotnet9-crash-course/.vs/dotnet9-crash-course/CopilotIndices/17.12.31.40377/SemanticSymbols.db-wal b/dotnet9-crash-course/.vs/dotnet9-crash-course/CopilotIndices/17.12.31.40377/SemanticSymbols.db-wal
index ab67829..ddee35f 100644
Binary files a/dotnet9-crash-course/.vs/dotnet9-crash-course/CopilotIndices/17.12.31.40377/SemanticSymbols.db-wal and b/dotnet9-crash-course/.vs/dotnet9-crash-course/CopilotIndices/17.12.31.40377/SemanticSymbols.db-wal differ
diff --git a/dotnet9-crash-course/.vs/dotnet9-crash-course/DesignTimeBuild/.dtbcache.v2 b/dotnet9-crash-course/.vs/dotnet9-crash-course/DesignTimeBuild/.dtbcache.v2
index 0e2fb37..47de23c 100644
Binary files a/dotnet9-crash-course/.vs/dotnet9-crash-course/DesignTimeBuild/.dtbcache.v2 and b/dotnet9-crash-course/.vs/dotnet9-crash-course/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/4465114a-863c-4e4a-b8df-46547689ca36.vsidx b/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/4465114a-863c-4e4a-b8df-46547689ca36.vsidx
deleted file mode 100644
index b84159a..0000000
Binary files a/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/4465114a-863c-4e4a-b8df-46547689ca36.vsidx and /dev/null differ
diff --git a/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/5c2d16ee-94d6-42d5-bbef-5bb62a144f9f.vsidx b/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/5c2d16ee-94d6-42d5-bbef-5bb62a144f9f.vsidx
deleted file mode 100644
index 98feb46..0000000
Binary files a/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/5c2d16ee-94d6-42d5-bbef-5bb62a144f9f.vsidx and /dev/null differ
diff --git a/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/660ee5e5-105d-418e-a22a-ee726377b085.vsidx b/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/660ee5e5-105d-418e-a22a-ee726377b085.vsidx
deleted file mode 100644
index 94619b5..0000000
Binary files a/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/660ee5e5-105d-418e-a22a-ee726377b085.vsidx and /dev/null differ
diff --git a/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/b2d01685-02c5-4d34-867c-5a3fbbed55cd.vsidx b/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/b2d01685-02c5-4d34-867c-5a3fbbed55cd.vsidx
deleted file mode 100644
index 9bcb004..0000000
Binary files a/dotnet9-crash-course/.vs/dotnet9-crash-course/FileContentIndex/b2d01685-02c5-4d34-867c-5a3fbbed55cd.vsidx and /dev/null differ
diff --git a/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/.suo b/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/.suo
index 5fe1c65..5d38354 100644
Binary files a/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/.suo and b/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/.suo differ
diff --git a/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/DocumentLayout.backup.json b/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/DocumentLayout.backup.json
index fef619b..c718ab2 100644
--- a/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/DocumentLayout.backup.json
+++ b/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/DocumentLayout.backup.json
@@ -78,8 +78,8 @@
"Title": "ProductController.cs",
"DocumentMoniker": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\Controllers\\ProductController.cs",
"RelativeDocumentMoniker": "dotnet9-crash-course\\Controllers\\ProductController.cs",
- "ToolTip": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\Controllers\\ProductController.cs*",
- "RelativeToolTip": "dotnet9-crash-course\\Controllers\\ProductController.cs*",
+ "ToolTip": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\Controllers\\ProductController.cs",
+ "RelativeToolTip": "dotnet9-crash-course\\Controllers\\ProductController.cs",
"ViewState": "AgIAAEMAAAAAAAAAAADwv2UAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-30T21:57:35.427Z",
@@ -117,8 +117,8 @@
"Title": "ProductService.cs",
"DocumentMoniker": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\src\\Service\\ProductService.cs",
"RelativeDocumentMoniker": "dotnet9-crash-course\\src\\Service\\ProductService.cs",
- "ToolTip": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\src\\Service\\ProductService.cs*",
- "RelativeToolTip": "dotnet9-crash-course\\src\\Service\\ProductService.cs*",
+ "ToolTip": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\src\\Service\\ProductService.cs",
+ "RelativeToolTip": "dotnet9-crash-course\\src\\Service\\ProductService.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-30T21:23:09.892Z",
@@ -158,7 +158,7 @@
"RelativeDocumentMoniker": "dotnet9-crash-course\\src\\Domain\\Contract\\ProductsContracts.cs",
"ToolTip": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\src\\Domain\\Contract\\ProductsContracts.cs",
"RelativeToolTip": "dotnet9-crash-course\\src\\Domain\\Contract\\ProductsContracts.cs",
- "ViewState": "AgIAABAAAAAAAAAAAAAQwBYAAAAWAAAAAAAAAA==",
+ "ViewState": "AgIAACYAAAAAAAAAAAAowBYAAAAWAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-30T21:07:34.653Z",
"EditorCaption": ""
diff --git a/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/DocumentLayout.json b/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/DocumentLayout.json
index c718ab2..0cadfd0 100644
--- a/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/DocumentLayout.json
+++ b/dotnet9-crash-course/.vs/dotnet9-crash-course/v17/DocumentLayout.json
@@ -2,6 +2,10 @@
"Version": 1,
"WorkspaceRootPath": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\",
"Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{5DE802E3-7D15-481C-B4A5-22A65793D9CA}|dotnet9-crash-course\\dotnet9-crash-course.csproj|d:\\youtube_blog_codes\\clifftechyoutube\\dotnet9-crash-course\\dotnet9-crash-course\\controllers\\productcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{5DE802E3-7D15-481C-B4A5-22A65793D9CA}|dotnet9-crash-course\\dotnet9-crash-course.csproj|solutionrelative:dotnet9-crash-course\\controllers\\productcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
{
"AbsoluteMoniker": "D:0:0:{5DE802E3-7D15-481C-B4A5-22A65793D9CA}|dotnet9-crash-course\\dotnet9-crash-course.csproj|d:\\youtube_blog_codes\\clifftechyoutube\\dotnet9-crash-course\\dotnet9-crash-course\\src\\domain\\contract\\productscontracts.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{5DE802E3-7D15-481C-B4A5-22A65793D9CA}|dotnet9-crash-course\\dotnet9-crash-course.csproj|solutionrelative:dotnet9-crash-course\\src\\domain\\contract\\productscontracts.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@@ -18,10 +22,6 @@
"AbsoluteMoniker": "D:0:0:{5DE802E3-7D15-481C-B4A5-22A65793D9CA}|dotnet9-crash-course\\dotnet9-crash-course.csproj|d:\\youtube_blog_codes\\clifftechyoutube\\dotnet9-crash-course\\dotnet9-crash-course\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{5DE802E3-7D15-481C-B4A5-22A65793D9CA}|dotnet9-crash-course\\dotnet9-crash-course.csproj|solutionrelative:dotnet9-crash-course\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
- {
- "AbsoluteMoniker": "D:0:0:{5DE802E3-7D15-481C-B4A5-22A65793D9CA}|dotnet9-crash-course\\dotnet9-crash-course.csproj|d:\\youtube_blog_codes\\clifftechyoutube\\dotnet9-crash-course\\dotnet9-crash-course\\controllers\\productcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{5DE802E3-7D15-481C-B4A5-22A65793D9CA}|dotnet9-crash-course\\dotnet9-crash-course.csproj|solutionrelative:dotnet9-crash-course\\controllers\\productcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
{
"AbsoluteMoniker": "D:0:0:{5DE802E3-7D15-481C-B4A5-22A65793D9CA}|dotnet9-crash-course\\dotnet9-crash-course.csproj|d:\\youtube_blog_codes\\clifftechyoutube\\dotnet9-crash-course\\dotnet9-crash-course\\src\\infrastructure\\exceptions\\globalexceptionhandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{5DE802E3-7D15-481C-B4A5-22A65793D9CA}|dotnet9-crash-course\\dotnet9-crash-course.csproj|solutionrelative:dotnet9-crash-course\\src\\infrastructure\\exceptions\\globalexceptionhandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@@ -70,17 +70,17 @@
"DocumentGroups": [
{
"DockedWidth": 200,
- "SelectedChildIndex": 6,
+ "SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
- "DocumentIndex": 4,
+ "DocumentIndex": 0,
"Title": "ProductController.cs",
"DocumentMoniker": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\Controllers\\ProductController.cs",
"RelativeDocumentMoniker": "dotnet9-crash-course\\Controllers\\ProductController.cs",
"ToolTip": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\Controllers\\ProductController.cs",
"RelativeToolTip": "dotnet9-crash-course\\Controllers\\ProductController.cs",
- "ViewState": "AgIAAEMAAAAAAAAAAADwv2UAAAAAAAAAAAAAAA==",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAGUAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-30T21:57:35.427Z",
"EditorCaption": ""
@@ -95,12 +95,11 @@
"RelativeToolTip": "dotnet9-crash-course\\appsettings.Development.json",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
- "WhenOpened": "2024-11-30T21:56:21.335Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:56:21.335Z"
},
{
"$type": "Document",
- "DocumentIndex": 2,
+ "DocumentIndex": 3,
"Title": "CreateProductRequestValidator.cs",
"DocumentMoniker": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\src\\Domain\\Validators\\CreateProductRequestValidator.cs",
"RelativeDocumentMoniker": "dotnet9-crash-course\\src\\Domain\\Validators\\CreateProductRequestValidator.cs",
@@ -108,8 +107,7 @@
"RelativeToolTip": "dotnet9-crash-course\\src\\Domain\\Validators\\CreateProductRequestValidator.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-11-30T21:42:36.977Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:42:36.977Z"
},
{
"$type": "Document",
@@ -121,8 +119,7 @@
"RelativeToolTip": "dotnet9-crash-course\\src\\Service\\ProductService.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-11-30T21:23:09.892Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:23:09.892Z"
},
{
"$type": "Document",
@@ -134,12 +131,11 @@
"RelativeToolTip": "dotnet9-crash-course\\src\\Service\\IProductService.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAZAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-11-30T21:19:00.814Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:19:00.814Z"
},
{
"$type": "Document",
- "DocumentIndex": 3,
+ "DocumentIndex": 4,
"Title": "Program.cs",
"DocumentMoniker": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\Program.cs",
"RelativeDocumentMoniker": "dotnet9-crash-course\\Program.cs",
@@ -147,25 +143,24 @@
"RelativeToolTip": "dotnet9-crash-course\\Program.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAEUAAAANAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-11-30T20:56:16.197Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T20:56:16.197Z"
},
{
"$type": "Document",
- "DocumentIndex": 0,
+ "DocumentIndex": 1,
"Title": "ProductsContracts.cs",
"DocumentMoniker": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\src\\Domain\\Contract\\ProductsContracts.cs",
"RelativeDocumentMoniker": "dotnet9-crash-course\\src\\Domain\\Contract\\ProductsContracts.cs",
"ToolTip": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\src\\Domain\\Contract\\ProductsContracts.cs",
"RelativeToolTip": "dotnet9-crash-course\\src\\Domain\\Contract\\ProductsContracts.cs",
- "ViewState": "AgIAACYAAAAAAAAAAAAowBYAAAAWAAAAAAAAAA==",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAADIAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-11-30T21:07:34.653Z",
"EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 1,
+ "DocumentIndex": 2,
"Title": "ErrorResponse.cs",
"DocumentMoniker": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\src\\Domain\\Contract\\ErrorResponse.cs",
"RelativeDocumentMoniker": "dotnet9-crash-course\\src\\Domain\\Contract\\ErrorResponse.cs",
@@ -173,8 +168,7 @@
"RelativeToolTip": "dotnet9-crash-course\\src\\Domain\\Contract\\ErrorResponse.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-11-30T21:06:19.699Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:06:19.699Z"
},
{
"$type": "Document",
@@ -186,8 +180,7 @@
"RelativeToolTip": "dotnet9-crash-course\\src\\Infrastructure\\Exceptions\\GlobalExceptionHandler.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAA7AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-11-30T21:45:28.385Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:45:28.385Z"
},
{
"$type": "Document",
@@ -199,8 +192,7 @@
"RelativeToolTip": "dotnet9-crash-course\\src\\Domain\\Validators\\UpdateProductRequestValidator.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAABMAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-11-30T21:44:12.926Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:44:12.926Z"
},
{
"$type": "Document",
@@ -212,8 +204,7 @@
"RelativeToolTip": "dotnet9-crash-course\\appsettings.json",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAIAAAAOAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
- "WhenOpened": "2024-11-30T21:02:53.877Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:02:53.877Z"
},
{
"$type": "Document",
@@ -225,8 +216,7 @@
"RelativeToolTip": "dotnet9-crash-course\\src\\Infrastructure\\Context\\ProductDbContext.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-11-30T21:16:34.534Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:16:34.534Z"
},
{
"$type": "Document",
@@ -238,8 +228,7 @@
"RelativeToolTip": "dotnet9-crash-course\\src\\Infrastructure\\Mapping\\MappingProfile.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAA2AAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-11-30T21:11:54.398Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:11:54.398Z"
},
{
"$type": "Document",
@@ -251,21 +240,19 @@
"RelativeToolTip": "dotnet9-crash-course\\src\\Domain\\Entities\\Product.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAZAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-11-30T21:04:17.242Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:04:17.242Z"
},
{
"$type": "Document",
"DocumentIndex": 14,
- "Title": "dotnet9-crash-course",
+ "Title": "dotnet9-crash-course.csproj",
"DocumentMoniker": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\dotnet9-crash-course.csproj",
"RelativeDocumentMoniker": "dotnet9-crash-course\\dotnet9-crash-course.csproj",
"ToolTip": "D:\\YouTube_blog_Codes\\CliffTechYouTube\\dotnet9-crash-course\\dotnet9-crash-course\\dotnet9-crash-course.csproj",
"RelativeToolTip": "dotnet9-crash-course\\dotnet9-crash-course.csproj",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
- "WhenOpened": "2024-11-30T21:00:40.013Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-11-30T21:00:40.013Z"
}
]
}
diff --git a/dotnet9-crash-course/dotnet9-crash-course/obj/Debug/net9.0/dotnet9-crash-course.AssemblyInfo.cs b/dotnet9-crash-course/dotnet9-crash-course/obj/Debug/net9.0/dotnet9-crash-course.AssemblyInfo.cs
index d3613b6..8687451 100644
--- a/dotnet9-crash-course/dotnet9-crash-course/obj/Debug/net9.0/dotnet9-crash-course.AssemblyInfo.cs
+++ b/dotnet9-crash-course/dotnet9-crash-course/obj/Debug/net9.0/dotnet9-crash-course.AssemblyInfo.cs
@@ -14,7 +14,7 @@
[assembly: System.Reflection.AssemblyCompanyAttribute("dotnet9-crash-course")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7da3890b85e78ec7fed99b1b12a8e7c0cc739385")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1c6fb48ef143289185c504f9d6a727d50a87bcda")]
[assembly: System.Reflection.AssemblyProductAttribute("dotnet9-crash-course")]
[assembly: System.Reflection.AssemblyTitleAttribute("dotnet9-crash-course")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git a/dotnet9-crash-course/dotnet9-crash-course/obj/Debug/net9.0/dotnet9-crash-course.AssemblyInfoInputs.cache b/dotnet9-crash-course/dotnet9-crash-course/obj/Debug/net9.0/dotnet9-crash-course.AssemblyInfoInputs.cache
index ecd5807..a260aa2 100644
--- a/dotnet9-crash-course/dotnet9-crash-course/obj/Debug/net9.0/dotnet9-crash-course.AssemblyInfoInputs.cache
+++ b/dotnet9-crash-course/dotnet9-crash-course/obj/Debug/net9.0/dotnet9-crash-course.AssemblyInfoInputs.cache
@@ -1 +1 @@
-2036230e7d9ee8f52bd5efe8b3d1acec1ca9b8091f383805f2a8ccf5663d6d51
+8c02b8144d78d6bdb4e126dd1af9370eada6155fe8258b1e60539c10eb2eae1c