Initial commit: Uruk Prize Platform architecture, backend core, mobile app, gateway caller & deployment pipeline

This commit is contained in:
Hamza-Ayed
2026-09-18 17:12:05 +03:00
commit 879dd36f1b
1149 changed files with 97122 additions and 0 deletions
@@ -0,0 +1,36 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../core/network/api_client.dart';
import 'partners_state.dart';
class PartnersCubit extends Cubit<PartnersState> {
final ApiClient _apiClient;
PartnersCubit({ApiClient? apiClient})
: _apiClient = apiClient ?? ApiClient(),
super(PartnersInitial());
Future<void> fetchPartners({String type = 'ALL', String country = 'ALL', String? search}) async {
emit(PartnersLoading());
try {
final queryParams = <String, String>{};
if (type != 'ALL') queryParams['type'] = type;
if (country != 'ALL') queryParams['country'] = country;
if (search != null && search.isNotEmpty) queryParams['search'] = search;
final res = await _apiClient.get(
'/api/v1/partners',
queryParams: queryParams,
requiresAuth: false,
);
final list = (res['data'] as List<dynamic>?) ?? [];
emit(PartnersLoaded(
partners: list,
selectedType: type,
selectedCountry: country,
));
} catch (e) {
emit(PartnersFailure(e.toString()));
}
}
}
@@ -0,0 +1,36 @@
import 'package:equatable/equatable.dart';
abstract class PartnersState extends Equatable {
const PartnersState();
@override
List<Object?> get props => [];
}
class PartnersInitial extends PartnersState {}
class PartnersLoading extends PartnersState {}
class PartnersLoaded extends PartnersState {
final List<dynamic> partners;
final String selectedType; // 'ALL', 'HOSPITAL', 'HOTEL'
final String selectedCountry;
const PartnersLoaded({
required this.partners,
this.selectedType = 'ALL',
this.selectedCountry = 'ALL',
});
@override
List<Object?> get props => [partners, selectedType, selectedCountry];
}
class PartnersFailure extends PartnersState {
final String error;
const PartnersFailure(this.error);
@override
List<Object?> get props => [error];
}