Added initial APIs for Marathon
							parent
							
								
									143d0772f2
								
							
						
					
					
						commit
						35a4b780a7
					
				| @ -0,0 +1,30 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>aps-environment</key> | ||||
| 	<string>development</string> | ||||
| 	<key>com.apple.developer.icloud-container-identifiers</key> | ||||
| 	<array> | ||||
| 		<string>iCloud.com.cloudsolutions.mohemm</string> | ||||
| 	</array> | ||||
| 	<key>com.apple.developer.icloud-services</key> | ||||
| 	<array> | ||||
| 		<string>CloudDocuments</string> | ||||
| 	</array> | ||||
| 	<key>com.apple.developer.networking.HotspotConfiguration</key> | ||||
| 	<true/> | ||||
| 	<key>com.apple.developer.networking.networkextension</key> | ||||
| 	<array/> | ||||
| 	<key>com.apple.developer.networking.wifi-info</key> | ||||
| 	<true/> | ||||
| 	<key>com.apple.developer.nfc.readersession.formats</key> | ||||
| 	<array> | ||||
| 		<string>TAG</string> | ||||
| 	</array> | ||||
| 	<key>com.apple.developer.ubiquity-container-identifiers</key> | ||||
| 	<array> | ||||
| 		<string>iCloud.com.cloudsolutions.mohemm</string> | ||||
| 	</array> | ||||
| </dict> | ||||
| </plist> | ||||
| @ -0,0 +1,71 @@ | ||||
| import 'dart:convert'; | ||||
| 
 | ||||
| import 'package:http/http.dart'; | ||||
| import 'package:mohem_flutter_app/api/api_client.dart'; | ||||
| import 'package:mohem_flutter_app/app_state/app_state.dart'; | ||||
| import 'package:mohem_flutter_app/classes/consts.dart'; | ||||
| import 'package:mohem_flutter_app/models/marathon/marathon_generic_model.dart'; | ||||
| import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; | ||||
| 
 | ||||
| class MarathonApiClient { | ||||
|   Future<String> getMarathonToken() async { | ||||
|     String employeeUserName = AppState().getUserName ?? ""; | ||||
|     String employeeSession = AppState().postParamsObject?.pSessionId.toString() ?? ""; | ||||
| 
 | ||||
|     Map<String, String> jsonObject = {"userName": employeeUserName, "password": employeeSession}; | ||||
|     Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonParticipantLoginUrl, jsonObject); | ||||
| 
 | ||||
|     var json = jsonDecode(response.body); | ||||
| 
 | ||||
|     MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); | ||||
| 
 | ||||
|     if (marathonModel.statusCode == 200) { | ||||
|       if (marathonModel.data != null && marathonModel.isSuccessful == true) { | ||||
|         print("bearerToken: ${marathonModel.data["token"]}"); | ||||
|         AppState().setMarathonToken = marathonModel.data["token"] ?? ""; | ||||
|         return marathonModel.data["token"] ?? ""; | ||||
|       } else { | ||||
|         //TODO : DO ERROR HANDLING HERE | ||||
|         return ""; | ||||
|       } | ||||
|     } else { | ||||
|       //TODO : DO ERROR HANDLING HERE | ||||
|       return ""; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<String> getProjectId() async { | ||||
|     Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonProjectGetUrl, <String, dynamic>{}, token: AppState().getMarathonToken ?? await getMarathonToken()); | ||||
| 
 | ||||
|     var json = jsonDecode(response.body); | ||||
|     MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); | ||||
| 
 | ||||
