Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
1961 ankur.sing 1
package in.shop2020.catalog.dashboard.server;
2
 
3
import in.shop2020.catalog.dashboard.client.CatalogService;
4
import in.shop2020.catalog.dashboard.shared.Item;
2068 ankur.sing 5
import in.shop2020.catalog.dashboard.shared.ItemsComparator;
2105 ankur.sing 6
import in.shop2020.catalog.dashboard.shared.VendorDetails;
1961 ankur.sing 7
import in.shop2020.model.v1.catalog.InventoryService;
2105 ankur.sing 8
import in.shop2020.model.v1.catalog.VendorItemMapping;
1992 ankur.sing 9
import in.shop2020.model.v1.catalog.VendorItemPricing;
2105 ankur.sing 10
import in.shop2020.model.v1.catalog.status;
1961 ankur.sing 11
import in.shop2020.thrift.clients.CatalogServiceClient;
12
 
13
import java.util.ArrayList;
2105 ankur.sing 14
import java.util.Calendar;
2068 ankur.sing 15
import java.util.Collections;
1992 ankur.sing 16
import java.util.HashMap;
1961 ankur.sing 17
import java.util.List;
1992 ankur.sing 18
import java.util.Map;
19
import java.util.Map.Entry;
1961 ankur.sing 20
 
21
import com.google.gwt.core.client.GWT;
22
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
23
 
24
@SuppressWarnings("serial")
25
public class CatalogServiceImpl extends RemoteServiceServlet implements CatalogService {
26
 
27
    public List<Item> getAllItems(){
28
        List<Item> itemList = new ArrayList<Item>();
29
 
30
        try {
31
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
32
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
33
 
34
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllItems(true);
1992 ankur.sing 35
 
36
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 37
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
38
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 39
            }
1961 ankur.sing 40
        } catch (Exception e) {
41
            e.printStackTrace();
42
        }
2068 ankur.sing 43
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 44
        return itemList;
45
    }
46
 
47
    public List<Item> getBestDeals(){
48
        List<Item> itemList = new ArrayList<Item>();
49
 
50
        try {
51
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
52
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
53
 
54
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestDeals();
1992 ankur.sing 55
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 56
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
57
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 58
            }
1961 ankur.sing 59
        } catch(Exception e){
60
            e.printStackTrace();
61
        }
2068 ankur.sing 62
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 63
        return itemList;
64
    }
65
 
66
    public List<Item> getBestSellers(){
67
        List<Item> itemList = new ArrayList<Item>();
68
 
69
        try {
70
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
71
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
72
 
73
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestSellers();
1992 ankur.sing 74
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 75
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
76
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 77
            }
1961 ankur.sing 78
        } catch(Exception e){
79
            e.printStackTrace();
80
        }
2068 ankur.sing 81
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 82
        return itemList;        
83
    }
84
 
85
    public List<Item> getLatestArrivals(){
86
        List<Item> itemList = new ArrayList<Item>();
87
 
88
        try {
89
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
90
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
91
 
92
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getLatestArrivals();
1992 ankur.sing 93
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
2105 ankur.sing 94
                //List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
95
                itemList.add(getItemFromThriftItem(thriftItem, null, null));
1992 ankur.sing 96
            }
1961 ankur.sing 97
        } catch(Exception e){
98
            e.printStackTrace();
99
        }
2068 ankur.sing 100
        Collections.sort(itemList, new ItemsComparator());
1961 ankur.sing 101
        return itemList;
102
    }
103
 
104
    public Item getItem(long itemId){
105
        try{
106
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
107
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
108
            in.shop2020.model.v1.catalog.Item thriftItem = catalogClient.getItem(itemId);
1992 ankur.sing 109
 
110
            List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
2105 ankur.sing 111
            //List<in.shop2020.model.v1.catalog.VendorItemMapping> vim = catalogClient.getVendorItemMappings(thriftItem.getId());
112
            return getItemFromThriftItem(thriftItem, vip, null);
1961 ankur.sing 113
        }catch(Exception e){
114
            // Oops! We didn't receive the details. We should let the user know
115
            // that the catalog service is currently unavailable.
116
            e.printStackTrace();
117
        }
118
        return null;
119
    }
