Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
21723 ashik.ali 1
package com.spice.profitmandi.dao.repository.dtr;
21545 ashik.ali 2
 
22097 kshitij.so 3
import java.lang.reflect.Type;
4
import java.util.ArrayList;
23793 tejbeer 5
import java.util.Arrays;
24995 amit.gupta 6
import java.util.HashMap;
22097 kshitij.so 7
import java.util.List;
22125 ashik.ali 8
import java.util.Map;
24995 amit.gupta 9
import java.util.stream.Collectors;
21545 ashik.ali 10
 
24031 amit.gupta 11
import org.apache.logging.log4j.LogManager;
23568 govind 12
import org.apache.logging.log4j.Logger;
23793 tejbeer 13
import org.bson.Document;
24031 amit.gupta 14
import org.json.JSONObject;
21545 ashik.ali 15
 
22097 kshitij.so 16
import com.google.gson.Gson;
17
import com.google.gson.reflect.TypeToken;
21545 ashik.ali 18
import com.mongodb.BasicDBObject;
19
import com.mongodb.DB;
20
import com.mongodb.DBCollection;
22097 kshitij.so 21
import com.mongodb.DBCursor;
21545 ashik.ali 22
import com.mongodb.DBObject;
23
import com.mongodb.MongoClient;
23793 tejbeer 24
import com.mongodb.client.AggregateIterable;
25
import com.mongodb.client.MongoCollection;
26
import com.mongodb.client.MongoDatabase;
21545 ashik.ali 27
import com.mongodb.util.JSON;
24011 tejbeer 28
import com.spice.profitmandi.dao.entity.dtr.NotificationCampaigns;
25380 amit.gupta 29
import com.spice.profitmandi.dao.model.ContentPojo;
22097 kshitij.so 30
import com.spice.profitmandi.dao.model.FofoForm;
22496 amit.gupta 31
import com.spice.profitmandi.dao.model.RetailerFofoInterest;
21545 ashik.ali 32
 
