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
12 changes: 12 additions & 0 deletions lib/domain/repository/memo_repository.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:schedule_with/entity/memo_tbl.dart';

class MemoRepository {
final FirebaseFirestore _db = FirebaseFirestore.instance;

Stream<List<Memo>> getMemos() {
return _db.collection('memo')
.snapshots()
.map((snapshot) => snapshot.docs.map((doc) => Memo.fromFirestore(doc.data() as Map<String, dynamic>)).toList());
}
}
23 changes: 23 additions & 0 deletions lib/domain/repository/todo_repository.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:schedule_with/entity/todo_tbl.dart';

class TodoRepository {
final FirebaseFirestore _db = FirebaseFirestore.instance;

Stream<List<Todo>> getTodos() {
return _db.collection('todo')
.snapshots()
.map((snapshot) => snapshot.docs.map((doc) => Todo.fromFirestore(doc.data() as Map<String, dynamic>)).toList());
}

Future<void> updateTodoStatus(int idx, bool isCompleted) {
return _db.collection('todo')
.where('idx', isEqualTo: idx)
.get()
.then((snapshot) {
for (var doc in snapshot.docs) {
doc.reference.update({'todo_status': isCompleted ? 'Y' : 'N'});
}
});
}
}
1 change: 1 addition & 0 deletions lib/domain/use_case/memo_use_case.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import '../../entity/memo_tbl.dart';
import '../repository/memo/memo_repository.dart';


class MemoUseCase {
final MemoRepository repository;

Expand Down
23 changes: 23 additions & 0 deletions lib/domain/use_case/schedule_use_case.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import 'package:schedule_with/domain/repository/schedule_repository.dart';
import 'package:schedule_with/entity/schedule_tbl.dart';

class ScheduleUseCase {
final ScheduleRepository repository;

ScheduleUseCase(this.repository);

// 스케줄 목록을 가져오는 메서드
Stream<List<Schedule>> getSchedules() {
return repository.getSchedules();
}

// 스케줄을 업데이트하는 메서드
Future<void> updateSchedule(String id, Map<String, dynamic> data) {
return repository.updateSchedule(id, data);
}

// 새로운 스케줄을 추가하는 메서드
Future<void> addSchedule(Map<String, dynamic> data) {
return repository.addSchedule(data);
}
}
16 changes: 16 additions & 0 deletions lib/domain/use_case/todo_use_case.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import 'package:schedule_with/domain/repository/todo_repository.dart';
import 'package:schedule_with/entity/todo_tbl.dart';

class TodoUseCase {
final TodoRepository repository;

TodoUseCase(this.repository);

Stream<List<Todo>> getTodos() {
return repository.getTodos();
}

Future<void> updateTodoStatus(int idx, bool isCompleted) {
return repository.updateTodoStatus(idx, isCompleted);
}
}
2 changes: 1 addition & 1 deletion lib/entity/memo_tbl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,4 @@ class Memo {
'public_status': publicStatus,
};
}
}
}
39 changes: 39 additions & 0 deletions lib/entity/todo_tbl.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import 'package:cloud_firestore/cloud_firestore.dart';

class Todo {
final int idx;
final int userIdx;
final int? groupIdx;
final DateTime todoDt;
final String title;
final String todoStatus;
final String status;
final DateTime regDt;
final DateTime? modDt;

Todo({
required this.idx,
required this.userIdx,
this.groupIdx,
required this.todoDt,
required this.title,
required this.todoStatus,
required this.status,
required this.regDt,
this.modDt,
});

factory Todo.fromFirestore(Map<String, dynamic> data) {
return Todo(
idx: data['idx'],
userIdx: data['user_idx'],
groupIdx: data['group_idx'],
todoDt: (data['todo_dt'] as Timestamp).toDate(),
title: data['title'],
todoStatus: data['todo_status'],
status: data['status'],
regDt: (data['reg_dt'] as Timestamp).toDate(),
modDt: data['mod_dt'] != null ? (data['mod_dt'] as Timestamp).toDate() : null,
);
}
}
49 changes: 32 additions & 17 deletions lib/entity/user_tbl.dart
Original file line number Diff line number Diff line change
@@ -1,47 +1,62 @@
import 'dart:ffi';

// firebase에 저장하기 위한 userModel
class Users{
class Users {
// 유저 이름
String? name;

// 유저번호
int idx;

// 비회원 id
String server_id;

// 프로필 이미지
String? profile_img;

// 배경 이미지
String? back_img;

// 회원 id
String? id;

// 회원 비밀번호
String? pw;

// 회원 이메일
String? email;

// 회원 생일
String? birth;

// 회원 성별
String? gender;

// 회원 상태
String status;

// 등록일
DateTime reg_dt;

// 수정일
DateTime? mod_dt;

// 로그인 실패 횟수
int login_fail_cnt;
Users({
required this.name,
required this.idx,
required this.server_id,
required this.profile_img,
required this.back_img,
required this.id,
required this.pw,
required this.email,
required this.birth,
required this.gender,
required this.status,
required this.reg_dt,
required this.mod_dt,
required this.login_fail_cnt
});}

Users(
{required this.name,
required this.idx,
required this.server_id,
required this.profile_img,
required this.back_img,
required this.id,
required this.pw,
required this.email,
required this.birth,
required this.gender,
required this.status,
required this.reg_dt,
required this.mod_dt,
required this.login_fail_cnt});
}
20 changes: 20 additions & 0 deletions lib/ui/home/controller/home_memo_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import 'package:get/get.dart';
import 'package:schedule_with/entity/memo_tbl.dart';

import '../../../domain/use_case/memo_use_case.dart';

class HomeMemoController extends GetxController {
final MemoUseCase memoUseCase;
var memos = <Memo>[].obs;

HomeMemoController({required this.memoUseCase});

@override
void onInit() {
super.onInit();
memoUseCase.getMemos().listen((data) {
print('Firestore data: $data'); // Firestore에서 가져온 데이터를 출력하여 확인
memos.value = data;
});
}
}
19 changes: 19 additions & 0 deletions lib/ui/home/controller/home_schedule_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:get/get.dart';
import 'package:schedule_with/entity/schedule_tbl.dart';
import '../../../domain/use_case/schedule_use_case.dart';

class HomeScheduleController extends GetxController {
final ScheduleUseCase scheduleUseCase;
var schedules = <Schedule>[].obs;

HomeScheduleController({required this.scheduleUseCase});

@override
void onInit() {
super.onInit();
scheduleUseCase.getSchedules().listen((data) {
print(data); // 데이터 로그 출력
schedules.value = data;
});
}
}
23 changes: 23 additions & 0 deletions lib/ui/home/controller/home_todo_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import 'package:get/get.dart';
import 'package:schedule_with/entity/todo_tbl.dart';
import '../../../domain/use_case/todo_use_case.dart';

class HomeTodoController extends GetxController {
final TodoUseCase todoUseCase;
var todos = <Todo>[].obs;

HomeTodoController({required this.todoUseCase});

@override
void onInit() {
super.onInit();
todoUseCase.getTodos().listen((data) {
print('Firestore data: $data'); // Firestore에서 가져온 데이터를 출력하여 확인
todos.value = data;
});
}

void toggleTodoStatus(int idx, bool isCompleted) {
todoUseCase.updateTodoStatus(idx, isCompleted);
}
}
Loading