Rev 30651 | Rev 31190 | Go to most recent revision | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.spice.profitmandi.dao.model;import com.spice.profitmandi.common.util.FormattingUtils;import com.spice.profitmandi.dao.enumuration.catalog.AchievementType;import com.spice.profitmandi.dao.enumuration.catalog.AmountType;import com.spice.profitmandi.dao.enumuration.catalog.OfferSchemeType;import com.spice.profitmandi.service.offers.ItemCriteria;import com.spice.profitmandi.service.offers.PartnerCriteria;import com.spice.profitmandi.service.offers.PayoutSlab;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import java.time.LocalDateTime;import java.util.List;public class CreateOfferRequest {private int id;private boolean active;private boolean baseCriteria;private String name;private LocalDateTime startDate;private LocalDateTime endDate;private String offerNotes;private String terms;private AchievementType targetType;private AchievementType payoutType;private String activationBrands;private OfferSchemeType schemeType;private double sellinPercentage;private double brandShareTerms;private ItemCriteria itemCriteria;private String itemCriteriaString;private LocalDateTime createdOn;private List<TargetSlab> targetSlabs;private PartnerCriteria partnerCriteria;private String partnerCriteriaString;private static final Logger LOGGER = LogManager.getLogger(CreateOfferRequest.class);public int getEligibleSale() {return eligibleSale;}public void setEligibleSale(int eligibleSale) {this.eligibleSale = eligibleSale;}public String getAnyItemCriteriaString() {return this.getItemCriteriaString().replaceAll("All", "");}private void addAchievementPayoutString(StringBuffer sb, ItemCriteriaPayout itemCriteriaPayout,PayoutSlab payoutSlab) {this.addAchievementString(sb, itemCriteriaPayout);sb.append(", Get ");this.addPayoutString(sb, itemCriteriaPayout, payoutSlab);}private void addAchievementString(StringBuffer sb, ItemCriteriaPayout itemCriteriaPayout) {if (this.getPayoutType().equals(AchievementType.QUANTITY)) {sb.append(itemCriteriaPayout.getShortValue()).append(" more ");if(this.baseCriteria) {sb.append("of ").append(this.getAnyItemCriteriaString());} else {sb.append("pc(s) ");}} else if (this.getPayoutType().equals(AchievementType.VALUE)) {if(this.baseCriteria) {sb.append(this.getAnyItemCriteriaString());} else {sb.append("select models worth");}sb.append(" of Rs.").append("<span class=\"currency\">").append(itemCriteriaPayout.getShortValue()).append("</span>");}}private void addPayoutString(StringBuffer sb, ItemCriteriaPayout itemCriteriaPayout, PayoutSlab payoutSlab) {if (itemCriteriaPayout.getAmountType().equals(AmountType.PERCENTAGE)) {sb.append(payoutSlab.getPayoutAmount()).append("% of sale of select models");} else if (itemCriteriaPayout.getAmountType().equals(AmountType.FIXED)) {sb.append("Rs.").append("<span class=\"currency\">").append(payoutSlab.getPayoutAmount()).append("</span> per pc on select models");} else {sb.append("flat Rs.").append("<span class=\"currency\">").append(payoutSlab.getPayoutAmount()).append("</span>");}}public String getDashboardHtml() {LOGGER.info("getDahsboard html --- {}", this.getId());String activityString = null;if (this.getSchemeType().equals(OfferSchemeType.ACTIVATION)) {activityString = "Activate";} else if (this.getSchemeType().equals(OfferSchemeType.SELLIN)) {activityString = "Purchase";} else {activityString = "Sell";}StringBuffer sb = new StringBuffer();int i=0;for (ItemCriteriaPayout itemCriteriaPayout : this.getTargetSlabs().get(0).getItemCriteriaPayouts()) {LOGGER.info("itemCriteriaPayout {}", itemCriteriaPayout);PayoutSlab currentSlab = itemCriteriaPayout.getCurrentSlab();PayoutSlab nextSlab = itemCriteriaPayout.getNextSlab();if(i>0) {sb.append("<br>");}i++;if (currentSlab == null) {sb.append(activityString).append(" ");this.addAchievementPayoutString(sb, itemCriteriaPayout, nextSlab);} else {if (itemCriteriaPayout.getNextSlab() != null) {sb.append("Congratulations, you have qualified to get ");this.addPayoutString(sb, itemCriteriaPayout, currentSlab);sb.append(". ");sb.append(activityString).append(" ");this.addAchievementPayoutString(sb, itemCriteriaPayout, nextSlab);} else {sb.append("Congratulations for achieving the highest slab,");sb.append(" you have qualified to get ");this.addPayoutString(sb, itemCriteriaPayout, currentSlab);sb.append(", keep it up!!");}}}return sb.toString();}public boolean isBaseCriteria() {return baseCriteria;}public void setBaseCriteria(boolean baseCriteria) {this.baseCriteria = baseCriteria;}private int eligibleSale;private TargetSlab nextTargetSlab;private TargetSlab currentTargetSlab;private String currentTarget;private String nextTarget;public String getCurrentTarget() {return currentTarget;}public void setCurrentTarget(String currentTarget) {this.currentTarget = currentTarget;}public String getNextTarget() {return nextTarget;}public void setNextTarget(String nextTarget) {this.nextTarget = nextTarget;}public TargetSlab getNextTargetSlab() {return nextTargetSlab;}public void setNextTargetSlab(TargetSlab nextTargetSlab) {this.nextTargetSlab = nextTargetSlab;}public TargetSlab getCurrentTargetSlab() {return currentTargetSlab;}public void setCurrentTargetSlab(TargetSlab currentTargetSlab) {this.currentTargetSlab = currentTargetSlab;}public boolean isActive() {return active;}public void setActive(boolean active) {this.active = active;}public LocalDateTime getCreatedOn() {return createdOn;}public AchievementType getPayoutType() {return payoutType;}public void setPayoutType(AchievementType payoutType) {this.payoutType = payoutType;}public String getActivationBrands() {return activationBrands;}public void setActivationBrands(String activationBrands) {this.activationBrands = activationBrands;}public void setCreatedOn(LocalDateTime createdOn) {this.createdOn = createdOn;}public String getItemCriteriaString() {return itemCriteriaString;}public String getPartnerCriteriaString() {return partnerCriteriaString;}public void setPartnerCriteriaString(String partnerCriteriaString) {this.partnerCriteriaString = partnerCriteriaString;}public PartnerCriteria getPartnerCriteria() {return partnerCriteria;}public void setPartnerCriteria(PartnerCriteria partnerCriteria) {this.partnerCriteria = partnerCriteria;}public ItemCriteria getItemCriteria() {return itemCriteria;}public void setItemCriteria(ItemCriteria itemCriteria) {this.itemCriteria = itemCriteria;}public double getBrandShareTerms() {return brandShareTerms;}public void setBrandShareTerms(double brandShareTerms) {this.brandShareTerms = brandShareTerms;}public List<TargetSlab> getTargetSlabs() {return targetSlabs;}public void setTargetSlabs(List<TargetSlab> targetSlabs) {this.targetSlabs = targetSlabs;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public LocalDateTime getStartDate() {return startDate;}public void setStartDate(LocalDateTime startDate) {this.startDate = startDate;}public LocalDateTime getEndDate() {return endDate;}public void setEndDate(LocalDateTime endDate) {this.endDate = endDate;}public AchievementType getTargetType() {return targetType;}public String getTitle() {return String.join(" ", this.getName(), ", ", "From", FormattingUtils.formatDate(this.startDate), "to", FormattingUtils.formatDate(this.endDate), String.valueOf(this.id));}public String getDescription() {return String.join(" ", this.getName() + ",", "From", FormattingUtils.formatDate(this.startDate), "to", FormattingUtils.formatDate(this.endDate));}public void setTargetType(AchievementType targetType) {this.targetType = targetType;}@Overridepublic String toString() {return "CreateOfferRequest [id=" + id + ", active=" + active + ", baseCriteria=" + baseCriteria + ", name="+ name + ", startDate=" + startDate + ", endDate=" + endDate + ", offerNotes=" + offerNotes + ", terms="+ terms + ", targetType=" + targetType + ", payoutType=" + payoutType + ", activationBrands="+ activationBrands + ", schemeType=" + schemeType + ", sellinPercentage=" + sellinPercentage+ ", brandShareTerms=" + brandShareTerms + ", itemCriteria=" + itemCriteria + ", itemCriteriaString="+ itemCriteriaString + ", createdOn=" + createdOn + ", targetSlabs=" + targetSlabs+ ", partnerCriteria=" + partnerCriteria + ", partnerCriteriaString=" + partnerCriteriaString+ ", eligibleSale=" + eligibleSale + ", nextTargetSlab=" + nextTargetSlab + ", currentTargetSlab="+ currentTargetSlab + ", currentTarget=" + currentTarget + ", nextTarget=" + nextTarget + "]";}public OfferSchemeType getSchemeType() {return schemeType;}public void setSchemeType(OfferSchemeType schemeType) {this.schemeType = schemeType;}public double getSellinPercentage() {return sellinPercentage;}public void setSellinPercentage(double sellinPercentage) {this.sellinPercentage = sellinPercentage;}public String getOfferNotes() {return offerNotes;}public void setOfferNotes(String offerNotes) {this.offerNotes = offerNotes;}public String getTerms() {return terms;}public void setTerms(String terms) {this.terms = terms;}public void setItemCriteriaString(String itemCriteriaString) {this.itemCriteriaString = itemCriteriaString;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;CreateOfferRequest other = (CreateOfferRequest) obj;if (activationBrands == null) {if (other.activationBrands != null)return false;} else if (!activationBrands.equals(other.activationBrands))return false;if (active != other.active)return false;if (Double.doubleToLongBits(brandShareTerms) != Double.doubleToLongBits(other.brandShareTerms))return false;if (createdOn == null) {if (other.createdOn != null)return false;} else if (!createdOn.equals(other.createdOn))return false;if (currentTargetSlab == null) {if (other.currentTargetSlab != null)return false;} else if (!currentTargetSlab.equals(other.currentTargetSlab))return false;if (eligibleSale != other.eligibleSale)return false;if (endDate == null) {if (other.endDate != null)return false;} else if (!endDate.equals(other.endDate))return false;if (id != other.id)return false;if (baseCriteria != other.baseCriteria)return false;if (itemCriteria == null) {if (other.itemCriteria != null)return false;} else if (!itemCriteria.equals(other.itemCriteria))return false;if (itemCriteriaString == null) {if (other.itemCriteriaString != null)return false;} else if (!itemCriteriaString.equals(other.itemCriteriaString))return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;if (nextTargetSlab == null) {if (other.nextTargetSlab != null)return false;} else if (!nextTargetSlab.equals(other.nextTargetSlab))return false;if (offerNotes == null) {if (other.offerNotes != null)return false;} else if (!offerNotes.equals(other.offerNotes))return false;if (partnerCriteria == null) {if (other.partnerCriteria != null)return false;} else if (!partnerCriteria.equals(other.partnerCriteria))return false;if (partnerCriteriaString == null) {if (other.partnerCriteriaString != null)return false;} else if (!partnerCriteriaString.equals(other.partnerCriteriaString))return false;if (payoutType != other.payoutType)return false;if (schemeType != other.schemeType)return false;if (Double.doubleToLongBits(sellinPercentage) != Double.doubleToLongBits(other.sellinPercentage))return false;if (startDate == null) {if (other.startDate != null)return false;} else if (!startDate.equals(other.startDate))return false;if (targetSlabs == null) {if (other.targetSlabs != null)return false;} else if (!targetSlabs.equals(other.targetSlabs))return false;if (targetType != other.targetType)return false;if (terms == null) {if (other.terms != null)return false;} else if (!terms.equals(other.terms))return false;return true;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((activationBrands == null) ? 0 : activationBrands.hashCode());result = prime * result + (active ? 1231 : 1237);long temp;temp = Double.doubleToLongBits(brandShareTerms);result = prime * result + (int) (temp ^ (temp >>> 32));result = prime * result + ((createdOn == null) ? 0 : createdOn.hashCode());result = prime * result + ((currentTargetSlab == null) ? 0 : currentTargetSlab.hashCode());result = prime * result + eligibleSale;result = prime * result + ((endDate == null) ? 0 : endDate.hashCode());result = prime * result + id;result = prime * result + (baseCriteria ? 1231 : 1237);result = prime * result + ((itemCriteria == null) ? 0 : itemCriteria.hashCode());result = prime * result + ((itemCriteriaString == null) ? 0 : itemCriteriaString.hashCode());result = prime * result + ((name == null) ? 0 : name.hashCode());result = prime * result + ((offerNotes == null) ? 0 : offerNotes.hashCode());result = prime * result + ((partnerCriteria == null) ? 0 : partnerCriteria.hashCode());result = prime * result + ((payoutType == null) ? 0 : payoutType.hashCode());result = prime * result + ((schemeType == null) ? 0 : schemeType.hashCode());temp = Double.doubleToLongBits(sellinPercentage);result = prime * result + (int) (temp ^ (temp >>> 32));result = prime * result + ((startDate == null) ? 0 : startDate.hashCode());result = prime * result + ((targetSlabs == null) ? 0 : targetSlabs.hashCode());result = prime * result + ((targetType == null) ? 0 : targetType.hashCode());result = prime * result + ((terms == null) ? 0 : terms.hashCode());return result;}public boolean isWithinRange(LocalDateTime testDate) {return !(testDate.isBefore(startDate) || testDate.isAfter(endDate));}}