using AyCode.Interfaces.Addresses;
using AyCode.Interfaces.Logins;
using AyCode.Interfaces.Profiles;
using AyCode.Interfaces.ServiceProviders;
using AyCode.Interfaces.Users;

namespace AyCode.Services.Logins;

public abstract class AcLoginServiceBase<TUser, TProfile, TCompany, TUserToServiceProvider, TProfileAddress> : IAcLoginServiceBase<TUser, TProfile, TCompany, TUserToServiceProvider, TProfileAddress>
    where TUser : class, IAcUser<TProfile, TCompany, TUserToServiceProvider, TProfileAddress>
    where TProfile : class, IAcProfile<TProfileAddress>
    where TCompany : class, IAcCompanyBase
    where TUserToServiceProvider : class, IAcUserToCompanyBase
    where TProfileAddress : class, IAcAddress
{
    public virtual bool IsLoggedIn => LoggedInUser != null;
    public virtual TUser? LoggedInUser { get; protected set; }
}