Subversion Repositories SmartDukaan

Rev

Rev 2027 | Rev 2068 | 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;
5
import in.shop2020.model.v1.catalog.InventoryService;
1992 ankur.sing 6
import in.shop2020.model.v1.catalog.VendorItemPricing;
1961 ankur.sing 7
import in.shop2020.thrift.clients.CatalogServiceClient;
8
 
9
import java.util.ArrayList;
1992 ankur.sing 10
import java.util.HashMap;
1961 ankur.sing 11
import java.util.List;
1992 ankur.sing 12
import java.util.Map;
13
import java.util.Map.Entry;
1961 ankur.sing 14
 
15
import com.google.gwt.core.client.GWT;
16
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
17
 
18
@SuppressWarnings("serial")
19
public class CatalogServiceImpl extends RemoteServiceServlet implements CatalogService {
20
 
21
    public List<Item> getAllItems(){
22
        List<Item> itemList = new ArrayList<Item>();
23
 
24
        try {
25
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
26
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
27
 
28
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllItems(true);
1992 ankur.sing 29
 
30
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
31
                List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
32
                itemList.add(getItemFromThriftItem(thriftItem, vip));
33
            }
1961 ankur.sing 34
        } catch (Exception e) {
35
            e.printStackTrace();
36
        }
37
 
38
        return itemList;
39
    }
40
 
41
    public List<Item> getBestDeals(){
42
        List<Item> itemList = new ArrayList<Item>();
43
 
44
        try {
45
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
46
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
47
 
48
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestDeals();
1992 ankur.sing 49
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
50
                List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
51
                itemList.add(getItemFromThriftItem(thriftItem, vip));
52
            }
1961 ankur.sing 53
        } catch(Exception e){
54
            e.printStackTrace();
55
        }
56
 
57
        return itemList;
58
    }
59
 
60
    public List<Item> getBestSellers(){
61
        List<Item> itemList = new ArrayList<Item>();
62
 
63
        try {
64
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
65
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
66
 
67
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestSellers();
1992 ankur.sing 68
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
69
                List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
70
                itemList.add(getItemFromThriftItem(thriftItem, vip));
71
            }
1961 ankur.sing 72
        } catch(Exception e){
73
            e.printStackTrace();
74
        }
75
 
76
        return itemList;        
77
    }
78
 
79
    public List<Item> getLatestArrivals(){
80
        List<Item> itemList = new ArrayList<Item>();
81
 
82
        try {
83
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
84
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
85
 
86
            List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getLatestArrivals();
1992 ankur.sing 87
            for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
88
                List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
89
                itemList.add(getItemFromThriftItem(thriftItem, vip));
90
            }
1961 ankur.sing 91
        } catch(Exception e){
92
            e.printStackTrace();
93
        }
94
 
95
        return itemList;
96
    }
97
 
98
    public Item getItem(long itemId){
99
        try{
100
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
101
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
102
            in.shop2020.model.v1.catalog.Item thriftItem = catalogClient.getItem(itemId);
1992 ankur.sing 103
 
104
            List<in.shop2020.model.v1.catalog.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
105
            return getItemFromThriftItem(thriftItem, vip);
1961 ankur.sing 106
        }catch(Exception e){
107
            // Oops! We didn't receive the details. We should let the user know
108
            // that the catalog service is currently unavailable.
109
            e.printStackTrace();
110
        }
111
        return null;
112
    }
113
 
114
    public void reduceReservationCount(long itemId, long warehouseId, double quantity){
115
        GWT.log("Got a call to reduce the reservation count for item " + itemId + " and warehouse " + warehouseId);
116
        try{
117
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
118
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
119
            catalogClient.reduceReservationCount(itemId, warehouseId, quantity);
120
        }catch(Exception e){
121
            // TODO: Oops! We couldn't reduce the item reservation count. This will
122
            // result in underestimation of inventory stock. Should be corrected
123
            // periodically.
124
            e.printStackTrace();
125
        }
126
    }
