namespace SameBeat.Application.DTO; /// /// Wynik operacji biznesowej bez danych zwrotnych (np. wylogowanie). /// Uzywany zamiast wyjatkow dla normalnych bledow biznesowych -- caller ma czytelny komunikat /// zamiast lapania wyjatku, ktory moglby przeciekac np. do generycznego 500 na API. /// public class WynikOperacji { public bool Sukces { get; } public string? Blad { get; } protected WynikOperacji(bool sukces, string? blad) { Sukces = sukces; Blad = blad; } public static WynikOperacji Ok() => new(true, null); public static WynikOperacji Niepowodzenie(string blad) => new(false, blad); } /// Wynik operacji biznesowej niosacy dane w przypadku sukcesu. public sealed class WynikOperacji : WynikOperacji { public T? Dane { get; } private WynikOperacji(bool sukces, T? dane, string? blad) : base(sukces, blad) { Dane = dane; } public static WynikOperacji Ok(T dane) => new(true, dane, null); public static new WynikOperacji Niepowodzenie(string blad) => new(false, default, blad); }