Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
26588 tejbeer 1
package com.spice.profitmandi.dao.model;
2
 
3
import java.time.LocalDateTime;
4
import java.util.List;
5
 
29785 amit.gupta 6
import org.apache.logging.log4j.LogManager;
7
import org.apache.logging.log4j.Logger;
28541 amit.gupta 8
 
28019 amit.gupta 9
import com.spice.profitmandi.dao.enumuration.catalog.AchievementType;
29785 amit.gupta 10
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
27878 amit.gupta 11
import com.spice.profitmandi.dao.enumuration.catalog.OfferSchemeType;
12
import com.spice.profitmandi.service.offers.ItemCriteria;
13
import com.spice.profitmandi.service.offers.PartnerCriteria;
29785 amit.gupta 14
import com.spice.profitmandi.service.offers.PayoutSlab;
26588 tejbeer 15
 
16
public class CreateOfferRequest {
27360 tejbeer 17
	private int id;
27878 amit.gupta 18
	private boolean active;
29795 amit.gupta 19
	private boolean baseCriteria;
26588 tejbeer 20
	private String name;
21
	private LocalDateTime startDate;
22
	private LocalDateTime endDate;
27878 amit.gupta 23
	private String offerNotes;
24
	private String terms;
27918 amit.gupta 25
	private AchievementType targetType;
26
	private AchievementType payoutType;
27878 amit.gupta 27
	private String activationBrands;
28
	private OfferSchemeType schemeType;
29
	private double sellinPercentage;
30
	private double brandShareTerms;
31
	private ItemCriteria itemCriteria;
32
	private String itemCriteriaString;
33
	private LocalDateTime createdOn;
34
	private List<TargetSlab> targetSlabs;
35
	private PartnerCriteria partnerCriteria;
36
	private String partnerCriteriaString;
37
 
29785 amit.gupta 38
	private static final Logger LOGGER = LogManager.getLogger(CreateOfferRequest.class);
39
 
27878 amit.gupta 40
	public int getEligibleSale() {
41
		return eligibleSale;
26694 tejbeer 42
	}
29785 amit.gupta 43
 
27878 amit.gupta 44
	public void setEligibleSale(int eligibleSale) {
45
		this.eligibleSale = eligibleSale;
27353 tejbeer 46
	}
47
 
29785 amit.gupta 48
	private void addAchievementPayoutString(StringBuffer sb, ItemCriteriaPayout itemCriteriaPayout,
49
			PayoutSlab payoutSlab) {
50
		this.addAchievementString(sb, itemCriteriaPayout);
51
		sb.append(", Get ");
52
		this.addPayoutString(sb, itemCriteriaPayout, payoutSlab);
53
	}
54
 
55
	private void addAchievementString(StringBuffer sb, ItemCriteriaPayout itemCriteriaPayout) {
56
		if (this.getPayoutType().equals(AchievementType.QUANTITY)) {
57
			sb.append(itemCriteriaPayout.getShortValue()).append(" more pc(s)");
58
		} else if (this.getPayoutType().equals(AchievementType.VALUE)) {
59
			sb.append("items worth Rs.").append("<span class=\"currency\">").append(itemCriteriaPayout.getShortValue())
60
					.append("</span>");
61
		}
62
	}
63
 
64
	private void addPayoutString(StringBuffer sb, ItemCriteriaPayout itemCriteriaPayout, PayoutSlab payoutSlab) {
65
		if (itemCriteriaPayout.getAmountType().equals(AmountType.PERCENTAGE)) {
66
			sb.append(payoutSlab.getPayoutAmount()).append("% of total sale value");
67
		} else if (itemCriteriaPayout.getAmountType().equals(AmountType.FIXED)) {
68
			sb.append("Rs.").append("<span class=\"currency\">").append(payoutSlab.getPayoutAmount())
69
					.append("</span> per pc");
70
		} else {
71
			sb.append("flat Rs.").append("<span class=\"currency\">").append(payoutSlab.getPayoutAmount())
72
					.append("</span>");
73
		}
74
	}
75
 
28028 amit.gupta 76
	public String getDashboardHtml() {
29785 amit.gupta 77
		LOGGER.info("getDahsboard html --- {}", this.getId());
78
		String activityString = null;
79
		if (this.getSchemeType().equals(OfferSchemeType.ACTIVATION)) {
80
			activityString = "Activate";
81
		} else if (this.getSchemeType().equals(OfferSchemeType.SELLIN)) {
82
			activityString = "Purchase";
83
		} else {
84
			activityString = "Sell";
85
		}
28028 amit.gupta 86
		StringBuffer sb = new StringBuffer();
29785 amit.gupta 87
		int i=0;
88
		for (ItemCriteriaPayout itemCriteriaPayout : this.getTargetSlabs().get(0).getItemCriteriaPayouts()) {
89
			LOGGER.info("itemCriteriaPayout {}", itemCriteriaPayout);
90
			PayoutSlab currentSlab = itemCriteriaPayout.getCurrentSlab();
91
			PayoutSlab nextSlab = itemCriteriaPayout.getNextSlab();
92
			if(i>0) {
93
				sb.append("<br>");
28153 amit.gupta 94
			}
29785 amit.gupta 95
			i++;
96
			if (currentSlab == null) {
97
				sb.append(activityString).append(" ");
98
				this.addAchievementPayoutString(sb, itemCriteriaPayout, nextSlab);
28028 amit.gupta 99
			} else {
29785 amit.gupta 100
				if (itemCriteriaPayout.getNextSlab() != null) {
101
					sb.append("Congratulations, you have qualified to get ");
102
					this.addPayoutString(sb, itemCriteriaPayout, currentSlab);
103
					sb.append(". ");
104
					sb.append(activityString).append(" ");
105
					this.addAchievementPayoutString(sb, itemCriteriaPayout, nextSlab);
28541 amit.gupta 106
				} else {
29785 amit.gupta 107
					sb.append("Congratulations for achieving the highest slab,");
108
					sb.append(" you have qualified to get ");
109
					this.addPayoutString(sb, itemCriteriaPayout, currentSlab);
110
					sb.append(", keep it up!!");
28541 amit.gupta 111
				}
28028 amit.gupta 112
			}
113
		}
114
		return sb.toString();
29785 amit.gupta 115
 
28028 amit.gupta 116
	}
28967 amit.gupta 117
 
29795 amit.gupta 118
 
28967 amit.gupta 119
 
29795 amit.gupta 120
	public boolean isBaseCriteria() {
121
		return baseCriteria;
28019 amit.gupta 122
	}
28967 amit.gupta 123
 
29795 amit.gupta 124
	public void setBaseCriteria(boolean baseCriteria) {
125
		this.baseCriteria = baseCriteria;
28019 amit.gupta 126
	}
127
 
29795 amit.gupta 128
 
129
 
27878 amit.gupta 130
	private int eligibleSale;
131
	private TargetSlab nextTargetSlab;
132
	private TargetSlab currentTargetSlab;
28153 amit.gupta 133
	private String currentTarget;
134
	private String nextTarget;
27353 tejbeer 135
 
28153 amit.gupta 136
	public String getCurrentTarget() {
137
		return currentTarget;
138
	}
28967 amit.gupta 139
 
28153 amit.gupta 140
	public void setCurrentTarget(String currentTarget) {
141
		this.currentTarget = currentTarget;
142
	}
28967 amit.gupta 143
 
28153 amit.gupta 144
	public String getNextTarget() {
145
		return nextTarget;
146
	}
28967 amit.gupta 147
 
28153 amit.gupta 148
	public void setNextTarget(String nextTarget) {
149
		this.nextTarget = nextTarget;
150
	}
28967 amit.gupta 151
 
27878 amit.gupta 152
	public TargetSlab getNextTargetSlab() {
153
		return nextTargetSlab;
27353 tejbeer 154
	}
28967 amit.gupta 155
 
27878 amit.gupta 156
	public void setNextTargetSlab(TargetSlab nextTargetSlab) {
157
		this.nextTargetSlab = nextTargetSlab;
26694 tejbeer 158
	}
28967 amit.gupta 159
 
27878 amit.gupta 160
	public TargetSlab getCurrentTargetSlab() {
161
		return currentTargetSlab;
26694 tejbeer 162
	}
28967 amit.gupta 163
 
27878 amit.gupta 164
	public void setCurrentTargetSlab(TargetSlab currentTargetSlab) {
165
		this.currentTargetSlab = currentTargetSlab;
26694 tejbeer 166
	}
167
 
27878 amit.gupta 168
	public boolean isActive() {
169
		return active;
26694 tejbeer 170
	}
171
 
27878 amit.gupta 172
	public void setActive(boolean active) {
173
		this.active = active;
26694 tejbeer 174
	}
175
 
27878 amit.gupta 176
	public LocalDateTime getCreatedOn() {
177
		return createdOn;
26694 tejbeer 178
	}
179
 
27918 amit.gupta 180
	public AchievementType getPayoutType() {
181
		return payoutType;
182
	}
28967 amit.gupta 183
 
27918 amit.gupta 184
	public void setPayoutType(AchievementType payoutType) {
185
		this.payoutType = payoutType;
186
	}
28967 amit.gupta 187
 
27878 amit.gupta 188
	public String getActivationBrands() {
189
		return activationBrands;
26694 tejbeer 190
	}
28967 amit.gupta 191
 
27878 amit.gupta 192
	public void setActivationBrands(String activationBrands) {
193
		this.activationBrands = activationBrands;
26674 tejbeer 194
	}
28967 amit.gupta 195
 
27878 amit.gupta 196
	public void setCreatedOn(LocalDateTime createdOn) {
197
		this.createdOn = createdOn;
198
	}
26674 tejbeer 199
 
27878 amit.gupta 200
	public String getItemCriteriaString() {
201
		return itemCriteriaString;
26674 tejbeer 202
	}
203
 
27878 amit.gupta 204
	public String getPartnerCriteriaString() {
205
		return partnerCriteriaString;
26674 tejbeer 206
	}
207
 
27878 amit.gupta 208
	public void setPartnerCriteriaString(String partnerCriteriaString) {
209
		this.partnerCriteriaString = partnerCriteriaString;
26674 tejbeer 210
	}
211
 
27878 amit.gupta 212
	public PartnerCriteria getPartnerCriteria() {
213
		return partnerCriteria;
26674 tejbeer 214
	}
215
 
27878 amit.gupta 216
	public void setPartnerCriteria(PartnerCriteria partnerCriteria) {
217
		this.partnerCriteria = partnerCriteria;
26588 tejbeer 218
	}
219
 
27878 amit.gupta 220
	public ItemCriteria getItemCriteria() {
221
		return itemCriteria;
26588 tejbeer 222
	}
223
 
27878 amit.gupta 224
	public void setItemCriteria(ItemCriteria itemCriteria) {
225
		this.itemCriteria = itemCriteria;
26588 tejbeer 226
	}
227
 
27878 amit.gupta 228
	public double getBrandShareTerms() {
229
		return brandShareTerms;
26588 tejbeer 230
	}
231
 
27878 amit.gupta 232
	public void setBrandShareTerms(double brandShareTerms) {
233
		this.brandShareTerms = brandShareTerms;
26588 tejbeer 234
	}
235
 
27878 amit.gupta 236
	public List<TargetSlab> getTargetSlabs() {
237
		return targetSlabs;
26588 tejbeer 238
	}
239
 
27878 amit.gupta 240
	public void setTargetSlabs(List<TargetSlab> targetSlabs) {
241
		this.targetSlabs = targetSlabs;
26588 tejbeer 242
	}
243
 
27878 amit.gupta 244
	public int getId() {
245
		return id;
26588 tejbeer 246
	}
247
 
27878 amit.gupta 248
	public void setId(int id) {
249
		this.id = id;
26588 tejbeer 250
	}
251
 
252
	public String getName() {
253
		return name;
254
	}
255
 
256
	public void setName(String name) {
257
		this.name = name;
258
	}
259
 
27878 amit.gupta 260
	public LocalDateTime getStartDate() {
261
		return startDate;
26588 tejbeer 262
	}
263
 
27878 amit.gupta 264
	public void setStartDate(LocalDateTime startDate) {
265
		this.startDate = startDate;
26588 tejbeer 266
	}
267
 
27878 amit.gupta 268
	public LocalDateTime getEndDate() {
269
		return endDate;
26588 tejbeer 270
	}
271
 
27878 amit.gupta 272
	public void setEndDate(LocalDateTime endDate) {
273
		this.endDate = endDate;
26588 tejbeer 274
	}
275
 
27918 amit.gupta 276
	public AchievementType getTargetType() {
27878 amit.gupta 277
		return targetType;
26588 tejbeer 278
	}
279
 
27918 amit.gupta 280
	public void setTargetType(AchievementType targetType) {
27878 amit.gupta 281
		this.targetType = targetType;
26588 tejbeer 282
	}
283
 
29795 amit.gupta 284
	@Override
285
	public String toString() {
286
		return "CreateOfferRequest [id=" + id + ", active=" + active + ", baseCriteria=" + baseCriteria + ", name="
287
				+ name + ", startDate=" + startDate + ", endDate=" + endDate + ", offerNotes=" + offerNotes + ", terms="
288
				+ terms + ", targetType=" + targetType + ", payoutType=" + payoutType + ", activationBrands="
289
				+ activationBrands + ", schemeType=" + schemeType + ", sellinPercentage=" + sellinPercentage
290
				+ ", brandShareTerms=" + brandShareTerms + ", itemCriteria=" + itemCriteria + ", itemCriteriaString="
291
				+ itemCriteriaString + ", createdOn=" + createdOn + ", targetSlabs=" + targetSlabs
292
				+ ", partnerCriteria=" + partnerCriteria + ", partnerCriteriaString=" + partnerCriteriaString
293
				+ ", eligibleSale=" + eligibleSale + ", nextTargetSlab=" + nextTargetSlab + ", currentTargetSlab="
294
				+ currentTargetSlab + ", currentTarget=" + currentTarget + ", nextTarget=" + nextTarget + "]";
295
	}
296
 
27878 amit.gupta 297
	public OfferSchemeType getSchemeType() {
298
		return schemeType;
26588 tejbeer 299
	}
300
 
27878 amit.gupta 301
	public void setSchemeType(OfferSchemeType schemeType) {
302
		this.schemeType = schemeType;
26588 tejbeer 303
	}
304
 
27878 amit.gupta 305
	public double getSellinPercentage() {
306
		return sellinPercentage;
26588 tejbeer 307
	}
308
 
27878 amit.gupta 309
	public void setSellinPercentage(double sellinPercentage) {
310
		this.sellinPercentage = sellinPercentage;
26588 tejbeer 311
	}
312
 
27878 amit.gupta 313
	public String getOfferNotes() {
314
		return offerNotes;
26588 tejbeer 315
	}
316
 
27878 amit.gupta 317
	public void setOfferNotes(String offerNotes) {
318
		this.offerNotes = offerNotes;
26588 tejbeer 319
	}
320
 
27878 amit.gupta 321
	public String getTerms() {
322
		return terms;
26588 tejbeer 323
	}
324
 
27878 amit.gupta 325
	public void setTerms(String terms) {
326
		this.terms = terms;
26588 tejbeer 327
	}
328
 
27878 amit.gupta 329
	public void setItemCriteriaString(String itemCriteriaString) {
330
		this.itemCriteriaString = itemCriteriaString;
26588 tejbeer 331
	}
332
 
27878 amit.gupta 333
	@Override
334
	public boolean equals(Object obj) {
335
		if (this == obj)
336
			return true;
337
		if (obj == null)
338
			return false;
339
		if (getClass() != obj.getClass())
340
			return false;
341
		CreateOfferRequest other = (CreateOfferRequest) obj;
342
		if (activationBrands == null) {
343
			if (other.activationBrands != null)
344
				return false;
345
		} else if (!activationBrands.equals(other.activationBrands))
346
			return false;
347
		if (active != other.active)
348
			return false;
349
		if (Double.doubleToLongBits(brandShareTerms) != Double.doubleToLongBits(other.brandShareTerms))
350
			return false;
351
		if (createdOn == null) {
352
			if (other.createdOn != null)
353
				return false;
354
		} else if (!createdOn.equals(other.createdOn))
355
			return false;
356
		if (currentTargetSlab == null) {
357
			if (other.currentTargetSlab != null)
358
				return false;
359
		} else if (!currentTargetSlab.equals(other.currentTargetSlab))
360
			return false;
361
		if (eligibleSale != other.eligibleSale)
362
			return false;
363
		if (endDate == null) {
364
			if (other.endDate != null)
365
				return false;
366
		} else if (!endDate.equals(other.endDate))
367
			return false;
368
		if (id != other.id)
369
			return false;
29795 amit.gupta 370
		if (baseCriteria != other.baseCriteria)
28019 amit.gupta 371
			return false;
27878 amit.gupta 372
		if (itemCriteria == null) {
373
			if (other.itemCriteria != null)
374
				return false;
375
		} else if (!itemCriteria.equals(other.itemCriteria))
376
			return false;
377
		if (itemCriteriaString == null) {
378
			if (other.itemCriteriaString != null)
379
				return false;
380
		} else if (!itemCriteriaString.equals(other.itemCriteriaString))
381
			return false;
382
		if (name == null) {
383
			if (other.name != null)
384
				return false;
385
		} else if (!name.equals(other.name))
386
			return false;
387
		if (nextTargetSlab == null) {
388
			if (other.nextTargetSlab != null)
389
				return false;
390
		} else if (!nextTargetSlab.equals(other.nextTargetSlab))
391
			return false;
392
		if (offerNotes == null) {
393
			if (other.offerNotes != null)
394
				return false;
395
		} else if (!offerNotes.equals(other.offerNotes))
396
			return false;
397
		if (partnerCriteria == null) {
398
			if (other.partnerCriteria != null)
399
				return false;
400
		} else if (!partnerCriteria.equals(other.partnerCriteria))
401
			return false;
402
		if (partnerCriteriaString == null) {
403
			if (other.partnerCriteriaString != null)
404
				return false;
405
		} else if (!partnerCriteriaString.equals(other.partnerCriteriaString))
406
			return false;
27918 amit.gupta 407
		if (payoutType != other.payoutType)
408
			return false;
27878 amit.gupta 409
		if (schemeType != other.schemeType)
410
			return false;
411
		if (Double.doubleToLongBits(sellinPercentage) != Double.doubleToLongBits(other.sellinPercentage))
412
			return false;
413
		if (startDate == null) {
414
			if (other.startDate != null)
415
				return false;
416
		} else if (!startDate.equals(other.startDate))
417
			return false;
418
		if (targetSlabs == null) {
419
			if (other.targetSlabs != null)
420
				return false;
421
		} else if (!targetSlabs.equals(other.targetSlabs))
422
			return false;
423
		if (targetType != other.targetType)
424
			return false;
425
		if (terms == null) {
426
			if (other.terms != null)
427
				return false;
428
		} else if (!terms.equals(other.terms))
429
			return false;
430
		return true;
26588 tejbeer 431
	}
432
 
27878 amit.gupta 433
	@Override
434
	public int hashCode() {
435
		final int prime = 31;
436
		int result = 1;
437
		result = prime * result + ((activationBrands == null) ? 0 : activationBrands.hashCode());
438
		result = prime * result + (active ? 1231 : 1237);
439
		long temp;
440
		temp = Double.doubleToLongBits(brandShareTerms);
441
		result = prime * result + (int) (temp ^ (temp >>> 32));
442
		result = prime * result + ((createdOn == null) ? 0 : createdOn.hashCode());
443
		result = prime * result + ((currentTargetSlab == null) ? 0 : currentTargetSlab.hashCode());
444
		result = prime * result + eligibleSale;
445
		result = prime * result + ((endDate == null) ? 0 : endDate.hashCode());
446
		result = prime * result + id;
29795 amit.gupta 447
		result = prime * result + (baseCriteria ? 1231 : 1237);
27878 amit.gupta 448
		result = prime * result + ((itemCriteria == null) ? 0 : itemCriteria.hashCode());
449
		result = prime * result + ((itemCriteriaString == null) ? 0 : itemCriteriaString.hashCode());
450
		result = prime * result + ((name == null) ? 0 : name.hashCode());
451
		result = prime * result + ((offerNotes == null) ? 0 : offerNotes.hashCode());
452
		result = prime * result + ((partnerCriteria == null) ? 0 : partnerCriteria.hashCode());
27918 amit.gupta 453
		result = prime * result + ((payoutType == null) ? 0 : payoutType.hashCode());
27878 amit.gupta 454
		result = prime * result + ((schemeType == null) ? 0 : schemeType.hashCode());
455
		temp = Double.doubleToLongBits(sellinPercentage);
456
		result = prime * result + (int) (temp ^ (temp >>> 32));
457
		result = prime * result + ((startDate == null) ? 0 : startDate.hashCode());
458
		result = prime * result + ((targetSlabs == null) ? 0 : targetSlabs.hashCode());
459
		result = prime * result + ((targetType == null) ? 0 : targetType.hashCode());
460
		result = prime * result + ((terms == null) ? 0 : terms.hashCode());
461
		return result;
26588 tejbeer 462
	}
463
}