Subversion Repositories SmartDukaan

Rev

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