120
 
121
    public void reduceReservationCount(long itemId, long warehouseId, double quantity){
122
        GWT.log("Got a call to reduce the reservation count for item " + itemId + " and warehouse " + warehouseId);
123
        try{
124
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
125
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
126
            catalogClient.reduceReservationCount(itemId, warehouseId, quantity);
127
        }catch(Exception e){
128
            // TODO: Oops! We couldn't reduce the item reservation count. This will
129
            // result in underestimation of inventory stock. Should be corrected
130
            // periodically.
131
            e.printStackTrace();
132
        }
133
    }
134
 
2105 ankur.sing 135
    private Item getItemFromThriftItem(in.shop2020.model.v1.catalog.Item thriftItem, 
136
            List<in.shop2020.model.v1.catalog.VendorItemPricing> tVendorPricings, 
137
            List<in.shop2020.model.v1.catalog.VendorItemMapping> tVendorMappings){
1992 ankur.sing 138
 
2105 ankur.sing 139
        Map<Long, VendorDetails> vendorDetailsMap = new HashMap<Long, VendorDetails>();
140
        VendorDetails vDetails;
141
        if(tVendorMappings != null) {
142
            for(VendorItemMapping vim : tVendorMappings) {
143
                vDetails = vendorDetailsMap.get(vim.getVendorId());
144
                if(vDetails == null) {
145
                    vDetails = new VendorDetails();
146
                    vDetails.setVendorId(vim.getVendorId());
147
                }
148
                vDetails.setVendorId(vim.getVendorId());
149
                vDetails.setItemKey(vim.getItemKey());
150
                vendorDetailsMap.put(vDetails.getVendorId(), vDetails);
1992 ankur.sing 151
            }
152
        }
2105 ankur.sing 153
        if(tVendorPricings != null) {
154
            for(VendorItemPricing vip : tVendorPricings) {
155
                vDetails = vendorDetailsMap.get(vip.getVendorId());
156
                if(vDetails == null) {
157
                    vDetails = new VendorDetails();
158
                    vDetails.setVendorId(vip.getVendorId());
159
                }
160
                vDetails.setMop(vip.getMop());
161
                vDetails.setDealerPrice(vip.getDealerPrice());
162
                vDetails.setTransferPrice(vip.getTransferPrice());
163
                vendorDetailsMap.put(vDetails.getVendorId(), vDetails);
164
            }
165
        }
166
 
1961 ankur.sing 167
        Item item = new Item(thriftItem.getId(),
168
                thriftItem.getProductGroup(),
169
                thriftItem.getBrand(),
170
                thriftItem.getModelNumber(),
171
                thriftItem.getModelName(),
172
                thriftItem.getColor(),
173
                thriftItem.getCategory(),
2027 ankur.sing 174
                //CategoryManager.getCategoryManager().getCategoryLabel(thriftItem.getCategory()),
1961 ankur.sing 175
                thriftItem.getComments(),
176
                thriftItem.getCatalogItemId(),
177
                thriftItem.getFeatureId(),
178
                thriftItem.getFeatureDescription(),
179
                thriftItem.getMrp(),
180
                thriftItem.getMop(),
181
                thriftItem.getSellingPrice(),
182
                thriftItem.getDealerPrice(),
183
                thriftItem.getWeight(),
184
                thriftItem.getAddedOn(),
185
                thriftItem.getStartDate(),
186
                thriftItem.getRetireDate(),
187
                thriftItem.getUpdatedOn(),
1992 ankur.sing 188
                thriftItem.getItemStatus().name(),
1961 ankur.sing 189
                thriftItem.getOtherInfo(),
190
                thriftItem.getBestDealText(),
1992 ankur.sing 191
                thriftItem.getBestDealValue(),
2066 ankur.sing 192
                thriftItem.getBestSellingRank(),
193
                thriftItem.isDefaultForEntity(),
1992 ankur.sing 194
                (thriftItem.getItemInventory() != null ? thriftItem.getItemInventory().getAvailability() : null),
2105 ankur.sing 195
                vendorDetailsMap
1992 ankur.sing 196
                );
1961 ankur.sing 197
        return item;
198
    }
