Update Session08 Backend.md

finished fixes + some minor changes to structure
This commit is contained in:
Amin
2025-06-27 01:19:38 +03:30
committed by GitHub
parent 1dd5f80808
commit c28a0de0bd
@@ -21,7 +21,43 @@ Profile + some fixes to database
- [ ] Fix claim extraction (`sub` → standardize JWT claim mapping). (`IUserContext` implmentation) - [ ] Fix claim extraction (`sub` → standardize JWT claim mapping). (`IUserContext` implmentation)
### ✅ Profile Page (Account Info Tab) First, create an interface in Application layer:
```
public interface IUserContext
{
long GetUserId();
}
```
Then, implement it in WebAPI in Auth folder:
```
public class UserContext : IUserContext
{
private readonly IHttpContextAccessor _httpContextAccessor;
public UserContext(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public long GetUserId()
{
var userIdStr = _httpContextAccessor.HttpContext?.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;
if (long.TryParse(userIdStr, out var userId))
{
return userId;
}
throw new InvalidOperationException("User ID is not available or invalid.");
}
}
```
Finally, register things in Program.cs
```
// register user context
builder.Services.AddHttpContextAccessor();
builder.Services.AddScoped<IUserContext, UserContext>();
```
## ✅ Profile Page (Account Info Tab)
- [ ] Create `ProfileDto` to represent combined data for account, person, bank detail, balance. - [ ] Create `ProfileDto` to represent combined data for account, person, bank detail, balance.
- [ ] Add `GetProfileAsync` in `AccountRepository` and expose via `AccountController`. - [ ] Add `GetProfileAsync` in `AccountRepository` and expose via `AccountController`.
@@ -33,30 +69,23 @@ Profile + some fixes to database
- [ ] Add mapping for all Dtos and fix related properties like `CreatorAccountId`. - [ ] Add mapping for all Dtos and fix related properties like `CreatorAccountId`.
--- ## ✅ List of Travelers
### ✅ List of Travelers
- [ ] Add `GetPeople` endpoint in `AccountController`. - [ ] Add `GetPeople` endpoint in `AccountController`.
- [ ] Implement separation of `UpsertAccountPerson` and `UpsertPerson`. - [ ] Implement separation of `UpsertAccountPerson` and `UpsertPerson`.
- [ ] Adjust Dto: `PersonDto` (with `id`, `creatorAccountId`, `englishFirstName`, etc.). - [ ] Adjust Dto: `PersonDto` (with `id`, `creatorAccountId`, `englishFirstName`, etc.).
--- ## ✅ My Travels Tab
### ✅ My Travels Tab
- [ ] Create `TicketOrderSummaryDto` (includes cities, vehicle name, price, etc.). - [ ] Create `TicketOrderSummaryDto` (includes cities, vehicle name, price, etc.).
- [ ] Add `GetTravels` in `AccountService`, and expose `GetMyTravels` in controller. - [ ] Add `GetTravels` in `AccountService`, and expose `GetMyTravels` in controller.
---
### ✅ My Transactions Tab ## ✅ My Transactions Tab
- [ ] Create `TransactionDto` and mapping. - [ ] Create `TransactionDto` and mapping.
- [ ] Add method to get transactions by `AccountId`. - [ ] Add method to get transactions by `AccountId`.
- [ ] Expose `GetMyTransactions` in `AccountController`. - [ ] Expose `GetMyTransactions` in `AccountController`.
- [ ] Add modal to simulate balance top-up (manual input). - [ ] Add modal to simulate balance top-up (manual input).
- [ ] Format amount text based on transaction type: green (+) for income, red () for expense. - [ ] Format amount text based on transaction type: green (+) for income, red () for expense.
---