Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/kucc_mobile_data/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,7 @@
.dart_tool/
.packages
build/


#Generated
*.g.dart
9 changes: 9 additions & 0 deletions packages/kucc_mobile_data/lib/data/communities_data.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import '../models/communities_model.dart';

class CommunityFetchError implements Exception {}

abstract class CommunityData {
const CommunityData();

Future<List<CommunityModel>> getAllCommunities();
}
26 changes: 26 additions & 0 deletions packages/kucc_mobile_data/lib/data/events_data.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import 'package:kucc_mobile_data/kucc_mobile_data.dart';
import 'package:kucc_mobile_data/models/attendees_model.dart';

class EventsError implements Exception {}

class RSVPCheckError extends EventsError {}

class RSVPCreateError extends EventsError {}

class EventFetchError extends EventsError {}

abstract class EventData {
const EventData();

Future<List<EventModel>> getAllEvents();

Future<List<EventModel>> getEventsOfCommunity(String cid);

Future<bool> checkRSVP(String uid, String eid);

Future<void> createRSVP(String uid, String eid);

Stream<int> rsvpCount(String eid);

Stream<List<AttendeeModel>> getAttendees(String eid);
}
9 changes: 9 additions & 0 deletions packages/kucc_mobile_data/lib/data/it_express_data.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import 'package:kucc_mobile_data/kucc_mobile_data.dart';

class ITExpressFetchException implements Exception {}

abstract class ITExpressData {
const ITExpressData();

Future<List<ITExpressModel>> fetchAllITExpress();
}
23 changes: 23 additions & 0 deletions packages/kucc_mobile_data/lib/data/membership_data.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import 'dart:io';

import 'package:kucc_mobile_data/kucc_mobile_data.dart';

abstract class MembershipError implements Exception {}

class MembershipUpdateFailed extends MembershipError {}

class MembershipApplicationFailed extends MembershipError {}

class MembershipDoesNotExistError extends MembershipError {}

abstract class MembershipData {
const MembershipData();

Future<MembershipModel> getMembershipDetail(String uid);

Future<bool> checkMembershipStatus(String uid);

Future<void> applyForMembership(String uid, MembershipModel membershipDetail);

Future<void> updateMembership(String mid, String txID, File document);
}
9 changes: 9 additions & 0 deletions packages/kucc_mobile_data/lib/data/schedule_data.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import 'package:kucc_mobile_data/kucc_mobile_data.dart';

class ScheduleFetchError implements Exception {}

abstract class ScheduleData {
const ScheduleData();

Stream<List<ScheduleModel>> getScheduleOfEvent(String eid);
}
19 changes: 19 additions & 0 deletions packages/kucc_mobile_data/lib/data/user_data.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'dart:io';

import 'package:kucc_mobile_data/kucc_mobile_data.dart';

abstract class UserDataError implements Exception {}

class ProfilePictureUpdateFailed extends UserDataError {}

class UserDataFetchError extends UserDataError {}

abstract class UserData {
const UserData();

Future<void> setUserData(String uid, UserModel model);

Future<UserModel> getUserData(String uid);

Stream<double> updateProfilePhoto(File file, String uid);
}
20 changes: 15 additions & 5 deletions packages/kucc_mobile_data/lib/kucc_mobile_data.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
library kucc_mobile_data;

/// A Calculator.
class Calculator {
/// Returns [value] plus 1.
int addOne(int value) => value + 1;
}
// Export Models
export 'models/communities_model.dart';
export 'models/events_model.dart';
export 'models/it_express_model.dart';
export 'models/membership_model.dart';
export 'models/schedule_model.dart';
export 'models/user_model.dart';

//Export Interfaces
export 'data/communities_data.dart';
export 'data/events_data.dart';
export 'data/it_express_data.dart';
export 'data/membership_data.dart';
export 'data/schedule_data.dart';
export 'data/user_data.dart';
42 changes: 42 additions & 0 deletions packages/kucc_mobile_data/lib/models/attendees_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:kucc_mobile_data/models/json_map.dart';
import 'package:meta/meta.dart';

part 'attendees_model.g.dart';

