agenda_repository.dart 3.1 KB

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