199
 
200
    @Override
1992 ankur.sing 201
    public boolean updateItem(Item item) {
202
        GWT.log("Got a call to update item, Item Id: " + item.getId());
1961 ankur.sing 203
        try{
204
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
205
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
1992 ankur.sing 206
 
207
            in.shop2020.model.v1.catalog.Item tItem = catalogClient.getItem(item.getId());
2027 ankur.sing 208
            tItem.setProductGroup(item.getProductGroup());
209
            tItem.setBrand(item.getBrand());
210
            tItem.setModelName(item.getModelName());
211
            tItem.setModelNumber(item.getModelNumber());
212
            tItem.setColor(item.getColor());
1992 ankur.sing 213
 
2027 ankur.sing 214
            tItem.setComments(item.getComments());
215
 
1992 ankur.sing 216
            tItem.setMrp(item.getMrp());
217
            tItem.setSellingPrice(item.getSellingPrice());
218
            tItem.setWeight(item.getWeight());
219
 
2027 ankur.sing 220
            tItem.setMop(item.getMop());
221
            tItem.setDealerPrice(item.getDealerPrice());
222
            tItem.setTransferPrice(item.getTransferPrice());
223
 
224
            tItem.setBestDealText(item.getBestDealsText());
225
            tItem.setBestDealValue(item.getBestDealsValue());
2066 ankur.sing 226
            tItem.setBestSellingRank(item.getBestSellingRank());
227
            tItem.setDefaultForEntity(item.isDefaultForEntity());
2027 ankur.sing 228
 
2068 ankur.sing 229
            tItem.setStartDate(item.getStartDate());
2027 ankur.sing 230
//          tItem.setAddedOn(item.getAddedOn());
231
 
232
//          tItem.setCatalogItemId(item.getCatalogItemId());
233
//          tItem.setCategory(item.getCategory());
234
 
235
//          tItem.setFeatureId(item.getFeatureId());
236
//          tItem.setFeatureDescription(item.getFeatureDescription());
237
 
2105 ankur.sing 238
            long rItemId;
239
            if((rItemId = catalogClient.updateItem(tItem)) != item.getId()) {
240
                GWT.log("Error updating item, returned Item Id: " + rItemId);
241
                return false;
242
            }
243
            GWT.log("Item updated successfully, Item Id: " + item.getId());
244
 
245
            Map<Long, VendorDetails> vendorDetails = item.getVendorDetails();
246
            if(vendorDetails != null && !vendorDetails.isEmpty()) {
247
                in.shop2020.model.v1.catalog.VendorItemPricing tVendorPricing;
248
                in.shop2020.model.v1.catalog.VendorItemMapping tVendorMapping;
249
                for(VendorDetails v : vendorDetails.values()) {
250
                    tVendorPricing = new VendorItemPricing();
251
                    tVendorPricing.setVendorId(v.getVendorId());
252
                    tVendorPricing.setItemId(item.getId());
253
                    tVendorPricing.setMop(v.getMop());
254
                    tVendorPricing.setTransferPrice(v.getTransferPrice());
255
                    tVendorPricing.setDealerPrice(v.getDealerPrice());
256
                    catalogClient.addVendorItemPricing(tVendorPricing);
257
                    GWT.log("VendorItemPricing updated. " + tVendorPricing.getVendorId() + ", " + tVendorPricing.getItemId() + ", " +
258
                            tVendorPricing.getMop() + ", " + tVendorPricing.getTransferPrice() + ", " + tVendorPricing.getDealerPrice());
259
 
260
                    /*tVendorMapping = new VendorItemMapping();
261
                    tVendorMapping.setVendorId(v.getVendorId());
262
                    tVendorMapping.setItemKey(v.getItemKey());
263
                    tVendorMapping.setItemId(item.getId());
264
                    tVendorMapping.setVendorCategory(item.getVendorCategory());
265
                    catalogClient.addVendorItemMapping(tVendorMapping);
266
                    GWT.log("VendorItemMapping updated. " + tVendorMapping.getVendorId() + ", " + tVendorMapping.getItemId() + ", " +
267
                            tVendorMapping.getItemKey() + ", " + tVendorMapping.getVendorCategory());*/
268
                }
269
            }
270
 
271
        }catch(Exception e){
272
            e.printStackTrace();
273
        }
274
        return true;
275
 
276
 
2066 ankur.sing 277
            /*List<VendorItemPricing> tVendorPrices = tItem.getVendorPrices();
278
            if(tVendorPrices == null) {
279
                tVendorPrices = new ArrayList<VendorItemPricing>();
280
            }
281
            for(Entry<Long, double[]> vendorItemPricing : item.getVendorPricings().entrySet()) {
282
                VendorItemPricing vip = null;
283
                for(VendorItemPricing v : tVendorPrices) {
284
                    if(v.getVendorId() == vendorItemPricing.getKey()) {
285
                        vip = v;
286
                        break;
287
                    }
288
                }
289
                if(vip == null) {
290
                    vip = new VendorItemPricing();
291
                    tVendorPrices.add(vip);
292
                }
293
                vip.setItemId(item.getId());
294
                vip.setVendorId(vendorItemPricing.getKey());
295
                vip.setMop(vendorItemPricing.getValue()[Item.INDEX_MOP]);
296
                vip.setDealerPrice(vendorItemPricing.getValue()[Item.INDEX_DP]);
297
                vip.setTransferPrice(vendorItemPricing.getValue()[Item.INDEX_TP]);
298
                //catalogClient.updateVendorItemPricing(vip);
299
            }*/
1961 ankur.sing 300
    }
