Subversion Repositories SmartDukaan

Rev

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