From 4a20bbc9f412b9c9f0e387c1bfdd2127aa9eecea Mon Sep 17 00:00:00 2001 From: MatheusCFBT Date: Fri, 6 Sep 2024 13:16:24 -0300 Subject: [PATCH 1/5] the number generator is safe now --- .../Pages/ScheduleActions/index.cshtml.cs | 14 ++-- .../Repositories/IJoinTimeRepository.cs | 1 - .../Repositories/JoinTimeRepository.cs | 11 ++- .../WebServices/Core/JointTimeWebService.cs | 2 +- .../EndPoints/JoinTimeEndPoints.cs | 2 +- tests/FreeTime/FreeTimeBackstageTest.cs | 12 ++- tests/JoinTime/JoinTimeBusinessLogicTest.cs | 36 +++++++-- tests/JoinTime/JoinTimeEndPointsTests.cs | 73 +++++++++++++------ tests/JoinTime/JoinTimeRepositoryTest.cs | 24 +++--- tests/Live/LiveNotifyWorkerTest.cs | 33 +++++---- 10 files changed, 139 insertions(+), 69 deletions(-) diff --git a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs index e629f287..b81fac0a 100644 --- a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs +++ b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs @@ -139,7 +139,6 @@ IJoinTimeWebService joinTimeWebService OldTimeSelectionList = new(); TimeSelectionsCheckedUsers = new(); TimeSelectionBackstage = new(); - } [BindProperty] @@ -326,9 +325,7 @@ public async Task OnGetRenderCalendarAsync() foreach (var time in freeTimeList) { - - var joinTimes = await _joinTimeWebService.GetJoinTimesAtivos(time.Key.Id); - + var joinTimes = await _joinTimeWebService.GetJoinTimesAtivos(time.Key.Id); var pendentJoinTimes = joinTimes .Where(j => j.StatusJoinTime == StatusJoinTime.Pendente) @@ -1015,8 +1012,13 @@ public IActionResult OnPostSetAlunoAleatorio(Guid timeSelectionId) var x = Math.Min(availableSlots, pendentJoinTimes.Count()); for (var i = 0; i < x; i++) { - var randomIndex = new Random().Next(pendentJoinTimes.Length); - var jt = pendentJoinTimes.Skip(randomIndex - 1).Take(1).FirstOrDefault(); + var randomIndex = new Random(); + byte[] data = new byte[36]; + randomIndex.NextBytes(data); + var jt = pendentJoinTimes + .Skip(BitConverter.ToInt32(data)) + .Take(1) + .FirstOrDefault(); if (jt != null) { diff --git a/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs b/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs index 7c4102aa..f8434fdb 100644 --- a/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs +++ b/src/Core/Domain/Interfaces/Repositories/IJoinTimeRepository.cs @@ -8,6 +8,5 @@ public interface IJoinTimeRepository Task> GetFreeTimeMarcadosAntigos(); Task UpdateRange(List jts); Task> GetJoinTimesAtivos(Guid timeId); - } } diff --git a/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs b/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs index 2855ccf8..60a18d70 100644 --- a/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs +++ b/src/Core/Infrastructure/Repositories/JoinTimeRepository.cs @@ -58,10 +58,13 @@ public async Task UpdateRange(List jts) public async Task> GetJoinTimesAtivos(Guid timeId) { return await DbContext - .JoinTimes - .Where(j => j.TimeSelectionId == timeId && - (j.StatusJoinTime == StatusJoinTime.Marcado || - j.StatusJoinTime == StatusJoinTime.Pendente)) + .JoinTimes.Where(j => + j.TimeSelectionId == timeId + && ( + j.StatusJoinTime == StatusJoinTime.Marcado + || j.StatusJoinTime == StatusJoinTime.Pendente + ) + ) .ToListAsync(); } } diff --git a/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs b/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs index 9960a16d..d704812b 100644 --- a/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs +++ b/src/Core/Infrastructure/WebServices/Core/JointTimeWebService.cs @@ -21,6 +21,6 @@ public async Task UpdateOldJoinTimes() public async Task> GetJoinTimesAtivos(Guid timeId) { var route = Path.Combine(baseRoute, timeId.ToString()); - return await client.GetAsync>(route); + return await client.GetAsync>(route); } } diff --git a/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs b/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs index 855feda7..87e7aa3c 100644 --- a/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs +++ b/src/Core/Presentation/EndPoints/JoinTimeEndPoints.cs @@ -35,7 +35,7 @@ [FromServices] IJoinTimeBusinessLogic _logic } } - public static async Task GetJoinTimesAtivos( + public static async Task GetJoinTimesAtivos( [FromRoute] Guid timeId, [FromServices] IJoinTimeBusinessLogic _logic ) diff --git a/tests/FreeTime/FreeTimeBackstageTest.cs b/tests/FreeTime/FreeTimeBackstageTest.cs index d600b1ef..bd8a2f21 100644 --- a/tests/FreeTime/FreeTimeBackstageTest.cs +++ b/tests/FreeTime/FreeTimeBackstageTest.cs @@ -13,12 +13,16 @@ public void CreateFreeTimeBackstage_ReturnsCorrectValues() bool expectedIlimitado = true; // Act - var result = FreeTimeBackstage.Create(expectedTimeSelectionId, expectedMaxParticipants, expectedIlimitado); + var result = FreeTimeBackstage.Create( + expectedTimeSelectionId, + expectedMaxParticipants, + expectedIlimitado + ); // Assert Assert.NotNull(result); - Assert.Equal(expectedTimeSelectionId,result.TimeSelectionId); - Assert.Equal(expectedMaxParticipants,result.MaxParticipants); - Assert.Equal(expectedIlimitado,result.Ilimitado); + Assert.Equal(expectedTimeSelectionId, result.TimeSelectionId); + Assert.Equal(expectedMaxParticipants, result.MaxParticipants); + Assert.Equal(expectedIlimitado, result.Ilimitado); } } diff --git a/tests/JoinTime/JoinTimeBusinessLogicTest.cs b/tests/JoinTime/JoinTimeBusinessLogicTest.cs index 37031b72..2e7b9ec2 100644 --- a/tests/JoinTime/JoinTimeBusinessLogicTest.cs +++ b/tests/JoinTime/JoinTimeBusinessLogicTest.cs @@ -161,7 +161,6 @@ public async Task GetJoinTimesAtivos_ShouldReturnEmptyList_WhenNoMatchingJoinTim ); var timeId = Guid.NewGuid(); - mockJoinTimeRepository .Setup(repo => repo.GetJoinTimesAtivos(timeId)) .ReturnsAsync(new List()); @@ -188,7 +187,13 @@ public async Task GetJoinTimesAtivos_ShouldReturnOnlyMarcadoJoinTimes() var joinTimes = new List { - JoinTime.Create(Guid.NewGuid(), timeId, StatusJoinTime.Marcado, false, TipoAction.Aprender) + JoinTime.Create( + Guid.NewGuid(), + timeId, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ) }; mockJoinTimeRepository @@ -238,8 +243,20 @@ public async Task GetJoinTimesAtivos_ShouldReturnMarcadoAndPendenteJoinTimes() var joinTimes = new List { - JoinTime.Create(Guid.NewGuid(), timeId, StatusJoinTime.Marcado, false, TipoAction.Aprender), - JoinTime.Create(Guid.NewGuid(), timeId, StatusJoinTime.Pendente, false, TipoAction.Aprender) + JoinTime.Create( + Guid.NewGuid(), + timeId, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ), + JoinTime.Create( + Guid.NewGuid(), + timeId, + StatusJoinTime.Pendente, + false, + TipoAction.Aprender + ) }; mockJoinTimeRepository @@ -252,9 +269,14 @@ public async Task GetJoinTimesAtivos_ShouldReturnMarcadoAndPendenteJoinTimes() // Assert Assert.NotNull(result); Assert.Equal(2, result.Count); - Assert.All(result, jt => Assert.Contains(jt.StatusJoinTime, new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente })); + Assert.All( + result, + jt => + Assert.Contains( + jt.StatusJoinTime, + new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente } + ) + ); mockJoinTimeRepository.Verify(repo => repo.GetJoinTimesAtivos(timeId), Times.Once); } - - } diff --git a/tests/JoinTime/JoinTimeEndPointsTests.cs b/tests/JoinTime/JoinTimeEndPointsTests.cs index 6048ef96..84e5cd98 100644 --- a/tests/JoinTime/JoinTimeEndPointsTests.cs +++ b/tests/JoinTime/JoinTimeEndPointsTests.cs @@ -43,20 +43,32 @@ public async Task UpdateOldJoinTimes_ReturnsBadRequest_OnException() [Fact] public async Task GetJoinTimesAtivos_ReturnsOk_WithValidData() { - // Arrange: + // Arrange: var mockLogic = new Mock(); var validGuid = Guid.NewGuid(); var joinTimes = new List { - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Marcado, false, TipoAction.Aprender), - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Pendente, false, TipoAction.Aprender) + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ), + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Pendente, + false, + TipoAction.Aprender + ) }; mockLogic.Setup(logic => logic.GetJoinTimesAtivos(validGuid)).ReturnsAsync(joinTimes); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object); - // Assert: + // Assert: var okResult = Assert.IsType>>(result); Assert.Equal(joinTimes, okResult.Value); } @@ -64,30 +76,34 @@ public async Task GetJoinTimesAtivos_ReturnsOk_WithValidData() [Fact] public async Task GetJoinTimesAtivos_ReturnsNotFound_WithValidDataButNoResults() { - // Arrange: + // Arrange: var mockLogic = new Mock(); var validGuid = Guid.NewGuid(); - mockLogic.Setup(logic => logic.GetJoinTimesAtivos(validGuid)).ReturnsAsync(new List()); + mockLogic + .Setup(logic => logic.GetJoinTimesAtivos(validGuid)) + .ReturnsAsync(new List()); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object); - // Assert: + // Assert: Assert.IsType(result); } [Fact] public async Task GetJoinTimesAtivos_ReturnsBadRequest_OnException() { - // Arrange: + // Arrange: var mockLogic = new Mock(); var invalidGuid = Guid.NewGuid(); - mockLogic.Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)).ThrowsAsync(new Exception("Test error")); + mockLogic + .Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)) + .ThrowsAsync(new Exception("Test error")); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(invalidGuid, mockLogic.Object); - // Assert: + // Assert: var badRequestResult = Assert.IsType>(result); Assert.Equal("Test error", badRequestResult.Value); } @@ -95,15 +111,17 @@ public async Task GetJoinTimesAtivos_ReturnsBadRequest_OnException() [Fact] public async Task GetJoinTimesAtivos_ReturnsBadRequest_WithInvalidGuid() { - // Arrange: + // Arrange: var mockLogic = new Mock(); - var invalidGuid = Guid.Empty; - mockLogic.Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)).ThrowsAsync(new ArgumentException("Invalid GUID")); + var invalidGuid = Guid.Empty; + mockLogic + .Setup(logic => logic.GetJoinTimesAtivos(invalidGuid)) + .ThrowsAsync(new ArgumentException("Invalid GUID")); - // Act: + // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(invalidGuid, mockLogic.Object); - // Assert: + // Assert: var badRequestResult = Assert.IsType>(result); Assert.Equal("Invalid GUID", badRequestResult.Value); } @@ -116,8 +134,20 @@ public async Task GetJoinTimesAtivos_ReturnsAllJoinTimes_WithMultipleResults() var validGuid = Guid.NewGuid(); var joinTimes = new List { - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Marcado, false, TipoAction.Aprender), - JoinTime.Create(validGuid, validGuid, StatusJoinTime.Pendente, false, TipoAction.Aprender), + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Marcado, + false, + TipoAction.Aprender + ), + JoinTime.Create( + validGuid, + validGuid, + StatusJoinTime.Pendente, + false, + TipoAction.Aprender + ), JoinTime.Create(validGuid, validGuid, StatusJoinTime.Marcado, false, TipoAction.Ensinar) }; mockLogic.Setup(logic => logic.GetJoinTimesAtivos(validGuid)).ReturnsAsync(joinTimes); @@ -125,9 +155,8 @@ public async Task GetJoinTimesAtivos_ReturnsAllJoinTimes_WithMultipleResults() // Act: var result = await JoinTimeEndPoints.GetJoinTimesAtivos(validGuid, mockLogic.Object); - // Assert: + // Assert: var okResult = Assert.IsType>>(result); Assert.True(okResult.Value?.Count == 3); } - } diff --git a/tests/JoinTime/JoinTimeRepositoryTest.cs b/tests/JoinTime/JoinTimeRepositoryTest.cs index 22fafc2d..88107f00 100644 --- a/tests/JoinTime/JoinTimeRepositoryTest.cs +++ b/tests/JoinTime/JoinTimeRepositoryTest.cs @@ -28,13 +28,12 @@ public JoinTimeRepositoryTest() private void InitializeJoinTimes() { - _context.JoinTimes.AddRange( new List { JoinTime.Create( Guid.NewGuid(), - Guid.NewGuid(), + Guid.NewGuid(), StatusJoinTime.Marcado, false, TipoAction.Aprender @@ -124,8 +123,8 @@ public async Task UpdateRange_UpdatesJoinTimes() [Fact] public async Task GetJoinTimesAtivos_ReturnsCorrectJoinTimes() { - // Arrange: - var ts = TimeSelection.Create( + // Arrange: + var ts = TimeSelection.Create( Guid.NewGuid(), null, DateTime.Now.AddMinutes(-40), @@ -157,24 +156,31 @@ public async Task GetJoinTimesAtivos_ReturnsCorrectJoinTimes() await _context.SaveChangesAsync(); // Guid specificGuid = Guid.Parse("1cc5615c-c82f-4e5c-b2de-df5421c72a82"); - + // Act: var result = await _repository.GetJoinTimesAtivos(ts.Id); // Assert: Assert.NotNull(result); Assert.NotEmpty(result); // Verifica se há pelo menos um JoinTime retornado - Assert.All(result, jt => Assert.Contains(jt.StatusJoinTime, new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente })); + Assert.All( + result, + jt => + Assert.Contains( + jt.StatusJoinTime, + new[] { StatusJoinTime.Marcado, StatusJoinTime.Pendente } + ) + ); } - [Fact] + [Fact] public async Task GetJoinTimesAtivos_ReturnsEmptyList_WhenNoMatchingJoinTimes() { - // Act: + // Act: var nonExistentTimeSelectionId = Guid.NewGuid(); var result = await _repository.GetJoinTimesAtivos(nonExistentTimeSelectionId); - // Assert: + // Assert: Assert.NotNull(result); Assert.Empty(result); } diff --git a/tests/Live/LiveNotifyWorkerTest.cs b/tests/Live/LiveNotifyWorkerTest.cs index df994342..331e7a51 100644 --- a/tests/Live/LiveNotifyWorkerTest.cs +++ b/tests/Live/LiveNotifyWorkerTest.cs @@ -1,4 +1,3 @@ - using Background; using Domain.WebServices; using Microsoft.Extensions.DependencyInjection; @@ -17,19 +16,20 @@ public async Task StartAsync_ShouldCall_NotifyUpcomingLives() var mockServiceScope = new Mock(); var mockServiceProvider = new Mock(); - mockServiceScopeFactory.Setup(x => x.CreateScope()).Returns(mockServiceScope.Object); + mockServiceScopeFactory.Setup(x => x.CreateScope()).Returns(mockServiceScope.Object); mockServiceScope.Setup(x => x.ServiceProvider).Returns(mockServiceProvider.Object); - mockServiceProvider.Setup(x => x.GetService(typeof(ILiveWebService))).Returns(mockLiveWebService.Object); + mockServiceProvider + .Setup(x => x.GetService(typeof(ILiveWebService))) + .Returns(mockLiveWebService.Object); var liveNotifyWorkerSimulation = new LiveNotifyWorker(mockServiceScopeFactory.Object); const int EXECUTION_INTERVAL = 100; var cancellationTokenSource = new CancellationTokenSource(EXECUTION_INTERVAL); - - await liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token); + + await liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token); mockLiveWebService.Verify(x => x.NotifyUpcomingLives(), Times.AtLeastOnce()); } - [Fact] public async Task StartAsync_ShouldCall_NotifyUpcomingLives_Exceptions() { @@ -38,17 +38,22 @@ public async Task StartAsync_ShouldCall_NotifyUpcomingLives_Exceptions() var mockServiceScope = new Mock(); var mockServiceProvider = new Mock(); - mockLiveWebService.Setup(x => x.NotifyUpcomingLives()).ThrowsAsync(new Exception("teste exception")); + mockLiveWebService + .Setup(x => x.NotifyUpcomingLives()) + .ThrowsAsync(new Exception("teste exception")); mockServiceScopeFactory.Setup(x => x.CreateScope()).Returns(mockServiceScope.Object); mockServiceScope.Setup(x => x.ServiceProvider).Returns(mockServiceProvider.Object); - mockServiceProvider.Setup(x => x.GetService(typeof(ILiveWebService))).Returns(mockLiveWebService.Object); + mockServiceProvider + .Setup(x => x.GetService(typeof(ILiveWebService))) + .Returns(mockLiveWebService.Object); - var liveNotifyWorkerSimulation = new LiveNotifyWorker(mockServiceScopeFactory.Object); + var liveNotifyWorkerSimulation = new LiveNotifyWorker(mockServiceScopeFactory.Object); const int EXECUTION_INTERVAL = 100; - var cancellationTokenSource = new CancellationTokenSource(EXECUTION_INTERVAL); - var exception = await Record.ExceptionAsync(() => liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token)); - - Assert.Null(exception); - } + var cancellationTokenSource = new CancellationTokenSource(EXECUTION_INTERVAL); + var exception = await Record.ExceptionAsync( + () => liveNotifyWorkerSimulation.StartAsync(cancellationTokenSource.Token) + ); + Assert.Null(exception); + } } From 64d8a6e54719e18671a195dfcbdbe3d1f4762538 Mon Sep 17 00:00:00 2001 From: MatheusCFBT Date: Fri, 6 Sep 2024 13:30:45 -0300 Subject: [PATCH 2/5] Ajusts for security --- src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs index b81fac0a..90c6cf6b 100644 --- a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs +++ b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs @@ -1012,9 +1012,9 @@ public IActionResult OnPostSetAlunoAleatorio(Guid timeSelectionId) var x = Math.Min(availableSlots, pendentJoinTimes.Count()); for (var i = 0; i < x; i++) { - var randomIndex = new Random(); + var randomGenerator = RandomNumeberGenerator.Create(); byte[] data = new byte[36]; - randomIndex.NextBytes(data); + randomGenerator.NextBytes(data); var jt = pendentJoinTimes .Skip(BitConverter.ToInt32(data)) .Take(1) From 90ef2cf088fdcdfdbf45a52775bf57f0e52e2aa9 Mon Sep 17 00:00:00 2001 From: MatheusCFBT Date: Fri, 6 Sep 2024 13:55:31 -0300 Subject: [PATCH 3/5] Fix all errors --- node_modules/.bin/husky | 17 ++++++++++- node_modules/.bin/husky.cmd | 17 +++++++++++ node_modules/.bin/husky.ps1 | 28 +++++++++++++++++++ .../Pages/ScheduleActions/index.cshtml.cs | 10 ++----- 4 files changed, 64 insertions(+), 8 deletions(-) create mode 100644 node_modules/.bin/husky.cmd create mode 100644 node_modules/.bin/husky.ps1 diff --git a/node_modules/.bin/husky b/node_modules/.bin/husky index d5c33f5e..d1e0e884 120000 --- a/node_modules/.bin/husky +++ b/node_modules/.bin/husky @@ -1 +1,16 @@ -../husky/bin.js \ No newline at end of file +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../husky/bin.js" "$@" +else + exec node "$basedir/../husky/bin.js" "$@" +fi diff --git a/node_modules/.bin/husky.cmd b/node_modules/.bin/husky.cmd new file mode 100644 index 00000000..a1047404 --- /dev/null +++ b/node_modules/.bin/husky.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\husky\bin.js" %* diff --git a/node_modules/.bin/husky.ps1 b/node_modules/.bin/husky.ps1 new file mode 100644 index 00000000..22039529 --- /dev/null +++ b/node_modules/.bin/husky.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../husky/bin.js" $args + } else { + & "$basedir/node$exe" "$basedir/../husky/bin.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../husky/bin.js" $args + } else { + & "node$exe" "$basedir/../husky/bin.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs index 90c6cf6b..00bcd901 100644 --- a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs +++ b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs @@ -1,4 +1,5 @@ using System.Net.Http.Headers; +using System.Security.Cryptography; using System.Text; using System.Text.Json; using APP.Platform.Pages.Components.ModalJoinTime; @@ -1012,13 +1013,8 @@ public IActionResult OnPostSetAlunoAleatorio(Guid timeSelectionId) var x = Math.Min(availableSlots, pendentJoinTimes.Count()); for (var i = 0; i < x; i++) { - var randomGenerator = RandomNumeberGenerator.Create(); - byte[] data = new byte[36]; - randomGenerator.NextBytes(data); - var jt = pendentJoinTimes - .Skip(BitConverter.ToInt32(data)) - .Take(1) - .FirstOrDefault(); + var randomGenerator = RandomNumberGenerator.GetInt32(pendentJoinTimes.Length); + var jt = pendentJoinTimes.Skip(randomGenerator - 1).Take(1).FirstOrDefault(); if (jt != null) { From 5bd2988b3ec23b352051abdb66b0d108652261bf Mon Sep 17 00:00:00 2001 From: MatheusCFBT Date: Fri, 6 Sep 2024 14:17:02 -0300 Subject: [PATCH 4/5] Fix all errors --- node_modules/.bin/husky | 17 +---------- node_modules/.bin/husky.cmd | 17 ----------- node_modules/.bin/husky.ps1 | 28 ------------------- .../Pages/ScheduleActions/index.cshtml.cs | 10 +++++-- 4 files changed, 8 insertions(+), 64 deletions(-) delete mode 100644 node_modules/.bin/husky.cmd delete mode 100644 node_modules/.bin/husky.ps1 diff --git a/node_modules/.bin/husky b/node_modules/.bin/husky index d1e0e884..d5c33f5e 120000 --- a/node_modules/.bin/husky +++ b/node_modules/.bin/husky @@ -1,16 +1 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) - if command -v cygpath > /dev/null 2>&1; then - basedir=`cygpath -w "$basedir"` - fi - ;; -esac - -if [ -x "$basedir/node" ]; then - exec "$basedir/node" "$basedir/../husky/bin.js" "$@" -else - exec node "$basedir/../husky/bin.js" "$@" -fi +../husky/bin.js \ No newline at end of file diff --git a/node_modules/.bin/husky.cmd b/node_modules/.bin/husky.cmd deleted file mode 100644 index a1047404..00000000 --- a/node_modules/.bin/husky.cmd +++ /dev/null @@ -1,17 +0,0 @@ -@ECHO off -GOTO start -:find_dp0 -SET dp0=%~dp0 -EXIT /b -:start -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\husky\bin.js" %* diff --git a/node_modules/.bin/husky.ps1 b/node_modules/.bin/husky.ps1 deleted file mode 100644 index 22039529..00000000 --- a/node_modules/.bin/husky.ps1 +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -} -$ret=0 -if (Test-Path "$basedir/node$exe") { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & "$basedir/node$exe" "$basedir/../husky/bin.js" $args - } else { - & "$basedir/node$exe" "$basedir/../husky/bin.js" $args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & "node$exe" "$basedir/../husky/bin.js" $args - } else { - & "node$exe" "$basedir/../husky/bin.js" $args - } - $ret=$LASTEXITCODE -} -exit $ret diff --git a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs index 00bcd901..90c6cf6b 100644 --- a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs +++ b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs @@ -1,5 +1,4 @@ using System.Net.Http.Headers; -using System.Security.Cryptography; using System.Text; using System.Text.Json; using APP.Platform.Pages.Components.ModalJoinTime; @@ -1013,8 +1012,13 @@ public IActionResult OnPostSetAlunoAleatorio(Guid timeSelectionId) var x = Math.Min(availableSlots, pendentJoinTimes.Count()); for (var i = 0; i < x; i++) { - var randomGenerator = RandomNumberGenerator.GetInt32(pendentJoinTimes.Length); - var jt = pendentJoinTimes.Skip(randomGenerator - 1).Take(1).FirstOrDefault(); + var randomGenerator = RandomNumeberGenerator.Create(); + byte[] data = new byte[36]; + randomGenerator.NextBytes(data); + var jt = pendentJoinTimes + .Skip(BitConverter.ToInt32(data)) + .Take(1) + .FirstOrDefault(); if (jt != null) { From f9ed4d5bebd08b237beeca6b93ad2ee851082021 Mon Sep 17 00:00:00 2001 From: MatheusCFBT Date: Fri, 6 Sep 2024 14:20:56 -0300 Subject: [PATCH 5/5] Fix all errors --- src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs index 90c6cf6b..00bcd901 100644 --- a/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs +++ b/src/APP.Platform/Pages/ScheduleActions/index.cshtml.cs @@ -1,4 +1,5 @@ using System.Net.Http.Headers; +using System.Security.Cryptography; using System.Text; using System.Text.Json; using APP.Platform.Pages.Components.ModalJoinTime; @@ -1012,13 +1013,8 @@ public IActionResult OnPostSetAlunoAleatorio(Guid timeSelectionId) var x = Math.Min(availableSlots, pendentJoinTimes.Count()); for (var i = 0; i < x; i++) { - var randomGenerator = RandomNumeberGenerator.Create(); - byte[] data = new byte[36]; - randomGenerator.NextBytes(data); - var jt = pendentJoinTimes - .Skip(BitConverter.ToInt32(data)) - .Take(1) - .FirstOrDefault(); + var randomGenerator = RandomNumberGenerator.GetInt32(pendentJoinTimes.Length); + var jt = pendentJoinTimes.Skip(randomGenerator - 1).Take(1).FirstOrDefault(); if (jt != null) {