Table of Contents

Class BlockService

Namespace
UsluzionicaServer.Services
Assembly
UsluzionicaServer.dll

Blokiranje korisnika.

SIMETRIJA JE CELA POENTA. Red u bazi je usmeren (ko koga je blokirao), ali svaka provera gleda oba smera. Ako A blokira B:

• A ne vidi B-ove oglase, profil, recenzije ni poruke • B ne vidi A-ove — iako B ništa nije uradio • nijedan ne može da piše onom drugom

Druga stavka je ta koja se lako preskoči, a bez nje blokada ne znači ništa: osoba od koje se korisnik sklanja i dalje bi mu gledala oglase i pisala.

ŠTA SE NE DIRA: već obavljene rezervacije, isplaćeni tokeni i istorija transakcija. Blokada je socijalna mera, ne brisanje prošlosti — ako se zabrani pristup istoriji, prvi spor oko novca ostaje bez traga.

public sealed class BlockService
Inheritance
BlockService
Inherited Members

Constructors

BlockService(AppDbContext, ILogger<BlockService>)

Blokiranje korisnika.

SIMETRIJA JE CELA POENTA. Red u bazi je usmeren (ko koga je blokirao), ali svaka provera gleda oba smera. Ako A blokira B:

• A ne vidi B-ove oglase, profil, recenzije ni poruke • B ne vidi A-ove — iako B ništa nije uradio • nijedan ne može da piše onom drugom

Druga stavka je ta koja se lako preskoči, a bez nje blokada ne znači ništa: osoba od koje se korisnik sklanja i dalje bi mu gledala oglase i pisala.

ŠTA SE NE DIRA: već obavljene rezervacije, isplaćeni tokeni i istorija transakcija. Blokada je socijalna mera, ne brisanje prošlosti — ako se zabrani pristup istoriji, prvi spor oko novca ostaje bez traga.

Methods

BlokirajAsync(string, string)
FilterBlocked(IQueryable<Listing>, AppDbContext, string?)

Filtrira oglase blokiranih iz bilo kog upita nad Listings.

Koristi se na svakom mestu koje vraća oglase — pretraga, omiljeni, profil uslugodavca. Jedan metod, da se pravilo ne prepisuje po servisima i ne raziđe.

NOT EXISTS, a ne učitavanje skupa blokiranih u memoriju pa Contains(): Contains pravi IN (@p1, @p2, ...) što radi dok je lista kratka, a puca kad neko blokira stotine ljudi — SQL Server ima granicu broja parametara, a plan upita postane neupotrebljiv. NOT EXISTS ne zavisi od veličine i koristi oba indeksa iz AppDbContext.

JeBlokiranoAsync(string, string)

Postoji li blokada između dva korisnika, u bilo kom smeru.

Za pojedinačne provere: slanje poruke, otvaranje razgovora, pisanje recenzije, rezervacija.

ListaBlokiranihAsync(string)

Koga je ovaj korisnik blokirao. Samo njegovi redovi — ne i oni u kojima je on blokiran, jer te ne može ni da vidi ni da ukloni.

OdblokirajAsync(string, string)
SviBlokiraniAsync(string)

Svi korisnici sa kojima je userId u blokadi, u bilo kom smeru.

Za filtriranje lista koje su VEĆ učitane u memoriju (razgovori, recenzije) — tu je skup jeftiniji od upita po stavci.