diff --git a/UrphaCapital.API/Controllers/AdminsController.cs b/UrphaCapital.API/Controllers/AdminsController.cs index c613b9a..a533748 100644 --- a/UrphaCapital.API/Controllers/AdminsController.cs +++ b/UrphaCapital.API/Controllers/AdminsController.cs @@ -78,7 +78,7 @@ public async Task RemoveAdmin(long id, CancellationToken cancella [HttpPost("Login")] [EnableRateLimiting("sliding")] - public async Task Login([FromBody] AdminLogin loginModel, CancellationToken cancellation) + public async Task Login([FromBody] AdminLogin loginModel, CancellationToken cancellation) { if (ModelState.IsValid == false) { diff --git a/UrphaCapital.API/Controllers/CoursesController.cs b/UrphaCapital.API/Controllers/CoursesController.cs index 9d787b2..b59d960 100644 --- a/UrphaCapital.API/Controllers/CoursesController.cs +++ b/UrphaCapital.API/Controllers/CoursesController.cs @@ -27,7 +27,7 @@ public async Task Create([FromForm] CreateCourseCommand command, } [HttpGet("GetById/{id}")] - public async Task GetById(long id, CancellationToken cancellation) + public async Task GetById(string id, CancellationToken cancellation) { var query = new GetCourseByIdQuery { Id = id }; @@ -74,7 +74,7 @@ public async Task Update([FromForm] UpdateCourseCommand command, } [HttpDelete("{id}")] - public async Task Delete(long id, CancellationToken cancellation) + public async Task Delete(string id, CancellationToken cancellation) { var command = new DeleteCourseCommand { Id = id }; diff --git a/UrphaCapital.API/Controllers/LessonsController.cs b/UrphaCapital.API/Controllers/LessonsController.cs index b209986..2fef6ce 100644 --- a/UrphaCapital.API/Controllers/LessonsController.cs +++ b/UrphaCapital.API/Controllers/LessonsController.cs @@ -29,7 +29,7 @@ public async Task PostLesson([FromForm] CreateLessonCommand comma } [HttpGet("{id}")] - public async Task GetLessonById(long id, CancellationToken cancellation) + public async Task GetLessonById(string id, CancellationToken cancellation) { var query = new GetLessonByIdQuery { Id = id }; @@ -39,7 +39,7 @@ public async Task GetLessonById(long id, CancellationToken cancellation) } [HttpGet("getvideo")] - public async Task GetLessonVideo([FromQuery] long lessonId, CancellationToken cancellation) + public async Task GetLessonVideo([FromQuery] string lessonId, CancellationToken cancellation) { var query = new GetLessonVideoQuery { Id = lessonId }; @@ -58,7 +58,7 @@ public async Task GetLessonVideo([FromQuery] long lessonId, Cance } [HttpGet("{courseId}/{index}/{count}")] - public async Task> GetLessonsByCourseId(int index, int count, long courseId, CancellationToken cancellation) + public async Task> GetLessonsByCourseId(string courseId, int index, int count, CancellationToken cancellation) { var query = new GetAllLessonsByCourseIdQuery() { @@ -81,7 +81,7 @@ public async Task PutLesson([FromForm] UpdateLessonCommand comman } [HttpDelete("{id}")] - public async Task RemoveLesson(long id, CancellationToken cancellation) + public async Task RemoveLesson(string id, CancellationToken cancellation) { var command = new DeleteLessonCommand { Id = id }; diff --git a/UrphaCapital.API/Controllers/MentorsController.cs b/UrphaCapital.API/Controllers/MentorsController.cs index 1d3fd02..1529ce3 100644 --- a/UrphaCapital.API/Controllers/MentorsController.cs +++ b/UrphaCapital.API/Controllers/MentorsController.cs @@ -79,7 +79,7 @@ public async Task Delete(long id, CancellationToken cancellation) [HttpPost("Login")] [EnableRateLimiting("sliding")] - public async Task Login([FromBody] MentorLogin loginModel, CancellationToken cancellation) + public async Task Login([FromBody] MentorLogin loginModel, CancellationToken cancellation) { if (ModelState.IsValid == false) { diff --git a/UrphaCapital.API/Controllers/StudentController.cs b/UrphaCapital.API/Controllers/StudentController.cs index 4e76f34..c98e859 100644 --- a/UrphaCapital.API/Controllers/StudentController.cs +++ b/UrphaCapital.API/Controllers/StudentController.cs @@ -67,7 +67,7 @@ public async Task PutStudent([FromBody] UpdateStudentCommand comm } [HttpDelete("{id}")] - public async Task RemoveStudent(long id, CancellationToken cancellation) + public async Task RemoveStudent(string id, CancellationToken cancellation) { var command = new DeleteLessonCommand { Id = id }; @@ -78,7 +78,7 @@ public async Task RemoveStudent(long id, CancellationToken cancel [HttpPost("Login")] [EnableRateLimiting("sliding")] - public async Task Login([FromBody] AdminLogin loginModel, CancellationToken cancellation) + public async Task Login([FromBody] AdminLogin loginModel, CancellationToken cancellation) { if (ModelState.IsValid == false) { diff --git a/UrphaCapital.API/wwwroot/CoursesPictures/0296c642-34d1-4556-b28b-969af5f6a235.jpg b/UrphaCapital.API/wwwroot/CoursesPictures/0296c642-34d1-4556-b28b-969af5f6a235.jpg new file mode 100644 index 0000000..b795741 Binary files /dev/null and b/UrphaCapital.API/wwwroot/CoursesPictures/0296c642-34d1-4556-b28b-969af5f6a235.jpg differ diff --git a/UrphaCapital.API/wwwroot/CoursesPictures/cbc20970-9134-43a6-8265-2946bf642ea4.jpg b/UrphaCapital.API/wwwroot/CoursesPictures/cbc20970-9134-43a6-8265-2946bf642ea4.jpg new file mode 100644 index 0000000..5ad46ca Binary files /dev/null and b/UrphaCapital.API/wwwroot/CoursesPictures/cbc20970-9134-43a6-8265-2946bf642ea4.jpg differ diff --git a/UrphaCapital.API/wwwroot/LessonVideos/12fbef96-4abf-4170-8076-b1f09fddc5ae.mkv b/UrphaCapital.API/wwwroot/LessonVideos/12fbef96-4abf-4170-8076-b1f09fddc5ae.mkv new file mode 100644 index 0000000..7511cca Binary files /dev/null and b/UrphaCapital.API/wwwroot/LessonVideos/12fbef96-4abf-4170-8076-b1f09fddc5ae.mkv differ diff --git a/UrphaCapital.API/wwwroot/LessonVideos/88876db7-e867-4121-b1d7-c5294cb1a34e.jpg b/UrphaCapital.API/wwwroot/LessonVideos/88876db7-e867-4121-b1d7-c5294cb1a34e.jpg new file mode 100644 index 0000000..b795741 Binary files /dev/null and b/UrphaCapital.API/wwwroot/LessonVideos/88876db7-e867-4121-b1d7-c5294cb1a34e.jpg differ diff --git a/UrphaCapital.API/wwwroot/LessonVideos/8eaf5651-9fcd-458c-bae1-4ef7fd3aac88.jpg b/UrphaCapital.API/wwwroot/LessonVideos/8eaf5651-9fcd-458c-bae1-4ef7fd3aac88.jpg new file mode 100644 index 0000000..5ad46ca Binary files /dev/null and b/UrphaCapital.API/wwwroot/LessonVideos/8eaf5651-9fcd-458c-bae1-4ef7fd3aac88.jpg differ diff --git a/UrphaCapital.API/wwwroot/LessonVideos/da12b2ea-5783-4503-b6a1-8e0d388a3933.jpg b/UrphaCapital.API/wwwroot/LessonVideos/da12b2ea-5783-4503-b6a1-8e0d388a3933.jpg new file mode 100644 index 0000000..b795741 Binary files /dev/null and b/UrphaCapital.API/wwwroot/LessonVideos/da12b2ea-5783-4503-b6a1-8e0d388a3933.jpg differ diff --git a/UrphaCapital.API/wwwroot/LessonVideos/fdd306a8-d5fa-440c-8527-d5cd6b022261.jpg b/UrphaCapital.API/wwwroot/LessonVideos/fdd306a8-d5fa-440c-8527-d5cd6b022261.jpg new file mode 100644 index 0000000..b795741 Binary files /dev/null and b/UrphaCapital.API/wwwroot/LessonVideos/fdd306a8-d5fa-440c-8527-d5cd6b022261.jpg differ diff --git a/UrphaCapital.API/wwwroot/MentorsPictures/4cce4b6f-95ec-4f29-a890-7bc37e85c35b.jpg b/UrphaCapital.API/wwwroot/MentorsPictures/4cce4b6f-95ec-4f29-a890-7bc37e85c35b.jpg new file mode 100644 index 0000000..b795741 Binary files /dev/null and b/UrphaCapital.API/wwwroot/MentorsPictures/4cce4b6f-95ec-4f29-a890-7bc37e85c35b.jpg differ diff --git a/UrphaCapital.API/wwwroot/MentorsPictures/b6f1e1f3-c995-4791-9e5f-bbe000c38cf4.jpg b/UrphaCapital.API/wwwroot/MentorsPictures/b6f1e1f3-c995-4791-9e5f-bbe000c38cf4.jpg new file mode 100644 index 0000000..5ad46ca Binary files /dev/null and b/UrphaCapital.API/wwwroot/MentorsPictures/b6f1e1f3-c995-4791-9e5f-bbe000c38cf4.jpg differ diff --git a/UrphaCapital.Application/AuthServices/AuthService.cs b/UrphaCapital.Application/AuthServices/AuthService.cs index 9ce6aca..a5932b6 100644 --- a/UrphaCapital.Application/AuthServices/AuthService.cs +++ b/UrphaCapital.Application/AuthServices/AuthService.cs @@ -4,6 +4,7 @@ using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; +using UrphaCapital.Application.ViewModels; using UrphaCapital.Domain.Entities.Auth; namespace UrphaCapital.Application.AuthServices @@ -17,7 +18,7 @@ public AuthService(IConfiguration configuration) _configuration = configuration; } - public string GenerateToken(Student user) + public TokenModel GenerateToken(Student user) { SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWTSettings:Secret"]!)); SigningCredentials credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256); @@ -35,12 +36,13 @@ public string GenerateToken(Student user) new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(JwtRegisteredClaimNames.Iat, EpochTime.GetIntDate(DateTime.UtcNow).ToString(CultureInfo.InvariantCulture), ClaimValueTypes.Integer64), new Claim("UserId", user.Id.ToString()), - new Claim(ClaimTypes.Name, user.FullName), - new Claim(ClaimTypes.MobilePhone, user.PhoneNumber), + new Claim("Name", user.FullName), + new Claim("Phone", user.PhoneNumber), new Claim("ids", ids), - new Claim(ClaimTypes.StreetAddress, user.Address), - new Claim(ClaimTypes.Email, user.Email), - new Claim(ClaimTypes.Role, user.Role!) + new Claim("Address", user.Address), + new Claim("Email", user.Email), + new Claim("Role", user.Role!), + new Claim(ClaimTypes.UserData, ids) }; @@ -52,10 +54,17 @@ public string GenerateToken(Student user) expires: DateTime.UtcNow.AddMinutes(expirePeriod), signingCredentials: credentials); - return new JwtSecurityTokenHandler().WriteToken(token); + var response = new TokenModel() + { + Token = new JwtSecurityTokenHandler().WriteToken(token), + isSuccess = true, + Message = "Token generated successfully!" + }; + + return response; } - public string GenerateToken(Admin user) + public TokenModel GenerateToken(Admin user) { SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWTSettings:Secret"]!)); SigningCredentials credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256); @@ -65,11 +74,11 @@ public string GenerateToken(Admin user) { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(JwtRegisteredClaimNames.Iat, EpochTime.GetIntDate(DateTime.UtcNow).ToString(CultureInfo.InvariantCulture), ClaimValueTypes.Integer64), - new Claim("UserId", user.Id.ToString()), - new Claim(ClaimTypes.Name, user.Name), - new Claim(ClaimTypes.MobilePhone, user.PhoneNumber), - new Claim(ClaimTypes.Email, user.Email), - new Claim(ClaimTypes.Role, user.Role!) + new Claim("Id", user.Id.ToString()), + new Claim("Name", user.Name), + new Claim("Phone", user.PhoneNumber), + new Claim("Email", user.Email), + new Claim("Role", user.Role!) }; @@ -81,10 +90,17 @@ public string GenerateToken(Admin user) expires: DateTime.UtcNow.AddMinutes(expirePeriod), signingCredentials: credentials); - return new JwtSecurityTokenHandler().WriteToken(token); + var response = new TokenModel() + { + Token = new JwtSecurityTokenHandler().WriteToken(token), + isSuccess = true, + Message = "Token generated successfully!" + }; + + return response; } - public string GenerateToken(Mentor user) + public TokenModel GenerateToken(Mentor user) { SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWTSettings:Secret"]!)); SigningCredentials credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256); @@ -94,11 +110,11 @@ public string GenerateToken(Mentor user) { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(JwtRegisteredClaimNames.Iat, EpochTime.GetIntDate(DateTime.UtcNow).ToString(CultureInfo.InvariantCulture), ClaimValueTypes.Integer64), - new Claim("UserId", user.Id.ToString()), - new Claim(ClaimTypes.Name, user.Name), - new Claim(ClaimTypes.MobilePhone, user.PhoneNumber), - new Claim(ClaimTypes.Email, user.Email), - new Claim(ClaimTypes.Role, user.Role!) + new Claim("Id", user.Id.ToString()), + new Claim("Name", user.Name), + new Claim("Phone", user.PhoneNumber), + new Claim("Email", user.Email), + new Claim("Role", user.Role!) }; @@ -110,7 +126,14 @@ public string GenerateToken(Mentor user) expires: DateTime.UtcNow.AddMinutes(expirePeriod), signingCredentials: credentials); - return new JwtSecurityTokenHandler().WriteToken(token); + var response = new TokenModel() + { + Token = new JwtSecurityTokenHandler().WriteToken(token), + isSuccess = true, + Message = "Token generated successfully!" + }; + + return response; } } } diff --git a/UrphaCapital.Application/AuthServices/IAuthService.cs b/UrphaCapital.Application/AuthServices/IAuthService.cs index 1aaada5..f0ccf8b 100644 --- a/UrphaCapital.Application/AuthServices/IAuthService.cs +++ b/UrphaCapital.Application/AuthServices/IAuthService.cs @@ -1,16 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using UrphaCapital.Application.ViewModels; using UrphaCapital.Domain.Entities.Auth; namespace UrphaCapital.Application.AuthServices { public interface IAuthService { - public string GenerateToken(Student user); - public string GenerateToken(Admin user); - public string GenerateToken(Mentor user); + public TokenModel GenerateToken(Student user); + public TokenModel GenerateToken(Admin user); + public TokenModel GenerateToken(Mentor user); } } diff --git a/UrphaCapital.Application/UseCases/Courses/Commands/DeleteCourseCommand.cs b/UrphaCapital.Application/UseCases/Courses/Commands/DeleteCourseCommand.cs index d024f21..cf978a1 100644 --- a/UrphaCapital.Application/UseCases/Courses/Commands/DeleteCourseCommand.cs +++ b/UrphaCapital.Application/UseCases/Courses/Commands/DeleteCourseCommand.cs @@ -10,6 +10,6 @@ namespace UrphaCapital.Application.UseCases.Courses.Commands { public class DeleteCourseCommand : IRequest { - public long Id { get; set; } + public string Id { get; set; } } } diff --git a/UrphaCapital.Application/UseCases/Courses/Commands/UpdateCourseCommand.cs b/UrphaCapital.Application/UseCases/Courses/Commands/UpdateCourseCommand.cs index 3190f8f..caaf1f5 100644 --- a/UrphaCapital.Application/UseCases/Courses/Commands/UpdateCourseCommand.cs +++ b/UrphaCapital.Application/UseCases/Courses/Commands/UpdateCourseCommand.cs @@ -11,7 +11,7 @@ namespace UrphaCapital.Application.UseCases.Courses.Commands { public class UpdateCourseCommand : IRequest { - public long Id { get; set; } + public string Id { get; set; } public string Name { get; set; } public string Description { get; set; } public string Subtitle { get; set; } diff --git a/UrphaCapital.Application/UseCases/Courses/Handlers/CommandHandlers/DeleteCourseCommandHandler.cs b/UrphaCapital.Application/UseCases/Courses/Handlers/CommandHandlers/DeleteCourseCommandHandler.cs index c2bd29b..aaa3296 100644 --- a/UrphaCapital.Application/UseCases/Courses/Handlers/CommandHandlers/DeleteCourseCommandHandler.cs +++ b/UrphaCapital.Application/UseCases/Courses/Handlers/CommandHandlers/DeleteCourseCommandHandler.cs @@ -25,7 +25,7 @@ public DeleteCourseCommandHandler(IApplicationDbContext context, IWebHostEnviron public async Task Handle(DeleteCourseCommand request, CancellationToken cancellationToken) { - var course = await _context.Courses.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken); + var course = await _context.Courses.FirstOrDefaultAsync(x => x.Id.ToString() == request.Id, cancellationToken); if (course == null) { diff --git a/UrphaCapital.Application/UseCases/Courses/Handlers/CommandHandlers/UpdateCourseCommandHandler.cs b/UrphaCapital.Application/UseCases/Courses/Handlers/CommandHandlers/UpdateCourseCommandHandler.cs index dcce3d8..eaef308 100644 --- a/UrphaCapital.Application/UseCases/Courses/Handlers/CommandHandlers/UpdateCourseCommandHandler.cs +++ b/UrphaCapital.Application/UseCases/Courses/Handlers/CommandHandlers/UpdateCourseCommandHandler.cs @@ -25,7 +25,7 @@ public UpdateCourseCommandHandler(IApplicationDbContext context, IWebHostEnviron public async Task Handle(UpdateCourseCommand request, CancellationToken cancellationToken) { - var course = await _context.Courses.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken); + var course = await _context.Courses.FirstOrDefaultAsync(x => x.Id.ToString() == request.Id, cancellationToken); if (course == null) { diff --git a/UrphaCapital.Application/UseCases/Courses/Handlers/QueryHandlers/GetCourseByIdQueryHandler.cs b/UrphaCapital.Application/UseCases/Courses/Handlers/QueryHandlers/GetCourseByIdQueryHandler.cs index 666afc2..8927a07 100644 --- a/UrphaCapital.Application/UseCases/Courses/Handlers/QueryHandlers/GetCourseByIdQueryHandler.cs +++ b/UrphaCapital.Application/UseCases/Courses/Handlers/QueryHandlers/GetCourseByIdQueryHandler.cs @@ -17,7 +17,7 @@ public GetCourseByIdQueryHandler(IApplicationDbContext context) public async Task Handle(GetCourseByIdQuery request, CancellationToken cancellationToken) { - return await _context.Courses.FirstOrDefaultAsync(x => x.Id == request.Id) ?? + return await _context.Courses.FirstOrDefaultAsync(x => x.Id.ToString() == request.Id) ?? throw new Exception("Not found"); } } diff --git a/UrphaCapital.Application/UseCases/Courses/Queries/GetCourseByIdQuery.cs b/UrphaCapital.Application/UseCases/Courses/Queries/GetCourseByIdQuery.cs index 49ee88c..f2be429 100644 --- a/UrphaCapital.Application/UseCases/Courses/Queries/GetCourseByIdQuery.cs +++ b/UrphaCapital.Application/UseCases/Courses/Queries/GetCourseByIdQuery.cs @@ -10,6 +10,6 @@ namespace UrphaCapital.Application.UseCases.Courses.Queries { public class GetCourseByIdQuery : IRequest { - public long Id { get; set; } + public string Id { get; set; } } } diff --git a/UrphaCapital.Application/UseCases/Homework/Commands/CreateHomeworkCommand.cs b/UrphaCapital.Application/UseCases/Homework/Commands/CreateHomeworkCommand.cs index db99261..7c8f87e 100644 --- a/UrphaCapital.Application/UseCases/Homework/Commands/CreateHomeworkCommand.cs +++ b/UrphaCapital.Application/UseCases/Homework/Commands/CreateHomeworkCommand.cs @@ -15,6 +15,6 @@ public class CreateHomeworkCommand: IRequest public IFormFile FILE { get; set; } public string Description { get; set; } public long studentId { get; set; } - public long LessonId { get; set; } + public Guid LessonId { get; set; } } } diff --git a/UrphaCapital.Application/UseCases/Homework/Commands/UpdateHomeworkCommand.cs b/UrphaCapital.Application/UseCases/Homework/Commands/UpdateHomeworkCommand.cs index 0137245..c276921 100644 --- a/UrphaCapital.Application/UseCases/Homework/Commands/UpdateHomeworkCommand.cs +++ b/UrphaCapital.Application/UseCases/Homework/Commands/UpdateHomeworkCommand.cs @@ -16,6 +16,6 @@ public class UpdateHomeworkCommand: IRequest public IFormFile FILE { get; set; } public string Description { get; set; } public long studentId { get; set; } - public long LessonId { get; set; } + public Guid LessonId { get; set; } } } diff --git a/UrphaCapital.Application/UseCases/Lessons/Commands/CreateLessonCommand.cs b/UrphaCapital.Application/UseCases/Lessons/Commands/CreateLessonCommand.cs index 92dfb1c..1b161a7 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Commands/CreateLessonCommand.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Commands/CreateLessonCommand.cs @@ -7,7 +7,7 @@ namespace UrphaCapital.Application.UseCases.Lessons.Commands public class CreateLessonCommand : IRequest { public string Name { get; set; } - public long CourseId { get; set; } + public Guid CourseId { get; set; } public IFormFile Video { get; set; } } } diff --git a/UrphaCapital.Application/UseCases/Lessons/Commands/DeleteLessonCommand.cs b/UrphaCapital.Application/UseCases/Lessons/Commands/DeleteLessonCommand.cs index 53c3d98..4718a19 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Commands/DeleteLessonCommand.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Commands/DeleteLessonCommand.cs @@ -10,6 +10,6 @@ namespace UrphaCapital.Application.UseCases.Lessons.Commands { public class DeleteLessonCommand : IRequest { - public long Id { get; set; } + public string Id { get; set; } } } diff --git a/UrphaCapital.Application/UseCases/Lessons/Commands/UpdateLessonCommand.cs b/UrphaCapital.Application/UseCases/Lessons/Commands/UpdateLessonCommand.cs index dcfca3c..d7b2feb 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Commands/UpdateLessonCommand.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Commands/UpdateLessonCommand.cs @@ -11,9 +11,9 @@ namespace UrphaCapital.Application.UseCases.Lessons.Commands { public class UpdateLessonCommand : IRequest { - public long Id { get; set; } + public string Id { get; set; } public string Name { get; set; } - public long CourseId { get; set; } + public Guid CourseId { get; set; } public IFormFile Video { get; set; } } } diff --git a/UrphaCapital.Application/UseCases/Lessons/Handlers/CommandHandlers/DeleteLessonCommandHandler.cs b/UrphaCapital.Application/UseCases/Lessons/Handlers/CommandHandlers/DeleteLessonCommandHandler.cs index 86a344b..eade034 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Handlers/CommandHandlers/DeleteLessonCommandHandler.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Handlers/CommandHandlers/DeleteLessonCommandHandler.cs @@ -27,7 +27,7 @@ public DeleteLessonCommandHandler(IApplicationDbContext context, IWebHostEnviron public async Task Handle(DeleteLessonCommand request, CancellationToken cancellationToken) { - var lesson = await _context.Lessons.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken); + var lesson = await _context.Lessons.FirstOrDefaultAsync(x => x.Id.ToString() == request.Id, cancellationToken); if (lesson == null) return new ResponseModel() diff --git a/UrphaCapital.Application/UseCases/Lessons/Handlers/CommandHandlers/UpdateLessonCommandHandler.cs b/UrphaCapital.Application/UseCases/Lessons/Handlers/CommandHandlers/UpdateLessonCommandHandler.cs index cec85e0..2c633b9 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Handlers/CommandHandlers/UpdateLessonCommandHandler.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Handlers/CommandHandlers/UpdateLessonCommandHandler.cs @@ -29,7 +29,7 @@ public UpdateLessonCommandHandler(IApplicationDbContext context, IWebHostEnviron public async Task Handle(UpdateLessonCommand request, CancellationToken cancellationToken) { - var lesson = await _context.Lessons.FirstOrDefaultAsync(x => x.Id == request.Id, cancellationToken); + var lesson = await _context.Lessons.FirstOrDefaultAsync(x => x.Id.ToString() == request.Id, cancellationToken); if (lesson == null) return new ResponseModel() diff --git a/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetAllLessonsByCourseIdQueryHandler.cs b/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetAllLessonsByCourseIdQueryHandler.cs index b0398e2..c7a2b63 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetAllLessonsByCourseIdQueryHandler.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetAllLessonsByCourseIdQueryHandler.cs @@ -33,7 +33,7 @@ public async Task> Handle(GetAllLessonsByCourseIdQuery reque _memoryCache.Set( key: "lesson", value: await _context.Lessons - .Where(l => l.CourseId == request.CourseId) + .Where(l => l.CourseId.ToString() == request.CourseId) .Skip(request.Index - 1) .Take(request.Count) .Select(x => new Lesson diff --git a/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetLessonByIdQueryHandler.cs b/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetLessonByIdQueryHandler.cs index 74271c2..a489e27 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetLessonByIdQueryHandler.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetLessonByIdQueryHandler.cs @@ -22,7 +22,7 @@ public GetLessonByIdQueryHandler(IApplicationDbContext context) public async Task Handle(GetLessonByIdQuery request, CancellationToken cancellationToken) { - return await _context.Lessons.FirstOrDefaultAsync(x => x.Id == request.Id) ?? + return await _context.Lessons.FirstOrDefaultAsync(x => x.Id.ToString() == request.Id) ?? throw new NotImplementedException(); } } diff --git a/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetLessonVideoQueryHandler.cs b/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetLessonVideoQueryHandler.cs index 0d8bd91..817a471 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetLessonVideoQueryHandler.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Handlers/QueryHandlers/GetLessonVideoQueryHandler.cs @@ -22,7 +22,7 @@ public GetLessonVideoQueryHandler(IApplicationDbContext context) public async Task Handle(GetLessonVideoQuery request, CancellationToken cancellationToken) { - var lesson = await _context.Lessons.FirstOrDefaultAsync(x => x.Id == request.Id); + var lesson = await _context.Lessons.FirstOrDefaultAsync(x => x.Id.ToString() == request.Id); if (lesson == null) { return null; diff --git a/UrphaCapital.Application/UseCases/Lessons/Queries/GetAllLessonsByCourseIdQuery.cs b/UrphaCapital.Application/UseCases/Lessons/Queries/GetAllLessonsByCourseIdQuery.cs index fd879b9..d36842a 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Queries/GetAllLessonsByCourseIdQuery.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Queries/GetAllLessonsByCourseIdQuery.cs @@ -10,7 +10,7 @@ namespace UrphaCapital.Application.UseCases.Lessons.Queries { public class GetAllLessonsByCourseIdQuery : IRequest> { - public long CourseId { get; set; } + public string CourseId { get; set; } public int Index { get; set; } public int Count { get; set; } } diff --git a/UrphaCapital.Application/UseCases/Lessons/Queries/GetLessonByIdQuery.cs b/UrphaCapital.Application/UseCases/Lessons/Queries/GetLessonByIdQuery.cs index 9b16e53..96aeacb 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Queries/GetLessonByIdQuery.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Queries/GetLessonByIdQuery.cs @@ -10,6 +10,6 @@ namespace UrphaCapital.Application.UseCases.Lessons.Queries { public class GetLessonByIdQuery : IRequest { - public long Id { get; set; } + public string Id { get; set; } } } diff --git a/UrphaCapital.Application/UseCases/Lessons/Queries/GetLessonVideoQuery.cs b/UrphaCapital.Application/UseCases/Lessons/Queries/GetLessonVideoQuery.cs index 07079cd..b6e0306 100644 --- a/UrphaCapital.Application/UseCases/Lessons/Queries/GetLessonVideoQuery.cs +++ b/UrphaCapital.Application/UseCases/Lessons/Queries/GetLessonVideoQuery.cs @@ -9,6 +9,6 @@ namespace UrphaCapital.Application.UseCases.Lessons.Queries { public class GetLessonVideoQuery : IRequest { - public long Id { get; set; } + public string Id { get; set; } } } diff --git a/UrphaCapital.Application/UseCases/StudentsCRUD/Commands/CreateStudentsCommand.cs b/UrphaCapital.Application/UseCases/StudentsCRUD/Commands/CreateStudentsCommand.cs index 0acc988..24c149f 100644 --- a/UrphaCapital.Application/UseCases/StudentsCRUD/Commands/CreateStudentsCommand.cs +++ b/UrphaCapital.Application/UseCases/StudentsCRUD/Commands/CreateStudentsCommand.cs @@ -15,6 +15,6 @@ public class CreateStudentsCommand: IRequest public string PhoneNumber { get; set; } public string Email { get; set; } public string PasswordHash { get; set; } - public List CourseIds { get; set; } + public List CourseIds { get; set; } } } diff --git a/UrphaCapital.Application/UseCases/StudentsCRUD/Commands/UpdateStudentCommand.cs b/UrphaCapital.Application/UseCases/StudentsCRUD/Commands/UpdateStudentCommand.cs index 95f2a84..6e78a38 100644 --- a/UrphaCapital.Application/UseCases/StudentsCRUD/Commands/UpdateStudentCommand.cs +++ b/UrphaCapital.Application/UseCases/StudentsCRUD/Commands/UpdateStudentCommand.cs @@ -16,6 +16,6 @@ public class UpdateStudentCommand: IRequest public string PhoneNumber { get; set; } public string Email { get; set; } public string PasswordHash { get; set; } - public List CourseIds { get; set; } + public List CourseIds { get; set; } } } diff --git a/UrphaCapital.Application/ViewModels/TokenModel.cs b/UrphaCapital.Application/ViewModels/TokenModel.cs new file mode 100644 index 0000000..72f4c98 --- /dev/null +++ b/UrphaCapital.Application/ViewModels/TokenModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UrphaCapital.Application.ViewModels +{ + public class TokenModel + { + public string Token { get; set; } + public string Message { get; set; } + public bool isSuccess { get; set; } + } +} diff --git a/UrphaCapital.Domain/Entities/Auth/Student.cs b/UrphaCapital.Domain/Entities/Auth/Student.cs index e5cc03c..aa443b5 100644 --- a/UrphaCapital.Domain/Entities/Auth/Student.cs +++ b/UrphaCapital.Domain/Entities/Auth/Student.cs @@ -15,7 +15,7 @@ public class Student public string Email { get; set; } public string PasswordHash { get; set; } public string Salt { get; set; } - public List CourseIds { get; set; } + public List CourseIds { get; set; } public string Role { get; set; } } } diff --git a/UrphaCapital.Domain/Entities/Course.cs b/UrphaCapital.Domain/Entities/Course.cs index 7358a01..1b419c1 100644 --- a/UrphaCapital.Domain/Entities/Course.cs +++ b/UrphaCapital.Domain/Entities/Course.cs @@ -9,7 +9,7 @@ namespace UrphaCapital.Domain.Entities { public class Course { - public long Id { get; set; } + public Guid Id { get; set; } = Guid.NewGuid(); public string Name { get; set; } public string Description { get; set; } public string Subtitle { get; set; } diff --git a/UrphaCapital.Domain/Entities/Homeworks.cs b/UrphaCapital.Domain/Entities/Homeworks.cs index 4b6121b..3e04c53 100644 --- a/UrphaCapital.Domain/Entities/Homeworks.cs +++ b/UrphaCapital.Domain/Entities/Homeworks.cs @@ -12,7 +12,7 @@ public class Homeworks public string Title { get; set; } public string FILE { get; set; } public string Description { get; set; } - public long LessonId { get; set; } + public Guid LessonId { get; set; } public long studentId { get; set; } public Lesson Lesson { get; set; } } diff --git a/UrphaCapital.Domain/Entities/Lesson.cs b/UrphaCapital.Domain/Entities/Lesson.cs index 51590ef..5146c6d 100644 --- a/UrphaCapital.Domain/Entities/Lesson.cs +++ b/UrphaCapital.Domain/Entities/Lesson.cs @@ -8,10 +8,10 @@ namespace UrphaCapital.Domain.Entities { public class Lesson { - public long Id { get; set; } + public Guid Id { get; set; } = Guid.NewGuid(); public string Name { get; set; } - public long CourseId { get; set; } + public Guid CourseId { get; set; } public Course Course { get; set; } - public string Video { get; set; } + public string Video { get; set; } } } diff --git a/UrphaCapital.Domain/Entities/Test.cs b/UrphaCapital.Domain/Entities/Test.cs index b61492b..7da6131 100644 --- a/UrphaCapital.Domain/Entities/Test.cs +++ b/UrphaCapital.Domain/Entities/Test.cs @@ -10,7 +10,7 @@ public class Test { public long Id { get; set; } public string Question { get; set; } - public long LessonId { get; set; } + public Guid LessonId { get; set; } public Lesson Lesson { get; set; } public List Answers { get; set; } } diff --git a/UrphaCapital.Infrastructure/Migrations/20240904005302_test.Designer.cs b/UrphaCapital.Infrastructure/Migrations/20240912013458_firstMigration.Designer.cs similarity index 92% rename from UrphaCapital.Infrastructure/Migrations/20240904005302_test.Designer.cs rename to UrphaCapital.Infrastructure/Migrations/20240912013458_firstMigration.Designer.cs index 4739e8e..258adfb 100644 --- a/UrphaCapital.Infrastructure/Migrations/20240904005302_test.Designer.cs +++ b/UrphaCapital.Infrastructure/Migrations/20240912013458_firstMigration.Designer.cs @@ -1,4 +1,5 @@ // +using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -12,8 +13,8 @@ namespace UrphaCapital.Infrastructure.Migrations { [DbContext(typeof(UrphaCapitalDbContext))] - [Migration("20240904005302_test")] - partial class test + [Migration("20240912013458_firstMigration")] + partial class firstMigration { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -92,10 +93,10 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) Id = 1L, Email = "admin@gmail.com", Name = "Ozod Ali", - PasswordHash = "FKeZ0hNqDT6p77Y17tbpU4x7HkL5DO+2N2q4dZp1bO0=", + PasswordHash = "0uWF1h1dUY3IskvUlLOklhBlgmBACiFQQ/zcLXz1VFU=", PhoneNumber = "+998934013443", Role = "SuperAdmin", - Salt = "f4caad1f-8557-4005-b6f1-c68cdd684b44" + Salt = "82f73fc9-42fe-417f-afae-7dcbbfd629fb" }); }); @@ -156,9 +157,9 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .IsRequired() .HasColumnType("text"); - b.Property>("CourseIds") + b.Property>("CourseIds") .IsRequired() - .HasColumnType("bigint[]"); + .HasColumnType("text[]"); b.Property("Email") .IsRequired() @@ -191,11 +192,9 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) modelBuilder.Entity("UrphaCapital.Domain.Entities.Course", b => { - b.Property("Id") + b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + .HasColumnType("uuid"); b.Property("Description") .IsRequired() @@ -272,8 +271,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .IsRequired() .HasColumnType("text"); - b.Property("LessonId") - .HasColumnType("bigint"); + b.Property("LessonId") + .HasColumnType("uuid"); b.Property("Title") .IsRequired() @@ -291,14 +290,12 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) modelBuilder.Entity("UrphaCapital.Domain.Entities.Lesson", b => { - b.Property("Id") + b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("bigint"); + .HasColumnType("uuid"); - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CourseId") - .HasColumnType("bigint"); + b.Property("CourseId") + .HasColumnType("uuid"); b.Property("Name") .IsRequired() @@ -323,8 +320,8 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - b.Property("LessonId") - .HasColumnType("bigint"); + b.Property("LessonId") + .HasColumnType("uuid"); b.Property("Question") .IsRequired() diff --git a/UrphaCapital.Infrastructure/Migrations/20240904005302_test.cs b/UrphaCapital.Infrastructure/Migrations/20240912013458_firstMigration.cs similarity index 92% rename from UrphaCapital.Infrastructure/Migrations/20240904005302_test.cs rename to UrphaCapital.Infrastructure/Migrations/20240912013458_firstMigration.cs index ea80be3..e2fa7dd 100644 --- a/UrphaCapital.Infrastructure/Migrations/20240904005302_test.cs +++ b/UrphaCapital.Infrastructure/Migrations/20240912013458_firstMigration.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; @@ -7,7 +8,7 @@ namespace UrphaCapital.Infrastructure.Migrations { /// - public partial class test : Migration + public partial class firstMigration : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) @@ -78,7 +79,7 @@ protected override void Up(MigrationBuilder migrationBuilder) Email = table.Column(type: "text", nullable: false), PasswordHash = table.Column(type: "text", nullable: false), Salt = table.Column(type: "text", nullable: false), - CourseIds = table.Column>(type: "bigint[]", nullable: false), + CourseIds = table.Column>(type: "text[]", nullable: false), Role = table.Column(type: "text", nullable: false) }, constraints: table => @@ -90,8 +91,7 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "Courses", columns: table => new { - Id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Id = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "text", nullable: false), Description = table.Column(type: "text", nullable: false), Subtitle = table.Column(type: "text", nullable: false), @@ -114,10 +114,9 @@ protected override void Up(MigrationBuilder migrationBuilder) name: "Lessons", columns: table => new { - Id = table.Column(type: "bigint", nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + Id = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "text", nullable: false), - CourseId = table.Column(type: "bigint", nullable: false), + CourseId = table.Column(type: "uuid", nullable: false), Video = table.Column(type: "text", nullable: false) }, constraints: table => @@ -140,7 +139,7 @@ protected override void Up(MigrationBuilder migrationBuilder) Title = table.Column(type: "text", nullable: false), FILE = table.Column(type: "text", nullable: false), Description = table.Column(type: "text", nullable: false), - LessonId = table.Column(type: "bigint", nullable: false), + LessonId = table.Column(type: "uuid", nullable: false), studentId = table.Column(type: "bigint", nullable: false) }, constraints: table => @@ -161,7 +160,7 @@ protected override void Up(MigrationBuilder migrationBuilder) Id = table.Column(type: "bigint", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Question = table.Column(type: "text", nullable: false), - LessonId = table.Column(type: "bigint", nullable: false) + LessonId = table.Column(type: "uuid", nullable: false) }, constraints: table => { @@ -198,7 +197,7 @@ protected override void Up(MigrationBuilder migrationBuilder) migrationBuilder.InsertData( table: "Admins", columns: new[] { "Id", "Email", "Name", "PasswordHash", "PhoneNumber", "Role", "Salt" }, - values: new object[] { 1L, "admin@gmail.com", "Ozod Ali", "FKeZ0hNqDT6p77Y17tbpU4x7HkL5DO+2N2q4dZp1bO0=", "+998934013443", "SuperAdmin", "f4caad1f-8557-4005-b6f1-c68cdd684b44" }); + values: new object[] { 1L, "admin@gmail.com", "Ozod Ali", "0uWF1h1dUY3IskvUlLOklhBlgmBACiFQQ/zcLXz1VFU=", "+998934013443", "SuperAdmin", "82f73fc9-42fe-417f-afae-7dcbbfd629fb" }); migrationBuilder.CreateIndex( name: "IX_Answers_TestId", diff --git a/UrphaCapital.Infrastructure/Migrations/UrphaCapitalDbContextModelSnapshot.cs b/UrphaCapital.Infrastructure/Migrations/UrphaCapitalDbContextModelSnapshot.cs index 45a9316..6b96ee1 100644 --- a/UrphaCapital.Infrastructure/Migrations/UrphaCapitalDbContextModelSnapshot.cs +++ b/UrphaCapital.Infrastructure/Migrations/UrphaCapitalDbContextModelSnapshot.cs @@ -1,4 +1,5 @@ // +using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -89,10 +90,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) Id = 1L, Email = "admin@gmail.com", Name = "Ozod Ali", - PasswordHash = "FKeZ0hNqDT6p77Y17tbpU4x7HkL5DO+2N2q4dZp1bO0=", + PasswordHash = "0uWF1h1dUY3IskvUlLOklhBlgmBACiFQQ/zcLXz1VFU=", PhoneNumber = "+998934013443", Role = "SuperAdmin", - Salt = "f4caad1f-8557-4005-b6f1-c68cdd684b44" + Salt = "82f73fc9-42fe-417f-afae-7dcbbfd629fb" }); }); @@ -153,9 +154,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsRequired() .HasColumnType("text"); - b.Property>("CourseIds") + b.Property>("CourseIds") .IsRequired() - .HasColumnType("bigint[]"); + .HasColumnType("text[]"); b.Property("Email") .IsRequired() @@ -188,11 +189,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) modelBuilder.Entity("UrphaCapital.Domain.Entities.Course", b => { - b.Property("Id") + b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("bigint"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + .HasColumnType("uuid"); b.Property("Description") .IsRequired() @@ -269,8 +268,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsRequired() .HasColumnType("text"); - b.Property("LessonId") - .HasColumnType("bigint"); + b.Property("LessonId") + .HasColumnType("uuid"); b.Property("Title") .IsRequired() @@ -288,14 +287,12 @@ protected override void BuildModel(ModelBuilder modelBuilder) modelBuilder.Entity("UrphaCapital.Domain.Entities.Lesson", b => { - b.Property("Id") + b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("bigint"); + .HasColumnType("uuid"); - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("CourseId") - .HasColumnType("bigint"); + b.Property("CourseId") + .HasColumnType("uuid"); b.Property("Name") .IsRequired() @@ -320,8 +317,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - b.Property("LessonId") - .HasColumnType("bigint"); + b.Property("LessonId") + .HasColumnType("uuid"); b.Property("Question") .IsRequired() diff --git a/UrphaCapital.sln b/UrphaCapital.sln index ed2ff6d..e4de179 100644 --- a/UrphaCapital.sln +++ b/UrphaCapital.sln @@ -11,8 +11,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UrphaCapital.Application", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UrphaCapital.Infrastructure", "UrphaCapital.Infrastructure\UrphaCapital.Infrastructure.csproj", "{FB0C53AC-9CB8-4315-9B57-59E995CEF6AB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UrphaCapital.Tests", "UrphaCapital.Tests\UrphaCapital.Tests.csproj", "{F3BD6EB2-FD1D-4A89-95E2-AD6123EF7D01}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -35,10 +33,6 @@ Global {FB0C53AC-9CB8-4315-9B57-59E995CEF6AB}.Debug|Any CPU.Build.0 = Debug|Any CPU {FB0C53AC-9CB8-4315-9B57-59E995CEF6AB}.Release|Any CPU.ActiveCfg = Release|Any CPU {FB0C53AC-9CB8-4315-9B57-59E995CEF6AB}.Release|Any CPU.Build.0 = Release|Any CPU - {F3BD6EB2-FD1D-4A89-95E2-AD6123EF7D01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F3BD6EB2-FD1D-4A89-95E2-AD6123EF7D01}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F3BD6EB2-FD1D-4A89-95E2-AD6123EF7D01}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F3BD6EB2-FD1D-4A89-95E2-AD6123EF7D01}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE