Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,21 @@
<PackageVersion Include="Dapper" Version="2.1.66" />
<PackageVersion Include="EFCore.BulkExtensions.Dotnet10" Version="10.0.0" />
<PackageVersion Include="EFCore.BulkExtensions.Dotnet10.PostgreSql" Version="10.0.0" />
<PackageVersion Include="Google.Apis.Gmail.v1" Version="1.73.0.3987" />
<PackageVersion Include="Google.Apis.Gmail.v1" Version="1.73.0.4029" />
<PackageVersion Include="itext" Version="9.5.0" />
<PackageVersion Include="itext.bouncy-castle-adapter" Version="9.5.0" />
<PackageVersion Include="itext.bouncy-castle-fips-adapter" Version="9.5.0" />
<PackageVersion Include="Konscious.Security.Cryptography.Argon2" Version="1.3.1" />
<PackageVersion Include="Mapster" Version="7.4.0" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Abstractions" Version="2.3.9" />
<PackageVersion Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.3.9" />
<PackageVersion Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.22.1" />
<PackageVersion Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.23.0" />
<PackageVersion Include="Npgsql" Version="10.0.1" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0" />
<PackageVersion Include="Quartz" Version="3.15.1" />
<PackageVersion Include="Scalar.AspNetCore" Version="2.12.11" />
<PackageVersion Include="Scalar.AspNetCore" Version="2.12.36" />
<PackageVersion Include="Scrutor" Version="7.0.0" />
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.18.0.131500" />
<PackageVersion Include="SonarAnalyzer.CSharp" Version="10.19.0.132793" />
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.15.0" />
<PackageVersion Include="Telegram.Bot" Version="22.8.1" />
</ItemGroup>
Expand All @@ -63,8 +63,8 @@
</ItemGroup>

<ItemGroup Label="Unit Tests Packages: Essentials">
<PackageVersion Update="MSTest.Analyzers" Version="4.0.2" />
<PackageVersion Update="MSTest.TestAdapter" Version="4.0.2" />
<PackageVersion Update="MSTest.TestFramework" Version="4.0.2" />
<PackageVersion Update="MSTest.Analyzers" Version="4.1.0" />
<PackageVersion Update="MSTest.TestAdapter" Version="4.1.0" />
<PackageVersion Update="MSTest.TestFramework" Version="4.1.0" />
</ItemGroup>
</Project>
2 changes: 2 additions & 0 deletions InvoiceReminder.API/Endpoints/GoogleOAuthEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ private static void MapGetAuthUrl(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand Down Expand Up @@ -64,6 +65,7 @@ private static void MapRevoke(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}
}
6 changes: 6 additions & 0 deletions InvoiceReminder.API/Endpoints/InvoiceEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ private static void MapGetInvoices(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -51,6 +52,7 @@ private static void MapGetInvoice(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status500InternalServerError);
}
Expand All @@ -70,6 +72,7 @@ private static void MapGetInvoiceByBarcode(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status500InternalServerError);
}
Expand All @@ -89,6 +92,7 @@ private static void MapCreateInvoice(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status201Created)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -107,6 +111,7 @@ private static void MapUpdateInvoice(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -125,6 +130,7 @@ private static void MapDeleteInvoice(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status204NoContent)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}
}
10 changes: 8 additions & 2 deletions InvoiceReminder.API/Endpoints/JobScheduleEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ private static void MapGetJobSchedules(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -51,8 +52,9 @@ private static void MapGetJobSchedule(RouteGroupBuilder endpoint)
.WithName("GetJobSchedule")
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -70,8 +72,9 @@ private static void MapGetJobScheduleByUserId(RouteGroupBuilder endpoint)
.WithName("GetJobScheduleByUserId")
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -91,6 +94,7 @@ private static void MapCreateJobSchedule(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status201Created)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -110,6 +114,7 @@ private static void MapUpdateJobSchedule(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -129,6 +134,7 @@ private static void MapDeleteJobSchedule(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status204NoContent)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}
}
8 changes: 7 additions & 1 deletion InvoiceReminder.API/Endpoints/LoginEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,13 @@ private static void MapLogin(IEndpointRouteBuilder endpoints)
var result = await appService.ValidateUserPasswordAsync(request.Email, request.Password, ct);

