Subversion Repositories SmartDukaan

Rev

Rev 1962 | Rev 2027 | 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
        }
141
 
1961 ankur.sing 142
        Item item = new Item(thriftItem.getId(),
143
                thriftItem.getProductGroup(),
144
                thriftItem.getBrand(),
145
                thriftItem.getModelNumber(),
146
                thriftItem.getModelName(),
147
                thriftItem.getColor(),
148
                thriftItem.getCategory(),
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(),
166
                (thriftItem.getItemInventory() != null ? thriftItem.getItemInventory().getAvailability() : null),
167
                vendorPricings
168
                );
169
 
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());
182
//            tItem.setAddedOn(item.getAddedOn());
183
//            tItem.setBestDealText(item.getBestDealsText());
184
//            tItem.setBrand(item.getBrand());
185
//            tItem.setCatalogItemId(item.getCatalogItemId());
186
//            tItem.setCategory(item.getCategory());
187
//            tItem.setColor(item.getColor());
188
//            tItem.setComments(item.getComments());
189
//            tItem.setDealerPrice(item.getDealerPrice()); 
190
//            tItem.setFeatureId(item.getFeatureId());
191
//            tItem.setFeatureDescription(item.getFeatureDescription());
192
//            tItem.setModelName(item.getModelName());
193
//            tItem.setModelNumber(item.getModelNumber());
194
 
195
            tItem.setMrp(item.getMrp());
196
//            tItem.setMop(item.getMop());
197
            tItem.setSellingPrice(item.getSellingPrice());
198
//            tItem.setTransferPrice(item.getTransferPrice());
199
            tItem.setWeight(item.getWeight());
200
 
201
            VendorItemPricing vip = new VendorItemPricing();
202
            for(Entry<Long, double[]> vendorItemPricing : item.getVendorPricings().entrySet()) {
203
                vip.setItemId(item.getId());
204
                vip.setVendorId(vendorItemPricing.getKey());
205
                vip.setMop(vendorItemPricing.getValue()[Item.INDEX_MOP]);
206
                vip.setDealerPrice(vendorItemPricing.getValue()[Item.INDEX_DP]);
207
                vip.setTransferPrice(vendorItemPricing.getValue()[Item.INDEX_TP]);
208
                catalogClient.updateVendorItemPricing(vip);
209
            }
210
 
211
            if(catalogClient.updateItem(tItem) == item.getId());
212
                return true;
213
            //TODO: update left out fields of item also. Also update vendor prices and availability.
214
 
1961 ankur.sing 215
        }catch(Exception e){
216
            e.printStackTrace();
217
        }
1992 ankur.sing 218
        return false;
1961 ankur.sing 219
    }
220
}