import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';

import 'rxjs/add/operator/map';

import { RPCService } from '@loafer/ng-rpc';

import { Notification } from '@overflow/commons-typescript/model/notification';
import { Member } from '@overflow/commons-typescript/model/member';
import { PageParams } from '@overflow/commons-typescript/model/commons/PageParams';
import { Page } from '@overflow/commons-typescript/model/commons/Page';

@Injectable()
export class NotificationService {

  public constructor(
    private rpcService: RPCService,
  ) {

  }

  public readAllByMember(member: Member, pageParams: PageParams): Observable<Page<Notification>> {
    return this.rpcService.call('NotificationService.readAllByMember', member, pageParams);
  }

  public markAllAsRead(member: Member, pageParams: PageParams): Observable<Page<Notification>> {
    return this.rpcService.call('NotificationService.markAllAsRead',  member, pageParams);
  }

  public markAsRead(notification: Notification): Observable<Notification> {
    return this.rpcService.call('NotificationService.markAsRead', notification);
  }

}