Subversion Repositories SmartDukaan

Rev

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