· 6 years ago · Oct 03, 2019, 11:38 AM
1import { Platform } from '@ionic/angular';
2import { Injectable } from '@angular/core';
3import { SQLitePorter } from '@ionic-native/sqlite-porter/ngx';
4import { HttpClient } from '@angular/common/http';
5import { SQLite, SQLiteObject } from '@ionic-native/sqlite/ngx';
6import { BehaviorSubject, Observable } from 'rxjs';
7import { NetworkService, ConnectionStatus } from './network.service';
8import { tap, map, catchError } from 'rxjs/operators';
9const API_STORAGE_KEY = 'specialkey';
10const API_URL = 'https://reqres.in/api';
11/*
12// aca se podria jugar conel alias
13export class user {
14 id:
15}
16*/
17
18@Injectable({
19 providedIn: 'root'
20})
21export class DataserviceService {
22 private database: SQLiteObject;
23 private dbReady: BehaviorSubject<boolean> = new BehaviorSubject(false);
24
25 developers = new BehaviorSubject([]);
26 products = new BehaviorSubject([]);
27
28 constructor(private plt: Platform, private sqlitePorter: SQLitePorter, private sqlite: SQLite, private http: HttpClient) {
29 /* this.plt.ready().then(() => {
30 this.sqlite.create({
31 name: 'user.db',
32 location: 'default'
33 })
34 .then((db: SQLiteObject) => {
35 this.database = db;
36 this.seedDatabase();
37 });
38 });*/
39 }
40
41 seedDatabase() {
42 // this.generateTables();
43 this.saveDataFromApi();
44 }
45 /* Data from api
46
47 {"page":1,"per_page":2,"total":12,"total_pages":6,
48 "data":
49 [
50 {"id":1,"email":"george.bluth@reqres.in","first_name":"George","last_name":"Bluth","avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"},
51 {"id":2,"email":"janet.weaver@reqres.in","first_name":"Janet","last_name":"Weaver","avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg"}
52 ]}
53 *
54 */
55
56 generateTables() {
57 this.database.executeSql(
58 'CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY AUTOINCREMENT,first_name TEXT, last_name TEXT, email TEXT,img TEXT);'
59 ).catch(e => console.log(e));
60 }
61
62
63 saveDataFromApi() {
64 this.getUsers().subscribe(users =>
65 users.map());
66
67 }
68
69
70 insertUserLocalDB(user: any) {
71 console.log('estoy coneste user', user);
72 const data = [user.id, user.email, user.first_name, user.last_name, user.email, user.img];
73 this.database.executeSql('INSERT or IGNORE INTO user(id, first_name, last_name, email, img) VALUES (?, ?, ?, ?, ?)', data)
74 .catch(e => console.log(e));
75 }
76
77 getUsers(forceRefresh: boolean = false): Observable<any[]> {
78 /* if (this.networkService.getCurrentNetworkStatus() === ConnectionStatus.Offline || !forceRefresh) {
79 // Return the cached data from Storage
80 return from(this.getLocalData('users'));
81 } else {*/
82 // Just to get some "random" data
83 // const page = Math.floor(Math.random() * Math.floor(6));
84 const page = 1;
85 // Return real API data and store it locally
86 return this.http.get(`${API_URL}/users?per_page=2&page=${page}`).pipe(
87 map(res => res['data']),
88 tap(res => {
89 // this.setLocalData('users', res);
90 console.log('holis', res);
91 })
92 );
93 // }
94 }
95
96
97}