Class ReferralService
- Namespace
- UsluzionicaServer.Services
- Assembly
- UsluzionicaServer.dll
Referral nagrada se isplaćuje u DVE rate:
- rata — pozvani potvrdi email → pozivalac dobija SignupRewardTokens (2)
- rata — pozvani aktivira provajdera → pozivalac dobija ActivationRewardTokens (3)
Zašto prva rata ide na potvrdu emaila a ne na samu registraciju: registracija je besplatna i neograničena, pa bi isplata na registraciju značila da svako može da otvara naloge sa sopstvenim kodom i uzima tokene bez ikakvog rada. Potvrda emaila zahteva stvarnu, jedinstvenu i funkcionalnu adresu po nalogu. Uz to, nalog bez potvrđenog emaila ne može ni da se prijavi (AuthService. LoginAsync ga odbija), pa u ovom sistemu ionako još nije pravi nalog.
Obe metode su IDEMPOTENTNE i bezbedne pod istovremenim pozivima. To nije teorijska briga: verifikacioni link se lako aktivira dvaput (mail klijent ga prefetch-uje, pa korisnik klikne), a ResetPasswordAsync je drugi put kroz koji email može biti potvrđen.
public sealed class ReferralService
- Inheritance
-
ReferralService
- Inherited Members
Constructors
- ReferralService(AppDbContext, NotificationService, IConfiguration, ILogger<ReferralService>)
Referral nagrada se isplaćuje u DVE rate:
- rata — pozvani potvrdi email → pozivalac dobija SignupRewardTokens (2)
- rata — pozvani aktivira provajdera → pozivalac dobija ActivationRewardTokens (3)
Zašto prva rata ide na potvrdu emaila a ne na samu registraciju: registracija je besplatna i neograničena, pa bi isplata na registraciju značila da svako može da otvara naloge sa sopstvenim kodom i uzima tokene bez ikakvog rada. Potvrda emaila zahteva stvarnu, jedinstvenu i funkcionalnu adresu po nalogu. Uz to, nalog bez potvrđenog emaila ne može ni da se prijavi (AuthService. LoginAsync ga odbija), pa u ovom sistemu ionako još nije pravi nalog.
Obe metode su IDEMPOTENTNE i bezbedne pod istovremenim pozivima. To nije teorijska briga: verifikacioni link se lako aktivira dvaput (mail klijent ga prefetch-uje, pa korisnik klikne), a ResetPasswordAsync je drugi put kroz koji email može biti potvrđen.
Methods
- TryRewardActivationAsync(string)
Isplaćuje drugu ratu kada pozvani aktivira provajder nalog.
Prihvata i status Pending, ne samo Registered: aktivacija provajdera ionako zahteva potvrđen email, ali postoje referrali iz vremena pre ove izmene koji su ostali Pending. Bez toga bi njihovi pozivaoci ostali bez druge rate.
- TryRewardSignupAsync(string)
Isplaćuje prvu ratu pozivaocu korisnika koji je upravo potvrdio email. Nikad ne baca — greška u referralu ne sme oboriti potvrdu emaila.