Table of Contents

Class ReportService

Namespace
UsluzionicaServer.Services
Assembly
UsluzionicaServer.dll

Prijave oglasa i korisnika, i njihovo rešavanje.

RED ZA ADMINA JE PO METI, NE PO PRIJAVI. Deset prijava istog oglasa je jedan posao i jedna odluka, ne deset. Zato je red grupisan upit, a rešavanje zatvara sve prijave za tu metu odjednom.

BROJ PRIJAVA SE NE DENORMALIZUJE. Ne postoji Listing.ReportCount. Broj se računa agregatom nad Reports pri svakom otvaranju reda. Denormalizovan brojač bi bio drugi izvor istine o istom podatku, a dva izvora se raziđu — obično posle prve izmene koja zaobiđe change tracker. Volumen ovde ni izbliza ne traži tu cenu.

SADRŽAJ SE NE SKRIVA AUTOMATSKI. Nema praga posle kog oglas nestaje sam. To bi bio poklon konkurenciji: par lažnih prijava obori tuđi oglas bez ijedne provere. Prva prijava stavlja oglas u red; sklanja ga čovek.

public sealed class ReportService
Inheritance
ReportService
Inherited Members

Constructors

ReportService(AppDbContext, UserModerationService, NotificationService, ILogger<ReportService>)

Prijave oglasa i korisnika, i njihovo rešavanje.

RED ZA ADMINA JE PO METI, NE PO PRIJAVI. Deset prijava istog oglasa je jedan posao i jedna odluka, ne deset. Zato je red grupisan upit, a rešavanje zatvara sve prijave za tu metu odjednom.

BROJ PRIJAVA SE NE DENORMALIZUJE. Ne postoji Listing.ReportCount. Broj se računa agregatom nad Reports pri svakom otvaranju reda. Denormalizovan brojač bi bio drugi izvor istine o istom podatku, a dva izvora se raziđu — obično posle prve izmene koja zaobiđe change tracker. Volumen ovde ni izbliza ne traži tu cenu.

SADRŽAJ SE NE SKRIVA AUTOMATSKI. Nema praga posle kog oglas nestaje sam. To bi bio poklon konkurenciji: par lažnih prijava obori tuđi oglas bez ijedne provere. Prva prijava stavlja oglas u red; sklanja ga čovek.

Methods

BrojNeresenihAsync()

Broj nerešenih prijava — za značku na tabu u admin panelu.

DetaljiAsync(ReportTargetType, int?, string?)

Pojedinačne prijave za jednu metu — kad admin razvije stavku.

PrijaviAsync(string, CreateReportDto)
RedAsync(ReportStatus)

Mete sa nerešenim prijavama, poređane po važnosti.

Dva kriterijuma, ne jedan: prvo broj prijava, pa starost najstarije. Samo po broju, usamljena prijava od pre nedelju dana nikad ne bi stigla na red — a upravo ona može biti tačna.

ResiAsync(string, ResolveReportDto)

Jedna odluka zatvara SVE nerešene prijave za tu metu.

Admin je pregledao sadržaj, ne pojedinačnu prijavu — pa ostavljanje ostalih prijava otvorenim znači da se ista meta vraća u red i pregleda ponovo, bez novog povoda.