2023-03-02 08:22:31 +00:00
|
|
|
import 'dart:convert';
|
|
|
|
|
2023-05-22 02:23:56 +00:00
|
|
|
import 'package:flutter/material.dart';
|
2023-03-02 08:22:31 +00:00
|
|
|
import 'package:unit2/utils/request.dart';
|
2023-05-22 02:23:56 +00:00
|
|
|
import 'package:unit2/utils/text_container.dart';
|
2023-03-02 08:22:31 +00:00
|
|
|
|
|
|
|
import '../../model/profile/learning_development.dart';
|
|
|
|
import '../../utils/urls.dart';
|
|
|
|
import 'package:http/http.dart' as http;
|
|
|
|
|
|
|
|
class LearningDevelopmentServices {
|
|
|
|
static final LearningDevelopmentServices _instance =
|
|
|
|
LearningDevelopmentServices();
|
|
|
|
static LearningDevelopmentServices get instance => _instance;
|
|
|
|
|
|
|
|
Future<List<LearningDevelopement>> getLearningDevelopments(
|
|
|
|
int profileId, String token) async {
|
|
|
|
List<LearningDevelopement> learningsAndDevelopments = [];
|
|
|
|
String authToken = "Token $token";
|
2023-05-22 02:23:56 +00:00
|
|
|
String path = "${Url.instance.learningAndDevelopments()}$profileId/";
|
2023-03-02 08:22:31 +00:00
|
|
|
Map<String, String> headers = {
|
|
|
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
|
|
'Authorization': authToken
|
|
|
|
};
|
2023-05-22 02:23:56 +00:00
|
|
|
try {
|
|
|
|
http.Response response = await Request.instance
|
|
|
|
.getRequest(path: path, param: {}, headers: headers);
|
|
|
|
if (response.statusCode == 200) {
|
|
|
|
Map data = jsonDecode(response.body);
|
|
|
|
if (data['data'] != null) {
|
|
|
|
data['data'].forEach((var learnings) {
|
|
|
|
LearningDevelopement learningDevelopement =
|
|
|
|
LearningDevelopement.fromJson(learnings);
|
|
|
|
learningsAndDevelopments.add(learningDevelopement);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
throw e.toString();
|
|
|
|
}
|
|
|
|
return learningsAndDevelopments;
|
|
|
|
}
|
|
|
|
|
|
|
|
////Add
|
|
|
|
Future<Map<dynamic, dynamic>> add(
|
|
|
|
{required LearningDevelopement learningDevelopement,
|
|
|
|
required String token,
|
|
|
|
required int profileId}) async {
|
|
|
|
String authtoken = "Token $token";
|
|
|
|
String path = '${Url.instance.learningAndDevelopments()}$profileId/';
|
|
|
|
Map<String, String> headers = {
|
|
|
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
|
|
'Authorization': authtoken
|
|
|
|
};
|
|
|
|
Map<dynamic, dynamic> statusResponse = {};
|
|
|
|
try {
|
|
|
|
Map body = {
|
|
|
|
"training_conduct_id": learningDevelopement.conductedTraining?.id,
|
|
|
|
"total_hours_attended":
|
|
|
|
learningDevelopement.totalHoursAttended.toString(),
|
|
|
|
"sponsor_id": learningDevelopement.sponsoredBy?.id,
|
|
|
|
"sponsor_name": learningDevelopement.sponsoredBy?.name,
|
|
|
|
"sponsor_category": learningDevelopement.sponsoredBy?.category?.id,
|
|
|
|
"sponsor_private": learningDevelopement.sponsoredBy?.privateEntity,
|
|
|
|
"training_id": learningDevelopement.conductedTraining?.title?.id,
|
|
|
|
"training_title": learningDevelopement.conductedTraining?.title?.title,
|
|
|
|
"topic_id": learningDevelopement.conductedTraining?.topic?.id,
|
|
|
|
"topic_title": learningDevelopement.conductedTraining?.topic?.title,
|
|
|
|
"conductor_id": learningDevelopement.conductedTraining?.conductedBy?.id,
|
|
|
|
"conductor_name":
|
|
|
|
learningDevelopement.conductedTraining?.conductedBy?.name,
|
|
|
|
"conductor_category":
|
|
|
|
learningDevelopement.conductedTraining?.conductedBy?.category?.id!,
|
|
|
|
"conductor_private":
|
|
|
|
learningDevelopement.conductedTraining?.conductedBy?.privateEntity,
|
|
|
|
"venue_city_municipality": learningDevelopement
|
|
|
|
.conductedTraining?.venue?.cityMunicipality?.code,
|
|
|
|
"venue_barangay":
|
|
|
|
learningDevelopement.conductedTraining?.venue?.barangay?.code,
|
|
|
|
"learning_development_type":
|
|
|
|
learningDevelopement.conductedTraining?.learningDevelopmentType?.id,
|
|
|
|
"from_date":
|
|
|
|
learningDevelopement.conductedTraining?.fromDate?.toString(),
|
|
|
|
"to_date": learningDevelopement.conductedTraining?.toDate?.toString(),
|
|
|
|
"total_hours": learningDevelopement.conductedTraining?.totalHours,
|
|
|
|
"locked": false,
|
|
|
|
"venue_country":
|
|
|
|
learningDevelopement.conductedTraining!.venue!.country!.id
|
|
|
|
};
|
|
|
|
http.Response response = await Request.instance
|
|
|
|
.postRequest(path: path, param: {}, body: body, headers: headers);
|
|
|
|
if (response.statusCode == 201) {
|
|
|
|
Map data = jsonDecode(response.body);
|
|
|
|
statusResponse = data;
|
|
|
|
} else {
|
|
|
|
statusResponse.addAll({'success': false});
|
|
|
|
}
|
|
|
|
return statusResponse;
|
|
|
|
} catch (e) {
|
|
|
|
throw e.toString();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
////Add
|
|
|
|
Future<Map<dynamic, dynamic>> update(
|
|
|
|
{required LearningDevelopement learningDevelopement,
|
|
|
|
required String token,
|
|
|
|
required int profileId}) async {
|
|
|
|
String authtoken = "Token $token";
|
|
|
|
String path = '${Url.instance.learningAndDevelopments()}$profileId/';
|
|
|
|
Map<String, String> headers = {
|
|
|
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
|
|
'Authorization': authtoken
|
|
|
|
};
|
|
|
|
Map<dynamic, dynamic> statusResponse = {};
|
|
|
|
try {
|
|
|
|
Map body = {
|
|
|
|
"training_conduct_id": learningDevelopement.conductedTraining?.id,
|
|
|
|
"total_hours_attended":
|
|
|
|
learningDevelopement.totalHoursAttended.toString(),
|
|
|
|
"sponsor_id": learningDevelopement.sponsoredBy?.id,
|
|
|
|
"sponsor_name": learningDevelopement.sponsoredBy?.name,
|
|
|
|
"sponsor_category": learningDevelopement.sponsoredBy?.category?.id,
|
|
|
|
"sponsor_private": learningDevelopement.sponsoredBy?.privateEntity,
|
|
|
|
"training_id": learningDevelopement.conductedTraining?.title?.id,
|
|
|
|
"training_title": learningDevelopement.conductedTraining?.title?.title,
|
|
|
|
"topic_id": learningDevelopement.conductedTraining?.topic?.id,
|
|
|
|
"topic_title": learningDevelopement.conductedTraining?.topic?.title,
|
|
|
|
"conductor_id": learningDevelopement.conductedTraining?.conductedBy?.id,
|
|
|
|
"conductor_name":
|
|
|
|
learningDevelopement.conductedTraining?.conductedBy?.name,
|
|
|
|
"conductor_category":
|
|
|
|
learningDevelopement.conductedTraining?.conductedBy?.category?.id!,
|
|
|
|
"conductor_private":
|
|
|
|
learningDevelopement.conductedTraining?.conductedBy?.privateEntity,
|
|
|
|
"venue_city_municipality": learningDevelopement
|
|
|
|
.conductedTraining?.venue?.cityMunicipality?.code,
|
|
|
|
"venue_barangay":
|
|
|
|
learningDevelopement.conductedTraining?.venue?.barangay?.code,
|
|
|
|
"learning_development_type":
|
|
|
|
learningDevelopement.conductedTraining?.learningDevelopmentType?.id,
|
|
|
|
"from_date":
|
|
|
|
learningDevelopement.conductedTraining?.fromDate?.toString(),
|
|
|
|
"to_date": learningDevelopement.conductedTraining?.toDate?.toString(),
|
|
|
|
"total_hours": learningDevelopement.conductedTraining?.totalHours,
|
|
|
|
"locked": learningDevelopement.conductedTraining?.locked,
|
|
|
|
"venue_country":
|
|
|
|
learningDevelopement.conductedTraining!.venue!.country!.id
|
|
|
|
};
|
|
|
|
http.Response response = await Request.instance
|
|
|
|
.putRequest(path: path, param: {}, body: body, headers: headers);
|
|
|
|
if (response.statusCode == 201) {
|
|
|
|
Map data = jsonDecode(response.body);
|
|
|
|
statusResponse = data;
|
|
|
|
} else {
|
|
|
|
statusResponse.addAll({'success': false});
|
|
|
|
}
|
|
|
|
return statusResponse;
|
|
|
|
} catch (e) {
|
|
|
|
throw e.toString();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
////Delete
|
|
|
|
Future<bool> delete(
|
|
|
|
{required int profileId,
|
|
|
|
required String token,
|
|
|
|
required int? sponsorId,
|
|
|
|
required double totalHours,
|
|
|
|
required int trainingId}) async {
|
|
|
|
bool? success;
|
|
|
|
Map<String, dynamic> params = {"force_mode": "true"};
|
|
|
|
String authToken = "Token $token";
|
|
|
|
String path = '${Url.instance.learningAndDevelopments()}$profileId/';
|
|
|
|
Map body = {
|
|
|
|
"sponsor_id": sponsorId,
|
|
|
|
"total_hours_attended": totalHours,
|
|
|
|
"training_conduct_id": trainingId
|
|
|
|
};
|
|
|
|
Map<String, String> headers = {
|
|
|
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
|
|
'Authorization': authToken
|
|
|
|
};
|
|
|
|
try {
|
|
|
|
http.Response response = await Request.instance.deleteRequest(
|
|
|
|
path: path, headers: headers, body: body, param: params);
|
|
|
|
|
|
|
|
if (response.statusCode == 200) {
|
|
|
|
Map data = jsonDecode(response.body);
|
|
|
|
success = data['success'];
|
|
|
|
} else {
|
|
|
|
success = false;
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
throw e.toString();
|
|
|
|
}
|
|
|
|
return success!;
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<List<ConductedTraining>> getConductedTrainings(
|
|
|
|
{required String key, required int page}) async {
|
|
|
|
List<ConductedTraining> trainings = [];
|
|
|
|
Map<String, String> headers = {
|
|
|
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
|
|
};
|
|
|
|
Map<String, String> params = {
|
|
|
|
"title__title___ilike": key,
|
|
|
|
"page": page.toString()
|
|
|
|
};
|
|
|
|
|
|
|
|
String path = Url.instance.conductedTrainings();
|
|
|
|
try {
|
|
|
|
http.Response response = await Request.instance
|
|
|
|
.getRequest(path: path, param: params, headers: headers);
|
|
|
|
if (response.statusCode == 200) {
|
|
|
|
Map data = jsonDecode(response.body);
|
|
|
|
if (data['data'] != null) {
|
|
|
|
data['data'].forEach((var element) {
|
|
|
|
ConductedTraining training = ConductedTraining.fromJson(element);
|
|
|
|
trainings.add(training);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
throw e.toString();
|
|
|
|
}
|
|
|
|
return trainings;
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<List<LearningDevelopmentType>> getLearningDevelopmentType() async {
|
|
|
|
List<LearningDevelopmentType> types = [];
|
|
|
|
Map<String, String> headers = {
|
|
|
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
|
|
};
|
|
|
|
|
|
|
|
String path = Url.instance.learningAndDevelopmentType();
|
|
|
|
try {
|
2023-03-02 08:22:31 +00:00
|
|
|
http.Response response = await Request.instance
|
|
|
|
.getRequest(path: path, param: {}, headers: headers);
|
|
|
|
if (response.statusCode == 200) {
|
|
|
|
Map data = jsonDecode(response.body);
|
|
|
|
if (data['data'] != null) {
|
2023-05-22 02:23:56 +00:00
|
|
|
data['data'].forEach((var element) {
|
|
|
|
LearningDevelopmentType type =
|
|
|
|
LearningDevelopmentType.fromJson(element);
|
|
|
|
types.add(type);
|
2023-03-02 08:22:31 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
2023-05-22 02:23:56 +00:00
|
|
|
} catch (e) {
|
|
|
|
throw e.toString();
|
|
|
|
}
|
|
|
|
return types;
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<List<LearningDevelopmentType>> getTrainingTopics() async {
|
|
|
|
List<LearningDevelopmentType> topics = [];
|
|
|
|
Map<String, String> headers = {
|
|
|
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
|
|
};
|
|
|
|
|
|
|
|
String path = Url.instance.learningAndDevelopmentTopics();
|
|
|
|
try {
|
|
|
|
http.Response response = await Request.instance
|
|
|
|
.getRequest(path: path, param: {}, headers: headers);
|
|
|
|
if (response.statusCode == 200) {
|
|
|
|
Map data = jsonDecode(response.body);
|
|
|
|
if (data['data'] != null) {
|
|
|
|
data['data'].forEach((var element) {
|
|
|
|
LearningDevelopmentType type =
|
|
|
|
LearningDevelopmentType.fromJson(element);
|
|
|
|
topics.add(type);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
throw e.toString();
|
|
|
|
}
|
|
|
|
return topics;
|
2023-03-02 08:22:31 +00:00
|
|
|
}
|
|
|
|
}
|