com.aquest.emailmarketing.web.controllers.RestfulController.java Source code

Java tutorial

Introduction

Here is the source code for com.aquest.emailmarketing.web.controllers.RestfulController.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.aquest.emailmarketing.web.controllers;

import com.aquest.emailmarketing.web.dao.BcastTempOutput;
import com.aquest.emailmarketing.web.dao.Broadcast;
import com.aquest.emailmarketing.web.dao.BroadcastTemplate;
import com.aquest.emailmarketing.web.dao.CampaignCategory;
import com.aquest.emailmarketing.web.dao.Campaigns;
import com.aquest.emailmarketing.web.dao.EmailList;
import com.aquest.emailmarketing.web.dao.EmbeddedImage;
import com.aquest.emailmarketing.web.service.BroadcastService;
import com.aquest.emailmarketing.web.service.BroadcastTemplateService;
import com.aquest.emailmarketing.web.service.CampaignCategoryService;
import com.aquest.emailmarketing.web.service.CampaignsService;
import com.aquest.emailmarketing.web.service.EmailListService;
import com.aquest.emailmarketing.web.service.EmbeddedImageService;
import com.aquest.emailmarketing.web.tracking.EmailTrackingService;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.util.UriComponentsBuilder;

// TODO: Auto-generated Javadoc
/**
 * The Class BroadcastController.
 */
@Controller
public class RestfulController {

    /** The broadcast service. */
    private BroadcastService broadcastService;

    /** The broadcast template service. */
    private BroadcastTemplateService broadcastTemplateService;

    /** The campaigns service. */
    private CampaignsService campaignsService;

    /** The email list service. */
    private EmailListService emailListService;

    /** The embedded image service. */
    private EmbeddedImageService embeddedImageService;

    /** The campaign category service. */
    private CampaignCategoryService campaignCategoryService;

    /** The email tracking. */
    EmailTrackingService emailTracking = new EmailTrackingService();

    /**
     * Sets the campaigns service.
     *
     * @param campaignsService the new campaigns service
     */
    @Autowired
    public void setCampaignsService(CampaignsService campaignsService) {
        this.campaignsService = campaignsService;
    }

    /**
     * Sets the broadcast service.
     *
     * @param broadcastService the new broadcast service
     */
    @Autowired
    public void setBroadcastService(BroadcastService broadcastService) {
        this.broadcastService = broadcastService;
    }

    /**
     * Sets the broadcast template service.
     *
     * @param broadcastTemplateService the new broadcast template service
     */
    @Autowired
    public void setBroadcastTemplateService(BroadcastTemplateService broadcastTemplateService) {
        this.broadcastTemplateService = broadcastTemplateService;
    }

    /**
     * Sets the embedded image service.
     *
     * @param embeddedImageService the new embedded image service
     */
    @Autowired
    public void setEmbeddedImageService(EmbeddedImageService embeddedImageService) {
        this.embeddedImageService = embeddedImageService;
    }

    /**
     * Sets the email list service.
     *
     * @param emailListService the new email list service
     */
    @Autowired
    public void setEmailListService(EmailListService emailListService) {
        this.emailListService = emailListService;
    }

    /**
    * @param campaignCategoryService the campaignCategoryService to set
    */
    @Autowired
    public void setCampaignCategoryService(CampaignCategoryService campaignCategoryService) {
        this.campaignCategoryService = campaignCategoryService;
    }

    @RequestMapping(value = "/api/broadcast", method = RequestMethod.POST)
    public ResponseEntity<Void> createBroadcastFromRest(@RequestBody Broadcast broadcast,
            UriComponentsBuilder ucBuilder) {
        System.out.println("Creating Broadcast " + broadcast.getBroadcast_id());

        if (broadcastService.isBroadcastExist(broadcast.getBroadcast_id())) {
            System.out.println("A Broadcast with id " + broadcast.getBroadcast_id() + " already exist");
            return new ResponseEntity<Void>(HttpStatus.CONFLICT);
        }

        Timestamp curTimestamp = new java.sql.Timestamp(Calendar.getInstance().getTime().getTime());
        broadcast.setCreation_dttm(curTimestamp);
        broadcast.setStatus("In definition process");
        BroadcastTemplate bcastTemplate = broadcastTemplateService
                .getBroadcastTemplateById(broadcast.getBcast_template_id());
        broadcast.setBroadcast_name(bcastTemplate.getB_template_name());
        broadcast.setSubject(bcastTemplate.getB_template_subject());
        broadcast.setEmailConfig(bcastTemplate.getEmailConfig());
        broadcast.setHtmlbody(bcastTemplate.getHtmlbody());
        broadcast.setHtmlbody_embed(bcastTemplate.getHtmlbody_embed());
        broadcast.setHtmlbody_tracking(bcastTemplate.getHtmlbody_tracking());
        broadcast.setPlaintext(bcastTemplate.getPlaintext());
        broadcastService.SaveOrUpdate(broadcast);
        //dodaje se red u embedded_image sa broadcast_id
        EmbeddedImage embeddedImage = embeddedImageService
                .getEmbeddedImagesFromTemplateId(broadcast.getBcast_template_id());
        EmbeddedImage embeddedImage1 = new EmbeddedImage();
        embeddedImage1.setBroadcast_id(broadcast.getBroadcast_id());
        embeddedImage1.setUrl(embeddedImage.getUrl());
        embeddedImageService.SaveOrUpdate(embeddedImage1);

        broadcastService.SaveOrUpdate(broadcast);

        return new ResponseEntity<Void>(HttpStatus.CREATED);
    }