return result.IsSuccess
? Results.Ok(jwtProvider.Generate(new UserClaims { Id = result.Value.Id, Email = result.Value.Email }))
? Results.Ok(jwtProvider.Generate(new UserClaims
{
Id = result.Value.Id,
Name = result.Value.Name,
Email = result.Value.Email,
TelegramChatId = result.Value.TelegramChatId
}))
: Results.Unauthorized();
})
.WithName("Login")
Expand Down
7 changes: 7 additions & 0 deletions InvoiceReminder.API/Endpoints/ScanEmailDefinitionEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ private static void MapGetScanEmailDefinitions(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -53,6 +54,7 @@ private static void MapGetScanEmailDefinition(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status500InternalServerError);
}
Expand All @@ -72,6 +74,7 @@ private static void MapGetByUserId(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status500InternalServerError);
}
Expand All @@ -91,6 +94,7 @@ private static void MapGetBySenderEmailAddress(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status500InternalServerError);
}
Expand All @@ -111,6 +115,7 @@ private static void MapCreateScanEmailDefinition(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status201Created)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -130,6 +135,7 @@ private static void MapUpdateScanEmailDefinition(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -149,6 +155,7 @@ private static void MapDeleteScanEmailDefinition(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status204NoContent)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}
}
1 change: 1 addition & 0 deletions InvoiceReminder.API/Endpoints/SendMessageEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ private static void MapSendMessage(RouteGroupBuilder endpoint)
.WithName("SendMessage")
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status500InternalServerError);
}
Expand Down
30 changes: 29 additions & 1 deletion InvoiceReminder.API/Endpoints/UserEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public void RegisterEndpoints(IEndpointRouteBuilder endpoints)
MapCreateUser(endpoint);
MapCreateUsers(endpoint);
MapUpdateUser(endpoint);
MapUpdateBasicUserInfo(endpoint);
MapDeleteUser(endpoint);
}

Expand All @@ -35,6 +36,7 @@ private static void MapGetUsers(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -51,6 +53,8 @@ private static void MapGetUser(RouteGroupBuilder endpoint)
.WithName("GetUser")
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status500InternalServerError);
}
Expand All @@ -69,6 +73,8 @@ private static void MapGetUserByEmail(RouteGroupBuilder endpoint)
.WithName("GetUserByEmail")
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status404NotFound)
.Produces(StatusCodes.Status500InternalServerError);
}
Expand All @@ -85,7 +91,7 @@ private static void MapCreateUser(RouteGroupBuilder endpoint)
: Results.Problem(result.Error);
})
.WithName("CreateUser")
.RequireAuthorization()
.AllowAnonymous()
.Produces(StatusCodes.Status201Created)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status500InternalServerError);
Expand All @@ -107,6 +113,7 @@ private static void MapCreateUsers(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status201Created)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -125,6 +132,26 @@ private static void MapUpdateUser(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

private static void MapUpdateBasicUserInfo(RouteGroupBuilder endpoint)
{
_ = endpoint.MapPatch("/",
async (IUserAppService appService, [FromBody] UserViewModel viewModel, CancellationToken ct) =>
{
var result = await appService.UpdateBasicUserInfoAsync(viewModel, ct);

return result.IsSuccess
? Results.Ok(result.Value)
: Results.Problem(result.Error);
})
.WithName("UpdateBasicUserInfo")
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -143,6 +170,7 @@ private static void MapDeleteUser(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status204NoContent)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}
}
25 changes: 25 additions & 0 deletions InvoiceReminder.API/Endpoints/UserPasswordEndpoints.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public void RegisterEndpoints(IEndpointRouteBuilder endpoints)

MapCreateUserPassword(endpoint);
MapCreateUsersPassword(endpoint);
MapChangeUserPassword(endpoint);
MapDeleteUserPassword(endpoint);
MapUpdateUserPassword(endpoint);
}
Expand All @@ -33,6 +34,7 @@ private static void MapCreateUserPassword(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status201Created)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -52,6 +54,27 @@ private static void MapCreateUsersPassword(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status201Created)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

private static void MapChangeUserPassword(RouteGroupBuilder endpoint)
{
_ = endpoint.MapPatch("/",
async (IUserPasswordAppService appService, [FromBody] UserPasswordViewModel viewModel,
CancellationToken ct) =>
{
var result = await appService.ChangePasswordAsync(viewModel, ct);

return result.IsSuccess
? Results.Ok(result.Value)
: Results.Problem(result.Error);
})
.WithName("ChangeUserPassword")
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -71,6 +94,7 @@ private static void MapUpdateUserPassword(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status200OK)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}

Expand All @@ -90,6 +114,7 @@ private static void MapDeleteUserPassword(RouteGroupBuilder endpoint)
.RequireAuthorization()
.Produces(StatusCodes.Status204NoContent)
.Produces(StatusCodes.Status400BadRequest)
.Produces(StatusCodes.Status401Unauthorized)
.Produces(StatusCodes.Status500InternalServerError);
}
}
Loading