#ifndef CLIENT_H
#define CLIENT_H

#include <QString>
#include <QTcpSocket>
#include "typesDataServerClient.h"

class Client
{

public:
    Client(QString name, QString address, QString port,QObject *parent = nullptr):
        login(""),
        ready(false),
        TypeClient(TypeClientAutorization::TYPE_SIMPLE)
    {
        this->name = name;
        this->address = address;
        this->port = port;
        this->fullName = "Name: " + name + " IP: " + address + " port : " + port + " login: " + login;
    };
    ~Client();

public:
    QString getFullName()
    {
        return fullName;
    };

    void setLogin(QString login)
    {
        this->login = login;
        isLoggedIn = true;
        fullName = "Name: " + name + " IP: " + address + " port : " + port + " login: " + login;
    }
    QString getLogin()
    {
        return login;
    }

    QString getAddress()
    {
        return address;
    }
    QString getPort()
    {
        return port;
    }

    bool getReady()
    {
        return ready;
    }

    void setReady(bool ready)
    {
        this->ready = ready;
    }

    void setUnity(bool flag)
    {
        isUnity = flag;
    }

    bool getIsUnity()
    {
        return isUnity;
    }

    void setTypeClient(TypeClientAutorization TypeClient)
    {
        this->TypeClient = TypeClient;
    }
    TypeClientAutorization getTypeClient()
    {
        return TypeClient;
    }

    void changePackageResponse()
    {
        isUnity = !isUnity;
    }

    bool operator == (Client* right)
    {
        return  this->address == right->address;
    }

    bool getIsLoggedIn()
    {
        return isLoggedIn;
    }

    void setIsLoggedIn(bool value)
    {
        isLoggedIn = value;
    }


private:
    QString name;
    QString address;
    QString port;
    QString fullName;

    QString login;
    bool ready;
    bool isLoggedIn;
    bool isUnity = false;

    TypeClientAutorization TypeClient;
};

#endif // CLIENT_H
