Subversion Repositories SmartDukaan

Rev

Rev 36591 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
36321 vikas 1
package com.spice.profitmandi.web.v2.controller;
2
 
36591 vikas 3
import com.spice.profitmandi.service.integrations.pinelabs.dto.DownpaymentDetailsRequest;
36321 vikas 4
import com.spice.profitmandi.service.integrations.pinelabs.dto.OfferDiscoveryRequest;
36591 vikas 5
import com.spice.profitmandi.service.integrations.pinelabs.dto.OfferValidateRequest;
6
import com.spice.profitmandi.service.integrations.pinelabs.dto.PineLablsCreateOfferRequest;
36321 vikas 7
import com.spice.profitmandi.web.controller.DealsController;
8
import com.spice.profitmandi.web.v2.response.ApiResponse;
9
import org.springframework.beans.factory.annotation.Autowired;
36607 aman 10
import org.springframework.cache.annotation.Cacheable;
36321 vikas 11
import org.springframework.http.ResponseEntity;
12
import org.springframework.web.bind.annotation.*;
13
 
14
import javax.servlet.http.HttpServletRequest;
36591 vikas 15
import java.util.Map;
36321 vikas 16
import java.util.Set;
17
 
18
@RestController
19
@RequestMapping("/v2")
20
public class V2DealsController extends V2BaseController {
21
 
22
    @Autowired
23
    private DealsController dealsController;
24
 
25
    @GetMapping("/fofo/buckets")
26
    public ResponseEntity<ApiResponse<?>> getBuckets(HttpServletRequest request) throws Throwable {
27
        return wrapResponse(dealsController.getBuckets(request));
28
    }
29
 
30
    @GetMapping("/fofo/bucket")
31
    public ResponseEntity<ApiResponse<?>> getBucketDetails(HttpServletRequest request,
32
                                                           @RequestParam int id) throws Throwable {
33
        return wrapResponse(dealsController.getBucketDetails(request, id));
34
    }
35
 
36
    @GetMapping("/fofo/suggestedPo")
37
    public ResponseEntity<ApiResponse<?>> getSuggestedPo(HttpServletRequest request,
38
                                                         @RequestParam int id) throws Throwable {
39
        return wrapResponse(dealsController.getSuggestedPo(request, id));
40
    }
41
 
42
    @GetMapping("/suggestedPo/status")
43
    public ResponseEntity<ApiResponse<?>> changeSuggestedPoStatus(HttpServletRequest request,
44
                                                                   @RequestParam int id) throws Throwable {
45
        return wrapResponse(dealsController.changeSuggestedPoStatus(request, id));
46
    }
47
 
48
    @GetMapping("/fofo/fovourites")
49
    public ResponseEntity<ApiResponse<?>> getFavourites(HttpServletRequest request) throws Throwable {
50
        return wrapResponse(dealsController.getFavourites(request));
51
    }
52
 
53
    @PostMapping("/favourites/manage")
54
    public ResponseEntity<ApiResponse<?>> mangeFavourites(HttpServletRequest request,
55
                                                          @RequestParam int catalogId) throws Throwable {
56
        return wrapResponse(dealsController.mangeFavourites(request, catalogId));
57
    }
58
 
59
    @GetMapping("/fofo/similar-models/{modelId}")
60
    public ResponseEntity<ApiResponse<?>> similarModels(HttpServletRequest request,
61
                                                        @PathVariable int modelId) throws Throwable {
62
        return wrapResponse(dealsController.similarModels(request, modelId));
63
    }
64
 
65
    @GetMapping("/fofo")
66
    public ResponseEntity<ApiResponse<?>> getFofo(HttpServletRequest request,
67
                                                  @RequestParam(value = "categoryId", required = false, defaultValue = "3") String categoryId,
68
                                                  @RequestParam(value = "offset") int offset,
69
                                                  @RequestParam(value = "limit") int limit,
70
                                                  @RequestParam(value = "sort", required = false) String sort,
71
                                                  @RequestParam(value = "brand", required = false) String brand,
72
                                                  @RequestParam(value = "subCategoryId", required = false) int subCategoryId,
73
                                                  @RequestParam(value = "q", required = false) String queryTerm,
74
                                                  @RequestParam(value = "hotDeal", required = false) boolean hotDeal,
75
                                                  @RequestParam(value = "endPoint", required = false) String endPoint,
76
                                                  @RequestParam(value = "group", required = false) boolean group) throws Throwable {
77
        return wrapResponse(dealsController.getFofo(request, categoryId, offset, limit, sort, brand, subCategoryId, queryTerm, hotDeal, endPoint, group));
78
    }
79
 
80
    @GetMapping("/online-deals")
81
    public ResponseEntity<ApiResponse<?>> getOnlineDeals(HttpServletRequest request,
82
                                                         @RequestParam(value = "categoryId") String categoryId,
83
                                                         @RequestParam(value = "offset") String offset,
84
                                                         @RequestParam(value = "limit") String limit,
85
                                                         @RequestParam(value = "sort", required = false) String sort,
86
                                                         @RequestParam(value = "direction", required = false) String direction,
87
                                                         @RequestParam(value = "filterData", required = false) String filterData) throws Throwable {
88
        return wrapResponse(dealsController.getOnlineDeals(request, categoryId, offset, limit, sort, direction, filterData));
89
    }
90
 
91
    @GetMapping("/brands")
92
    public ResponseEntity<ApiResponse<?>> getBrands(HttpServletRequest request,
93
                                                    @RequestParam(value = "category_id") String category_id) throws Throwable {
94
        return wrapResponse(dealsController.getBrands(request, category_id));
95
    }
96
 
97
    @GetMapping("/deals/{id}")
98
    public ResponseEntity<ApiResponse<?>> getUnitDeal(HttpServletRequest request,
99
                                                      @PathVariable(value = "id") long id) throws Throwable {
100
        return wrapResponse(dealsController.getUnitDeal(request, id));
101
    }
102
 
103
    @GetMapping("/partnerdeals/{id}")
104
    public ResponseEntity<ApiResponse<?>> getUnitFocoDeal(HttpServletRequest request,
105
                                                          @PathVariable(value = "id") long id) throws Throwable {
36538 ranu 106
        try {
107
            return wrapResponse(dealsController.getUnitFocoDeal(request, id));
108
        } catch (IndexOutOfBoundsException e) {
109
            java.util.Map<String, Object> err = new java.util.HashMap<>();
110
            err.put("message", "Product not found for catalogId: " + id);
111
            return ResponseEntity.status(404).body(ApiResponse.success(err));
112
        }
36321 vikas 113
    }
114
 
115
    @PostMapping("/suggestedPoDeals")
116
    public ResponseEntity<ApiResponse<?>> suggestedPoDeals(HttpServletRequest request,
117
                                                           @RequestBody Set<Integer> catalogIds) throws Throwable {
118
        return wrapResponse(dealsController.suggestedPoDeals(request, catalogIds));
119
    }
120
 
121
    @GetMapping("/fofo/brands")
122
    public ResponseEntity<ApiResponse<?>> getBrandsToDisplay(HttpServletRequest request,
123
                                                             @RequestParam(required = false, defaultValue = "0") int categoryId) throws Throwable {
124
        return wrapResponse(dealsController.getBrandsToDisplay(request, categoryId));
125
    }
126
 
127
    @GetMapping("/fofo/brandCatalog")
128
    public ResponseEntity<ApiResponse<?>> getBrandCatalog(HttpServletRequest request,
129
                                                          @RequestParam(required = false, defaultValue = "0") int categoryId) throws Throwable {
130
        return wrapResponse(dealsController.getBrands(request, categoryId));
131
    }
132
 
133
    @GetMapping("/fofo/accessory/all-categories")
134
    public ResponseEntity<ApiResponse<?>> getSubCategoriesToDisplay(HttpServletRequest request) throws Throwable {
135
        return wrapResponse(dealsController.getSubCategoriesToDisplay(request));
136
    }
137
 
138
    @GetMapping("/fofo/categories")
139
    public ResponseEntity<ApiResponse<?>> getFofoCategories() throws Throwable {
140
        return wrapResponse(dealsController.getFofoCategories());
141
    }
142
 
143
    @GetMapping("/banners/{bannerType}")
144
    public ResponseEntity<ApiResponse<?>> getBanners(@PathVariable String bannerType) throws Throwable {
145
        return wrapResponse(dealsController.getBanners(bannerType));
146
    }
147
 
148
    @GetMapping("/deals/subCategories")
149
    public ResponseEntity<ApiResponse<?>> getSubcategoriesToDisplay() throws Throwable {
150
        return wrapResponse(dealsController.getSubcategoriesToDisplay());
151
    }
152
 
153
    @GetMapping("/deals/skus/{skus}")
154
    public ResponseEntity<ApiResponse<?>> getDealsBySkus(@PathVariable String skus) throws Throwable {
155
        return wrapResponse(dealsController.getDealsBySkus(skus));
156
    }
157
 
158
    @GetMapping("/partner/listing")
36607 aman 159
    @Cacheable(value = "listing", cacheManager = "thirtyMinsTimeOutCacheManager")
36321 vikas 160
    public ResponseEntity<ApiResponse<?>> getPartnersListing(HttpServletRequest request) throws Throwable {
161
        return wrapResponse(dealsController.getPartnersListing(request));
162
    }
163
 
164
    @GetMapping("/combo")
165
    public ResponseEntity<ApiResponse<?>> getCombo(@RequestParam int catalogId,
166
                                                   @RequestParam int warehouseId) throws Throwable {
167
        return wrapResponse(dealsController.getBanners(catalogId, warehouseId));
168
    }
169
 
170
    @GetMapping("/checkCombo")
171
    public ResponseEntity<ApiResponse<?>> checkCombo(HttpServletRequest request,
172
                                                     @RequestParam int catalogId,
173
                                                     @RequestParam int warehouseId,
174
                                                     @RequestParam int qty) throws Throwable {
175
        return wrapResponse(dealsController.checkCombo(request, catalogId, warehouseId, qty));
176
    }
177
 
178
    @GetMapping("/partner/wodCompleteBrands")
179
    public ResponseEntity<ApiResponse<?>> getWodcompletBrands(HttpServletRequest request) throws Throwable {
180
        return wrapResponse(dealsController.getWodcompletBrands(request));
181
    }
182
 
183
    @PostMapping("/pinelabs/offers")
184
    public ResponseEntity<ApiResponse<?>> getPineLabsOffers(@RequestBody OfferDiscoveryRequest offerDiscoveryRequest) throws Throwable {
185
        return wrapResponse(dealsController.getPineLabsOffers(offerDiscoveryRequest));
186
    }
187
 
188
    @GetMapping("/pinelabs/offers/cache")
189
    public ResponseEntity<ApiResponse<?>> cachePineLabsOffers() throws Throwable {
190
        return wrapResponse(dealsController.cachePineLabsOffers());
191
    }
192
 
193
    @GetMapping("/pinelabs/offers/{itemId}")
194
    public ResponseEntity<ApiResponse<?>> pineLabsOfferById(@PathVariable int itemId) throws Throwable {
195
        return wrapResponse(dealsController.pineLabsOfferById(itemId));
196
    }
36591 vikas 197
 
198
    @PostMapping("/pinelabs/offers/downpayment")
199
    public ResponseEntity<ApiResponse<?>> getPineLabsDownpaymentDetails(@RequestBody DownpaymentDetailsRequest request) throws Throwable {
200
        return wrapResponse(dealsController.getPineLabsDownpaymentDetails(request));
201
    }
202
 
203
    @PostMapping("/pinelabs/offers/cardless")
204
    public ResponseEntity<ApiResponse<?>> getPineLabsCardlessOffers(@RequestBody OfferDiscoveryRequest offerDiscoveryRequest) throws Throwable {
205
        return wrapResponse(dealsController.getPineLabsCardlessOffers(offerDiscoveryRequest));
206
    }
207
 
208
    @PostMapping("/pinelabs/offers/validate")
209
    public ResponseEntity<ApiResponse<?>> validatePineLabsOffer(@RequestBody OfferValidateRequest request) throws Throwable {
210
        return wrapResponse(dealsController.validatePineLabsOffer(request));
211
    }
212
 
213
    @PostMapping("/pinelabs/offers/create")
214
    public ResponseEntity<ApiResponse<?>> createPineLabsOffer(@RequestBody PineLablsCreateOfferRequest request) throws Throwable {
215
        return wrapResponse(dealsController.createPineLabsOffer(request));
216
    }
217
 
218
    @PostMapping("/pinelabs/imei/{orderId}")
219
    public ResponseEntity<ApiResponse<?>> validateImei(@PathVariable String orderId, @RequestBody Map<String, String> body) throws Throwable {
220
        return wrapResponse(dealsController.validateImei(orderId, body));
221
    }
36321 vikas 222
}