You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

233 regels
6.8 KiB

  1. import 'package:dio/dio.dart';
  2. import 'package:qadirneyriz/config/config.dart';
  3. import 'package:qadirneyriz/models/logo_images_model.dart';
  4. import 'package:qadirneyriz/models/meetings/meetings_location_model.dart';
  5. import 'package:qadirneyriz/models/meetings/meetings_managers_model.dart';
  6. import 'package:qadirneyriz/models/meetings/meetings_subjects_model.dart';
  7. import 'package:qadirneyriz/models/meetings/meetings_users_model.dart';
  8. import 'package:qadirneyriz/setting/setting.dart';
  9. import 'package:qadirneyriz/utils/result/result.dart';
  10. class GlobalServices {
  11. // location
  12. Future<List<LocationsModel>> getLocation() async {
  13. Map<String, String> headers = {
  14. 'Accept': 'application/json',
  15. };
  16. final String link =
  17. "${config.network.baseUrl}admin/locations?lang=${setting.userLocalDb.getUser().language}";
  18. final response = await Dio().get(link,
  19. options: Options(
  20. headers: headers,
  21. ));
  22. final list = response.data
  23. .map<LocationsModel>((e) => LocationsModel.fromJson(e))
  24. .toList();
  25. return list;
  26. }
  27. // subjects
  28. Future<List<SubjectsModel>> getSubjects() async {
  29. Map<String, String> headers = {
  30. 'Accept': 'application/json',
  31. };
  32. final String link =
  33. "${config.network.baseUrl}admin/subjects?lang=${setting.userLocalDb.getUser().language}";
  34. final response = await Dio().get(link,
  35. options: Options(
  36. headers: headers,
  37. ));
  38. final list = response.data
  39. .map<SubjectsModel>((e) => SubjectsModel.fromJson(e))
  40. .toList();
  41. return list;
  42. }
  43. // managers
  44. Future<List<MeetingsMangersModel>> getManagers() async {
  45. Map<String, String> headers = {
  46. 'Accept': 'application/json',
  47. };
  48. String dataToken = setting.userLocalDb.getUser().token!;
  49. if (dataToken != '') {
  50. headers['Authorization'] = "Bearer $dataToken";
  51. }
  52. final String link =
  53. "${config.network.baseUrl}meeting-manager?lang=${setting.userLocalDb.getUser().language}";
  54. final response = await Dio().get(link,
  55. options: Options(
  56. headers: headers,
  57. ));
  58. final list = response.data
  59. .map<MeetingsMangersModel>((e) => MeetingsMangersModel.fromJson(e))
  60. .toList();
  61. return list;
  62. }
  63. // users
  64. Future<List<UsersModel>> getUsers() async {
  65. Map<String, String> headers = {
  66. 'Accept': 'application/json',
  67. };
  68. String dataToken = setting.userLocalDb.getUser().token!;
  69. if (dataToken != '') {
  70. headers['Authorization'] = "Bearer $dataToken";
  71. }
  72. final String link =
  73. "${config.network.baseUrl}admin/users?is_active=1?lang=${setting.userLocalDb.getUser().language}";
  74. final response = await Dio().get(link,
  75. options: Options(
  76. headers: headers,
  77. ));
  78. final list =
  79. response.data.map<UsersModel>((e) => UsersModel.fromJson(e)).toList();
  80. return list;
  81. }
  82. // add new subject
  83. Future<Result> addNewSubject({
  84. required String subject,
  85. required String enSubject,
  86. }) async {
  87. try {
  88. Map<String, String> headers = {"Accept": "application/json"};
  89. FormData? formData;
  90. String dataToken = setting.userLocalDb.getUser().token!;
  91. if (dataToken != '') {
  92. headers['Authorization'] = "Bearer $dataToken";
  93. }
  94. formData =
  95. FormData.fromMap({"subject": subject, "subject_en": enSubject});
  96. final res = await Dio().post("${config.network.baseUrl}admin/add-subject",
  97. data: formData, options: Options(headers: headers));
  98. if (res.statusCode == 200 || res.statusCode == 201) {
  99. return Result(isOk: true, message: res.data['msg']);
  100. }
  101. } on DioException catch (e) {
  102. return Result(
  103. isOk: false,
  104. errors: e.response!.data['errors'],
  105. message: e.response!.data['msg']);
  106. }
  107. return const Result(isOk: false);
  108. }
  109. // add new user
  110. Future<Result> addNewUser({
  111. required String mobile,
  112. required String name,
  113. required String password,
  114. required int role,
  115. }) async {
  116. try {
  117. Map<String, String> headers = {"Accept": "application/json"};
  118. FormData? formData;
  119. String dataToken = setting.userLocalDb.getUser().token!;
  120. if (dataToken != '') {
  121. headers['Authorization'] = "Bearer $dataToken";
  122. }
  123. formData = FormData.fromMap(
  124. {"mobile": mobile, "name": name, "password": password, "role": role});
  125. final res = await Dio().post("${config.network.baseUrl}admin/add-user",
  126. data: formData, options: Options(headers: headers));
  127. if (res.statusCode == 200 || res.statusCode == 201) {
  128. return Result(isOk: true, message: res.data['msg']);
  129. }
  130. } on DioException catch (e) {
  131. return Result(
  132. isOk: false,
  133. errors: e.response!.data['errors'],
  134. message: e.response!.data['msg']);
  135. }
  136. return const Result(isOk: false);
  137. }
  138. // add new location
  139. Future<Result> addNewLocation({
  140. required String address,
  141. required String addressEn,
  142. }) async {
  143. try {
  144. Map<String, String> headers = {"Accept": "application/json"};
  145. FormData? formData;
  146. String dataToken = setting.userLocalDb.getUser().token!;
  147. if (dataToken != '') {
  148. headers['Authorization'] = "Bearer $dataToken";
  149. }
  150. formData =
  151. FormData.fromMap({"address": address, "address_en": addressEn});
  152. final res = await Dio().post(
  153. "${config.network.baseUrl}admin/add-location",
  154. data: formData,
  155. options: Options(headers: headers));
  156. if (res.statusCode == 200 || res.statusCode == 201) {
  157. return Result(isOk: true, message: res.data['msg']);
  158. }
  159. } on DioException catch (e) {
  160. return Result(
  161. isOk: false,
  162. errors: e.response!.data['errors'],
  163. message: e.response!.data['msg']);
  164. }
  165. return const Result(isOk: false);
  166. }
  167. // get logo images
  168. Future<LogoImagesModel> getLogoImagesApi() async {
  169. Map<String, String> headers = {
  170. 'Accept': 'application/json',
  171. };
  172. String dataToken = setting.userLocalDb.getUser().token!;
  173. int role = setting.userLocalDb.getUser().role!;
  174. // print("DEBUG: Token => $dataToken");
  175. // print("DEBUG: Role => $role");
  176. if (dataToken != '') {
  177. headers['Authorization'] = "Bearer $dataToken";
  178. }
  179. // print("DEBUG: Headers => $headers");
  180. final String link = role != 1
  181. ? "${config.network.baseUrl}admin/settings"
  182. : "${config.network.baseUrl}user/settings";
  183. // print("DEBUG: API Link => $link");
  184. try {
  185. final response = await Dio().get(link,
  186. options: Options(
  187. headers: headers,
  188. ));
  189. // print("DEBUG: Response Data => ${response.data}");
  190. LogoImagesModel list = LogoImagesModel.fromJson(response.data);
  191. return list;
  192. } catch (e) {
  193. // print("DEBUG: Error => $e");
  194. rethrow;
  195. }
  196. }
  197. }