Manager.java

package gestor;

import java.util.ArrayList;



public class Manager {
    
    private MailBox fromBox;
    private ArrayList<MailBox> toBox = new ArrayList<>();
    private ArrayList<MailBox> boxes = new ArrayList<>();

        
    public Manager(ArrayList<MailBox> mailBoxes){
            
        setBoxes(mailBoxes);
        
    }

    public ArrayList<MailBox> getToBox() {
    
        return toBox;
    }

    public void setToBox(ArrayList<MailBox> toBox) {
        this.toBox = toBox;
    }

    public void addToBox(MailBox mailbox) {
        this.toBox.add(mailbox);
    }

    public ArrayList<MailBox> sort(Email email) {
        ArrayList<MailBox> temporalList = new ArrayList<>();
        
            // Verificar si un MailBox con la misma dirección de correo electrónico ya existe en ToBox
            for (MailBox mailbox : boxes) {
                if (mailbox.getEmailAddress().equals(email.getFrom().getEmailAddress())) {
                    setFromBox(mailbox);
                }
            }

            for (Contact contacto : email.getTo()) {
            String emailAddress = contacto.getEmailAddress();

                for (MailBox mailbox : boxes) {
                    if (mailbox.getEmailAddress().equals(emailAddress)) {
                    
                    temporalList.add(mailbox);

                    }
                }
            }
            toBox.clear();
            toBox.addAll(temporalList);


        return toBox;
    }


    
    public void send(Email email){
       getFromBox().getTrays().addOutbox(email);
       for (MailBox mailbox : toBox) {
        mailbox.getTrays().addInbox(email);
        }
     
    }
     
    public MailBox getFromBox() {
        return fromBox;
    }

    public void setFromBox(MailBox fromBox) {
        
        this.fromBox = fromBox;
        }
    
    

    public ArrayList<MailBox> getBoxes() {
        return boxes;
    }

    public void setBoxes(ArrayList<MailBox> boxes) {
        if (boxes==null) {
            throw new IllegalArgumentException("Este campo es obligatorio");
        }else{
        this.boxes = boxes;
        }
    }



}