import { Injectable } from '@angular/core' ; import { Todo } from './todo' ; @ Injectable ( ) export class TodoDataService { lastId : number = 0 ; todos : Todo [ ] = [ ] ; constructor ( ) { } addTodo ( todo ) { if ( ! todo . id ) { todo . id = ++ this . lastId ; } this . todos . push ( todo ) ; return this ; } deleteTodoById ( id ) { this . todos = this . todos . filter ( todo => todo . id !== id ) ; return this ; } updateTodoById ( id , values = { } ) { let todo = this . getTodoById ( id ) ; if ( ! todo ) { return null ; } Object . assign ( todo , values ) ; return todo ; } getAllTodos ( ) { return this . todos ; } getTodoById ( id ) { return this . todos . filter ( todo => todo . id === id ) . pop ( ) ; } toggleTodoComplete ( todo ) { let updatedTodo = this . updateTodoById ( todo . id , { complete : ! todo . complete } ) ; return updatedTodo ; } }