    @RequestMapping(value = "/api/emaillist", method = RequestMethod.POST)
    public ResponseEntity<Void> createEmailListFromRest(@RequestBody List<EmailList> eList) {

        for (EmailList elist : eList) {
            boolean doImport = true;
            System.out.println(elist);
            if (!broadcastService.isBroadcastExist(elist.getBroadcast_id())) {
                doImport = false;
            }
            if (emailListService.exists(elist.getBroadcast_id(), elist.getEmail())) {
                doImport = false;
            }
            if (elist.getEmail().isEmpty()) {
                doImport = false;
            }
            if (doImport) {
                Timestamp curTimestamp = new java.sql.Timestamp(Calendar.getInstance().getTime().getTime());
                elist.setProcess_dttm(curTimestamp);
                emailListService.SaveOrUpdate(elist);
            }
        }

        return new ResponseEntity<Void>(HttpStatus.CREATED);
    }

    //TODO: this web service is giving 400 bad request as a result
    @RequestMapping(value = "/api/campaign", method = RequestMethod.POST)
    public ResponseEntity<Void> createCampaignFromRest(@RequestBody Campaigns campaigns,
            UriComponentsBuilder ucBuilder) {
        if (campaignsService.isCampaignExist(campaigns.getCampaign_id())) {
            System.out.println("A Campaign with id " + campaigns.getCampaign_id() + " already exist");
            return new ResponseEntity<Void>(HttpStatus.CONFLICT);
        }
        Timestamp curTimestamp = new java.sql.Timestamp(Calendar.getInstance().getTime().getTime());
        campaigns.setCreation_dttm(curTimestamp);
        campaigns.setCampaign_status("DEFINED");
        campaignsService.SaveOrUpdate(campaigns);
        return new ResponseEntity<Void>(HttpStatus.CREATED);
    }

    @RequestMapping(value = "/api/getbcasttemps", method = RequestMethod.GET)
    @ResponseBody
    public ResponseEntity<List<BcastTempOutput>> getBcastTemplates() {
        List<BroadcastTemplate> bcastTemps = broadcastTemplateService.getDefinedBroadcasts();
        List<BcastTempOutput> bcastTempsOutput = new ArrayList<BcastTempOutput>();
        for (BroadcastTemplate bcastTemp : bcastTemps) {
            BcastTempOutput bcastTempOutput = new BcastTempOutput();
            bcastTempOutput.setBroadcast_id(bcastTemp.getId());
            bcastTempOutput.setBroadcast_name(bcastTemp.getB_template_name());
            bcastTempsOutput.add(bcastTempOutput);
        }
        if (bcastTemps.isEmpty()) {
            return new ResponseEntity<List<BcastTempOutput>>(HttpStatus.NO_CONTENT);
        }
        return new ResponseEntity<List<BcastTempOutput>>(bcastTempsOutput, HttpStatus.OK);
    }

    @RequestMapping(value = "/api/getcampcat", method = RequestMethod.GET)
    @ResponseBody
    public ResponseEntity<List<CampaignCategory>> getCampaignCategory() {
        List<CampaignCategory> categories = campaignCategoryService.getCategories();
        return new ResponseEntity<List<CampaignCategory>>(categories, HttpStatus.OK);
    }

    @RequestMapping(value = "/api/getcampaigns", method = RequestMethod.GET)
    @ResponseBody
    public ResponseEntity<List<Campaigns>> getCampaigns() {
        List<Campaigns> campaigns = campaignsService.getCampaigns();
        return new ResponseEntity<List<Campaigns>>(campaigns, HttpStatus.OK);
    }

    @RequestMapping(value = "/api/getbroadcasts", method = RequestMethod.GET)
    @ResponseBody
    public ResponseEntity<List<Broadcast>> getBroadcasts(@RequestParam(value = "id") String campaign_id) {
        System.out.println("Ovo se pokrenulo. Campaign_id je:" + campaign_id);
        List<Broadcast> broadcasts = broadcastService.getDefinedBroadcastsByCampaignId(campaign_id);
        return new ResponseEntity<List<Broadcast>>(broadcasts, HttpStatus.OK);
    }
}