Subversion Repositories SmartDukaan

Rev

Rev 1992 | Rev 2066 | 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(),
166
                (thriftItem.getItemInventory() != null ? thriftItem.getItemInventory().getAvailability() : null),
167
                vendorPricings
168
                );
1961 ankur.sing 169
        return item;
170
    }
171
 
172
    @Override
1992 ankur.sing 173
    public boolean updateItem(Item item) {
174
        GWT.log("Got a call to update item, Item Id: " + item.getId());
1961 ankur.sing 175
        try{
176
            CatalogServiceClient catalogServiceClient = new CatalogServiceClient();
177
            InventoryService.Client catalogClient = catalogServiceClient.getClient();
1992 ankur.sing 178
 
179
            in.shop2020.model.v1.catalog.Item tItem = catalogClient.getItem(item.getId());
2027 ankur.sing 180
            tItem.setProductGroup(item.getProductGroup());
181
            tItem.setBrand(item.getBrand());
182
            tItem.setModelName(item.getModelName());
183
            tItem.setModelNumber(item.getModelNumber());
184
            tItem.setColor(item.getColor());
1992 ankur.sing 185
 
2027 ankur.sing 186
            tItem.setComments(item.getComments());
187
 
1992 ankur.sing 188
            tItem.setMrp(item.getMrp());
189
            tItem.setSellingPrice(item.getSellingPrice());
190
            tItem.setWeight(item.getWeight());
191
 
2027 ankur.sing 192
            tItem.setMop(item.getMop());
193
            tItem.setDealerPrice(item.getDealerPrice());
194
            tItem.setTransferPrice(item.getTransferPrice());
195
 
196
            tItem.setBestDealText(item.getBestDealsText());
197
            tItem.setBestDealValue(item.getBestDealsValue());
198
 
199
//          tItem.setAddedOn(item.getAddedOn());
200
 
201
//          tItem.setCatalogItemId(item.getCatalogItemId());
202
//          tItem.setCategory(item.getCategory());
203
 
204
 
205
 
206
//          tItem.setFeatureId(item.getFeatureId());
207
//          tItem.setFeatureDescription(item.getFeatureDescription());
208
 
1992 ankur.sing 209
            VendorItemPricing vip = new VendorItemPricing();
210
            for(Entry<Long, double[]> vendorItemPricing : item.getVendorPricings().entrySet()) {
211
                vip.setItemId(item.getId());
212
                vip.setVendorId(vendorItemPricing.getKey());
213
                vip.setMop(vendorItemPricing.getValue()[Item.INDEX_MOP]);
214
                vip.setDealerPrice(vendorItemPricing.getValue()[Item.INDEX_DP]);
215
                vip.setTransferPrice(vendorItemPricing.getValue()[Item.INDEX_TP]);
216
                catalogClient.updateVendorItemPricing(vip);
217
            }
218
 
219
            if(catalogClient.updateItem(tItem) == item.getId());
220
                return true;
221
 
1961 ankur.sing 222
        }catch(Exception e){
223
            e.printStackTrace();
224
        }
1992 ankur.sing 225
        return false;
1961 ankur.sing 226
    }
227
}