Subversion Repositories SmartDukaan

Rev

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