127
 
1992 ankur.sing 128
    private Item getItemFromThriftItem(in.shop2020.model.v1.catalog.Item thriftItem, List<in.shop2020.model.v1.catalog.VendorItemPricing> thriftItemPricings){
129
 
130
        Map<Long, double[]> vendorPricings = new HashMap<Long, double[]>();
131
        double[] prices;
132
        if(thriftItemPricings != null) {
133
            for(VendorItemPricing v : thriftItemPricings) {
134
                prices = new double[3];
135
                prices[0] = v.getMop();
136
                prices[1] = v.getDealerPrice();
137
                prices[2] = v.getTransferPrice();
138
                vendorPricings.put(v.getVendorId(), prices);
139
            }
140
        }
1961 ankur.sing 141
        Item item = new Item(thriftItem.getId(),
142
                thriftItem.getProductGroup(),
143
                thriftItem.getBrand(),
144
                thriftItem.getModelNumber(),
145
                thriftItem.getModelName(),
146
                thriftItem.getColor(),
147
                thriftItem.getCategory(),
2027 ankur.sing 148
                //CategoryManager.getCategoryManager().getCategoryLabel(thriftItem.getCategory()),
1961 ankur.sing 149
                thriftItem.getComments(),
150
                thriftItem.getCatalogItemId(),
151
                thriftItem.getFeatureId(),
152
                thriftItem.getFeatureDescription(),
153
                thriftItem.getMrp(),
154
                thriftItem.getMop(),
155
                thriftItem.getSellingPrice(),
156
                thriftItem.getDealerPrice(),
157
                thriftItem.getWeight(),
158
                thriftItem.getAddedOn(),
159
                thriftItem.getStartDate(),
160
                thriftItem.getRetireDate(),
161
                thriftItem.getUpdatedOn(),
1992 ankur.sing 162
                thriftItem.getItemStatus().name(),
1961 ankur.sing 163
                thriftItem.getOtherInfo(),
164
                thriftItem.getBestDealText(),
1992 ankur.sing 165
                thriftItem.getBestDealValue(),
2066 ankur.sing 166
                thriftItem.getBestSellingRank(),
167
                thriftItem.isDefaultForEntity(),
1992 ankur.sing 168
                (thriftItem.getItemInventory() != null ? thriftItem.getItemInventory().getAvailability() : null),
169
                vendorPricings
170
                );
1961 ankur.sing 171
        return item;
172
    }
173
 
174
    @Override
