001/*
002 * Stallion Core: A Modern Web Framework
003 *
004 * Copyright (C) 2015 - 2016 Stallion Software LLC.
005 *
006 * This program is free software: you can redistribute it and/or modify it under the terms of the
007 * GNU General Public License as published by the Free Software Foundation, either version 2 of
008 * the License, or (at your option) any later version. This program is distributed in the hope that
009 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
011 * License for more details. You should have received a copy of the GNU General Public License
012 * along with this program.  If not, see <http://www.gnu.org/licenses/gpl-2.0.html>.
013 *
014 *
015 *
016 */
017
018package io.stallion.forms;
019
020import io.stallion.asyncTasks.AsyncCoordinator;
021import io.stallion.asyncTasks.AsyncTaskHandlerBase;
022import io.stallion.dataAccess.Model;
023import io.stallion.services.Log;
024import io.stallion.settings.Settings;
025import io.stallion.users.User;
026import io.stallion.users.UserController;
027
028import static io.stallion.utils.Literals.*;
029
030
031public class SimpleFormSubmissionEmailTask extends AsyncTaskHandlerBase {
032    private Long submissionId;
033
034    public static void enqueue(SimpleFormSubmission submission) {
035        SimpleFormSubmissionEmailTask handler = new SimpleFormSubmissionEmailTask();
036        handler.setSubmissionId(submission.getId());
037        AsyncCoordinator.instance().enqueue(handler, "new-simple-submission-email-" + submission.getId(), 0);
038    }
039
040
041    public void process() {
042        SimpleFormSubmission submission = SimpleFormSubmissionController.instance().forId(submissionId);
043        if (empty(submission.getEmail())) {
044            return;
045        }
046        Log.info("Mail submission to to moderators commentId={0} moderators={1}", submission.getId(), Settings.instance().getEmail().getAdminEmails());
047        for(String email: Settings.instance().getEmail().getAdminEmails()) {
048            Model m = null;
049            if (UserController.instance()!= null) {
050                m = UserController.instance().forUniqueKey("email", email);
051            }
052            User user;
053            if (m == null) {
054                user = new User().setEmail(email);
055            } else {
056                user = (User)m;
057            }
058            SimpleFormSubmissionEmailer emailer = new SimpleFormSubmissionEmailer(user, submission);
059            Log.info("Send moderation email. submission={0} moderator={0}", submission.getId(), user.getEmail());
060            emailer.sendEmail();
061        }
062    }
063
064    public Long getSubmissionId() {
065        return submissionId;
066    }
067
068    public void setSubmissionId(Long submissionId) {
069        this.submissionId = submissionId;
070    }
071}
072
073