Files
hermes/WebApp/Endpoints/GeneralUseHelperFunctions.cs
eee4 82936633f1 feat: return organisationId if user is an organization
this will help to determine if an event is created by the user or not
2025-05-19 01:49:33 +02:00

116 lines
3.2 KiB
C#

using Microsoft.EntityFrameworkCore;
using WebApp.Data;
using WebApp.Entities;
namespace WebApp.Endpoints;
public class GeneralUseHelpers
{
private readonly ApplicationDbContext _context;
public GeneralUseHelpers(ApplicationDbContext context)
{
_context = context;
}
async public Task<Token?> FindTokenFromString(string token_str)
{
// foreach (Token t in _context.Tokens) if (t.Value == token) return t;
// return null;
return await _context.Tokens.FirstOrDefaultAsync(t => t.Value == token_str);
}
async public Task<User?> GetUserFromToken(Token? t)
{
// Zwróci null, gdy nie znaleziono użytkownika
if (t is null) return null;
User? user = await _context.WebUsers.FindAsync(t.UserId);
return user;
}
async public Task<Organisation?> GetOrganisationFromToken(Token? t)
{
User? user = await GetUserFromToken(t);
if (user is not null && user.IsOrganisation)
{
Organisation? org = await _context.Organisations.FirstOrDefaultAsync(o => o.UserId == t.UserId);
if (org is null)
{
Console.WriteLine("!!!");
}
return org;
}
else return null;
}
async public Task<Organisation?> GetOrganisationFromId(int id)
{
Organisation? org = await _context.Organisations.FirstOrDefaultAsync(o => o.OrganisationId == id);
return org;
}
async public Task<Organisation?> GetOrganisationFromUserId(int userId)
{
Organisation? org = await _context.Organisations.FirstOrDefaultAsync(o => o.UserId == userId);
return org;
}
public string? GetTokenStrFromHTTPContext(HttpContext httpContext)
{
var cookies = httpContext.Request.Cookies;
string? token = cookies["token"];
return token;
}
async public Task<Token?> GetTokenFromHTTPContext(HttpContext httpContext)
{
var cookies = httpContext.Request.Cookies;
string? token_str = cookies["token"];
if (token_str is not null)
{
Token? token = await FindTokenFromString(token_str);
if (token is not null) return token;
}
return null;
}
public async Task<Token> CreateNewToken(int userId)
{
var token = new Token
{
UserId = userId,
Value = "lah-" + Guid.NewGuid().ToString(),
ValidUntil = DateTime.UtcNow.AddDays(7)
};
_context.Tokens.Add(token);
await _context.SaveChangesAsync();
return token;
}
public async Task DeleteToken(Token token)
{
_context.Tokens.Remove(token);
await _context.SaveChangesAsync();
}
public bool SearchString(string? text, string searchTerm)
{
// Zwraca fałsz jeśli tekst jest pusty.
// (Brak tekstu nie wpływa na wynik wyszukiwania).
if (text is null) return false;
// Zamienia tekst na słowa
var words = text.Split(' ', StringSplitOptions.RemoveEmptyEntries);
// Sprawdza, czy któreś ze słów pasuje (nawet częściowo) do searchTerm
return words.Any(word => word.Contains(searchTerm, StringComparison.OrdinalIgnoreCase));
}
}