Subversion Repositories SmartDukaan

Rev

Rev 32721 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
21285 kshitij.so 1
package com.spice.profitmandi.web.controller;
2
 
26783 amit.gupta 3
import org.apache.logging.log4j.LogManager;
23568 govind 4
import org.apache.logging.log4j.Logger;
21285 kshitij.so 5
import org.springframework.beans.factory.annotation.Autowired;
6
import org.springframework.http.MediaType;
7
import org.springframework.http.ResponseEntity;
8
import org.springframework.stereotype.Controller;
21702 ashik.ali 9
import org.springframework.transaction.annotation.Transactional;
21285 kshitij.so 10
import org.springframework.web.bind.annotation.RequestMapping;
11
import org.springframework.web.bind.annotation.RequestMethod;
12
import org.springframework.web.bind.annotation.RequestParam;
13
 
14
import com.spice.profitmandi.common.model.ProfitMandiConstants;
15
import com.spice.profitmandi.common.util.StringUtils;
21740 ashik.ali 16
import com.spice.profitmandi.common.web.util.ResponseSender;
21735 ashik.ali 17
import com.spice.profitmandi.dao.enumuration.dtr.OtpType;
33513 tejus.loha 18
import com.spice.profitmandi.dao.service.OtpProcessor;
19
import com.spice.profitmandi.dao.service.OTPResponse;
21285 kshitij.so 20
 
21
import io.swagger.annotations.ApiImplicitParam;
22
import io.swagger.annotations.ApiImplicitParams;
23
import io.swagger.annotations.ApiOperation;
24
 
25
@Controller
26783 amit.gupta 26
@Transactional(rollbackFor = Throwable.class)
21285 kshitij.so 27
public class OTPController {
28
 
26783 amit.gupta 29
	private static final Logger logger = LogManager.getLogger(OTPController.class);
30
 
21285 kshitij.so 31
	@Autowired
22931 ashik.ali 32
	private ResponseSender<?> responseSender;
26783 amit.gupta 33
 
34
 
21440 ashik.ali 35
	@Autowired
22931 ashik.ali 36
	private OtpProcessor otpProcessor;
21285 kshitij.so 37
 
26783 amit.gupta 38
	@RequestMapping(value = ProfitMandiConstants.URL_GENERATE_OTP, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
21285 kshitij.so 39
	@ApiImplicitParams({
26783 amit.gupta 40
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
21285 kshitij.so 41
	@ApiOperation(value = "Generate OTP")
26783 amit.gupta 42
	public ResponseEntity<?> generateOtp(@RequestParam("mobile") String mobile) throws Exception {
21285 kshitij.so 43
		OTPResponse otpResponse;
26783 amit.gupta 44
		if (!StringUtils.isValidMobile(mobile)) {
21285 kshitij.so 45
			otpResponse = new OTPResponse();
46
			otpResponse.setMessage("Illegal mobile number");
22931 ashik.ali 47
			return responseSender.badRequest(otpResponse);
21285 kshitij.so 48
		}
26783 amit.gupta 49
 
50
		otpResponse = otpProcessor.generateOtp(mobile, OtpType.REGISTRATION);
22931 ashik.ali 51
		return responseSender.ok(otpResponse);
26783 amit.gupta 52
 
21285 kshitij.so 53
	}
54
 
26783 amit.gupta 55
	@RequestMapping(value = ProfitMandiConstants.URL_VERIFY_OTP, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
21287 kshitij.so 56
	@ApiImplicitParams({
26783 amit.gupta 57
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
21394 kshitij.so 58
	@ApiOperation(value = "Validate OTP")
32721 ranu 59
	public ResponseEntity<?> validateOtp(@RequestParam String mobile, @RequestParam int referenceId, @RequestParam String otpCode)
26783 amit.gupta 60
			throws Exception {
32721 ranu 61
		logger.info("mobile - {}", mobile);
62
		logger.info("referenceId - {}", referenceId);
63
		logger.info("otpCode - {}", otpCode);
26783 amit.gupta 64
		// TODO validate email & phone from utility method
32721 ranu 65
		OTPResponse otpResponse = otpProcessor.validateOtp(referenceId, mobile, otpCode);
22931 ashik.ali 66
		return responseSender.ok(otpResponse);
21285 kshitij.so 67
	}
26783 amit.gupta 68
 
21382 amit.gupta 69
	@ApiOperation(value = "Parse OTP")
21475 amit.gupta 70
	@ApiImplicitParams({
26783 amit.gupta 71
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
72
	@RequestMapping(value = ProfitMandiConstants.URL_PARSE_OTP, method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
73
	public ResponseEntity<?> parseOTP(@RequestParam(name = "message") String message) {
74
		logger.info("message {}", message);
75
		String numberOnly = message.replaceAll("[^0-9]", "");
76
		if (numberOnly.length() != 5) {
22931 ashik.ali 77
			return responseSender.badRequest("");
21476 amit.gupta 78
		}
79
		return responseSender.ok(numberOnly);
21382 amit.gupta 80
	}
21285 kshitij.so 81
 
82
}