|     if (marathonModel.statusCode == 200) { | ||||
|       if (marathonModel.data != null && marathonModel.isSuccessful == true) { | ||||
|         print("projectID: ${marathonModel.data[0]["id"]}"); | ||||
|         AppState().setMarathonProjectId = marathonModel.data[0]["id"] ?? ""; | ||||
|         return marathonModel.data[0]["id"] ?? ""; | ||||
|       } else { | ||||
|         //TODO : DO ERROR HANDLING HERE | ||||
|         return ""; | ||||
|       } | ||||
|     } else { | ||||
|       //TODO : DO ERROR HANDLING HERE | ||||
|       return ""; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Future<MarathonDetailModel> getMarathonDetails() async { | ||||
|     String payrollString = AppState().postParamsObject?.payrollCodeStr.toString() ?? "CS"; | ||||
| 
 | ||||
|     Response response = await ApiClient().getJsonForResponse(ApiConsts.marathonUpcomingUrl + payrollString, token: AppState().getMarathonToken ?? await getMarathonToken()); | ||||
| 
 | ||||
|     var json = jsonDecode(response.body); | ||||
| 
 | ||||
|     MarathonGenericModel marathonGenericModel = MarathonGenericModel.fromJson(json); | ||||
| 
 | ||||
|     MarathonDetailModel marathonDetailModel = MarathonDetailModel.fromJson(marathonGenericModel.data); | ||||
| 
 | ||||
|     return marathonDetailModel; | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,31 @@ | ||||
| class MarathonGenericModel { | ||||
|   MarathonGenericModel({ | ||||
|     this.data, | ||||
|     this.isSuccessful, | ||||
|     this.message, | ||||
|     this.statusCode, | ||||
|     this.errors, | ||||
|   }); | ||||
| 
 | ||||
|   dynamic data; | ||||
|   bool? isSuccessful; | ||||
|   String? message; | ||||
|   int? statusCode; | ||||
|   dynamic errors; | ||||
| 
 | ||||
|   factory MarathonGenericModel.fromJson(Map<String, dynamic> json) => MarathonGenericModel( | ||||
|         data: json["data"], | ||||
|         isSuccessful: json["isSuccessful"], | ||||
|         message: json["message"], | ||||
|         statusCode: json["statusCode"], | ||||
|         errors: json["errors"], | ||||
|       ); | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() => { | ||||
|         "data": data, | ||||
|         "isSuccessful": isSuccessful, | ||||
|         "message": message, | ||||
|         "statusCode": statusCode, | ||||
|         "errors": errors, | ||||
|       }; | ||||
| } | ||||
| @ -0,0 +1,83 @@ | ||||
| class MarathonDetailModel { | ||||
|   String? id; | ||||
|   String? titleEn; | ||||
|   String? titleAr; | ||||
|   String? descEn; | ||||
|   String? descAr; | ||||
|   int? winDeciderTime; | ||||
|   int? winnersCount; | ||||
|   int? questGapTime; | ||||
|   String? startTime; | ||||
|   String? endTime; | ||||
|   int? marathoneStatusId; | ||||
|   String? scheduleTime; | ||||
|   int? selectedLanguage; | ||||
|   List? projects; | ||||
|   List? sponsors; | ||||
|   List? questions; | ||||
| 
 | ||||
|   MarathonDetailModel( | ||||
|       {id, | ||||
|         titleEn, | ||||
|         titleAr, | ||||
|         descEn, | ||||
|         descAr, | ||||
|         winDeciderTime, | ||||
|         winnersCount, | ||||
|         questGapTime, | ||||
|         startTime, | ||||
|         endTime, | ||||
|         marathoneStatusId, | ||||
|         scheduleTime, | ||||
|         selectedLanguage, | ||||
|         projects, | ||||
|         sponsors, | ||||
|         questions}); | ||||
| 
 | ||||
|   MarathonDetailModel.fromJson(Map<String, dynamic> json) { | ||||
|     id = json['id']; | ||||
|     titleEn = json['titleEn']; | ||||
|     titleAr = json['titleAr']; | ||||
|     descEn = json['descEn']; | ||||
|     descAr = json['descAr']; | ||||
|     winDeciderTime = json['winDeciderTime']; | ||||
|     winnersCount = json['winnersCount']; | ||||
|     questGapTime = json['questGapTime']; | ||||
|     startTime = json['startTime']; | ||||
|     endTime = json['endTime']; | ||||
|     marathoneStatusId = json['marathoneStatusId']; | ||||
|     scheduleTime = json['scheduleTime']; | ||||
|     selectedLanguage = json['selectedLanguage']; | ||||
|     projects = json['projects']; | ||||
|     sponsors = json['sponsors']; | ||||
|     if (json['questions'] != null) { | ||||
|       questions = <Null>[]; | ||||
|       json['questions'].forEach((v) { | ||||
|         // questions!.add( Null.fromJson(v)); | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   Map<String, dynamic> toJson() { | ||||
|      Map<String, dynamic> data = new Map<String, dynamic>(); | ||||
|     data['id'] = id; | ||||
|     data['titleEn'] = titleEn; | ||||
|     data['titleAr'] = titleAr; | ||||
|     data['descEn'] = descEn; | ||||
|     data['descAr'] = descAr; | ||||
|     data['winDeciderTime'] = winDeciderTime; | ||||
|     data['winnersCount'] = winnersCount; | ||||
|     data['questGapTime'] = questGapTime; | ||||
|     data['startTime'] = startTime; | ||||
|     data['endTime'] = endTime; | ||||
|     data['marathoneStatusId'] = marathoneStatusId; | ||||
|     data['scheduleTime'] = scheduleTime; | ||||
|     data['selectedLanguage'] = selectedLanguage; | ||||
|     data['projects'] = projects; | ||||
|     data['sponsors'] = sponsors; | ||||
|     if (questions != null) { | ||||
|       data['questions'] = questions!.map((v) => v.toJson()).toList(); | ||||
|     } | ||||
|     return data; | ||||
|   } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue