Subversion Repositories SmartDukaan

Rev

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