2066 ankur.sing 301
 
302
 
303
    @Override
304
    public Map<Long, String> getAllVendors() {
305
        Map<Long, String> vendorMap = new HashMap<Long, String>();
306
        try {
307
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
308
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
309
 
310
            List<in.shop2020.model.v1.catalog.Vendor> vendors = catalogClient.getAllVendors();
311
 
312
            for(in.shop2020.model.v1.catalog.Vendor v : vendors) {
313
                vendorMap.put(v.getId(), v.getName());
314
            }
315
        } catch (Exception e) {
316
            e.printStackTrace();
317
        }
318
        return vendorMap;
319
    }
320
 
321
    @Override
322
    public Map<Long, String> getAllWarehouses() {
323
        Map<Long, String> warehouseMap = new HashMap<Long, String>();
324
        try {
325
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
326
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
327
 
328
            List<in.shop2020.model.v1.catalog.Warehouse> warehouses = catalogClient.getAllWarehouses(true);
329
 
330
            for(in.shop2020.model.v1.catalog.Warehouse w : warehouses) {
331
                warehouseMap.put(w.getId(), w.getDisplayName());
332
            }
333
        } catch (Exception e) {
334
            e.printStackTrace();
335
        }
336
        return warehouseMap;
337
    }
2105 ankur.sing 338
 
339
    @Override
340
    public void phaseoutItem(long itemId) {
341
        try {
342
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
343
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
344
 
345
            catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.PHASED_OUT);
346
        } catch (Exception e) {
347
            e.printStackTrace();
348
        }
349
    }
350
 
351
    @Override
352
    public void activateItem(long itemId) {
353
        try {
354
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
355
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
356
 
357
            catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.ACTIVE);
358
        } catch (Exception e) {
359
            e.printStackTrace();
360
        }
361
    }
362
 
363
 
364
 
365
    @Override
