Subversion Repositories SmartDukaan

Rev

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