Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
32367 tejbeer 1
package com.spice.profitmandi.web.controller;
2
 
32441 tejbeer 3
import org.springframework.stereotype.Controller;
32367 tejbeer 4
 
32441 tejbeer 5
/*
6
 * import java.security.Key;
7
 * import java.time.LocalDate;
8
 * import java.time.LocalDateTime;
9
 * import java.time.ZoneId;
10
 * import java.time.format.DateTimeFormatter;
11
 * import java.util.Arrays;
12
 * import java.util.HashMap;
13
 * import java.util.List;
14
 * import java.util.Map;
15
 * 
16
 * import javax.servlet.http.HttpServletRequest;
17
 * 
18
 * import org.apache.http.Header;
19
 * import org.apache.http.HttpResponse;
20
 * import org.apache.http.conn.HttpHostConnectException;
21
 * import org.apache.logging.log4j.LogManager;
22
 * import org.apache.logging.log4j.Logger;
23
 * import org.json.JSONObject;
24
 * import org.springframework.beans.factory.annotation.Autowired;
25
 * import org.springframework.beans.factory.annotation.Value;
26
 * import org.springframework.http.MediaType;
27
 * import org.springframework.http.ResponseEntity;
28
 * import org.springframework.stereotype.Controller;
29
 * import org.springframework.web.bind.annotation.RequestBody;
30
 * import org.springframework.web.bind.annotation.RequestMapping;
31
 * import org.springframework.web.bind.annotation.RequestMethod;
32
 * import org.springframework.web.bind.annotation.RequestParam;
33
 * 
34
 * import com.google.gson.Gson;
35
 * import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
36
 * import com.spice.profitmandi.common.web.client.RestClient;
37
 * import com.spice.profitmandi.common.web.util.ResponseSender;
38
 * import com.spice.profitmandi.dao.entity.fofo.Campaign;
39
 * import com.spice.profitmandi.dao.entity.fofo.Customer;
40
 * import com.spice.profitmandi.dao.entity.fofo.ThriweMembers;
41
 * import com.spice.profitmandi.dao.model.thriwe.benefit.BenefitGroup;
42
 * import com.spice.profitmandi.dao.model.thriwe.benefit.BenefitResponse;
43
 * import com.spice.profitmandi.dao.model.thriwe.benefitConfiguration.BenefitConfigurationResponse;
44
 * import com.spice.profitmandi.dao.repository.fofo.CampaignRepository;
45
 * import com.spice.profitmandi.dao.repository.fofo.CustomerRepository;
46
 * import com.spice.profitmandi.dao.repository.fofo.ThriweMemberRepository;
47
 * 
48
 * //import io.jsonwebtoken.Jwts;
49
 * //import io.jsonwebtoken.security.Keys;
50
 * import io.swagger.annotations.ApiImplicitParam;
51
 * import io.swagger.annotations.ApiImplicitParams;
52
 * import io.swagger.annotations.ApiOperation;
53
 */
32367 tejbeer 54
 
55
import org.springframework.transaction.annotation.Transactional;
56
 
