Subversion Repositories SmartDukaan

Rev

Rev 26158 | Rev 26298 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
23612 amit.gupta 1
package com.spice.profitmandi.web.controller;
2
 
3
import java.io.IOException;
26164 amit.gupta 4
import java.util.HashMap;
26063 amit.gupta 5
import java.util.Map;
23612 amit.gupta 6
 
7
import javax.servlet.http.HttpServletRequest;
8
 
9
import org.apache.http.HttpResponse;
23654 amit.gupta 10
import org.apache.logging.log4j.LogManager;
11
import org.apache.logging.log4j.Logger;
23637 amit.gupta 12
import org.springframework.beans.factory.annotation.Autowired;
23612 amit.gupta 13
import org.springframework.core.io.InputStreamResource;
14
import org.springframework.http.HttpHeaders;
15
import org.springframework.http.HttpStatus;
16
import org.springframework.http.ResponseEntity;
17
import org.springframework.stereotype.Controller;
23637 amit.gupta 18
import org.springframework.transaction.annotation.Transactional;
19
import org.springframework.ui.Model;
23612 amit.gupta 20
import org.springframework.web.bind.annotation.PathVariable;
26063 amit.gupta 21
import org.springframework.web.bind.annotation.RequestBody;
23612 amit.gupta 22
import org.springframework.web.bind.annotation.RequestMapping;
23
import org.springframework.web.bind.annotation.RequestMethod;
24
 
25
import com.spice.profitmandi.common.enumuration.ReporticoProject;
26
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
27
import com.spice.profitmandi.common.services.ReporticoService;
23784 ashik.ali 28
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
23798 amit.gupta 29
import com.spice.profitmandi.service.authentication.RoleManager;
23612 amit.gupta 30
import com.spice.profitmandi.web.model.LoginDetails;
31
import com.spice.profitmandi.web.util.CookiesProcessor;
32
 
33
@Controller
23784 ashik.ali 34
@Transactional(rollbackFor=Throwable.class)
23612 amit.gupta 35
public class ReportsController {
23784 ashik.ali 36
 
23637 amit.gupta 37
	@Autowired
23784 ashik.ali 38
	private RoleRepository roleRepository;
39
 
23764 amit.gupta 40
	@Autowired
23784 ashik.ali 41
	private CookiesProcessor cookiesProcessor; 
42
 
43
	@Autowired
23652 amit.gupta 44
	private ReporticoService reporticoService;
23764 amit.gupta 45
 
23798 amit.gupta 46
	@Autowired
47
	private RoleManager roleManager;
48
 
23654 amit.gupta 49
	private static final Logger log = LogManager.getLogger(OrderController.class);
23612 amit.gupta 50
 
26063 amit.gupta 51
	@RequestMapping(value = "/reports/{projectName}/{fileName}")
23764 amit.gupta 52
	public ResponseEntity<?> fetchReport(HttpServletRequest request, @PathVariable String fileName,
26063 amit.gupta 53
			@PathVariable ReporticoProject projectName, @RequestBody(required=false) Map<String, String> paramsMap)
23764 amit.gupta 54
			throws ProfitMandiBusinessException, UnsupportedOperationException, IOException {
23612 amit.gupta 55
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
56
		HttpResponse response;
23798 amit.gupta 57
	    if (roleManager.isAdmin(loginDetails.getRoleIds())) {
23612 amit.gupta 58
		} else {
26164 amit.gupta 59
			if(paramsMap==null) {
60
				paramsMap = new HashMap<String, String>();
61
			}
26158 amit.gupta 62
			paramsMap.put("MANUAL_fofoId", loginDetails.getFofoId() + "");
23612 amit.gupta 63
		}
26158 amit.gupta 64
	    response = getAdminReportFile(loginDetails.getEmailId(), projectName, fileName + ".xml", paramsMap);
23612 amit.gupta 65
		HttpHeaders headers = new HttpHeaders();
23764 amit.gupta 66
		InputStreamResource is = new InputStreamResource(response.getEntity().getContent());
23765 amit.gupta 67
		headers.set("Content-Type", "application/vnd.ms-excel");
68
		headers.set("Content-disposition",
23766 amit.gupta 69
				"inline; filename=report-" + fileName + ".csv");
70
		headers.setContentLength(response.getEntity().getContentLength());
23764 amit.gupta 71
		return new ResponseEntity<InputStreamResource>(is, headers, HttpStatus.OK);
23612 amit.gupta 72
	}
23637 amit.gupta 73
 
26063 amit.gupta 74
	private HttpResponse getAdminReportFile(String email, ReporticoProject projectName, String fileName, Map<String, String> reportParams) throws ProfitMandiBusinessException,  IOException{
75
		return reporticoService.getReportFile(projectName, fileName, reportParams);
76
	}
77
 
23822 amit.gupta 78
	@RequestMapping(value = "/reports", method = RequestMethod.GET)
23764 amit.gupta 79
	public String reports(Model model) throws ProfitMandiBusinessException, UnsupportedOperationException, IOException {
23637 amit.gupta 80
		model.addAttribute("reporticoProjectMap", ReporticoProject.reporticoProjectMap);
81
		return "reports";
82
	}
23612 amit.gupta 83
}