33
public class Mongo {
22384 amit.gupta 34
 
23568 govind 35
	private static final Logger LOGGER = LogManager.getLogger(Mongo.class);
21545 ashik.ali 36
 
22165 amit.gupta 37
	private static final String CONTENT = "CONTENT";
21545 ashik.ali 38
	private static final String SITE_CONTENT = "siteContent";
39
	private static final String CATALOG_DB = "Catalog";
40
	private static final String MASTER_DATA = "MasterData";
22097 kshitij.so 41
	private static final String FOFO_DB = "Fofo";
22335 amit.gupta 42
	private static final String FOFO_BRANDS = "brands";
22446 amit.gupta 43
	private static final String PROFITMANDI_BANNERS = "banners";
22496 amit.gupta 44
	private static final String RETAILER_FOFO_INTEREST = "RetailerFofoInterest";
22097 kshitij.so 45
	private static final String FOFO_FORM_COLLECTION = "RegistrationForm";
24011 tejbeer 46
	private static final String NOTIFICATION_CAMPAIGNS = "notificationcampaigns";
47
	private static final String USER_DB = "User";
21545 ashik.ali 48
	private static final int MONGO_PORT = 27017;
25380 amit.gupta 49
 
50
	private static final Gson gson = new Gson();
51
 
25560 amit.gupta 52
	public static final Map<Integer, List<String>> PARTNER_BLoCKED_BRANDS = new HashMap<>();
22165 amit.gupta 53
 
24995 amit.gupta 54
	static {
26343 tejbeer 55
		PARTNER_BLoCKED_BRANDS.put(175135597, Arrays.asList("Vivo"));
56
		PARTNER_BLoCKED_BRANDS.put(175135183, Arrays.asList("Vivo"));
57
		PARTNER_BLoCKED_BRANDS.put(175137445, Arrays.asList("Vivo"));
58
		PARTNER_BLoCKED_BRANDS.put(175137557, Arrays.asList("Vivo"));
59
		PARTNER_BLoCKED_BRANDS.put(175138281, Arrays.asList("Vivo"));
60
		PARTNER_BLoCKED_BRANDS.put(175138441, Arrays.asList("Vivo"));
61
		PARTNER_BLoCKED_BRANDS.put(175138447, Arrays.asList("Vivo"));
62
		PARTNER_BLoCKED_BRANDS.put(175138570, Arrays.asList("Vivo"));
63
		// TITU
64
		PARTNER_BLoCKED_BRANDS.put(175138610, Arrays.asList("Vivo"));
65
		PARTNER_BLoCKED_BRANDS.put(175138611, Arrays.asList("Vivo"));
66
		PARTNER_BLoCKED_BRANDS.put(175138639, Arrays.asList("Vivo"));
67
		PARTNER_BLoCKED_BRANDS.put(175138716, Arrays.asList("Vivo"));
26811 amit.gupta 68
		//Pardeep Telecom
69
		PARTNER_BLoCKED_BRANDS.put(175138843, Arrays.asList("Vivo"));
26343 tejbeer 70
		// PARTNER_BLoCKED_BRANDS.put(175138733,Arrays.asList("Vivo"));
26600 amit.gupta 71
		//Venus Agencies
72
		//PARTNER_BLoCKED_BRANDS.put(175138801, Arrays.asList("Vivo"));
26459 tejbeer 73
		//PARTNER_BLoCKED_BRANDS.put(175138717, Arrays.asList("Vivo"));
26343 tejbeer 74
		PARTNER_BLoCKED_BRANDS.put(175138803, Arrays.asList("Vivo"));
75
		PARTNER_BLoCKED_BRANDS.put(175138821, Arrays.asList("Vivo"));
76
		// PARTNER_BLoCKED_BRANDS.put(175138820,Arrays.asList("Vivo"));
77
		PARTNER_BLoCKED_BRANDS.put(175138718, Arrays.asList("Vivo"));
78
		PARTNER_BLoCKED_BRANDS.put(175138637, Arrays.asList("Vivo"));
79
		// PARTNER_BLoCKED_BRANDS.put(175138814,Arrays.asList("Vivo"));
26421 tejbeer 80
		//PARTNER_BLoCKED_BRANDS.put(175138833, Arrays.asList("Vivo"));
26397 amit.gupta 81
		//Durga Enterprises
26459 tejbeer 82
		//PARTNER_BLoCKED_BRANDS.put(175138832, Arrays.asList("Vivo"));
26343 tejbeer 83
 
24995 amit.gupta 84
	}
85
 
22162 amit.gupta 86
	private MongoClient mongoClient;
87
	private MongoClient contentMongoClient;
88
 
22171 amit.gupta 89
	public Mongo(String mongoHost, String contentMongoHost) {
22165 amit.gupta 90
		try {
22170 amit.gupta 91
			LOGGER.info("mongoHost => {}, contentMongoHost {} ", mongoHost, contentMongoHost);
22165 amit.gupta 92
			mongoClient = new MongoClient(mongoHost, MONGO_PORT);
22169 amit.gupta 93
			contentMongoClient = new MongoClient(contentMongoHost, MONGO_PORT);
22165 amit.gupta 94
		} catch (Exception e) {
95
			e.printStackTrace();
96
		}
21545 ashik.ali 97
	}
24031 amit.gupta 98
 
25380 amit.gupta 99
	public ContentPojo getEntityById(long id) throws Exception {
22162 amit.gupta 100
		DB db = contentMongoClient.getDB(CONTENT);
21545 ashik.ali 101
		DBCollection collection = db.getCollection(SITE_CONTENT);
102
		BasicDBObject obj = new BasicDBObject();
103
		obj.append("_id", id);
104
		DBObject result = collection.findOne(obj);
22165 amit.gupta 105
		if (result == null) {
21545 ashik.ali 106
			throw new Exception();
107
		}
26480 amit.gupta 108
		ContentPojo cp = gson.fromJson(new BasicDBObject(result.toMap()).toJson(), ContentPojo.class);
26530 amit.gupta 109
		if(cp.getDefaultImageUrl()!=null) {
110
			cp.setDefaultImageUrl(cp.getDefaultImageUrl().replaceAll("saholic", "smartdukaan"));
111
		}
26480 amit.gupta 112
		return cp;
21545 ashik.ali 113
	}
25380 amit.gupta 114
 
24995 amit.gupta 115
	public List<DBObject> getMongoBrands(int fofoId, String email, int categoryId) {
116
		List<DBObject> brandsDisplay = this.getBrandsToDisplay(categoryId);
25560 amit.gupta 117
		if (PARTNER_BLoCKED_BRANDS.containsKey(fofoId)) {
118
			List<String> blockedBrands = PARTNER_BLoCKED_BRANDS.get(fofoId);
24995 amit.gupta 119
			brandsDisplay = brandsDisplay.stream().filter(x -> !blockedBrands.contains(x.get("name")))
120
					.collect(Collectors.toList());
121
		}
122
		return brandsDisplay;
25380 amit.gupta 123
 
24995 amit.gupta 124
	}
22165 amit.gupta 125
 
25380 amit.gupta 126
	public ContentPojo getEntityByName(String name) throws Exception {
22385 amit.gupta 127
		LOGGER.info("Name --- {}", name);
22384 amit.gupta 128
		DB db = contentMongoClient.getDB(CONTENT);
129
		DBCollection collection = db.getCollection(SITE_CONTENT);
130
		BasicDBObject obj = new BasicDBObject();
131
		obj.append("title", name);
25380 amit.gupta 132
		DBObject result = collection.findOne();
22384 amit.gupta 133
		if (result == null) {
134
			throw new Exception();
135
		}
25380 amit.gupta 136
		return gson.fromJson(new BasicDBObject(result.toMap()).toJson(), ContentPojo.class);
22384 amit.gupta 137
	}
138
 
25380 amit.gupta 139
	public void persistEntity(ContentPojo contentPojo) {
140
		DB db = contentMongoClient.getDB(CONTENT);
141
		DBCollection collection = db.getCollection(SITE_CONTENT);
142
		insertOrUpdateById(collection, contentPojo.getId(), contentPojo);
143
 
144
	}
145
 
146
	private static <T> void insertOrUpdateById(DBCollection collection, long id, T obj) {
147
		DBObject dbo = BasicDBObject.parse(gson.toJson(obj));
148
		dbo.put("_id", id);
149
		collection.update(new BasicDBObject("_id", id), dbo, true, false);
150
	}
151
 
22165 amit.gupta 152
	public JSONObject getItemsByBundleId(long bundleId) throws Exception {
22162 amit.gupta 153
		DB db = mongoClient.getDB(CATALOG_DB);
21545 ashik.ali 154
		DBCollection collection = db.getCollection(MASTER_DATA);
155
		BasicDBObject obj = new BasicDBObject();
156
		BasicDBObject in_query = new BasicDBObject();
157
		obj.append("skuBundleId", bundleId);
22165 amit.gupta 158
		in_query.append("$in", new int[] { 1, 2, 3, 4, 5, 6, 7 });
21545 ashik.ali 159
		obj.append("source_id", in_query);
160
		DBObject result = collection.findOne(obj);
22165 amit.gupta 161
		if (result == null) {
21545 ashik.ali 162
			throw new Exception();
163
		}
164
		return new JSONObject(JSON.serialize(result));
165
	}
22165 amit.gupta 166
 
167
	public JSONObject getItemByID(long id) throws Exception {
22162 amit.gupta 168
		DB db = mongoClient.getDB(CATALOG_DB);
21545 ashik.ali 169
		DBCollection collection = db.getCollection(MASTER_DATA);
170
		BasicDBObject obj = new BasicDBObject();
171
		obj.append("_id", id);
172
		DBObject result = collection.findOne(obj);
22165 amit.gupta 173
		if (result == null) {
21545 ashik.ali 174
			throw new Exception();
175
		}
176
		return new JSONObject(JSON.serialize(result));
177
	}
22165 amit.gupta 178
 
179
	public void persistFofoRegInfo(FofoForm ff) {
180
		DB db = mongoClient.getDB(FOFO_DB);
22097 kshitij.so 181
		DBCollection collection = db.getCollection(FOFO_FORM_COLLECTION);
22165 amit.gupta 182
		if (ff.get_id() == 0) {
22097 kshitij.so 183
			BasicDBObject orderBy = new BasicDBObject();
184
			orderBy.put("_id", -1);
185
			DBCursor cursor = collection.find().sort(orderBy).limit(1);
186
			long id = 1l;
187
			while (cursor.hasNext()) {
188
				FofoForm existingFofo = gson.fromJson(cursor.next().toString(), FofoForm.class);
189
				id = existingFofo.get_id() + 1;
190
			}
191
			ff.set_id(id);
192
		}
25380 amit.gupta 193
		DBObject dbObject = (DBObject) JSON.parse(gson.toJson(ff));
22097 kshitij.so 194
		collection.save(dbObject);
195
	}
22165 amit.gupta 196
 
22162 amit.gupta 197
	public List<FofoForm> getFofoForms(int offset, int limit) {
22165 amit.gupta 198
		List<FofoForm> ffList = new ArrayList<FofoForm>();
22162 amit.gupta 199
		DB db = mongoClient.getDB(FOFO_DB);
22097 kshitij.so 200
		DBCollection collection = db.getCollection(FOFO_FORM_COLLECTION);
201
		BasicDBObject orderBy = new BasicDBObject();
202
		orderBy.put("_id", -1);
203
		DBCursor dbc = collection.find().sort(orderBy).limit(limit).skip(offset);
204
		while (dbc.hasNext()) {
205
			ffList.add(convertJSONToPojo(dbc.next().toString()));
206
		}
207
		return ffList;
208
	}
22165 amit.gupta 209
 
210
	public String getFofoFormJsonStringByFofoId(int fofoId) {
22162 amit.gupta 211
		DB db = mongoClient.getDB(FOFO_DB);
22097 kshitij.so 212
		BasicDBObject filter = new BasicDBObject();
213
		filter.append("_id", fofoId);
214
		DBCollection collection = db.getCollection(FOFO_FORM_COLLECTION);
22105 ashik.ali 215
		DBObject fofoDbOject = collection.findOne(filter);
22165 amit.gupta 216
		if (fofoDbOject != null) {
22161 amit.gupta 217
			return fofoDbOject.toString();
218
		} else {
219
			return null;
220
		}
22097 kshitij.so 221
	}
22165 amit.gupta 222
 
223
	public String getFofoFormJsonStringByEmail(String email) {
22162 amit.gupta 224
		DB db = mongoClient.getDB(FOFO_DB);
22155 amit.gupta 225
		BasicDBObject filter = new BasicDBObject();
226
		filter.append("registeredEmail1", email);
227
		DBCollection collection = db.getCollection(FOFO_FORM_COLLECTION);
228
		DBObject fofoDbOject = collection.findOne(filter);
22165 amit.gupta 229
		if (fofoDbOject != null) {
22161 amit.gupta 230
			return fofoDbOject.toString();
231
		} else {
232
			return null;
233
		}
22155 amit.gupta 234
	}
22165 amit.gupta 235
 
236
	public String getFofoFormsJsonString() {
22162 amit.gupta 237
		DB db = mongoClient.getDB(FOFO_DB);
22125 ashik.ali 238
		DBCollection collection = db.getCollection(FOFO_FORM_COLLECTION);
239
		DBCursor cursor = collection.find();
240
		StringBuilder fofoFormsJsonString = new StringBuilder();
241
		fofoFormsJsonString.append("[");
22165 amit.gupta 242
		while (cursor.hasNext()) {
22125 ashik.ali 243
			fofoFormsJsonString.append(cursor.next().toString());
22165 amit.gupta 244
			if (cursor.hasNext()) {
22125 ashik.ali 245
				fofoFormsJsonString.append(",");
246
			}
247
		}
248
		fofoFormsJsonString.append("]");
249
		return fofoFormsJsonString.toString();
250
	}
22165 amit.gupta 251
 
22162 amit.gupta 252
	public FofoForm getFofoForm(int fofoId) {
22097 kshitij.so 253
		String fofoFormJsonString = getFofoFormJsonStringByFofoId(fofoId);
254
		System.out.println(fofoFormJsonString);
255
		return new Gson().fromJson(fofoFormJsonString, FofoForm.class);
22165 amit.gupta 256
		// return convertJSONToPojo(fofoDbOject.toString());
22097 kshitij.so 257
	}
22165 amit.gupta 258
 
22162 amit.gupta 259
	public FofoForm getFofoForm(String email) {
22155 amit.gupta 260
		String fofoFormJsonString = getFofoFormJsonStringByEmail(email);
261
		System.out.println(fofoFormJsonString);
262
		return new Gson().fromJson(fofoFormJsonString, FofoForm.class);
22165 amit.gupta 263
		// return convertJSONToPojo(fofoDbOject.toString());
22155 amit.gupta 264
	}
21545 ashik.ali 265
 
22165 amit.gupta 266
	private static FofoForm convertJSONToPojo(String json) {
22097 kshitij.so 267
 
22165 amit.gupta 268
		Type type = new TypeToken<FofoForm>() {
269
		}.getType();
22097 kshitij.so 270
 
22165 amit.gupta 271
		return new Gson().fromJson(json, type);
272
 
22097 kshitij.so 273
	}
22165 amit.gupta 274
 
275
	public void updateColumnsById(Map<String, Integer> map, int fofoId) {
22162 amit.gupta 276
		DB db = mongoClient.getDB(FOFO_DB);
22125 ashik.ali 277
		BasicDBObject filter = new BasicDBObject();
278
		filter.append("_id", fofoId);
279
		DBCollection collection = db.getCollection(FOFO_FORM_COLLECTION);
280
		BasicDBObject updateFields = new BasicDBObject();
22165 amit.gupta 281
		for (Map.Entry<String, Integer> entry : map.entrySet()) {
22125 ashik.ali 282
			updateFields.append(entry.getKey(), entry.getValue());
283
		}
284
		BasicDBObject newDocument = new BasicDBObject();
285
		newDocument.append("$set", updateFields);
286
		collection.update(filter, newDocument);
287
	}
24031 amit.gupta 288
 
289
	public List<DBObject> getBrandsToDisplay(int categoryId) {
22335 amit.gupta 290
		DB db = mongoClient.getDB(FOFO_DB);
291
		BasicDBObject filter = new BasicDBObject();
292
		filter.append("active", true);
24031 amit.gupta 293
		if (categoryId != 0) {
294
			filter.append("categoryId", categoryId);
295
		}
22335 amit.gupta 296
		return db.getCollection(FOFO_BRANDS).find(filter).toArray();
297
	}
26343 tejbeer 298
 
26309 amit.gupta 299
	public List<DBObject> getAllBrandsToDisplay(int categoryId) {
300
		DB db = mongoClient.getDB(FOFO_DB);
301
		BasicDBObject filter = new BasicDBObject();
302
		if (categoryId != 0) {
303
			filter.append("categoryId", categoryId);
304
		}
305
		return db.getCollection(FOFO_BRANDS).find(filter).toArray();
306
	}
24031 amit.gupta 307
 
22447 amit.gupta 308
	public List<DBObject> getBannersByType(String bannerType) {
26661 amit.gupta 309
		DB db = mongoClient.getDB(FOFO_DB);
22446 amit.gupta 310
		BasicDBObject filter = new BasicDBObject();
22449 amit.gupta 311
		filter.append("type", bannerType);
22992 amit.gupta 312
		BasicDBObject orderBy = new BasicDBObject();
23008 amit.gupta 313
		orderBy.put("rank", 1);
22992 amit.gupta 314
		return db.getCollection(PROFITMANDI_BANNERS).find(filter).sort(orderBy).toArray();
22446 amit.gupta 315
	}
23793 tejbeer 316
 
317
	@SuppressWarnings("unchecked")
318
	public List<Document> getSubcategoriesToDisplay() {
319
		MongoDatabase db = mongoClient.getDatabase("Catalog");
320
		System.out.println("Connection to MongoDB database successfully");
321
		MongoCollection<Document> collection = db.getCollection("Deals");
24031 amit.gupta 322
 
323
		Document object = new Document().append("$match", new Document().append("category_id", 6).append("showDeal", 1)
324
				.append("dealRankPoints", new Document("$gt", 0)));
23793 tejbeer 325
		Document ob = new Document("$group",
24031 amit.gupta 326
				new Document().append("_id",
327
						new Document().append("subCategoryId", "$subCategoryId").append("subCategory", "$subCategory"))
328
						.append("count", new Document("$sum", 1)));
23793 tejbeer 329
		List<Document> pipeline = Arrays.asList(object, ob);
330
		AggregateIterable<Document> cursor = collection.aggregate(pipeline);
331
 
332
		List<Document> resultDocuments = new ArrayList<>();
333
		for (Document dbo : cursor) {
334
			System.out.println(dbo.toString());
335
			LOGGER.info("categories" + dbo.toString());
336
			resultDocuments.add(dbo);
337
		}
338
		return resultDocuments;
339
	}
340
 
22496 amit.gupta 341
	public boolean saveRetailerInterestOnFofo(RetailerFofoInterest retailerInterest) {
342
		DB db = mongoClient.getDB(FOFO_DB);
343
		Gson gs = new Gson();
344
		DBCollection fofoInterestCollection = db.getCollection(RETAILER_FOFO_INTEREST);
345
		DBObject dbObject = (DBObject) JSON.parse(gs.toJson(retailerInterest));
346
		fofoInterestCollection.save(dbObject);
347
		return true;
348
	}
23793 tejbeer 349
 
22496 amit.gupta 350
	public boolean hasRetailerShownInterest(int userId) {
351
		DB db = mongoClient.getDB(FOFO_DB);
352
		BasicDBObject filter = new BasicDBObject();
23793 tejbeer 353
		filter.append("userId", userId);
22496 amit.gupta 354
		DBCollection fofoInterestCollection = db.getCollection(RETAILER_FOFO_INTEREST);
23793 tejbeer 355
		return fofoInterestCollection.findOne(filter) != null;
22496 amit.gupta 356
	}
24031 amit.gupta 357
 
24011 tejbeer 358
	public void persistNotificationCmpInfo(NotificationCampaigns ff) {
24383 amit.gupta 359
		DB db = mongoClient.getDB(USER_DB);
24011 tejbeer 360
		DBCollection collection = db.getCollection(NOTIFICATION_CAMPAIGNS);
361
		if (ff.get_id() == 0) {
362
			BasicDBObject orderBy = new BasicDBObject();
363
			orderBy.put("_id", -1);
364
			DBCursor cursor = collection.find().sort(orderBy).limit(1);
365
			long id = 1l;
366
			while (cursor.hasNext()) {
367
				Gson gson = new Gson();
24031 amit.gupta 368
				NotificationCampaigns existingFofo = gson.fromJson(cursor.next().toString(),
369
						NotificationCampaigns.class);
24011 tejbeer 370
				id = existingFofo.get_id() + 1;
371
			}
372
			ff.set_id(id);
373
		}
374
		Gson gs = new Gson();
375
		DBObject dbObject = (DBObject) JSON.parse(gs.toJson(ff));
376
		collection.save(dbObject);
377
	}
22097 kshitij.so 378
 
21545 ashik.ali 379
}