package eu.dnetlib.client.user;

import com.github.gwtbootstrap.client.ui.*;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.base.IconAnchor;
import com.github.gwtbootstrap.client.ui.constants.IconType;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.*;
import eu.dnetlib.client.GoldOAPortal;
import eu.dnetlib.goldoa.domain.Affiliation;
import eu.dnetlib.goldoa.domain.Person;
import eu.dnetlib.goldoa.domain.PersonRole;

/**
 * Created by stefania on 3/12/15.
 */
public class MyPersonalInfoWidget implements IsWidget {

    private FlowPanel personalInfoPanel = new FlowPanel();

    private ButtonToolbar buttonToolbar = new ButtonToolbar();
    private ButtonGroup buttonGroup = new ButtonGroup();
    private Button editButton = new Button();

    private HTML myPersonalInfoElement = new HTML();
    private String contents;

    public MyPersonalInfoWidget() {

        personalInfoPanel.addStyleName("personalInfoPanel");

        editButton.setText("Edit profile");
        editButton.setIcon(IconType.USER);
        editButton.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent clickEvent) {
                History.newItem("editAccountInfo");
            }
        });

        buttonGroup.add(editButton);

        buttonToolbar.addStyleName("float-right");
        buttonToolbar.add(buttonGroup);

        Person person = GoldOAPortal.currentUser;

        contents = "<fieldset><legend>Profile</legend>";

        contents += "<dl class=\"dl-horizontal\">";
        contents += "<dt>NAME</dt><dd>" + person.getName()  + " ";
        if(person.getInitials()!=null && !person.getInitials().trim().equals(""))
                contents += person.getInitials() + ". ";
        contents += person.getLastname() + "</dd>";
        contents += "<dt>PASSWORD</dt><dd>*********</dd>";

        contents += "<dt>E-MAIL</dt><dd>" + person.getEmail() + "</dd>";

        if(person.getTelephone()!=null && !person.getTelephone().trim().equals(""))
            contents += "<dt>TELEPHONE</dt><dd>" + person.getTelephone() + "</dd>";

        if(person.getOrcidId()!=null && !person.getOrcidId().trim().equals(""))
            contents += "<dt>ORCID</dt><dd>" + person.getOrcidId() + "</dd>";

        if(!person.getAffiliations().isEmpty()) {

            contents += "<dt>AFFILIATION(S)</dt>";

            for(Affiliation affiliation : person.getAffiliations()) {
                contents += "<dd>" + affiliation.getOrganization().getName();
                if(affiliation.getDepartment()!=null && !affiliation.getDepartment().equals(""))
                    contents += " - " + affiliation.getDepartment();
                contents += "</dd>";
            }
        }

        if(!person.getRoles().isEmpty()) {

            contents += "<dt>ROLE(S)</dt>";

            for(PersonRole personRole : person.getRoles()) {
                contents += "<dd>" + personRole.getRole().getName();
                if(!personRole.isApproved())
                    contents += " (not yet approved)";
                contents += "</dd>";
            }
        }

        contents += "</dl>";

        contents += "</fieldset>";

        myPersonalInfoElement.setHTML(contents);

        personalInfoPanel.add(buttonToolbar);
        personalInfoPanel.add(myPersonalInfoElement);
    }

    @Override
    public Widget asWidget() {
        return personalInfoPanel;
    }

    public void addStyleName(String styleName) {
        personalInfoPanel.addStyleName(styleName);
    }
}
