Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
9269 amit.gupta 1
package in.shop2020.mobileapi.serving.utils;
9103 anupam.sin 2
 
3
import in.shop2020.config.ConfigException;
12620 amit.gupta 4
import in.shop2020.model.v1.catalog.ExclusiveAffiliateItemInfo;
9103 anupam.sin 5
import in.shop2020.model.v1.order.LineItem;
6
import in.shop2020.model.v1.order.Order;
7
import in.shop2020.model.v1.order.RechargeOrderStatus;
8
import in.shop2020.model.v1.order.RechargePlan;
9
import in.shop2020.model.v1.order.RechargeType;
10
import in.shop2020.model.v1.user.Cart;
11
import in.shop2020.model.v1.user.Line;
12620 amit.gupta 12
import in.shop2020.thrift.clients.CatalogClient;
9103 anupam.sin 13
import in.shop2020.thrift.clients.TransactionClient;
14
import in.shop2020.thrift.clients.config.ConfigClient;
15
 
16
import java.util.ArrayList;
17
import java.util.Arrays;
18
import java.util.Collections;
12620 amit.gupta 19
import java.util.Date;
9103 anupam.sin 20
import java.util.HashMap;
21
import java.util.List;
22
import java.util.Map;
23
 
24
import javax.mail.internet.AddressException;
25
import javax.mail.internet.InternetAddress;
26
 
27
import org.apache.commons.lang.StringUtils;
28
import org.apache.log4j.Logger;
29
 
