update database

This commit is contained in:
Phuoc Nguyen
2025-10-24 11:31:48 +07:00
parent f95fa9d0a6
commit c4272f9a21
126 changed files with 23528 additions and 2234 deletions

View File

@@ -0,0 +1,78 @@
import 'dart:convert';
import 'package:hive_ce/hive.dart';
import 'package:worker/core/constants/storage_constants.dart';
import 'package:worker/core/database/models/enums.dart';
part 'design_request_model.g.dart';
@HiveType(typeId: HiveTypeIds.designRequestModel)
class DesignRequestModel extends HiveObject {
DesignRequestModel({required this.requestId, required this.userId, required this.projectName, required this.projectType, required this.area, required this.style, required this.budget, required this.currentSituation, required this.requirements, this.notes, this.attachments, required this.status, this.assignedDesigner, this.finalDesignLink, this.feedback, this.rating, this.estimatedCompletion, required this.createdAt, this.completedAt, this.updatedAt});
@HiveField(0) final String requestId;
@HiveField(1) final String userId;
@HiveField(2) final String projectName;
@HiveField(3) final ProjectType projectType;
@HiveField(4) final double area;
@HiveField(5) final String style;
@HiveField(6) final double budget;
@HiveField(7) final String currentSituation;
@HiveField(8) final String requirements;
@HiveField(9) final String? notes;
@HiveField(10) final String? attachments;
@HiveField(11) final DesignStatus status;
@HiveField(12) final String? assignedDesigner;
@HiveField(13) final String? finalDesignLink;
@HiveField(14) final String? feedback;
@HiveField(15) final int? rating;
@HiveField(16) final DateTime? estimatedCompletion;
@HiveField(17) final DateTime createdAt;
@HiveField(18) final DateTime? completedAt;
@HiveField(19) final DateTime? updatedAt;
factory DesignRequestModel.fromJson(Map<String, dynamic> json) => DesignRequestModel(
requestId: json['request_id'] as String,
userId: json['user_id'] as String,
projectName: json['project_name'] as String,
projectType: ProjectType.values.firstWhere((e) => e.name == json['project_type']),
area: (json['area'] as num).toDouble(),
style: json['style'] as String,
budget: (json['budget'] as num).toDouble(),
currentSituation: json['current_situation'] as String,
requirements: json['requirements'] as String,
notes: json['notes'] as String?,
attachments: json['attachments'] != null ? jsonEncode(json['attachments']) : null,
status: DesignStatus.values.firstWhere((e) => e.name == json['status']),
assignedDesigner: json['assigned_designer'] as String?,
finalDesignLink: json['final_design_link'] as String?,
feedback: json['feedback'] as String?,
rating: json['rating'] as int?,
estimatedCompletion: json['estimated_completion'] != null ? DateTime.parse(json['estimated_completion']?.toString() ?? '') : null,
createdAt: DateTime.parse(json['created_at']?.toString() ?? ''),
completedAt: json['completed_at'] != null ? DateTime.parse(json['completed_at']?.toString() ?? '') : null,
updatedAt: json['updated_at'] != null ? DateTime.parse(json['updated_at']?.toString() ?? '') : null,
);
Map<String, dynamic> toJson() => {
'request_id': requestId,
'user_id': userId,
'project_name': projectName,
'project_type': projectType.name,
'area': area,
'style': style,
'budget': budget,
'current_situation': currentSituation,
'requirements': requirements,
'notes': notes,
'attachments': attachments != null ? jsonDecode(attachments!) : null,
'status': status.name,
'assigned_designer': assignedDesigner,
'final_design_link': finalDesignLink,
'feedback': feedback,
'rating': rating,
'estimated_completion': estimatedCompletion?.toIso8601String(),
'created_at': createdAt.toIso8601String(),
'completed_at': completedAt?.toIso8601String(),
'updated_at': updatedAt?.toIso8601String(),
};
}

View File

