Subversion Repositories SmartDukaan

Rev

Rev 30454 | Rev 30896 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
22600 ashik.ali 1
package com.spice.profitmandi.dao.entity.catalog;
2
 
30121 amit.gupta 3
import com.spice.profitmandi.dao.convertor.LocalDateTimeAttributeConverter;
4
import com.spice.profitmandi.dao.entity.fofo.PartnerType;
5
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
6
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
7
 
8
import javax.persistence.*;
22600 ashik.ali 9
import java.io.Serializable;
10
import java.time.LocalDateTime;
22859 ashik.ali 11
import java.time.format.DateTimeFormatter;
30454 amit.gupta 12
import java.util.*;
22600 ashik.ali 13
 
14
/**
15
 * This class basically contains scheme details
16
 * 
17
 * @author ashikali
18
 *
19
 */
20
@Entity
25503 amit.gupta 21
@Table(name = "catalog.scheme", schema = "catalog")
22
public class Scheme implements Serializable {
23
 
24
	public PartnerType getPartnerType() {
25
		return partnerType;
26
	}
27
 
28
	public void setPartnerType(PartnerType partnerType) {
29
		this.partnerType = partnerType;
30
	}
31
 
22600 ashik.ali 32
	private static final long serialVersionUID = 1L;
25503 amit.gupta 33
 
22600 ashik.ali 34
	public Scheme() {
35
	}
25503 amit.gupta 36
 
22600 ashik.ali 37
	@Id
25503 amit.gupta 38
	@Column(name = "id")
22600 ashik.ali 39
	@GeneratedValue(strategy = GenerationType.IDENTITY)
40
	private int id;
25503 amit.gupta 41
 
22653 ashik.ali 42
	@Column(name = "name")
43
	private String name;
25503 amit.gupta 44
 
22653 ashik.ali 45
	@Column(name = "description")
46
	private String description;
25503 amit.gupta 47
 
22653 ashik.ali 48
	@Column(name = "type")
23297 ashik.ali 49
	@Enumerated(EnumType.STRING)
22653 ashik.ali 50
	private SchemeType type;
25503 amit.gupta 51
 
22600 ashik.ali 52
	@Column(name = "amount_type")
23297 ashik.ali 53
	@Enumerated(EnumType.STRING)
23527 ashik.ali 54
	private AmountType amountType;
25503 amit.gupta 55
 
30454 amit.gupta 56
	@Column(name = "base_plus_gst_calc")
57
	private boolean basePlusGstCalc;
58
 
22600 ashik.ali 59
	@Column(name = "amount")
60
	private float amount;
25503 amit.gupta 61
 
22600 ashik.ali 62
	@Convert(converter = LocalDateTimeAttributeConverter.class)
23019 ashik.ali 63
	@Column(name = "start_date_time")
64
	private LocalDateTime startDateTime = LocalDateTime.now();
25503 amit.gupta 65
 
22600 ashik.ali 66
	@Convert(converter = LocalDateTimeAttributeConverter.class)
23019 ashik.ali 67
	@Column(name = "end_date_time")
68
	private LocalDateTime endDateTime = LocalDateTime.now();
25503 amit.gupta 69
 
22608 ashik.ali 70
	@Convert(converter = LocalDateTimeAttributeConverter.class)
22600 ashik.ali 71
	@Column(name = "create_timestamp")
22859 ashik.ali 72
	private LocalDateTime createTimestamp = LocalDateTime.now();
25503 amit.gupta 73
 
22653 ashik.ali 74
	@Convert(converter = LocalDateTimeAttributeConverter.class)
75
	@Column(name = "active_timestamp")
76
	private LocalDateTime activeTimestamp = null;
25503 amit.gupta 77
 
22653 ashik.ali 78
	@Convert(converter = LocalDateTimeAttributeConverter.class)
22702 ashik.ali 79
	@Column(name = "expire_timestamp")
22653 ashik.ali 80
	private LocalDateTime expireTimestamp = null;
25503 amit.gupta 81
 
22600 ashik.ali 82
	@Column(name = "created_by")
83
	private int createdBy;
25503 amit.gupta 84
 
26679 amit.gupta 85
	@Column
26685 amit.gupta 86
	private boolean cashback;
26679 amit.gupta 87
 
22859 ashik.ali 88
	@Transient
89
	private Set<Integer> retailerIds = new HashSet<>();
27388 amit.gupta 90
 
91
	@Transient
92
	private String amountModel;
28653 amit.gupta 93
 
94
	@Transient
95
	private float schemeValue;
96
 
97
 
25503 amit.gupta 98
 
28653 amit.gupta 99
	public float getSchemeValue() {
100
		return schemeValue;
101
	}
102
 
103
	public void setSchemeValue(float schemeValue) {
104
		this.schemeValue = schemeValue;
105
	}
106
 
30454 amit.gupta 107
	@Column(name = "partner_type")
25503 amit.gupta 108
	@Enumerated(EnumType.STRING)
109
	private PartnerType partnerType;
110
 
30454 amit.gupta 111
 
112
	@Override
113
	public String toString() {
114
		return "Scheme{" +
115
				"id=" + id +
116
				", name='" + name + '\'' +
117
				", description='" + description + '\'' +
118
				", type=" + type +
119
				", amountType=" + amountType +
120
				", gstReversal=" + basePlusGstCalc +
121
				", amount=" + amount +
122
				", startDateTime=" + startDateTime +
123
				", endDateTime=" + endDateTime +
124
				", createTimestamp=" + createTimestamp +
125
				", activeTimestamp=" + activeTimestamp +
126
				", expireTimestamp=" + expireTimestamp +
127
				", createdBy=" + createdBy +
128
				", cashback=" + cashback +
129
				", retailerIds=" + retailerIds +
130
				", amountModel='" + amountModel + '\'' +
131
				", schemeValue=" + schemeValue +
132
				", partnerType=" + partnerType +
133
				", catalogStringMap=" + catalogStringMap +
134
				'}';
135
	}
136
 
137
	@Override
138
	public boolean equals(Object o) {
139
		if (this == o) return true;
140
		if (o == null || getClass() != o.getClass()) return false;
141
		Scheme scheme = (Scheme) o;
142
		return id == scheme.id && basePlusGstCalc == scheme.basePlusGstCalc && Float.compare(scheme.amount, amount) == 0 && createdBy == scheme.createdBy && cashback == scheme.cashback && Float.compare(scheme.schemeValue, schemeValue) == 0 && Objects.equals(name, scheme.name) && Objects.equals(description, scheme.description) && type == scheme.type && amountType == scheme.amountType && Objects.equals(startDateTime, scheme.startDateTime) && Objects.equals(endDateTime, scheme.endDateTime) && Objects.equals(createTimestamp, scheme.createTimestamp) && Objects.equals(activeTimestamp, scheme.activeTimestamp) && Objects.equals(expireTimestamp, scheme.expireTimestamp) && Objects.equals(retailerIds, scheme.retailerIds) && Objects.equals(amountModel, scheme.amountModel) && partnerType == scheme.partnerType && Objects.equals(catalogStringMap, scheme.catalogStringMap);
143
	}
144
 
145
	@Override
146
	public int hashCode() {
147
		return Objects.hash(id, name, description, type, amountType, basePlusGstCalc, amount, startDateTime, endDateTime, createTimestamp, activeTimestamp, expireTimestamp, createdBy, cashback, retailerIds, amountModel, schemeValue, partnerType, catalogStringMap);
148
	}
149
 
22859 ashik.ali 150
	@Transient
30121 amit.gupta 151
	private Map<Integer, String> catalogStringMap = new HashMap<>();
25503 amit.gupta 152
 
22600 ashik.ali 153
	public int getId() {
154
		return id;
155
	}
25503 amit.gupta 156
 
22600 ashik.ali 157
	public void setId(int id) {
158
		this.id = id;
159
	}
27388 amit.gupta 160
 
161
 
25503 amit.gupta 162
 
27388 amit.gupta 163
	public String getAmountModel() {
164
		return amountModel;
165
	}
166
 
167
	public void setAmountModel(String amountModel) {
168
		this.amountModel = amountModel;
169
	}
170
 
22653 ashik.ali 171
	public String getName() {
172
		return name;
22600 ashik.ali 173
	}
25503 amit.gupta 174
 
22653 ashik.ali 175
	public void setName(String name) {
176
		this.name = name;
22600 ashik.ali 177
	}
25503 amit.gupta 178
 
22653 ashik.ali 179
	public String getDescription() {
180
		return description;
22600 ashik.ali 181
	}
25503 amit.gupta 182
 
22653 ashik.ali 183
	public void setDescription(String description) {
184
		this.description = description;
22600 ashik.ali 185
	}
25503 amit.gupta 186
 
26685 amit.gupta 187
	public boolean isCashback() {
188
		return cashback;
26679 amit.gupta 189
	}
190
 
26685 amit.gupta 191
	public void setCashback(boolean cashback) {
192
		this.cashback = cashback;
26679 amit.gupta 193
	}
194
 
22653 ashik.ali 195
	public SchemeType getType() {
196
		return type;
197
	}
25503 amit.gupta 198
 
22653 ashik.ali 199
	public void setType(SchemeType type) {
200
		this.type = type;
201
	}
25503 amit.gupta 202
 
23527 ashik.ali 203
	public AmountType getAmountType() {
22600 ashik.ali 204
		return amountType;
205
	}
25503 amit.gupta 206
 
23527 ashik.ali 207
	public void setAmountType(AmountType amountType) {
22600 ashik.ali 208
		this.amountType = amountType;
209
	}
25503 amit.gupta 210
 
22600 ashik.ali 211
	public float getAmount() {
212
		return amount;
213
	}
25503 amit.gupta 214
 
22600 ashik.ali 215
	public void setAmount(float amount) {
216
		this.amount = amount;
217
	}
25503 amit.gupta 218
 
23019 ashik.ali 219
	public LocalDateTime getStartDateTime() {
220
		return startDateTime;
22600 ashik.ali 221
	}
25503 amit.gupta 222
 
23019 ashik.ali 223
	public void setStartDateTime(LocalDateTime startDateTime) {
224
		this.startDateTime = startDateTime;
22600 ashik.ali 225
	}
25503 amit.gupta 226
 
23019 ashik.ali 227
	public LocalDateTime getEndDateTime() {
228
		return endDateTime;
22653 ashik.ali 229
	}
25503 amit.gupta 230
 
23019 ashik.ali 231
	public void setEndDateTime(LocalDateTime endDateTime) {
232
		this.endDateTime = endDateTime;
22653 ashik.ali 233
	}
25503 amit.gupta 234
 
22859 ashik.ali 235
	public LocalDateTime getCreateTimestamp() {
236
		return createTimestamp;
22600 ashik.ali 237
	}
25503 amit.gupta 238
 
22859 ashik.ali 239
	public void setCreateTimestamp(LocalDateTime createTimestamp) {
240
		this.createTimestamp = createTimestamp;
22600 ashik.ali 241
	}
25503 amit.gupta 242
 
22600 ashik.ali 243
	public int getCreatedBy() {
244
		return createdBy;
245
	}
25503 amit.gupta 246
 
22600 ashik.ali 247
	public void setCreatedBy(int createdBy) {
248
		this.createdBy = createdBy;
249
	}
25503 amit.gupta 250
 
22653 ashik.ali 251
	public LocalDateTime getActiveTimestamp() {
252
		return activeTimestamp;
22600 ashik.ali 253
	}
25503 amit.gupta 254
 
22653 ashik.ali 255
	public void setActiveTimestamp(LocalDateTime activeTimestamp) {
256
		this.activeTimestamp = activeTimestamp;
22600 ashik.ali 257
	}
25503 amit.gupta 258
 
22653 ashik.ali 259
	public LocalDateTime getExpireTimestamp() {
260
		return expireTimestamp;
261
	}
25503 amit.gupta 262
 
22653 ashik.ali 263
	public void setExpireTimestamp(LocalDateTime expireTimestamp) {
264
		this.expireTimestamp = expireTimestamp;
265
	}
25503 amit.gupta 266
 
267
	public String getFormattedStartDateTime() {
268
		if (startDateTime == null) {
22859 ashik.ali 269
			return null;
270
		}
24402 amit.gupta 271
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
23019 ashik.ali 272
		return startDateTime.format(formatter);
25503 amit.gupta 273
	}
274
 
275
	public String getFormattedEndDateTime() {
276
		if (endDateTime == null) {
22859 ashik.ali 277
			return null;
278
		}
24402 amit.gupta 279
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
23019 ashik.ali 280
		return endDateTime.format(formatter);
25503 amit.gupta 281
	}
282
 
283
	public String getFormattedCreateTimestamp() {
284
		if (createTimestamp == null) {
22859 ashik.ali 285
			return null;
286
		}
24402 amit.gupta 287
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm");
22859 ashik.ali 288
		return createTimestamp.format(formatter);
25503 amit.gupta 289
	}
290
 
291
	public String getFormattedActiveTimestamp() {
292
		if (activeTimestamp == null) {
22859 ashik.ali 293
			return null;
294
		}
24402 amit.gupta 295
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm");
22859 ashik.ali 296
		return activeTimestamp.format(formatter);
25503 amit.gupta 297
	}
298
 
299
	public String getFormattedExpireTimestamp() {
300
		if (expireTimestamp == null) {
22859 ashik.ali 301
			return null;
302
		}
24402 amit.gupta 303
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm");
22859 ashik.ali 304
		return expireTimestamp.format(formatter);
25503 amit.gupta 305
	}
306
 
22859 ashik.ali 307
	public Set<Integer> getRetailerIds() {
308
		return retailerIds;
309
	}
25503 amit.gupta 310
 
22859 ashik.ali 311
	public void setRetailerIds(Set<Integer> retailerIds) {
312
		this.retailerIds = retailerIds;
313
	}
25503 amit.gupta 314
 
315
	public String getRetailerIdsString() {
22859 ashik.ali 316
		Set<String> stringRetailerIds = new HashSet<>();
25503 amit.gupta 317
		if (!retailerIds.isEmpty()) {
318
			for (int retailerId : retailerIds) {
22859 ashik.ali 319
				stringRetailerIds.add(String.valueOf(retailerId));
320
			}
321
		}
322
		return String.join(", ", stringRetailerIds);
323
	}
25503 amit.gupta 324
 
30454 amit.gupta 325
 
326
	public boolean isBasePlusGstCalc() {
327
		return basePlusGstCalc;
328
	}
329
 
330
	public void setBasePlusGstCalc(boolean gstReversal) {
331
		this.basePlusGstCalc = gstReversal;
332
	}
333
 
334
 
30121 amit.gupta 335
	public Map<Integer, String> getCatalogStringMap() {
336
		return catalogStringMap;
22859 ashik.ali 337
	}
25503 amit.gupta 338
 
30121 amit.gupta 339
	public void setCatalogStringMap(Map<Integer, String> catalogStringMap) {
340
		this.catalogStringMap = catalogStringMap;
22859 ashik.ali 341
	}
25503 amit.gupta 342
 
30640 amit.gupta 343
	public boolean isWithinRange(LocalDateTime testDate) {
344
		return !(testDate.isBefore(this.startDateTime) || testDate.isAfter(endDateTime));
345
	}
25503 amit.gupta 346
 
30640 amit.gupta 347
 
22600 ashik.ali 348
}