Subversion Repositories SmartDukaan

Rev

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