Subversion Repositories SmartDukaan

Rev

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