366
    public long addItem(Item item) {
367
        long itemId = 0;
368
        try {
369
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
370
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
371
 
372
            in.shop2020.model.v1.catalog.Item tItem = new in.shop2020.model.v1.catalog.Item();
373
 
374
            tItem.setProductGroup(item.getProductGroup());
375
            tItem.setBrand(item.getBrand());
376
            tItem.setModelNumber(item.getModelNumber());
377
            tItem.setModelName(item.getModelName());
378
            tItem.setColor(item.getColor());
379
            tItem.setComments(item.getComments());
380
            tItem.setMrp(item.getMrp());
381
            tItem.setSellingPrice(item.getSellingPrice());
382
            tItem.setWeight(item.getWeight());
383
            tItem.setAddedOn(Calendar.getInstance().getTimeInMillis());
384
            tItem.setUpdatedOn(Calendar.getInstance().getTimeInMillis());
385
            tItem.setRetireDate(item.getRetireDate());
386
            tItem.setStartDate(item.getStartDate());
387
            tItem.setBestDealText(item.getBestDealsText());
388
            tItem.setBestDealValue(item.getBestDealsValue());
389
            tItem.setBestSellingRank(item.getBestSellingRank());
390
            tItem.setDefaultForEntity(item.isDefaultForEntity());
391
            tItem.setHotspotCategory(item.getVendorCategory());
392
 
393
            itemId = catalogClient.addItem(tItem);
394
 
395
            Map<Long, VendorDetails> vendorDetails = item.getVendorDetails();
396
            if(vendorDetails != null && !vendorDetails.isEmpty()) {
397
                in.shop2020.model.v1.catalog.VendorItemPricing tVendorPricing;
398
                in.shop2020.model.v1.catalog.VendorItemMapping tVendorMapping;
399
                for(VendorDetails v : vendorDetails.values()) {
400
                    tVendorMapping = new VendorItemMapping();
401
                    tVendorMapping.setVendorId(v.getVendorId());
402
                    tVendorMapping.setItemKey(v.getItemKey());
403
                    tVendorMapping.setItemId(itemId);
404
                    tVendorMapping.setVendorCategory(item.getVendorCategory());
405
                    catalogClient.addVendorItemMapping(tVendorMapping);
406
 
407
                    /*tVendorPricing = new VendorItemPricing();
408
                    tVendorPricing.setVendorId(v.getVendorId());
409
                    tVendorPricing.setItemId(itemId);
410
                    tVendorPricing.setMop(v.getMop());
411
                    tVendorPricing.setTransferPrice(v.getTransferPrice());
412
                    tVendorPricing.setDealerPrice(v.getDealerPrice());
413
                    catalogClient.addVendorItemPricing(tVendorPricing);*/
414
                }
415
 
416
            }
417
            /*Map<Long, double[]> vendors = item.getVendorPricings();
418
            List<VendorItemPricing> vPricesList;
419
            if(vendors != null && !vendors.isEmpty()) {
420
                vPricesList = new ArrayList<VendorItemPricing>();
421
                VendorItemPricing vendorPrices = null;
422
                for(Entry<Long, double[]> v : vendors.entrySet()) {
423
                    vendorPrices = new VendorItemPricing(v.getKey(), item.getId(), 
424
                            v.getValue()[Item.INDEX_TP], v.getValue()[Item.INDEX_MOP], v.getValue()[Item.INDEX_DP]);
425
                    vPricesList.add(vendorPrices);
426
                }
427
                boolean itemExists = catalogClient.itemExists(item.getProductGroup(), item.getHbrand(), item.getHmodelNumber(), 
428
                        item.getHcolor(), vendorPrices.getVendorId(), item.getVendorCategory());
429
                if(itemExists) {
430
                    return itemId;
431
                }
432
            } else {
433
                return 0;
434
            }
435
            catalogClient.addVendorItemPricing(vendorItemPricing)
436
            */
437
 
438
        } catch (Exception e) {
439
            e.printStackTrace();
440
        }
441
        return itemId;
442
    }
1961 ankur.sing 443
}