opt-cc/static/src/app/services/app-user-service/app-user.service.ts

48 lines
1.3 KiB
TypeScript
Raw Normal View History

2017-06-08 19:46:36 +02:00
import {Injectable} from "@angular/core";
2017-09-03 12:49:59 +02:00
import {AppUser} from "../../models/model-interfaces";
2017-06-08 19:46:36 +02:00
import {Observable} from "rxjs/Observable";
2017-09-03 12:49:59 +02:00
import {EDIT, LOAD, REMOVE} from "../stores/user.store";
2017-06-08 19:46:36 +02:00
import {AppConfig} from "../../app.config";
import {HttpClient} from "../http-client";
import {AppUserStore} from "../stores/app-user.store";
@Injectable()
export class AppUserService {
users$: Observable<AppUser[]>;
constructor(private http: HttpClient,
private appUserStore: AppUserStore,
private config: AppConfig) {
this.users$ = appUserStore.items$;
}
getUsers() {
this.http.get(this.config.apiAppUserPath)
2017-06-08 19:46:36 +02:00
.map(res => res.json())
.do((users) => {
this.appUserStore.dispatch({type: LOAD, data: users});
}).subscribe(_ => {
});
return this.users$;
}
updateUser(user: AppUser) {
2017-09-03 12:49:59 +02:00
return this.http.patch(this.config.apiAppUserPath + user._id, user)
.map(res => res.json())
.do(savedUser => {
const action = {type: EDIT, data: savedUser};
this.appUserStore.dispatch(action);
});
2017-06-08 19:46:36 +02:00
}
deleteUser(user) {
return this.http.delete(this.config.apiAppUserPath + user._id)
2017-06-08 19:46:36 +02:00
.do(res => {
this.appUserStore.dispatch({type: REMOVE, data: user});
});
}
}