package _VisualDVM.ComponentsServer.UserAccount.UI;
import Common.Utils.Utils_;
import Common.Visual.UI;
import Common.Visual.Windows.Dialog.DBObjectDialog;
import _VisualDVM.ComponentsServer.UserAccount.AccountRole;
import _VisualDVM.ComponentsServer.UserAccount.UserAccount;
import _VisualDVM.Global;
public class UserAccountDialog extends DBObjectDialog<UserAccount, UserAccountFields> {
    public UserAccountDialog() {
        super(UserAccountFields.class);
    }
    @Override
    public int getDefaultHeight() {
        return 250;
    }
    @Override
    public int getDefaultWidth() {
        return 450;
    }
    @Override
    public void validateFields() {
        if (fields.tfName.getText().isEmpty())
            Log.Writeln("Имя учётной записи не может быть пустым");
        Utils_.validateEmail(fields.tfAddress.getText(), Log);
        if (fields.tfAddress.getText().isEmpty())
            Log.Writeln_("Адрес электронной почты не может быть пустым");
        if (!title_text.equals("Регистрация") && (fields.tfAddress.isEditable() && Global.componentsServer.credentials_db.userAccounts.Data.containsKey(fields.tfAddress.getText()))) {
            Log.Writeln_("Адрес электронной почты " + Utils_.Brackets(fields.tfAddress.getText()) + " уже есть в списке.");
        }
    }
    @Override
    public void fillFields() {
        fields.tfName.setText(Result.name);
        fields.tfAddress.setText(Result.email);
        fields.cbMail.setSelected(Result.subscribe_active != 0);
        UI.TrySelect(fields.cbRole, Result.role);
    }
    @Override
    public void SetEditLimits() {
        fields.tfAddress.setEditable(false);
    }
    private AccountRole getSelectedRole() {
        return (AccountRole) fields.cbRole.getSelectedItem();
    }
    @Override
    public void ProcessResult() {
        Result.name = fields.tfName.getText();
        Result.email = fields.tfAddress.getText();
        Result.subscribe_active = fields.cbMail.isSelected() ? 1 : 0;
        Result.role = getSelectedRole();
    }
};
