Subversion Repositories SmartDukaan

Rev

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