Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
21390 ashik.ali 1
package com.spice.profitmandi.web.controller;
2
 
22372 amit.gupta 3
import java.util.HashMap;
4
import java.util.Map;
5
 
21390 ashik.ali 6
import javax.servlet.http.HttpServletRequest;
7
 
23532 amit.gupta 8
import org.apache.http.conn.HttpHostConnectException;
23568 govind 9
import org.apache.logging.log4j.Logger;
10
import org.apache.logging.log4j.LogManager;
21390 ashik.ali 11
import org.springframework.beans.factory.annotation.Autowired;
22372 amit.gupta 12
import org.springframework.beans.factory.annotation.Value;
21390 ashik.ali 13
import org.springframework.http.ResponseEntity;
14
import org.springframework.stereotype.Controller;
21699 ashik.ali 15
import org.springframework.transaction.annotation.Transactional;
22372 amit.gupta 16
import org.springframework.web.bind.annotation.PathVariable;
21390 ashik.ali 17
import org.springframework.web.bind.annotation.RequestMapping;
18
import org.springframework.web.bind.annotation.RequestMethod;
19
import org.springframework.web.bind.annotation.RequestParam;
20
 
22372 amit.gupta 21
import com.eclipsesource.json.Json;
22
import com.eclipsesource.json.JsonObject;
23
import com.spice.profitmandi.common.enumuration.SchemeType;
21390 ashik.ali 24
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
25
import com.spice.profitmandi.common.model.ProfitMandiConstants;
22372 amit.gupta 26
import com.spice.profitmandi.common.web.client.RestClient;
21740 ashik.ali 27
import com.spice.profitmandi.common.web.util.ResponseSender;
21666 amit.gupta 28
import com.spice.profitmandi.dao.model.UserCart;
21735 ashik.ali 29
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
30
import com.spice.profitmandi.dao.repository.user.AddressRepository;
21390 ashik.ali 31
 
21666 amit.gupta 32
import io.swagger.annotations.ApiImplicitParam;
33
import io.swagger.annotations.ApiImplicitParams;
34
 
21390 ashik.ali 35
@Controller
22040 amit.gupta 36
@Transactional(rollbackFor=Throwable.class)
21390 ashik.ali 37
public class AddressController {
38
 
22372 amit.gupta 39
	@Value("${python.api.host}")
40
	private String host;
41
	@Value("${python.api.port}")
42
	private int port;
43
 
21448 ashik.ali 44
	@Autowired
22931 ashik.ali 45
	private ResponseSender<?> responseSender;
21448 ashik.ali 46
 
23568 govind 47
	private static final Logger LOGGER=LogManager.getLogger(AddressController.class);
21390 ashik.ali 48
 
49
	@Autowired
22931 ashik.ali 50
	private AddressRepository addressRepository;
21390 ashik.ali 51
 
21666 amit.gupta 52
	@Autowired
22931 ashik.ali 53
	private UserAccountRepository userAccountRepository;
21666 amit.gupta 54
 
55
 
56
	@ApiImplicitParams({
57
		@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", 
58
				required = true, dataType = "string", paramType = "header")
59
	})
21390 ashik.ali 60
	@RequestMapping(value = ProfitMandiConstants.URL_ADDRESS_ALL, method=RequestMethod.GET)
21666 amit.gupta 61
	public ResponseEntity<?> getAll(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.PAGE_NUMBER) int pageNumber, @RequestParam(name = ProfitMandiConstants.PAGE_SIZE) int pageSize) throws Throwable{
62
		int userId = (int)request.getAttribute("userId");
63
		UserCart uc  = userAccountRepository.getUserCart(userId);
21390 ashik.ali 64
		LOGGER.info("requested url : "+request.getRequestURL().toString());
21666 amit.gupta 65
		return responseSender.ok(addressRepository.selectAll(uc.getUserId(), pageNumber, pageSize));
21390 ashik.ali 66
	}
21426 ashik.ali 67
 
21390 ashik.ali 68
	@RequestMapping(value = ProfitMandiConstants.URL_ADDRESS_ID, method=RequestMethod.GET)
21431 ashik.ali 69
	public ResponseEntity<?> getById(HttpServletRequest request, @RequestParam(name = "id") int id){
21390 ashik.ali 70
		LOGGER.info("requested url : "+request.getRequestURL().toString());
71
		try {
21448 ashik.ali 72
			return responseSender.ok(addressRepository.selectById(id));
21440 ashik.ali 73
		}catch (ProfitMandiBusinessException profitMandiBusinessException) {
74
			LOGGER.error("ProfitMandi error: ",  profitMandiBusinessException);
21448 ashik.ali 75
			return responseSender.badRequest(profitMandiBusinessException);
21390 ashik.ali 76
		}
77
	}
22372 amit.gupta 78
 
79
	@RequestMapping(value = "/pin-info/{pinCode}", method=RequestMethod.GET)
80
	public ResponseEntity<?> getPinInfo(HttpServletRequest request, @PathVariable(value="pinCode") String pinCode){
23532 amit.gupta 81
		String remoteUrl = "pincodeValidation/" + pinCode;
22372 amit.gupta 82
		try {
23532 amit.gupta 83
			RestClient rc = new RestClient();
22372 amit.gupta 84
			Map<String, String> params = new HashMap<>();
23532 amit.gupta 85
			String response = rc.get(SchemeType.HTTP, host, port, remoteUrl, params);
22372 amit.gupta 86
			JsonObject result_json = Json.parse(response).asObject();
87
			return responseSender.ok(result_json);
88
		}catch (ProfitMandiBusinessException profitMandiBusinessException) {
89
			LOGGER.error("ProfitMandi error: ",  profitMandiBusinessException);
90
			return responseSender.badRequest(profitMandiBusinessException);
23532 amit.gupta 91
		}catch (HttpHostConnectException hhce) {
92
			LOGGER.error("Cannot connect to remote url: {}",  remoteUrl);
93
			return responseSender.badRequest(new ProfitMandiBusinessException("None", "None", "cannot connect to remote url" + remoteUrl));
94
 
22372 amit.gupta 95
		}
96
	}
21390 ashik.ali 97
 
98
}