@@ -0,0 +1,98 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'design_request_model.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class DesignRequestModelAdapter extends TypeAdapter<DesignRequestModel> {
@override
final typeId = 15;
@override
DesignRequestModel read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return DesignRequestModel(
requestId: fields[0] as String,
userId: fields[1] as String,
projectName: fields[2] as String,
projectType: fields[3] as ProjectType,
area: (fields[4] as num).toDouble(),
style: fields[5] as String,
budget: (fields[6] as num).toDouble(),
currentSituation: fields[7] as String,
requirements: fields[8] as String,
notes: fields[9] as String?,
attachments: fields[10] as String?,
status: fields[11] as DesignStatus,
assignedDesigner: fields[12] as String?,
finalDesignLink: fields[13] as String?,
feedback: fields[14] as String?,
rating: (fields[15] as num?)?.toInt(),
estimatedCompletion: fields[16] as DateTime?,
createdAt: fields[17] as DateTime,
completedAt: fields[18] as DateTime?,
updatedAt: fields[19] as DateTime?,
);
}
@override
void write(BinaryWriter writer, DesignRequestModel obj) {
writer
..writeByte(20)
..writeByte(0)
..write(obj.requestId)
..writeByte(1)
..write(obj.userId)
..writeByte(2)
..write(obj.projectName)
..writeByte(3)
..write(obj.projectType)
..writeByte(4)
..write(obj.area)
..writeByte(5)
..write(obj.style)
..writeByte(6)
..write(obj.budget)
..writeByte(7)
..write(obj.currentSituation)
..writeByte(8)
..write(obj.requirements)
..writeByte(9)
..write(obj.notes)
..writeByte(10)
..write(obj.attachments)
..writeByte(11)
..write(obj.status)
..writeByte(12)
..write(obj.assignedDesigner)
..writeByte(13)
..write(obj.finalDesignLink)
..writeByte(14)
..write(obj.feedback)
..writeByte(15)
..write(obj.rating)
..writeByte(16)
..write(obj.estimatedCompletion)
..writeByte(17)
..write(obj.createdAt)
..writeByte(18)
..write(obj.completedAt)
..writeByte(19)
..write(obj.updatedAt);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is DesignRequestModelAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@@ -0,0 +1,86 @@
import 'dart:convert';
import 'package:hive_ce/hive.dart';
import 'package:worker/core/constants/storage_constants.dart';
import 'package:worker/core/database/models/enums.dart';
part 'project_submission_model.g.dart';
@HiveType(typeId: HiveTypeIds.projectSubmissionModel)
class ProjectSubmissionModel extends HiveObject {
ProjectSubmissionModel({required this.submissionId, required this.userId, required this.projectName, required this.projectAddress, required this.projectValue, required this.projectType, this.beforePhotos, this.afterPhotos, this.invoices, required this.status, this.reviewNotes, this.rejectionReason, this.pointsEarned, required this.submittedAt, this.reviewedAt, this.reviewedBy});
@HiveField(0) final String submissionId;
@HiveField(1) final String userId;
@HiveField(2) final String projectName;
@HiveField(3) final String projectAddress;
@HiveField(4) final double projectValue;
@HiveField(5) final ProjectType projectType;
@HiveField(6) final String? beforePhotos;
@HiveField(7) final String? afterPhotos;
@HiveField(8) final String? invoices;
@HiveField(9) final SubmissionStatus status;
@HiveField(10) final String? reviewNotes;
@HiveField(11) final String? rejectionReason;
@HiveField(12) final int? pointsEarned;
@HiveField(13) final DateTime submittedAt;
@HiveField(14) final DateTime? reviewedAt;
@HiveField(15) final String? reviewedBy;
factory ProjectSubmissionModel.fromJson(Map<String, dynamic> json) => ProjectSubmissionModel(
submissionId: json['submission_id'] as String,
userId: json['user_id'] as String,
projectName: json['project_name'] as String,
projectAddress: json['project_address'] as String,
projectValue: (json['project_value'] as num).toDouble(),
projectType: ProjectType.values.firstWhere((e) => e.name == json['project_type']),
beforePhotos: json['before_photos'] != null ? jsonEncode(json['before_photos']) : null,
afterPhotos: json['after_photos'] != null ? jsonEncode(json['after_photos']) : null,
invoices: json['invoices'] != null ? jsonEncode(json['invoices']) : null,
status: SubmissionStatus.values.firstWhere((e) => e.name == json['status']),
reviewNotes: json['review_notes'] as String?,
rejectionReason: json['rejection_reason'] as String?,
pointsEarned: json['points_earned'] as int?,
submittedAt: DateTime.parse(json['submitted_at']?.toString() ?? ''),
reviewedAt: json['reviewed_at'] != null ? DateTime.parse(json['reviewed_at']?.toString() ?? '') : null,
reviewedBy: json['reviewed_by'] as String?,
);
Map<String, dynamic> toJson() => {
'submission_id': submissionId,
'user_id': userId,
'project_name': projectName,
'project_address': projectAddress,
'project_value': projectValue,
'project_type': projectType.name,
'before_photos': beforePhotos != null ? jsonDecode(beforePhotos!) : null,
'after_photos': afterPhotos != null ? jsonDecode(afterPhotos!) : null,
'invoices': invoices != null ? jsonDecode(invoices!) : null,
'status': status.name,
'review_notes': reviewNotes,
'rejection_reason': rejectionReason,
'points_earned': pointsEarned,
'submitted_at': submittedAt.toIso8601String(),
'reviewed_at': reviewedAt?.toIso8601String(),
'reviewed_by': reviewedBy,
};
List<String>? get beforePhotosList {
if (beforePhotos == null) return null;
try {
final decoded = jsonDecode(beforePhotos!) as List;
return decoded.map((e) => e.toString()).toList();
} catch (e) {
return null;
}
}
List<String>? get afterPhotosList {
if (afterPhotos == null) return null;
try {
final decoded = jsonDecode(afterPhotos!) as List;
return decoded.map((e) => e.toString()).toList();
} catch (e) {
return null;
}
}
}

View File

@@ -0,0 +1,87 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'project_submission_model.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class ProjectSubmissionModelAdapter
extends TypeAdapter<ProjectSubmissionModel> {
@override
final typeId = 14;
@override
ProjectSubmissionModel read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return ProjectSubmissionModel(
submissionId: fields[0] as String,
userId: fields[1] as String,
projectName: fields[2] as String,
projectAddress: fields[3] as String,
projectValue: (fields[4] as num).toDouble(),
projectType: fields[5] as ProjectType,
beforePhotos: fields[6] as String?,
afterPhotos: fields[7] as String?,
invoices: fields[8] as String?,
status: fields[9] as SubmissionStatus,
reviewNotes: fields[10] as String?,
rejectionReason: fields[11] as String?,
pointsEarned: (fields[12] as num?)?.toInt(),
submittedAt: fields[13] as DateTime,
reviewedAt: fields[14] as DateTime?,
reviewedBy: fields[15] as String?,
);
}
@override
void write(BinaryWriter writer, ProjectSubmissionModel obj) {
writer
..writeByte(16)
..writeByte(0)
..write(obj.submissionId)
..writeByte(1)
..write(obj.userId)
..writeByte(2)
..write(obj.projectName)
..writeByte(3)
..write(obj.projectAddress)
..writeByte(4)
..write(obj.projectValue)
..writeByte(5)
..write(obj.projectType)
..writeByte(6)
..write(obj.beforePhotos)
..writeByte(7)
..write(obj.afterPhotos)
..writeByte(8)
..write(obj.invoices)
..writeByte(9)
..write(obj.status)
..writeByte(10)
..write(obj.reviewNotes)
..writeByte(11)
..write(obj.rejectionReason)
..writeByte(12)
..write(obj.pointsEarned)
..writeByte(13)
..write(obj.submittedAt)
..writeByte(14)
..write(obj.reviewedAt)
..writeByte(15)
..write(obj.reviewedBy);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is ProjectSubmissionModelAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}