@immutable
@JsonSerializable()
class AttendeeModel extends Equatable {
final String name;
final String? certificate;
final bool completed;
const AttendeeModel({
required this.name,
this.certificate,
required this.completed,
});

@override
List<Object?> get props => [certificate, completed, name];

AttendeeModel copyWith({
String? certificate,
bool? completed,
String? name,
}) {
return AttendeeModel(
certificate: certificate ?? this.certificate,
completed: completed ?? this.completed,
name: name ?? this.name,
);
}

@override
String toString() =>
'Attendee(certificate: $certificate, completed: $completed, name: $name)';

static AttendeeModel fromJson(JsonMap json) => _$AttendeeModelFromJson(json);

JsonMap toJson() => _$AttendeeModelToJson(this);
}
49 changes: 49 additions & 0 deletions packages/kucc_mobile_data/lib/models/communities_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:kucc_mobile_data/models/json_map.dart';
import 'package:meta/meta.dart';

part 'communities_model.g.dart';

@immutable
@JsonSerializable()
class CommunityModel extends Equatable {
final String about;
final String image;
final String name;
final List<Map<String, dynamic>> coordinators;

const CommunityModel({
required this.about,
required this.image,
required this.name,
required this.coordinators,
});

@override
List<Object?> get props => [name, about, coordinators, image];

@override
String toString() {
return 'CommunityModel(about: $about, image: $image, name: $name, coordinators: $coordinators)';
}

CommunityModel copyWith({
String? about,
String? image,
String? name,
List<Map<String, dynamic>>? coordinators,
}) {
return CommunityModel(
about: about ?? this.about,
image: image ?? this.image,
name: name ?? this.name,
coordinators: coordinators ?? this.coordinators,
);
}

static CommunityModel fromJson(JsonMap json) =>
_$CommunityModelFromJson(json);

JsonMap tojson() => _$CommunityModelToJson(this);
}
76 changes: 76 additions & 0 deletions packages/kucc_mobile_data/lib/models/events_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:meta/meta.dart';
import 'package:kucc_mobile_data/models/json_map.dart';
import 'package:kucc_mobile_data/models/speaker_model.dart';

part 'events_model.g.dart';

@immutable
@JsonSerializable()
class EventModel extends Equatable {
const EventModel({
this.banner,
required this.description,
this.endDate,
required this.startDate,
required this.label,
this.speakers,
required this.title,
required this.type,
});

final String? banner;
final String description;
@JsonKey(name: 'end_date')
final DateTime? endDate;
@JsonKey(name: 'start_date')
final DateTime startDate;
final List<String> label;
final List<SpeakerModel>? speakers;
final String title;
final String type;

@override
List<Object?> get props => [
banner,
description,
endDate,
startDate,
label,
title,
type,
speakers,
];

static EventModel fromJson(JsonMap json) => _$EventModelFromJson(json);

JsonMap toJson() => _$EventModelToJson(this);

EventModel copyWith({
String? banner,
String? description,
DateTime? endDate,
DateTime? startDate,
List<String>? label,
List<SpeakerModel>? speakers,
String? title,
String? type,
}) {
return EventModel(
banner: banner ?? this.banner,
description: description ?? this.description,
endDate: endDate ?? this.endDate,
startDate: startDate ?? this.startDate,
label: label ?? this.label,
speakers: speakers ?? this.speakers,
title: title ?? this.title,
type: type ?? this.type,
);
}

@override
String toString() {
return 'EventModel(banner: $banner, description: $description, endDate: $endDate, startDate: $startDate, label: $label, speakers: $speakers, title: $title, type: $type)';
}
}
50 changes: 50 additions & 0 deletions packages/kucc_mobile_data/lib/models/it_express_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:meta/meta.dart';

import 'package:kucc_mobile_data/models/json_map.dart';

part 'it_express_model.g.dart';

@immutable
@JsonSerializable()
class ITExpressModel extends Equatable {
final String title;
@JsonKey(name: 'url')
final Uri pdf;
final String year;
final String? cover;
const ITExpressModel({
required this.title,
required this.pdf,
required this.year,
this.cover,
});

@override
List<Object?> get props => [title, pdf, year, cover];

@override
String toString() {
return 'ITExpressModel(title: $title, pdf: $pdf, year: $year, cover: $cover)';
}

static ITExpressModel fromJson(JsonMap json) =>
_$ITExpressModelFromJson(json);

JsonMap toJson() => _$ITExpressModelToJson(this);

ITExpressModel copyWith({
String? title,
Uri? pdf,
String? year,
String? cover,
}) {
return ITExpressModel(
title: title ?? this.title,
pdf: pdf ?? this.pdf,
year: year ?? this.year,
cover: cover ?? this.cover,
);
}
}
2 changes: 2 additions & 0 deletions packages/kucc_mobile_data/lib/models/json_map.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/// The type definition for a JSON-serializable [Map].
typedef JsonMap = Map<String, dynamic>;
Loading