diff --git a/src/app/services/Repositorys/chat/data-source/room-remote-data-source.service.spec.ts b/src/app/services/Repositorys/chat/data-source/room-remote-data-source.service.spec.ts new file mode 100644 index 000000000..085e70b61 --- /dev/null +++ b/src/app/services/Repositorys/chat/data-source/room-remote-data-source.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { RoomRemoteDataSourceService } from './room-remote-data-source.service'; + +describe('RoomRemoteDataSourceService', () => { + let service: RoomRemoteDataSourceService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(RoomRemoteDataSourceService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/Repositorys/chat/data-source/room-remote-data-source.service.ts b/src/app/services/Repositorys/chat/data-source/room-remote-data-source.service.ts new file mode 100644 index 000000000..1a84ae853 --- /dev/null +++ b/src/app/services/Repositorys/chat/data-source/room-remote-data-source.service.ts @@ -0,0 +1,56 @@ +import { Injectable } from '@angular/core'; +import { ok, err, Result } from 'neverthrow'; +import { HttpService } from 'src/app/services/http.service'; +import { RoomListOutPutDTO } from '../dto/roomOutputDTO'; + + +@Injectable({ + providedIn: 'root' +}) +export class RoomRemoteDataSourceService { + + private baseUrl = 'https://gdapi-dev.dyndns.info/stage/api/v2'; // Your base URL + + constructor(private httpService: HttpService) {} + + async sendMessage(message: any): Promise> { + return await this.httpService.post(`${this.baseUrl}/Messages`, message); + } + + async reactToMessage(id: string, reaction: any): Promise> { + return await this.httpService.post(`${this.baseUrl}/Messages/${id}/React`, reaction); + } + + async createRoom(room: any): Promise> { + return await this.httpService.post(`${this.baseUrl}/Room`, room); + } + + + async getRoomList(): Promise> { + return await this.httpService.get(`${this.baseUrl}/Room`); + } + + async getRoom(id: string): Promise> { + return await this.httpService.get(`${this.baseUrl}/Room/${id}`); + } + + async updateRoom(id: string, room: any): Promise> { + return await this.httpService.put(`${this.baseUrl}/Room/${id}`, room); + } + + async deleteRoom(id: string): Promise> { + return await this.httpService.delete(`${this.baseUrl}/Room/${id}`); + } + + async addMemberToRoom(id: string, member: any): Promise> { + return await this.httpService.post(`${this.baseUrl}/Room/${id}/Member`, member); + } + + async removeMemberFromRoom(id: string, member: any): Promise> { + return await this.httpService.delete(`${this.baseUrl}/Room/${id}/Member`); + } + + async getMessagesFromRoom(id: string): Promise> { + return await this.httpService.get(`${this.baseUrl}/Room/${id}/Messages`); + } +} diff --git a/src/app/services/Repositorys/chat/dto/roomOutputDTO.ts b/src/app/services/Repositorys/chat/dto/roomOutputDTO.ts new file mode 100644 index 000000000..4a9447c44 --- /dev/null +++ b/src/app/services/Repositorys/chat/dto/roomOutputDTO.ts @@ -0,0 +1,21 @@ +import { z } from "zod"; + +const CreatedBySchema = z.object({ + wxUserId: z.number(), + wxFullName: z.string(), + wxeMail: z.string().email(), + userPhoto: z.string() +}); + +const RoomListOutPutDTOSchema = z.object({ + id: z.string(), + roomName: z.string(), + createdBy: CreatedBySchema, + createdAt: z.string().datetime(), + expirationDate: z.string().datetime(), + roomType: z.number() +}); + + + +export type RoomListOutPutDTO = z.infer diff --git a/src/app/services/Repositorys/chat/repository/message-respository.service.ts b/src/app/services/Repositorys/chat/repository/message-respository.service.ts new file mode 100644 index 000000000..6cf73c419 --- /dev/null +++ b/src/app/services/Repositorys/chat/repository/message-respository.service.ts @@ -0,0 +1,10 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class MessageRepositoryService { + + constructor( + ) { } +} diff --git a/src/app/services/Repositorys/chat/repository/room-respository.service.ts b/src/app/services/Repositorys/chat/repository/room-respository.service.ts new file mode 100644 index 000000000..85910caf9 --- /dev/null +++ b/src/app/services/Repositorys/chat/repository/room-respository.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { RoomRemoteDataSourceService } from '../data-source/room-remote-data-source.service' +@Injectable({ + providedIn: 'root' +}) +export class RoomRepositoryService { + + constructor( + private roomRemoteDataSourceService: RoomRemoteDataSourceService + ) { } + + list() { + this.roomRemoteDataSourceService.getRoomList() + } +} diff --git a/src/app/services/Repositorys/chat/repository/user-respository.service.ts b/src/app/services/Repositorys/chat/repository/user-respository.service.ts new file mode 100644 index 000000000..e2b6292e4 --- /dev/null +++ b/src/app/services/Repositorys/chat/repository/user-respository.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class UserRepositoryService { + + constructor() { } +}