Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 5.48 KB | None | 0 0
  1.  
  2.  
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter/services.dart';
  5. import 'package:ganeca_digital_mobile/config/config_app.dart';
  6. import 'package:ganeca_digital_mobile/models/book.dart';
  7. import 'package:ganeca_digital_mobile/models/bookDetailResponse.dart';
  8. import 'package:ganeca_digital_mobile/models/bookPagingResponse.dart';
  9. import 'package:ganeca_digital_mobile/models/bookResponse.dart';
  10. import 'package:ganeca_digital_mobile/models/category.dart';
  11. import 'package:ganeca_digital_mobile/models/categoryDetailResponse.dart';
  12. import 'package:ganeca_digital_mobile/models/categoryResponse.dart';
  13. import 'package:ganeca_digital_mobile/models/member.dart';
  14. import 'package:ganeca_digital_mobile/models/memberResponse.dart';
  15. import 'package:ganeca_digital_mobile/models/promo.dart';
  16. import 'package:ganeca_digital_mobile/models/promoResponse.dart';
  17. import 'package:ganeca_digital_mobile/service/rest_api.dart';
  18. import 'package:ganeca_digital_mobile/service/view_state.dart';
  19. import 'package:shared_preferences/shared_preferences.dart';
  20.  
  21. import '../locator.dart';
  22. import 'base_view_model.dart';
  23.  
  24. class ListBookViewModel extends BaseViewModel {
  25.  
  26.   RestClient _api = locator<RestClient>();
  27.  
  28.   List<Book> bookData;
  29.  
  30.   String status;
  31.  
  32.   String errorMessage;
  33.  
  34.   List<Promo> promos;
  35.  
  36.   int currentPage = 1;
  37.  
  38.   Category category;
  39.   List<Category> categories;
  40.  
  41.   Future main(Category category,{order = "most",price : "",startPrice:"",endPrice:""}) async {
  42.     currentPage = 1;
  43.     setState(ViewState.Busy);
  44.     _api.fp = await SharedPreferences.getInstance();
  45.  
  46.     status = _api.fp.getString(ConfigApp.STATUS);
  47.     if(category.id != "") {
  48.       CategoryDetailResponse categoryResponse = await _api.getCategoryDetail(category.id);
  49.       this.category = categoryResponse.data;
  50.     }
  51.     BookPagingResponse bookResponse;
  52.     if(order=='most'){
  53.       bookResponse = await _api.getBookMostReadPaging(category: category.id,order: order,price: price,page : currentPage,startPrice:startPrice,endPrice: endPrice);
  54.     }else{
  55.       bookResponse = await _api.getBookPaging(category: category.id,order: order,price: price,page : currentPage,startPrice:startPrice,endPrice: endPrice);
  56.     }
  57.  
  58.     if(currentPage == bookResponse.last_page) {
  59.       setLoadBookState(LoadBookState.Max);
  60.     } else {
  61.       currentPage++;
  62.     }
  63.  
  64.     bookData = bookResponse.data;
  65.  
  66.  
  67.     setState(ViewState.Idle);
  68.   }
  69.  
  70.   Future<List<Book>> getNextPage(Category category,{order = null,price : "",startPrice:"",endPrice:""}) async {
  71.  
  72.     setLoadBookState(LoadBookState.Busy);
  73.     BookPagingResponse bookResponse;
  74.     if(order=='most'){
  75.       bookResponse = await _api.getBookMostReadPaging(category: category.id,order: order,price: price,page : currentPage,startPrice:startPrice,endPrice: endPrice);
  76.     }else{
  77.       bookResponse = await _api.getBookPaging(category: category.id,order: order,price: price,page : currentPage,startPrice:startPrice,endPrice: endPrice);
  78.     }
  79.  
  80.  
  81.     if(currentPage == bookResponse.last_page) {
  82.       setLoadBookState(LoadBookState.Idle);
  83.       setLoadBookState(LoadBookState.Max);
  84.     } else {
  85.       setLoadBookState(LoadBookState.Idle);
  86.       currentPage++;
  87.     }
  88.  
  89.  
  90.     return bookResponse.data;
  91.  
  92.   }
  93.  
  94.   Future mostRead(Category category,{order = null,price : '',library : '',search : "",startPrice:"",endPrice:""}) async {
  95.  
  96.     setState(ViewState.Busy);
  97.  
  98.     _api.fp = await SharedPreferences.getInstance();
  99.  
  100.     status = _api.fp.getString(ConfigApp.STATUS);
  101.  
  102.     if(category.id != "") {
  103.       CategoryDetailResponse categoryResponse = await _api.getCategoryDetail(category.id);
  104.  
  105.       this.category = categoryResponse.data;
  106.     }
  107.  
  108.     BookResponse bookResponse = await _api.getMostRead(limit: 12,category: category.id,order: order,price : price,library_id: library,search: search,startPrice: startPrice,endPrice: endPrice);
  109.  
  110.     bookData = bookResponse.data;
  111.  
  112.  
  113.  
  114.     setState(ViewState.Idle);
  115.   }
  116.  
  117.   Future search({Category category : null,order : "",limit : "", search : ""}) async {
  118.  
  119.     setState(ViewState.Busy);
  120.  
  121.     _api.fp = await SharedPreferences.getInstance();
  122.  
  123.     status = _api.fp.getString(ConfigApp.STATUS);
  124.  
  125.     BookResponse bookResponse = await _api.getBook(limit: 12,category: category == null ? "" : category.id ,order: order,search: search);
  126.  
  127.     bookData = bookResponse.data;
  128.  
  129.     setState(ViewState.Idle);
  130.   }
  131.  
  132.   Future globalSearch(String search) async {
  133.  
  134.     setState(ViewState.Busy);
  135.  
  136.     _api.fp = await SharedPreferences.getInstance();
  137.  
  138.     status = _api.fp.getString(ConfigApp.STATUS);
  139.  
  140.     BookPagingResponse bookResponse = await _api.getBookGlobalSearch(search: search,page : currentPage);
  141.  
  142.     if(currentPage == bookResponse.last_page) {
  143.       setLoadBookState(LoadBookState.Idle);
  144.       setLoadBookState(LoadBookState.Max);
  145.     } else {
  146.       setLoadBookState(LoadBookState.Idle);
  147.       currentPage++;
  148.     }
  149.  
  150.     bookData = bookResponse.data;
  151.  
  152.     setState(ViewState.Idle);
  153.   }
  154.  
  155.  
  156.  
  157.  
  158.   Future<List<Book>> getNextPageGlobalSearch(String search,{order = null,price : ""}) async {
  159.  
  160.     print(search);
  161.  
  162.     setLoadBookState(LoadBookState.Busy);
  163.  
  164.     BookPagingResponse bookResponse = await _api.getBookGlobalSearch(search: search,page : currentPage);
  165.  
  166.     if(currentPage == bookResponse.last_page) {
  167.       setLoadBookState(LoadBookState.Idle);
  168.       setLoadBookState(LoadBookState.Max);
  169.     } else {
  170.       setLoadBookState(LoadBookState.Idle);
  171.       currentPage++;
  172.     }
  173.  
  174.     return bookResponse.data;
  175.  
  176.   }
  177.  
  178.  
  179.  
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement