diff --git a/src/app/components/board/board.component.ts b/src/app/components/board/board.component.ts index 701f07d..1a10a44 100644 --- a/src/app/components/board/board.component.ts +++ b/src/app/components/board/board.component.ts @@ -1,11 +1,10 @@ import { Component, ElementRef, ViewChild } from '@angular/core'; import { DragDropService } from '../../services/drag-drop.service'; import { CommonModule } from '@angular/common'; -import { Task } from '../../interfaces/task.interface'; -import { TaskService } from '../../services/task.service'; import { TaskComponent } from './task/task.component'; import { TaskEmptyComponent } from './task/task-empty/task-empty.component'; import { FormsModule } from '@angular/forms'; +import { FirebaseService } from '../../services/firebase.service'; @Component({ selector: 'app-board', @@ -17,7 +16,7 @@ import { FormsModule } from '@angular/forms'; export class BoardComponent { constructor( public dragDropService: DragDropService, - private taskService: TaskService + private firebaseService: FirebaseService ) {} searchValue: string = ''; searchInput: boolean = false; @@ -30,27 +29,29 @@ export class BoardComponent { getTaskStatus(status: string) { if (this.updateSearchInput()) { - return this.taskService + return this.firebaseService .getFiltertTasks() .filter((task) => task.status === status); } else { - return this.taskService + return this.firebaseService .getAllTasks() .filter((task) => task.status === status); } } handleItemDropped(id: string, status: string): void { - const index = this.taskService.allTasks.findIndex((task) => task.id === id); - const filteredIndex = this.taskService.filteredTasks.findIndex( + const index = this.firebaseService.allTasks.findIndex( + (task) => task.id === id + ); + const filteredIndex = this.firebaseService.filteredTasks.findIndex( (task) => task.id === id ); if (index !== -1) { - this.taskService.allTasks[index].status = status; + this.firebaseService.allTasks[index].status = status; if (filteredIndex !== -1) { - this.taskService.filteredTasks[filteredIndex].status = status; + this.firebaseService.filteredTasks[filteredIndex].status = status; } - this.taskService.updateTask(id, index); + this.firebaseService.updateTask(id, index); } } @@ -71,7 +72,7 @@ export class BoardComponent { searchTask(): void { this.updateSearchInput(); - this.taskService.filteredTasks = this.taskService + this.firebaseService.filteredTasks = this.firebaseService .getAllTasks() .filter( (task) => diff --git a/src/app/components/board/task/task.component.ts b/src/app/components/board/task/task.component.ts index effb289..6d092af 100644 --- a/src/app/components/board/task/task.component.ts +++ b/src/app/components/board/task/task.component.ts @@ -1,9 +1,8 @@ import { CommonModule } from '@angular/common'; import { Component, Input } from '@angular/core'; import { DragDropService } from '../../../services/drag-drop.service'; -import { TaskService } from '../../../services/task.service'; -import { UserService } from '../../../services/user.service'; import { Task } from '../../../interfaces/task.interface'; +import { FirebaseService } from '../../../services/firebase.service'; @Component({ selector: 'app-task', @@ -22,7 +21,7 @@ export class TaskComponent { constructor( public dragDropService: DragDropService, - private userService: UserService + private firebaseService: FirebaseService ) {} // Subtasks @@ -45,7 +44,7 @@ export class TaskComponent { userBadged(id: number) { const userId = String(id); - const user = this.userService + const user = this.firebaseService .getAllUsers() .find((user) => user.id === userId); if (user) { @@ -63,7 +62,7 @@ export class TaskComponent { userBadgedColor(id: number) { const userId = String(id); - const user = this.userService + const user = this.firebaseService .getAllUsers() .find((user) => user.id === userId); if (user) { diff --git a/src/app/components/contacts/contact-delete/contact-delete.component.ts b/src/app/components/contacts/contact-delete/contact-delete.component.ts index aff771d..f68c7bb 100644 --- a/src/app/components/contacts/contact-delete/contact-delete.component.ts +++ b/src/app/components/contacts/contact-delete/contact-delete.component.ts @@ -1,8 +1,8 @@ import { Component, Input } from '@angular/core'; import { SharedService } from '../../../services/shared.service'; import { TranslateModule } from '@ngx-translate/core'; -import { UserService } from '../../../services/user.service'; import { Router } from '@angular/router'; +import { FirebaseService } from '../../../services/firebase.service'; @Component({ selector: 'app-contact-delete', @@ -16,12 +16,12 @@ export class ContactDeleteComponent { constructor( private sharedService: SharedService, - private userService: UserService, + private firebaseService: FirebaseService, private router: Router ) {} deleteContact() { - this.userService.deleteUser(this.currentUserId); + this.firebaseService.deleteUser(this.currentUserId); this.router.navigate(['contacts']); this.sharedService.isDeleteContactDialogOpen = false; this.sharedService.isAnyDialogOpen = false; diff --git a/src/app/components/contacts/contact-detail/contact-detail.component.html b/src/app/components/contacts/contact-detail/contact-detail.component.html index f8c4808..940ec40 100644 --- a/src/app/components/contacts/contact-detail/contact-detail.component.html +++ b/src/app/components/contacts/contact-detail/contact-detail.component.html @@ -22,17 +22,20 @@
- {{ userService.getUserDetails(currentUserId, "initials") }} + {{ firebaseService.getUserDetails(currentUserId, "initials") }}
- {{ userService.getUserDetails(currentUserId, "firstName") }} - {{ userService.getUserDetails(currentUserId, "lastName") }} + {{ firebaseService.getUserDetails(currentUserId, "firstName") }} + {{ firebaseService.getUserDetails(currentUserId, "lastName") }}
diff --git a/src/app/components/contacts/contact-detail/contact-detail.component.ts b/src/app/components/contacts/contact-detail/contact-detail.component.ts index fdad017..82306b6 100644 --- a/src/app/components/contacts/contact-detail/contact-detail.component.ts +++ b/src/app/components/contacts/contact-detail/contact-detail.component.ts @@ -1,11 +1,11 @@ import { Component, HostListener, Input } from '@angular/core'; -import { UserService } from '../../../services/user.service'; import { CommonModule } from '@angular/common'; import { ContactsComponent } from '../contacts.component'; import { Router } from '@angular/router'; import { ContactEditComponent } from '../contact-edit/contact-edit.component'; import { SharedService } from '../../../services/shared.service'; import { ContactNavComponent } from '../contact-nav/contact-nav.component'; +import { FirebaseService } from '../../../services/firebase.service'; @Component({ selector: 'app-contact-detail', standalone: true, @@ -24,9 +24,9 @@ export class ContactDetailComponent { isMobileNavbarOpen: boolean = false; constructor( - public userService: UserService, private router: Router, - public sharedService: SharedService + public sharedService: SharedService, + public firebaseService: FirebaseService ) {} closeUserDetails() { diff --git a/src/app/components/contacts/contact-edit/contact-edit.component.html b/src/app/components/contacts/contact-edit/contact-edit.component.html index 7ae4d3a..3853fac 100644 --- a/src/app/components/contacts/contact-edit/contact-edit.component.html +++ b/src/app/components/contacts/contact-edit/contact-edit.component.html @@ -12,14 +12,14 @@
- {{ userService.getUserDetails(currentUserId, "initials") }} + {{ firebaseService.getUserDetails(currentUserId, "initials") }}
diff --git a/src/app/components/contacts/contact-edit/contact-edit.component.ts b/src/app/components/contacts/contact-edit/contact-edit.component.ts index 429f309..ff942c8 100644 --- a/src/app/components/contacts/contact-edit/contact-edit.component.ts +++ b/src/app/components/contacts/contact-edit/contact-edit.component.ts @@ -1,8 +1,8 @@ import { Component, Input } from '@angular/core'; import { ContactFormComponent } from '../contact-form/contact-form.component'; import { CommonModule } from '@angular/common'; -import { UserService } from '../../../services/user.service'; import { BtnCloseComponent } from '../../../shared/components/buttons/btn-close/btn-close.component'; +import { FirebaseService } from '../../../services/firebase.service'; @Component({ selector: 'app-contact-edit', @@ -14,5 +14,5 @@ import { BtnCloseComponent } from '../../../shared/components/buttons/btn-close/ export class ContactEditComponent { @Input() currentUserId!: string; - constructor(public userService: UserService) {} + constructor(public firebaseService: FirebaseService) {} } diff --git a/src/app/components/contacts/contact-form/contact-form.component.ts b/src/app/components/contacts/contact-form/contact-form.component.ts index 5acc5ef..2817090 100644 --- a/src/app/components/contacts/contact-form/contact-form.component.ts +++ b/src/app/components/contacts/contact-form/contact-form.component.ts @@ -1,8 +1,8 @@ import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; import { FormsModule, NgForm } from '@angular/forms'; import { TranslateModule } from '@ngx-translate/core'; -import { UserService } from '../../../services/user.service'; import { SharedService } from '../../../services/shared.service'; +import { FirebaseService } from '../../../services/firebase.service'; @Component({ selector: 'app-contact-form', @@ -15,7 +15,7 @@ export class ContactFormComponent implements OnChanges { @Input() currentUserId!: string; constructor( - public userService: UserService, + private firebaseService: FirebaseService, private sharedService: SharedService ) { this.updateContactData(); @@ -35,23 +35,23 @@ export class ContactFormComponent implements OnChanges { } private updateContactData() { - this.contactData.firstName = this.userService + this.contactData.firstName = this.firebaseService .getUserDetails(this.currentUserId, 'firstName') .join(', '); - this.contactData.lastName = this.userService + this.contactData.lastName = this.firebaseService .getUserDetails(this.currentUserId, 'lastName') .join(', '); - this.contactData.email = this.userService + this.contactData.email = this.firebaseService .getUserDetails(this.currentUserId, 'email') .join(', '); - this.contactData.phone = this.userService + this.contactData.phone = this.firebaseService .getUserDetails(this.currentUserId, 'phone') .join(', '); } onSubmit(ngForm: NgForm) { if (ngForm.submitted && ngForm.form.valid) { - this.userService.updateUserData(this.currentUserId, this.contactData); + this.firebaseService.updateUserData(this.currentUserId, this.contactData); this.closeEditDialog(); } } diff --git a/src/app/components/contacts/contacts.component.html b/src/app/components/contacts/contacts.component.html index 15cc809..5a1d667 100644 --- a/src/app/components/contacts/contacts.component.html +++ b/src/app/components/contacts/contacts.component.html @@ -28,25 +28,25 @@
- {{ userService.getUserDetails(user.id, "initials") }} + {{ firebaseService.getUserDetails(user.id, "initials") }}

- {{ userService.getUserDetails(user.id, "firstName") }} + {{ firebaseService.getUserDetails(user.id, "firstName") }}

- {{ userService.getUserDetails(user.id, "lastName") }} + {{ firebaseService.getUserDetails(user.id, "lastName") }}

diff --git a/src/app/components/contacts/contacts.component.ts b/src/app/components/contacts/contacts.component.ts index 79de343..e1bcf0b 100644 --- a/src/app/components/contacts/contacts.component.ts +++ b/src/app/components/contacts/contacts.component.ts @@ -1,10 +1,10 @@ import { Component, EventEmitter, HostListener, Output } from '@angular/core'; -import { UserService } from '../../services/user.service'; import { User } from '../../interfaces/user.interface'; import { CommonModule } from '@angular/common'; import { ActivatedRoute, RouterLink } from '@angular/router'; import { ContactDetailComponent } from './contact-detail/contact-detail.component'; import { SharedService } from '../../services/shared.service'; +import { FirebaseService } from '../../services/firebase.service'; @Component({ selector: 'app-contacts', @@ -21,7 +21,7 @@ export class ContactsComponent { currentUserId: string = ''; constructor( - public userService: UserService, + public firebaseService: FirebaseService, private route: ActivatedRoute, private sharedService: SharedService ) {} @@ -50,7 +50,7 @@ export class ContactsComponent { } loadAllUserWithoutGuest(): User[] { - return this.userService + return this.firebaseService .getAllUsers() .filter((user) => user.initials !== 'G'); } diff --git a/src/app/components/summary/summary.component.html b/src/app/components/summary/summary.component.html index 6946c51..2f8551e 100644 --- a/src/app/components/summary/summary.component.html +++ b/src/app/components/summary/summary.component.html @@ -96,14 +96,14 @@

{{ displayGreeting() }},

{{ - this.userService.getUserDetails( - userService.getCurrentUserId(), + this.firebaseService.getUserDetails( + firebaseService.getCurrentUserId(), "firstName" ) }}
{{ - this.userService.getUserDetails( - userService.getCurrentUserId(), + this.firebaseService.getUserDetails( + firebaseService.getCurrentUserId(), "lastName" ) }}
task.status === query); return filteredTasks.length; } displayNumberOfTaskStatusUrgent() { - return this.taskService + return this.firebaseService .getAllTasks() .filter((task) => task.priority === 'urgent'); } diff --git a/src/app/services/user.service.ts b/src/app/services/firebase.service.ts similarity index 61% rename from src/app/services/user.service.ts rename to src/app/services/firebase.service.ts index 818bdaf..f6589c3 100644 --- a/src/app/services/user.service.ts +++ b/src/app/services/firebase.service.ts @@ -7,23 +7,57 @@ import { onSnapshot, updateDoc, } from '@angular/fire/firestore'; +import { Task } from '../interfaces/task.interface'; import { User } from '../interfaces/user.interface'; - @Injectable({ providedIn: 'root', }) -export class UserService implements OnDestroy { +export class FirebaseService implements OnDestroy { firestore: Firestore = inject(Firestore); + allTasks: Task[] = []; + filteredTasks: Task[] = []; allUsers: User[] = []; isUserLogin: boolean = true; + unsubTask; unsubUser; constructor() { + this.unsubTask = this.subTaskList(); this.unsubUser = this.subUserList(); } + // ------------- TASKS ------------- // + + subTaskList() { + return onSnapshot(collection(this.firestore, 'tasks'), (list) => { + this.allTasks = []; + list.forEach((element) => { + const taskWithId = { id: element.id, ...element.data() } as Task; + this.allTasks.push(taskWithId); + }); + }); + } + + getAllTasks(): Task[] { + return this.allTasks; + } + + getFiltertTasks(): Task[] { + return this.filteredTasks; + } + + async updateTask(taskId: any, index: number) { + await updateDoc(doc(collection(this.firestore, 'tasks'), taskId), { + status: this.allTasks[index].status, + }).catch((err) => { + console.error(err); + }); + } + + // ------------- USERS ------------- // + subUserList() { return onSnapshot(collection(this.firestore, 'users'), (list) => { this.allUsers = []; @@ -69,6 +103,7 @@ export class UserService implements OnDestroy { } ngOnDestroy() { + this.unsubTask(); this.unsubUser(); } } diff --git a/src/app/services/task.service.ts b/src/app/services/task.service.ts deleted file mode 100644 index 94f62e3..0000000 --- a/src/app/services/task.service.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { EventEmitter, Injectable, OnDestroy, inject } from '@angular/core'; -import { - Firestore, - collection, - doc, - onSnapshot, - updateDoc, -} from '@angular/fire/firestore'; -import { Task } from '../interfaces/task.interface'; -@Injectable({ - providedIn: 'root', -}) -export class TaskService implements OnDestroy { - firestore: Firestore = inject(Firestore); - - allTasks: Task[] = []; - filteredTasks: Task[] = []; - - unsubTask; - - constructor() { - this.unsubTask = this.subTaskList(); - } - - subTaskList() { - return onSnapshot(collection(this.firestore, 'tasks'), (list) => { - this.allTasks = []; - list.forEach((element) => { - const taskWithId = { id: element.id, ...element.data() } as Task; - this.allTasks.push(taskWithId); - }); - }); - } - - getAllTasks(): Task[] { - return this.allTasks; - } - - getFiltertTasks(): Task[] { - return this.filteredTasks; - } - - async updateTask(taskId: any, index: number) { - await updateDoc(doc(collection(this.firestore, 'tasks'), taskId), { - status: this.allTasks[index].status, - }).catch((err) => { - console.error(err); - }); - } - - ngOnDestroy() { - this.unsubTask(); - } -} diff --git a/src/app/shared/components/header/header.component.html b/src/app/shared/components/header/header.component.html index 7970d52..ee82346 100644 --- a/src/app/shared/components/header/header.component.html +++ b/src/app/shared/components/header/header.component.html @@ -15,8 +15,8 @@
{{ - this.userService.getUserDetails( - userService.getCurrentUserId(), + this.firebaseService.getUserDetails( + firebaseService.getCurrentUserId(), "initials" ) }} diff --git a/src/app/shared/components/header/header.component.ts b/src/app/shared/components/header/header.component.ts index 23cdb89..acc5161 100644 --- a/src/app/shared/components/header/header.component.ts +++ b/src/app/shared/components/header/header.component.ts @@ -3,7 +3,7 @@ import { RouterModule } from '@angular/router'; import { NavbarComponent } from '../navbar/navbar.component'; import { CommonModule } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; -import { UserService } from '../../../services/user.service'; +import { FirebaseService } from '../../../services/firebase.service'; @Component({ selector: 'app-header', @@ -16,7 +16,7 @@ export class HeaderComponent { navbarVisible: boolean = false; navbarLanguageVisible: boolean = false; - constructor(public userService: UserService) {} + constructor(public firebaseService: FirebaseService) {} toggleNavbar() { this.navbarVisible = !this.navbarVisible;