agenda_repository.dart 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import 'package:electronic_assistant/data/api/request/talk_request.dart';
  2. import 'package:electronic_assistant/data/bean/agenda.dart';
  3. import 'package:get/get_rx/src/rx_types/rx_types.dart';
  4. import '../../utils/http_handler.dart';
  5. import '../api/atmob_api.dart';
  6. import '../api/request/agenda_request.dart';
  7. import '../api/request/agenda_status_request.dart';
  8. import '../api/request/agenda_todo_request.dart';
  9. import '../api/response/agenda_list_all_response.dart';
  10. import '../api/response/agenda_list_mine_response.dart';
  11. import '../api/response/agenda_response.dart';
  12. import 'account_repository.dart';
  13. class AgendaRepository {
  14. AgendaRepository._();
  15. final _agendaList = RxList<Agenda>();
  16. RxList<Agenda> get agendaList => _agendaList;
  17. clearAgendaList() {
  18. _agendaList.clear();
  19. }
  20. void setAgendaList(List<Agenda> list) {
  21. _agendaList.assignAll(list);
  22. }
  23. removeItem(Agenda item) {
  24. _agendaList.removeWhere((element) => element.id == item.id);
  25. }
  26. Future<AgendaResponse> requestHomeAgendaData(
  27. {int pageSize = 999, TaskStatus completeStatus = TaskStatus.TODO}) {
  28. return requestAgendaPagePaginate(1, pageSize,
  29. completeStatus: completeStatus);
  30. }
  31. Future<AgendaResponse> requestAgendaPagePaginate(int page, int pageSize,
  32. {TaskStatus? completeStatus}) {
  33. return agendaPage(page, pageSize, completeStatus: completeStatus)
  34. .then((response) {
  35. if (page == 1) {
  36. _agendaList.clear();
  37. }
  38. if (response.list != null) {
  39. _agendaList.addAll(response.list!);
  40. }
  41. return response;
  42. });
  43. }
  44. Future<AgendaResponse> agendaPage(int page, int pageSize,
  45. {int? startTime, int? endTime, TaskStatus? completeStatus}) {
  46. return atmobApi
  47. .agendaPage(AgendaRequest(page, pageSize,
  48. startTime: startTime,
  49. endTime: endTime,
  50. completeStatus: completeStatus?.value))
  51. .then(HttpHandler.handle(true));
  52. }
  53. Future<void> agendaFinish(String? id, bool complete) {
  54. return atmobApi
  55. .agendaFinish(AgendaStatusRequest(id, complete))
  56. .then(HttpHandler.handle(true));
  57. }
  58. Future<AgendaListAllResponse> agendaListAll(String talkId) {
  59. return atmobApi
  60. .agendaListAll(
  61. TalkRequest(talkId, isExample: !accountRepository.isLogin.value))
  62. .then(HttpHandler.handle(true));
  63. }
  64. Future<AgendaListMineResponse> agendaListMine(String talkId) {
  65. return atmobApi
  66. .agendaListMine(
  67. TalkRequest(talkId, isExample: !accountRepository.isLogin.value))
  68. .then(HttpHandler.handle(true));
  69. }
  70. Future<void> agendaTodo(String id, bool isTodo) {
  71. return atmobApi
  72. .agendaTodo(AgendaTodoRequest(id, isTodo))
  73. .then(HttpHandler.handle(true));
  74. }
  75. }
  76. final agendaRepository = AgendaRepository._();