package Visual_DVM_2021.Passes.All;
import _VisualDVM.Repository.EmailMessage;
import _VisualDVM.Repository.Server.ServerCode;
import _VisualDVM.Repository.Server.ServerExchangeUnit_2021;
import _VisualDVM.Repository.Subscribes.Subscriber;
import Visual_DVM_2021.Passes.Server.ComponentsRepositoryPass;

import java.util.Vector;
//http://java-online.ru/javax-mail.xhtml
//https://javarush.ru/groups/posts/1226-kak-otpravitjh-pisjhmo-iz-java-prilozhenija-s-primerom
public class Email extends ComponentsRepositoryPass<EmailMessage> {
    //этот емейл только для клиента. все что он делает отправляет на сервер то. что нужно отправить.
    @Override
    protected boolean canStart(Object... args) throws Exception {
        target = (EmailMessage) args[0];
        return true;
    }
    @Override
    protected int getTimeout() {
        return 0;
    }
    @Override
    protected void ServerAction() throws Exception {
        Vector<String> targetsNames = new Vector<>();
        for (String target: target.targets){
            if (server.db.subscribers.containsKey(target)) {
                Subscriber subscriber = server.db.subscribers.get(target);
                if (subscriber.mailOn != 0) {
                    String[] data = target.split("@");
                    if (data.length > 0) {
                        String tname = data[0];
                        targetsNames.add(tname);
                    }
                }
            }
        }
        String text_ =
                "Адресаты: "+String.join(", ",targetsNames)+"\n"+
                        target.text
                ;

        //нужно разделить сообщение на несколько одинаковых, по числу адресатов.
        for (String recipient : target.targets) {
            EmailMessage part = new EmailMessage();
            part.subject = target.subject;
            part.text = text_;
            part.targets.add(recipient);
            part.files.putAll(target.files);
            Command(new ServerExchangeUnit_2021(ServerCode.Email, "", part));
        }
    }
}