30
public class Utils {
31
    private static Logger logger = Logger.getLogger(Utils.class);
32
 
33
	public static final String EXPORT_ENTITIES_PATH = getExportPath();
34
	public static final String EXPORT_JAVASCRIPT_CONTENT_PATH = "/var/lib/tomcat6/webapps/export/javascripts/";
11038 amit.gupta 35
	public static final String STATIC_SERVER_PATH = "http://static1.saholic.com/images/mobileapi/";
9103 anupam.sin 36
	public static final long ROOT_CATEGORY = 10000;
37
	public static final long MOBILE_PHONES_CATEGORY = 10001;
38
	public static final long MOBILE_ACCESSORIES_CATEGORY = 10011;
39
	public static final long TABLETS_CATEGORY = 10010;
40
    public static final long LAPTOPS_CATEGORY = 10050;
41
    public static final long CAMERAS_CATEGORY = 11001;
42
 
13425 amit.gupta 43
    @SuppressWarnings("serial")
44
	public static final Map<String, String> NET_BANKING_CODES_MAP = Collections.unmodifiableMap(
45
    		new HashMap<String, String>(){
46
	    		{
47
	    			put("1004","AXIB");
48
	    			put("1135","CRPB");
49
	    			put("1029","FEDB");
50
	    			put("1007","HDFB");
13433 amit.gupta 51
	    			put("1016","ICIB");
52
	    			put("1032","SBIB");
53
	    			put("1034","SBHB");
54
	    			put("1038","SBMB");
55
	    			put("1039","SBTB");
13469 amit.gupta 56
	    			//put("1127","CITNB");
13442 amit.gupta 57
	    			put("1033","SBBJB");
13429 amit.gupta 58
    				//Oriental Bank of Commerce
59
	    			//put("1154","");
13425 amit.gupta 60
	    			put("1147","CBIB");
61
	    			put("1146","YESB");
62
	    			put("1214","BOIB");
63
	    			put("1215","CUBB");
13436 amit.gupta 64
	    			put("1212","UNIB");
13425 amit.gupta 65
	    			put("1224","CABB");
13429 amit.gupta 66
	    			put("1210","INGB");
67
	    			put("1148","162B");
68
	    			put("1273","DLSB");
13425 amit.gupta 69
	    			put("1015","JAKB");
70
	    			put("1133","KRKB");
71
	    			put("1143","INDB");
13436 amit.gupta 72
	    			put("1216","UBIB");
13425 amit.gupta 73
	    			put("1213","INOB");
74
	    			put("1229","BOMB");
13429 amit.gupta 75
	    			put("1601","CSBN");
76
	    			put("1602","DCBB");
77
	    			put("1603","DSHB");
78
	    			put("1604","IDBB");
79
	    			put("1605","INIB");
80
	    			put("1606","KRVB");
81
	    			put("1607","PNBB");
82
	    			put("1608","SOIB");
83
	    			put("1609","SRSWT");
84
	    			put("1610","VJYB");	    			
13425 amit.gupta 85
	    		}
86
    		});
87
 
9103 anupam.sin 88
    static Map<Long, String> providersMap;
89
    static Map<Long, String> mobileProvidersMap;
90
    static Map<Long, String> dthProvidersMap;
91
    static Map<Long, List<RechargePlan>> operatorPlanMap = new HashMap<Long, List<RechargePlan>>(); 
92
    private static Map<String, Map<String, String>> uriOperatorMap = new HashMap<String, Map<String,String>>();
12620 amit.gupta 93
    static Map<Long, ExclusiveAffiliateItemInfo> exclusiveAffiliateItems = null;
94
    static long fifteenMinsCounter = 0l;
9103 anupam.sin 95
 
96
    public static final List<RechargeOrderStatus> refundableRechargeStatusList = new ArrayList<RechargeOrderStatus>(Arrays.asList(new RechargeOrderStatus[] 
97
                                                                                                                                                     {RechargeOrderStatus.RECHARGE_FAILED, 
98
                                                                                                                                                      RechargeOrderStatus.RECHARGE_FAILED_REFUNDED}));
99
 
100
    public static Map<RechargeOrderStatus, String> statusMap = new HashMap<RechargeOrderStatus, String>();
101
 
102
    //public static final List<String> multiValuedFacet = Arrays.asList("F_50006");
103
 
9269 amit.gupta 104
    public static final  List<String>rootfacetDefIDs = Arrays.asList("F_50010","F_50011", "F_50001", "F_50028");
9103 anupam.sin 105
    public static final  String availabilityFacet = "F_50028";
106
	public static final Map<String, String> FACET_LABEL_MAP = Collections.unmodifiableMap(
107
			new HashMap<String, String>(){
108
				/**
109
				 * 
110
				 */
111
				private static final long serialVersionUID = 1L;
112
 
113
				{
114
					put("F_50010","Category");
115
					put("F_50011","Sub Category");
116
					put("F_50002","Price");
117
					put("F_50001","Brand");
118
					put("F_50006","Data Connectivity");
119
					put("F_50007","Camera Resolution");
120
					put("F_50012","Display");
121
					put("F_50013","Operating System");
122
					put("F_50014","RAM");
123
					put("F_50015","Storage Capacity");
124
					put("F_50017","Processor");
125
					put("F_50018","Capacity");
126
					put("F_50019","Class");
127
					put("F_50020","Capacity");
128
					put("F_50021","Capacity");
129
					put("F_50022","Type");
130
					put("F_50023","Interface");
131
					//Resolution for Composite
132
					put("F_50024","Resolution");
133
					put("F_50025","Optical Zoom");
134
					put("F_50026","Display Size");
135
					//Resolution for DSLR
136
					put("F_50027","Resolution");
137
					put("F_50028","Availability");
138
					put("F_50031","Operating System");
139
					put("F_50032","Screen Size");	//Screen size for mobiles
140
					put("F_50033","Screen Size");	//Screen size for laptop
141
					put("F_50034","Screen Size"); 	//Screen size for tablets
142
					put("F_50035","Operating System"); 	//Screen size for tablets
143
					put("F_50036","Camera Resolution"); 	//Screen size for tablets
144
					put("F_50037","Voice Call Facility"); 	//Screen size for tablets
9475 amit.gupta 145
					put("F_50038","Mobile Type");
12151 amit.gupta 146
					put("F_50039", "Your Deals");
9103 anupam.sin 147
				}
148
		});
149
 
150
    static {
151
        statusMap.put(RechargeOrderStatus.PAYMENT_FAILED, "Payment Unsuccessful");
152
        statusMap.put(RechargeOrderStatus.PAYMENT_SUCCESSFUL, "Processing Recharge");
153
        statusMap.put(RechargeOrderStatus.RECHARGE_FAILED, "Recharge Failed");
16134 manish.sha 154
        statusMap.put(RechargeOrderStatus.RECHARGE_FAILED_REFUNDED, "Recharge Failed Refunded");
9103 anupam.sin 155
        statusMap.put(RechargeOrderStatus.RECHARGE_SUCCESSFUL, "Recharge Successful");
156
        statusMap.put(RechargeOrderStatus.REFUNDED, "Amount Refunded");
157
        statusMap.put(RechargeOrderStatus.PARTIALLY_REFUNDED, "Amount Refunded");
16134 manish.sha 158
        statusMap.put(RechargeOrderStatus.PAYMENT_PENDING, "Payment Pending");
159
        statusMap.put(RechargeOrderStatus.INIT, "Payment Initiated");
160
        statusMap.put(RechargeOrderStatus.RECHARGE_UNKNOWN, "Recharge In Process");
161
        statusMap.put(RechargeOrderStatus.RECHARGE_IN_PROCESS, "Recharge In Process");
9103 anupam.sin 162
 
163
        TransactionClient tcl;
164
        try {
165
            tcl = new TransactionClient();
166
            mobileProvidersMap = tcl.getClient().getServiceProviders(RechargeType.MOBILE, true);
167
            dthProvidersMap = tcl.getClient().getServiceProviders(RechargeType.DTH, true);
168
//            providersMap.putAll(mobileProvidersMap);
169
//            providersMap.putAll(dthProvidersMap);
170
            for (Long operatorId : mobileProvidersMap.keySet()) {
171
                List<RechargePlan> plans = tcl.getClient().getPlansForOperator(operatorId);
172
                if (!plans.isEmpty()) {
173
                    operatorPlanMap.put(operatorId, plans);
174
                }
175
            }
176
            for (Long operatorId : mobileProvidersMap.keySet()) {
177
            	Map<String,String> valueMap = new HashMap<String,String>();
178
            	valueMap.put("Id", operatorId+"");
179
                valueMap.put("Name", mobileProvidersMap.get(operatorId)+"");
180
                valueMap.put("ServiceType", "1");
181
                valueMap.put("ServiceName", "Prepaid Mobile");
182
                uriOperatorMap.put(mobileProvidersMap.get(operatorId).toLowerCase().trim().replace(" ", "-")+"-online-recharge", valueMap);
183
            }
184
            for (Long operatorId : dthProvidersMap.keySet()) {
185
            	Map<String,String> valueMap = new HashMap<String,String>();
186
            	valueMap.put("Id", operatorId+"");
187
            	valueMap.put("Name", dthProvidersMap.get(operatorId)+"");
188
                valueMap.put("ServiceType", "2");
189
                valueMap.put("ServiceName", "DTH TV");
190
                uriOperatorMap.put(dthProvidersMap.get(operatorId).toLowerCase().trim().replace(" ", "-")+"-online-recharge", valueMap);
191
            }
192
 
193
            Map<String,String> valueMap = new HashMap<String,String>();
194
            valueMap.put("Id", "0");
195
	    	valueMap.put("Name", "Mobile and DTH");
196
	        valueMap.put("ServiceType", "1");
197
	        valueMap.put("ServiceName", "");
198
	        uriOperatorMap.put("recharge", valueMap);
199
//            providersMap.putAll(tcl.getClient().getServiceProviders(RechargeType.DTH));
200
 
201
 
202
        } catch (Exception e) {
203
            logger.error("Could not get providers", e);
204
        }
205
    }
206
 
207
 
208
 
209
	private static String getExportPath(){
210
		String exportPath=null;
211
		ConfigClient client = ConfigClient.getClient();
212
		try{
213
			exportPath = client.get("export_entities_path");
214
		}catch(ConfigException ce){
215
			logger.error("Unable to read export path from the config client: ", ce);
216
			logger.warn("Setting the default export path");
217
			exportPath = "/var/lib/tomcat6/webapps/export/html/entities/";
218
		}
219
		return exportPath;
220
	}
221
 
222
	public static boolean validatePin(String pincode) {
223
		int pin;
224
		try {
225
			pin = Integer.parseInt(pincode);
226
		}
227
		catch (NumberFormatException e) {
228
			return false;
229
		}
230
 
231
		if (pin < 100000 || pin > 999999) {
232
			return false;
233
		}
234
		return true;
235
	}
236
 
237
	public static boolean isValidEmail(String emailAddress)	{
238
 
239
		if(emailAddress == null || emailAddress.isEmpty())	{
240
			return false;
241
		}
242
		try {
243
			InternetAddress address = new InternetAddress(emailAddress, true);
244
			address.validate();
245
			return true;
246
 
247
		} catch (AddressException e) {
248
			logger.error(emailAddress + " is not valid email address ", e);
249
			return false;
250
		}
251
	}
252
 
253
	public static boolean validatePhone(String phone) {
254
		long iPhone;
255
		try {
256
    		iPhone = Long.parseLong(phone);
257
		}
258
		catch (NumberFormatException e) {
259
			return false;
260
		}
261
 
262
		if (iPhone < 1000000000l || iPhone > 9999999999l) {
263
			return false;
264
		}
265
		return true;
266
	}
267
 
268
	public static String getItemIdStringInCart(Cart cart) {
269
	    List<String> itemIds = new ArrayList<String>();
270
        for (Line line : cart.getLines()) {
271
            itemIds.add(Long.toString(line.getItemId()));
272
        }
273
        return StringUtils.join(itemIds, '_');
274
    }
275
 
276
	public static String getItemIdStringFromOrders(List<Order> orders) {
277
        List<String> itemIds = new ArrayList<String>();
278
        if (orders != null) {
279
            for (Order order : orders) {
280
                for (LineItem lItem : order.getLineitems()) {
281
                    itemIds.add(Long.toString(lItem.getItem_id()));
282
                }
283
            }
284
        }
285
        return StringUtils.join(itemIds, '_');
286
    }
287
 
288
 
289
 
290
	public static String getRechargeProviderName(long providerId) {
291
            return providersMap.get(providerId);
292
	}
293
 
294
    public static Map<Long, String> getMobileProvidersMap() {
295
        return mobileProvidersMap;
296
    }
297
 
298
    public static Map<Long, String> getDthProvidersMap() {
299
        return dthProvidersMap;
300
    }
301
 
302
    public static Map<Long, List<RechargePlan>> getOperatorPlanMap() {
303
        return operatorPlanMap;
304
    }
305
 
306
    public static Map<String, Map<String, String>> getUriOperatorMap(){
307
    	return uriOperatorMap;
308
	}
309
 
310
    public static Map<String, String> getOperatorByUri(String uri){
311
    	return uriOperatorMap.get(uri);
312
	}
12620 amit.gupta 313
 
314
 
315
 
316
	public static Map<Long, ExclusiveAffiliateItemInfo> getExclusiveAffiliateItems(){
317
		try{
12626 amit.gupta 318
			Long currentTime = new Date().getTime();
12620 amit.gupta 319
			CatalogClient client = new CatalogClient();
12626 amit.gupta 320
			if(exclusiveAffiliateItems == null || fifteenMinsCounter < currentTime) {
12620 amit.gupta 321
				exclusiveAffiliateItems = client.getClient().getExAffiliateItemInfo();
322
				fifteenMinsCounter = new Date().getTime() + 15*60000;
323
			}
324
		}catch(Exception ce){
325
			logger.error("Unable to fetch exclusive items from catalog", ce);
326
		}
327
		return exclusiveAffiliateItems;
328
	}
9103 anupam.sin 329
}