Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

204 Zeilen
5.3 KiB

  1. import 'package:flutter/material.dart';
  2. import 'package:qadirneyriz/services/report/report.dart';
  3. import 'package:qadirneyriz/utils/enums/status.dart';
  4. class ReportState extends ChangeNotifier {
  5. ReportApi reportApi = ReportApi();
  6. // set date for filters
  7. String fromDate = '';
  8. String toDate = '';
  9. void setFromDates(String? newFromDate) {
  10. fromDate = newFromDate ?? '';
  11. notifyListeners();
  12. }
  13. void setToDates(String? newToDate) {
  14. toDate = newToDate ?? '';
  15. notifyListeners();
  16. }
  17. // is filter Not empty
  18. bool hasActiveFilters() {
  19. return selectedLocationId != null ||
  20. selectedManagersId != null ||
  21. selectedStatusId != null ||
  22. selectedSubjectId != null ||
  23. fromDate.isNotEmpty ||
  24. toDate.isNotEmpty;
  25. }
  26. // get filters location meetings
  27. int? selectedLocationId;
  28. void selectLocation(int? locationId) {
  29. selectedLocationId = locationId;
  30. notifyListeners();
  31. }
  32. // get filters subjects meetings
  33. int? selectedSubjectId;
  34. void selectSubject(int? subjectId) {
  35. selectedSubjectId = subjectId;
  36. notifyListeners();
  37. }
  38. // get filters meeting managers
  39. int? selectedManagersId;
  40. void selectManager(int? managerId) {
  41. selectedManagersId = managerId;
  42. notifyListeners();
  43. }
  44. // all meeting status filters
  45. int? selectedStatusId;
  46. void selectStatusMeeting(int? statusId) {
  47. selectedStatusId = statusId;
  48. notifyListeners();
  49. }
  50. // download report meeting
  51. Map<String, Status> statusDownload = {};
  52. String? messageDownload;
  53. Future<Status> downloadReport(
  54. {String? fromDate,
  55. String? toDate,
  56. int? location,
  57. int? subject,
  58. int? meetingManager,
  59. required String format,
  60. int? status}) async {
  61. statusDownload[format] = Status.loading;
  62. notifyListeners();
  63. try {
  64. final result = await reportApi.downloadReportMeetings(
  65. fromDate: fromDate,
  66. toDate: toDate,
  67. location: location,
  68. subject: subject,
  69. meetingManager: meetingManager,
  70. format: format,
  71. status: status);
  72. if (result == null) {
  73. statusDownload[format] = Status.error;
  74. } else {
  75. if (result.isOk) {
  76. statusDownload[format] = Status.ready;
  77. messageDownload = result.message ?? '';
  78. } else {
  79. statusDownload[format] = Status.error;
  80. }
  81. }
  82. } catch (e) {
  83. statusDownload[format] = Status.error;
  84. // print(e);
  85. }
  86. // print(statusDownload[format]);
  87. notifyListeners();
  88. return statusDownload[format] ?? Status.error;
  89. }
  90. // private meetings report items
  91. String fromDatePrivateMeeting = '';
  92. String toDatePrivateMeeting = '';
  93. void setFromDatesPrivateMeeting(String? newFromDate) {
  94. fromDatePrivateMeeting = newFromDate ?? '';
  95. notifyListeners();
  96. }
  97. void setToDatesPrivateMeeting(String? newToDate) {
  98. toDatePrivateMeeting = newToDate ?? '';
  99. notifyListeners();
  100. }
  101. // is filter Not empty
  102. bool hasActiveFiltersPrivateMeeting() {
  103. return selectedLocationIdPrivateMeeting != null ||
  104. selectedManagersIdPrivateMeeting != null ||
  105. selectedStatusIdPrivateMeeting != null ||
  106. selectedSubjectIdPrivateMeeting != null ||
  107. fromDatePrivateMeeting.isNotEmpty ||
  108. toDatePrivateMeeting.isNotEmpty;
  109. }
  110. // get filters location PrivateMeeting
  111. int? selectedLocationIdPrivateMeeting;
  112. void selectLocationPrivateMeeting(int? locationId) {
  113. selectedLocationIdPrivateMeeting = locationId;
  114. notifyListeners();
  115. }
  116. // get filters subjects PrivateMeeting
  117. int? selectedSubjectIdPrivateMeeting;
  118. void selectSubjectPrivateMeeting(int? subjectId) {
  119. selectedSubjectIdPrivateMeeting = subjectId;
  120. notifyListeners();
  121. }
  122. // get filters PrivateMeeting
  123. int? selectedManagersIdPrivateMeeting;
  124. void selectManagerPrivateMeeting(int? managerId) {
  125. selectedManagersIdPrivateMeeting = managerId;
  126. notifyListeners();
  127. }
  128. // all PrivateMeeting status filters
  129. int? selectedStatusIdPrivateMeeting;
  130. void selectStatusMeetingPrivateMeeting(int? statusId) {
  131. selectedStatusIdPrivateMeeting = statusId;
  132. notifyListeners();
  133. }
  134. // download report PrivateMeeting
  135. Map<String, Status> statusDownloadPrivateMeeting = {};
  136. String? messageDownloadPrivateMeeting;
  137. Future<Status> downloadReportPrivateMeeting(
  138. {String? fromDate,
  139. String? toDate,
  140. int? location,
  141. int? subject,
  142. int? meetingManager,
  143. required String format,
  144. int? status}) async {
  145. statusDownloadPrivateMeeting[format] = Status.loading;
  146. notifyListeners();
  147. try {
  148. final result = await reportApi.downloadReportPrivateMeetings(
  149. format: format,
  150. fromDate: fromDate,
  151. toDate: toDate,
  152. location: location,
  153. subject: subject,
  154. meetingManager: meetingManager,
  155. status: status);
  156. if (result == null) {
  157. statusDownloadPrivateMeeting[format] = Status.error;
  158. } else {
  159. if (result.isOk) {
  160. statusDownloadPrivateMeeting[format] = Status.ready;
  161. messageDownloadPrivateMeeting = result.message ?? '';
  162. } else {
  163. statusDownloadPrivateMeeting[format] = Status.error;
  164. }
  165. }
  166. } catch (e) {
  167. statusDownloadPrivateMeeting[format] = Status.error;
  168. }
  169. notifyListeners();
  170. return statusDownloadPrivateMeeting[format] ?? Status.error;
  171. }
  172. }