feat: Refactor code structure and optimize performance across multiple modules

This commit is contained in:
Achintha Isuru
2025-11-17 23:29:28 -05:00
parent 831570f2e0
commit a64cbd9edf
1508 changed files with 105319 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
class CertificateModel {
final String id;
final String name;
CertificateModel({
required this.id,
required this.name,
});
factory CertificateModel.fromJson(Map<String, dynamic> json) {
return CertificateModel(
id: json['id'],
name: json['name'],
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'name': name,
};
}
}

View File

@@ -0,0 +1,34 @@
import 'package:injectable/injectable.dart';
import 'package:krow/features/profile/certificates/data/certificates_api_provider.dart';
import 'package:krow/features/profile/certificates/domain/certificates_repository.dart';
import 'package:krow/features/profile/certificates/data/models/certificate_model.dart';
import 'package:krow/features/profile/certificates/data/models/staff_certificate.dart';
@Injectable(as: CertificatesRepository)
class CertificatesRepositoryImpl extends CertificatesRepository {
final CertificatesApiProvider _certificatesApiProvider;
CertificatesRepositoryImpl(this._certificatesApiProvider);
@override
Future<List<CertificateModel>> getCertificates() async {
return _certificatesApiProvider.fetchCertificates();
}
@override
Future<StaffCertificate> putStaffCertificate(
String certificateId, String imagePath, String certificateDate) {
return _certificatesApiProvider.putStaffCertificate(
certificateId, imagePath, certificateDate);
}
@override
Future<List<StaffCertificate>> getStaffCertificates() async{
return (await _certificatesApiProvider.fetchStaffCertificates()).edges.map((e) => e.node).toList();
}
@override
Future<void> deleteStaffCertificate(String certificateId) {
return _certificatesApiProvider.deleteStaffCertificate(certificateId);
}
}

View File

@@ -0,0 +1,32 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:krow/features/profile/certificates/data/models/certificate_model.dart';
part 'staff_certificate.g.dart';
enum CertificateStatus {
verified,
pending,
declined,
}
@JsonSerializable(fieldRename: FieldRename.snake)
class StaffCertificate {
final String id;
CertificateModel certificate;
final String expirationDate;
final CertificateStatus status;
final String file;
StaffCertificate(
{required this.id,
required this.certificate,
required this.expirationDate,
required this.status,
required this.file});
factory StaffCertificate.fromJson(Map<String, dynamic> json) {
return _$StaffCertificateFromJson(json);
}
Map<String, dynamic> toJson() => _$StaffCertificateToJson(this);
}