Subversion Repositories SmartDukaan

Rev

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