add room async function

This commit is contained in:
Peter Maquiran
2024-06-07 17:00:30 +01:00
parent c9b4f2d349
commit f457fcbdd4
4 changed files with 32 additions and 7 deletions
@@ -0,0 +1,22 @@
import { TableRoom } from "../../data-source/room/rooom-local-data-source.service";
import { RoomListItemOutPutDTO } from "../../dto/room/roomListOutputDTO";
export function roomListDetermineChanges(serverRooms: RoomListItemOutPutDTO[], localRooms: TableRoom[]) {
const serverRoomMap = new Map(serverRooms.map(room => [room.id, room]));
const localRoomMap = new Map(localRooms.map(room => [room.id, room]));
const roomsToInsert = serverRooms.filter(room => !localRoomMap.has(room.id));
const roomsToUpdate = serverRooms.filter(room => {
const localRoom = localRoomMap.get(room.id);
return localRoom && (
room.roomName !== localRoom.roomName ||
room.createdBy.wxUserId !== localRoom.createdBy.wxUserId ||
room.createdAt !== localRoom.createdAt ||
room.expirationDate !== localRoom.expirationDate ||
room.roomType !== localRoom.roomType
);
});
const roomsToDelete = localRooms.filter(room => !serverRoomMap.has(room.id));
return { roomsToInsert, roomsToUpdate, roomsToDelete };
}
@@ -101,6 +101,11 @@ export class RoomLocalDataSourceService {
}
}
async getRoomList() {
return await roomDataSource.room.toArray()
}
getItemsLive(): Observable<RoomListOutPutDTO[]> {
return liveQuery(() => roomDataSource.room.toArray()) as any;
}
@@ -5,8 +5,6 @@ import { addRoom, RoomRemoteDataSourceState } from '../data-source/room/room-mem
import { Store } from '@ngrx/store';
import { AddMemberToRoomInputDTO } from '../dto/room/addMemberToRoomInputDto';
import { RoomLocalDataSourceService } from '../data-source/room/rooom-local-data-source.service';
import { HttpErrorResponse } from '@angular/common/http';
import { ZodError } from 'zod';
import { RoomByIdInputDTO } from '../dto/room/roomByIdInputDTO';
@Injectable({
@@ -22,8 +20,10 @@ export class RoomRepositoryService {
async list() {
const result = await this.roomRemoteDataSourceService.getRoomList()
// const localList = await this.roomLocalDataSourceService.getRoomList()
if(result.isOk()) {
// const { roomsToDelete, roomsToInsert, roomsToUpdate } = roomListDetermineChanges(result.value, localList)
for( const roomData of result.value.data) {
this.roomLocalDataSourceService.createOrUpdateRoom(roomData)
}
@@ -46,8 +46,8 @@ export class RoomRepositoryService {
async create(data: RoomInputDTO) {
const result = await this.roomRemoteDataSourceService.createRoom(data)
if(result.isOk()) {
this.roomMemoryDataSourceService.dispatch(addRoom(result.value))
this.roomLocalDataSourceService.createRoom(result.value.data)
}
@@ -25,13 +25,11 @@ import { FormGroup, Validators } from '@angular/forms';
import { NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker';
import { ThemeService } from 'src/app/services/theme.service'
import { ChatMethodsService } from 'src/app/services/chat/chat-methods.service';
import { ServerConnectionService } from 'src/app/services/server-connection.service';
import { SessionStore } from 'src/app/store/session.service';
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service';
import { environment } from 'src/environments/environment';
import { EventToAprove } from 'src/app/models/eventToAprove.model';
import { ProcessesService } from 'src/app/services/processes.service';
import { Subject } from 'rxjs';
import { TaskService } from 'src/app/services/task.service'
import { ContactsService } from 'src/app/services/contacts.service';
@@ -1050,13 +1048,13 @@ console.log(this.loggeduser.Profile)
this.postEvent.IsAllDayEvent = this.allDayCheck;
this.postEvent.StartDate = this.setAlldayTime(this.postEvent.StartDate)
this.postEvent.EndDate = this.setAlldayTimeEndDate(this.postEvent.EndDate)
console.log('Recurso ativado!!');
} else {
this.postEvent.IsAllDayEvent = this.allDayCheck;
this.postEvent.EndDate = this.setAlldayTimeEndDateNotAlday(this.postEvent.EndDate)
console.log('Recurso desativado');
}
}