Initial commit: SIBU 2.0 MISSION

This commit is contained in:
2026-02-21 09:53:31 -05:00
commit 0c7aa53c8b
400 changed files with 67708 additions and 0 deletions

View File

@ -0,0 +1,140 @@
import 'package:flutter/foundation.dart';
/// Model representing a taxi service with contact and location information
@immutable
class TaxiModel {
final String id;
final String name;
final String phone;
final String corregimiento;
final String shift;
final bool isActive;
final DateTime createdAt;
final DateTime updatedAt;
const TaxiModel({
required this.id,
required this.name,
required this.phone,
required this.corregimiento,
required this.shift,
required this.isActive,
required this.createdAt,
required this.updatedAt,
});
/// Create TaxiModel from Supabase JSON response
factory TaxiModel.fromJson(Map<String, dynamic> json) {
return TaxiModel(
id: json['id'] as String,
name: json['name'] as String,
phone: json['phone'] as String,
corregimiento: json['corregimiento'] as String,
shift: json['shift'] as String,
isActive: json['is_active'] as bool? ?? true,
createdAt: DateTime.parse(json['created_at'] as String),
updatedAt: DateTime.parse(json['updated_at'] as String),
);
}
/// Convert TaxiModel to JSON for Supabase operations
Map<String, dynamic> toJson() {
return {
'id': id,
'name': name,
'phone': phone,
'corregimiento': corregimiento,
'shift': shift,
'is_active': isActive,
'created_at': createdAt.toIso8601String(),
'updated_at': updatedAt.toIso8601String(),
};
}
/// Create a copy with modified properties
TaxiModel copyWith({
String? id,
String? name,
String? phone,
String? corregimiento,
String? shift,
bool? isActive,
DateTime? createdAt,
DateTime? updatedAt,
}) {
return TaxiModel(
id: id ?? this.id,
name: name ?? this.name,
phone: phone ?? this.phone,
corregimiento: corregimiento ?? this.corregimiento,
shift: shift ?? this.shift,
isActive: isActive ?? this.isActive,
createdAt: createdAt ?? this.createdAt,
updatedAt: updatedAt ?? this.updatedAt,
);
}
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
return other is TaxiModel && other.id == id;
}
@override
int get hashCode => id.hashCode;
@override
String toString() {
return 'TaxiModel(id: $id, name: $name, phone: $phone, corregimiento: $corregimiento, shift: $shift, isActive: $isActive)';
}
}
/// Model representing a user's favorite taxi
@immutable
class FavoriteTaxiModel {
final String id;
final String userId;
final String taxiId;
final DateTime createdAt;
const FavoriteTaxiModel({
required this.id,
required this.userId,
required this.taxiId,
required this.createdAt,
});
/// Create FavoriteTaxiModel from Supabase JSON response
factory FavoriteTaxiModel.fromJson(Map<String, dynamic> json) {
return FavoriteTaxiModel(
id: json['id'] as String,
userId: json['user_id'] as String,
taxiId: json['taxi_id'] as String,
createdAt: DateTime.parse(json['created_at'] as String),
);
}
/// Convert FavoriteTaxiModel to JSON for Supabase operations
Map<String, dynamic> toJson() {
return {
'id': id,
'user_id': userId,
'taxi_id': taxiId,
'created_at': createdAt.toIso8601String(),
};
}
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
return other is FavoriteTaxiModel && other.id == id;
}
@override
int get hashCode => id.hashCode;
@override
String toString() {
return 'FavoriteTaxiModel(id: $id, userId: $userId, taxiId: $taxiId)';
}
}