1992 ankur.sing 175
    public boolean updateItem(Item item) {
176
        GWT.log("Got a call to update item, Item Id: " + item.getId());
1961 ankur.sing 177
        try{
178
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
179
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
1992 ankur.sing 180
 
181
            in.shop2020.model.v1.catalog.Item tItem = catalogClient.getItem(item.getId());
2027 ankur.sing 182
            tItem.setProductGroup(item.getProductGroup());
183
            tItem.setBrand(item.getBrand());
184
            tItem.setModelName(item.getModelName());
185
            tItem.setModelNumber(item.getModelNumber());
186
            tItem.setColor(item.getColor());
1992 ankur.sing 187
 
2027 ankur.sing 188
            tItem.setComments(item.getComments());
189
 
1992 ankur.sing 190
            tItem.setMrp(item.getMrp());
191
            tItem.setSellingPrice(item.getSellingPrice());
192
            tItem.setWeight(item.getWeight());
193
 
2027 ankur.sing 194
            tItem.setMop(item.getMop());
195
            tItem.setDealerPrice(item.getDealerPrice());
196
            tItem.setTransferPrice(item.getTransferPrice());
197
 
198
            tItem.setBestDealText(item.getBestDealsText());
199
            tItem.setBestDealValue(item.getBestDealsValue());
2066 ankur.sing 200
            tItem.setBestSellingRank(item.getBestSellingRank());
201
            tItem.setDefaultForEntity(item.isDefaultForEntity());
2027 ankur.sing 202
 
203
//          tItem.setAddedOn(item.getAddedOn());
204
 
205
//          tItem.setCatalogItemId(item.getCatalogItemId());
206
//          tItem.setCategory(item.getCategory());
207
 
208
//          tItem.setFeatureId(item.getFeatureId());
209
//          tItem.setFeatureDescription(item.getFeatureDescription());
210
 
2066 ankur.sing 211
            /*List<VendorItemPricing> tVendorPrices = tItem.getVendorPrices();
212
            if(tVendorPrices == null) {
213
                tVendorPrices = new ArrayList<VendorItemPricing>();
214
            }
215
            for(Entry<Long, double[]> vendorItemPricing : item.getVendorPricings().entrySet()) {
216
                VendorItemPricing vip = null;
217
                for(VendorItemPricing v : tVendorPrices) {
218
                    if(v.getVendorId() == vendorItemPricing.getKey()) {
219
                        vip = v;
220
                        break;
221
                    }
222
                }
223
                if(vip == null) {
224
                    vip = new VendorItemPricing();
225
                    tVendorPrices.add(vip);
226
                }
227
                vip.setItemId(item.getId());
228
                vip.setVendorId(vendorItemPricing.getKey());
229
                vip.setMop(vendorItemPricing.getValue()[Item.INDEX_MOP]);
230
                vip.setDealerPrice(vendorItemPricing.getValue()[Item.INDEX_DP]);
231
                vip.setTransferPrice(vendorItemPricing.getValue()[Item.INDEX_TP]);
232
                //catalogClient.updateVendorItemPricing(vip);
233
            }*/
234
 
1992 ankur.sing 235
            VendorItemPricing vip = new VendorItemPricing();
236
            for(Entry<Long, double[]> vendorItemPricing : item.getVendorPricings().entrySet()) {
237
                vip.setItemId(item.getId());
238
                vip.setVendorId(vendorItemPricing.getKey());
239
                vip.setMop(vendorItemPricing.getValue()[Item.INDEX_MOP]);
240
                vip.setDealerPrice(vendorItemPricing.getValue()[Item.INDEX_DP]);
241
                vip.setTransferPrice(vendorItemPricing.getValue()[Item.INDEX_TP]);
242
                catalogClient.updateVendorItemPricing(vip);
243
            }
244
 
245
            if(catalogClient.updateItem(tItem) == item.getId());
246
                return true;
247
 
1961 ankur.sing 248
        }catch(Exception e){
249
            e.printStackTrace();
250
        }
1992 ankur.sing 251
        return false;
1961 ankur.sing 252
    }
2066 ankur.sing 253
 
254
 
255
    @Override
256
    public Map<Long, String> getAllVendors() {
257
        Map<Long, String> vendorMap = new HashMap<Long, String>();
258
        try {
259
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
260
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
261
 
262
            List<in.shop2020.model.v1.catalog.Vendor> vendors = catalogClient.getAllVendors();
263
 
264
            for(in.shop2020.model.v1.catalog.Vendor v : vendors) {
265
                vendorMap.put(v.getId(), v.getName());
266
            }
267
        } catch (Exception e) {
268
            e.printStackTrace();
269
        }
270
        return vendorMap;
271
    }
272
 
273
    @Override
274
    public Map<Long, String> getAllWarehouses() {
275
        Map<Long, String> warehouseMap = new HashMap<Long, String>();
276
        try {
277
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
278
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
279
 
280
            List<in.shop2020.model.v1.catalog.Warehouse> warehouses = catalogClient.getAllWarehouses(true);
281
 
282
            for(in.shop2020.model.v1.catalog.Warehouse w : warehouses) {
283
                warehouseMap.put(w.getId(), w.getDisplayName());
284
            }
285
        } catch (Exception e) {
286
            e.printStackTrace();
287
        }
288
        return warehouseMap;
289
    }
1961 ankur.sing 290
}