Package org.sis.ancmessaging.web

Source Code of org.sis.ancmessaging.web.ReportController

package org.sis.ancmessaging.web;

import org.joda.time.DateTime;
import org.sis.ancmessaging.domain.Report;
import org.sis.ancmessaging.domain.ReportDetail;
import org.sis.ancmessaging.service.ReportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

/**
* Created by IntelliJ IDEA.
* Author: Henock
* Date: 2/8/12
* Time: 11:42 AM
* To change this template use File | Settings | File Templates.
*/
@Controller
@RequestMapping("/admin/report")
public class ReportController {
  @Autowired
  private ReportService reportService;

  @RequestMapping(method = RequestMethod.GET)
  public String getIndex(@RequestParam(value = "response", required = false, defaultValue = "false") boolean response,
                         Model model) {
    List<Integer> years = new ArrayList<Integer>();
    int begin = 2012;
    int end = new DateTime().getYear();
    for (int i = begin; i <= end; i++) {
      years.add(i);
    }
    model.addAttribute("years", years);
    if (response) {
      model.addAttribute("responseText", "Report will be sent in a few minutes.");
    }
    return "report";
  }

  private Report getReportObject(int year) {
    Report report = new Report();
    report.setYear(year);

    DateTime dateTime = new DateTime();
    int currentYear = dateTime.getYear();

    report.setStatus("PENDING");
    report.setFromQuarter(1);

    if (year < currentYear) {
      report.setToQuarter(4);
    } else {
      int month = dateTime.getMonthOfYear();
      if (month <= 3) {
        report.setToQuarter(1);
      } else if (month <= 6) {
        report.setToQuarter(2);
      } else if (month <= 9) {
        report.setToQuarter(3);
      } else if (month <= 12) {
        report.setToQuarter(4);
      }
    }

    return report;
  }

  @RequestMapping(value = "create", method = RequestMethod.POST)
  public String createReport(HttpServletRequest request, Model model) {
    int year = Integer.parseInt(request.getParameter("year"));
    Report report = getReportObject(year);
    ReportDetail reportDetail = reportService.generateDetail(report);
    report.getReportDetails().add(reportDetail);
    reportDetail.setReport(report);
    reportService.save(report);
    //reportService.saveDetail(reportDetail);
    return "redirect:/admin/report?response=true";
  }

  @RequestMapping(value = "show", method = RequestMethod.GET)
  public
  @ResponseBody
  String showReport(@RequestParam("year") int year) {
    Report report = getReportObject(year);
    ReportDetail reportDetail = reportService.generateDetail(report);
    int colSize = report.getToQuarter() - report.getFromQuarter() + 2;

    String template = "<table border='1' cellspacing='0'><tr><td colspan=\"" + colSize + "\"><b>Delivery</b></td></tr>";
    String line1 = "<td>Home: </td><td>" + reportDetail.getQ1HomeDelivery() + "</td>";
    String line2 = "<td>HC: </td><td>" + reportDetail.getQ1HcDelivery() + "</td>";
    String line3 = "<td>HP: </td><td>" + reportDetail.getQ1HpDelivery() + "</td>";
    String line4 = "<td>Referred: </td><td>" + reportDetail.getQ1ReferredDelivery() + "</td>";
    String line5 = "<td>Unknown: </td><td>" + reportDetail.getQ1UnknownDelivery() + "</td>";
    String middle = "<tr><td colspan=\"" + colSize + "\"><b>Reminders</b></td></tr>";
    String line6 = "<td>First: </td><td>" + reportDetail.getQ1FirstReminder() + "</td>";
    String line7 = "<td>Second: </td><td>" + reportDetail.getQ1SecondReminder() + "</td>";
    String line8 = "<td><b>EDD: </b></td><td>" + reportDetail.getQ1Edd() + "</td>";

    for (int i = report.getFromQuarter(); i <= report.getToQuarter(); i++) {
      switch (i) {
        case 2:
          line1 += "<td>" + reportDetail.getQ2HomeDelivery() + "</td>";
          line2 += "<td>" + reportDetail.getQ2HcDelivery() + "</td>";
          line3 += "<td>" + reportDetail.getQ2HpDelivery() + "</td>";
          line4 += "<td>" + reportDetail.getQ2ReferredDelivery() + "</td>";
          line5 += "<td>" + reportDetail.getQ2UnknownDelivery() + "</td>";
          line6 += "<td>" + reportDetail.getQ2FirstReminder() + "</td>";
          line7 += "<td>" + reportDetail.getQ2SecondReminder() + "</td>";
          line8 += "<td>" + reportDetail.getQ2Edd() + "</td>";
          break;
        case 3:
          line1 += "<td>" + reportDetail.getQ3HomeDelivery() + "</td>";
          line2 += "<td>" + reportDetail.getQ3HcDelivery() + "</td>";
          line3 += "<td>" + reportDetail.getQ3HpDelivery() + "</td>";
          line4 += "<td>" + reportDetail.getQ3ReferredDelivery() + "</td>";
          line5 += "<td>" + reportDetail.getQ3UnknownDelivery() + "</td>";
          line6 += "<td>" + reportDetail.getQ3FirstReminder() + "</td>";
          line7 += "<td>" + reportDetail.getQ3SecondReminder() + "</td>";
          line8 += "<td>" + reportDetail.getQ3Edd() + "</td>";
          break;
        case 4:
          line1 += "<td>" + reportDetail.getQ4HomeDelivery() + "</td>";
          line2 += "<td>" + reportDetail.getQ4HcDelivery() + "</td>";
          line3 += "<td>" + reportDetail.getQ4HpDelivery() + "</td>";
          line4 += "<td>" + reportDetail.getQ4ReferredDelivery() + "</td>";
          line5 += "<td>" + reportDetail.getQ4UnknownDelivery() + "</td>";
          line6 += "<td>" + reportDetail.getQ4FirstReminder() + "</td>";
          line7 += "<td>" + reportDetail.getQ4SecondReminder() + "</td>";
          line8 += "<td>" + reportDetail.getQ4Edd() + "</td>";
          break;
      }
    }

    line1 = "<tr>" + line1 + "</tr>";
    line2 = "<tr>" + line2 + "</tr>";
    line3 = "<tr>" + line3 + "</tr>";
    line4 = "<tr>" + line4 + "</tr>";
    line5 = "<tr>" + line5 + "</tr>";
    line6 = "<tr>" + line6 + "</tr>";
    line7 = "<tr>" + line7 + "</tr>";
    line8 = "<tr>" + line8 + "</tr>";

    line5 += "\n";
    line6 += "\n";
    line7 += "\n";
    line8 += "\n";

    template += line1 + line2 + line3 + line4 + line5 + middle + line6 + line7 + line8;
    template += "</table>";

    //StringBuilder sb = new StringBuilder();
    return template;
  }
}
TOP

Related Classes of org.sis.ancmessaging.web.ReportController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.