57
@Controller
58
@Transactional(rollbackFor = Throwable.class)
59
public class ThriweController {
60
 
32441 tejbeer 61
    /* @Autowired
32367 tejbeer 62
    private ResponseSender<?> responseSender;
32441 tejbeer 63
 
32367 tejbeer 64
    @Autowired
32440 tejbeer 65
    private CustomerRepository customerRepository;
32441 tejbeer 66
 
32440 tejbeer 67
    @Autowired
32367 tejbeer 68
    RestClient restClient;
32441 tejbeer 69
 
70
    // @Value("${thriwe.account.token}")
32367 tejbeer 71
    private String token;
32441 tejbeer 72
 
32367 tejbeer 73
    @Autowired
32440 tejbeer 74
    CampaignRepository campaignRepository;
32441 tejbeer 75
 
32440 tejbeer 76
    @Autowired
77
    private ThriweMemberRepository thriweMemberRepository;
32441 tejbeer 78
 
32440 tejbeer 79
    @Autowired
80
    private Gson gson;
32441 tejbeer 81
 
82
 
32367 tejbeer 83
    private static final Logger LOGGER = LogManager.getLogger(ThriweController.class);
32441 tejbeer 84
 
85
 
32440 tejbeer 86
    @RequestMapping(value = "/thriwe/validate/customer", method = RequestMethod.GET)
32367 tejbeer 87
    public ResponseEntity<?> validateCustomer(HttpServletRequest request) throws HttpHostConnectException, ProfitMandiBusinessException {
32441 tejbeer 88
 
32440 tejbeer 89
        List<Campaign> campaigns = campaignRepository.selectAll();
90
        String memberShipId = null;
91
        if (!campaigns.isEmpty()) {
32441 tejbeer 92
 
32440 tejbeer 93
            Campaign campaign = campaigns.get(0);
94
            Customer customer = customerRepository.selectById(32697);
32441 tejbeer 95
 
32440 tejbeer 96
            Map<String, String> params = new HashMap<String, String>();
97
            String userName = customer.getId() + "-" + campaign.getId();
98
            LOGGER.info("token {}", token);
32441 tejbeer 99
 
100
 
32440 tejbeer 101
            String secretKey = "smartdukan@thriwe_123smartdukaan";
32441 tejbeer 102
 
32440 tejbeer 103
            JSONObject jsonObject = new JSONObject();
104
            jsonObject.put("exp", LocalDateTime.now().plusDays(4).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() / 1000);
105
            jsonObject.put("iat", LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() / 1000);
106
            jsonObject.put("userName", userName);
107
            jsonObject.put("email", customer.getEmailId());
108
            jsonObject.put("mobileNumber", customer.getMobileNumber());
109
            jsonObject.put("firstName", customer.getFirstName());
110
            jsonObject.put("lastName", customer.getLastName());
111
            jsonObject.put("expiryDate", LocalDate.now().plusDays(4).format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
32441 tejbeer 112
 
32440 tejbeer 113
            LOGGER.info("jsonObject {}", jsonObject.toString());
32441 tejbeer 114
 
32440 tejbeer 115
            Map<String, Object> headersjwt = new HashMap<>();
116
            headersjwt.put("alg", "HS256");
117
            headersjwt.put("typ", "JWT");
32441 tejbeer 118
 
32440 tejbeer 119
            Key key = Keys.hmacShaKeyFor(secretKey.getBytes());
32441 tejbeer 120
 
32440 tejbeer 121
            String jwt = Jwts.builder().setHeaderParam("alg", "HS256").setHeaderParam("typ", "JWT").setPayload(jsonObject.toString()).signWith(key).compact();
32441 tejbeer 122
 
32440 tejbeer 123
            LOGGER.info("jwt {}", jwt);
32441 tejbeer 124
 
125
 
32440 tejbeer 126
            Map<String, String> headers = new HashMap<String, String>();
127
            headers.put("Project-Code", "SMART_DUKAAN");
128
            headers.put("X-Auth-Token", jwt);
129
            String url = "https://staging-india-api-gateway.thriwe.com/validate-user";
130
            HttpResponse response = restClient.getResponse(url, params, headers);
131
            LOGGER.info("response {}", response);
32441 tejbeer 132
 
133
 
32440 tejbeer 134
            Header[] authToken = response.getHeaders("Authorization");
135
            LOGGER.info("authToken {}", Arrays.asList(authToken).get(0).getValue());
32441 tejbeer 136
 
32440 tejbeer 137
            ThriweMembers thriweMember = thriweMemberRepository.selectByUsername(userName, campaign.getStartDate(), campaign.getEndDate());
138
            LOGGER.info("thriweMembers {}", thriweMember);
32441 tejbeer 139
 
32440 tejbeer 140
            if (thriweMember != null) {
32441 tejbeer 141
 
32440 tejbeer 142
                thriweMember.setAuthToken(Arrays.asList(authToken).get(0).getValue());
32441 tejbeer 143
 
32440 tejbeer 144
                try {
145
                    String responseString = restClient.toString(response.getEntity().getContent());
146
                    LOGGER.info("responseString {}", new JSONObject(responseString).get("membershipId"));
147
                    JSONObject responseJson = new JSONObject(responseString);
148
                    String membershipId = responseJson.getString("membershipId");
149
                    thriweMember.setMembershipId(membershipId);
150
                    memberShipId = thriweMember.getMembershipId();
151
                } catch (Exception e) {
152
                    // TODO: handle exception
153
                }
32441 tejbeer 154
 
155
 
32440 tejbeer 156
            }
157
        }
32441 tejbeer 158
 
32440 tejbeer 159
        return responseSender.ok(memberShipId);
32367 tejbeer 160
    }
32441 tejbeer 161
 
32440 tejbeer 162
    @RequestMapping(value = "/thriwe/benefit-configs", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
32367 tejbeer 163
    @ApiImplicitParams({@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
164
    @ApiOperation(value = "")
32440 tejbeer 165
    public ResponseEntity<?> benefitConfigs(HttpServletRequest request, @RequestParam String membershipId) throws HttpHostConnectException, ProfitMandiBusinessException {
32441 tejbeer 166
 
167
 
32440 tejbeer 168
        ThriweMembers thriweMember = thriweMemberRepository.selectByMembershipId(membershipId);
32441 tejbeer 169
 
32367 tejbeer 170
        Map<String, String> params = new HashMap<String, String>();
171
        Map<String, String> headers = new HashMap<String, String>();
32441 tejbeer 172
 
32440 tejbeer 173
        headers.put("Authorization", thriweMember.getAuthToken());
32367 tejbeer 174
        headers.put("Project-Code", "SMART_DUKAAN");
32441 tejbeer 175
 
32367 tejbeer 176
        String url = "https://staging-india-api-gateway.thriwe.com/client/benefit-configs";
32441 tejbeer 177
 
32367 tejbeer 178
        String response = restClient.get(url, params, headers);
179
        LOGGER.info("response {}", response);
32441 tejbeer 180
 
32440 tejbeer 181
        BenefitConfigurationResponse benefitConfigurationResponse = gson.fromJson(response, BenefitConfigurationResponse.class);
32441 tejbeer 182
 
32440 tejbeer 183
        LOGGER.info("benefitConfigurationResponse {}", benefitConfigurationResponse);
32441 tejbeer 184
 
32440 tejbeer 185
        return responseSender.ok(benefitConfigurationResponse);
32367 tejbeer 186
    }
32441 tejbeer 187
 
32367 tejbeer 188
    @RequestMapping(value = "/thriwe/benefits", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
189
    @ApiImplicitParams({@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
190
    @ApiOperation(value = "")
32440 tejbeer 191
    public ResponseEntity<?> benefits(HttpServletRequest request, @RequestParam String membershipId, @RequestParam String configId) throws HttpHostConnectException, ProfitMandiBusinessException {
32441 tejbeer 192
 
32440 tejbeer 193
        ThriweMembers thriweMember = thriweMemberRepository.selectByMembershipId(membershipId);
32441 tejbeer 194
 
32367 tejbeer 195
        Map<String, String> params = new HashMap<String, String>();
32441 tejbeer 196
 
32367 tejbeer 197
        params.put("configId", configId);
32441 tejbeer 198
 
32367 tejbeer 199
        Map<String, String> headers = new HashMap<String, String>();
32441 tejbeer 200
 
32440 tejbeer 201
        headers.put("Authorization", thriweMember.getAuthToken());
32367 tejbeer 202
        headers.put("Project-Code", "SMART_DUKAAN");
32441 tejbeer 203
 
32440 tejbeer 204
        String url = "https://staging-india-api-gateway.thriwe.com/client/benefit-items";
32367 tejbeer 205
        String response = restClient.get(url, params, headers);
32441 tejbeer 206
 
32440 tejbeer 207
        BenefitResponse benefitResponse = gson.fromJson(response, BenefitResponse.class);
32441 tejbeer 208
 
32440 tejbeer 209
        LOGGER.info("benefitResponse {}", benefitResponse);
32441 tejbeer 210
 
32440 tejbeer 211
        return responseSender.ok(benefitResponse);
32441 tejbeer 212
 
32367 tejbeer 213
    }
32441 tejbeer 214
 
215
 
32367 tejbeer 216
    @RequestMapping(value = "/thriwe/createBooking", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
217
    @ApiImplicitParams({@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
218
    @ApiOperation(value = "")
219
    public ResponseEntity<?> createBooking(HttpServletRequest request, @RequestBody BenefitGroup benefitGroup) throws HttpHostConnectException, ProfitMandiBusinessException {
32441 tejbeer 220
 
32440 tejbeer 221
        ThriweMembers thriweMember = thriweMemberRepository.selectByMembershipId(benefitGroup.getMembershipId());
32441 tejbeer 222
 
32367 tejbeer 223
        Map<String, String> headers = new HashMap<String, String>();
32441 tejbeer 224
 
32367 tejbeer 225
        headers.put("token", token);
226
        headers.put("Project-Code", "SMART_DUKAAN");
32441 tejbeer 227
 
32367 tejbeer 228
        String url = "https://staging-india-api-gateway.thriwe.com/create-booking";
229
        String response = restClient.post(url, benefitGroup.toString(), headers);
32441 tejbeer 230
 
32367 tejbeer 231
        LOGGER.info("response {}", response);
232
        return responseSender.ok(true);
233
    }
32441 tejbeer 234
 
235
    */
32367 tejbeer 236
}