Snippets

Created by Marcus Vinicius de Barros Pontes
import { Injectable } from '@angular/core';
import { SQLite } from 'ionic-native';
import 'rxjs/add/operator/map';

@Injectable()
export class DbinitProvider {
  dbOpened: boolean = false;
  tx: any = new SQLite();
  constructor() {}

  openDB() {
    return new Promise((resolve, reject) => {
      if (this.dbOpened) {
        resolve();
      } else {
        this.tx.openDatabase({
          name: 'doctorpet.db',
          location: 'default'
        }).then(() => {
          console.log("Banco de dados Aberto pelo Dbinit-Provider");
          this.dbOpened = true;
          resolve();
        }, (err) => {
          console.error('Unable to open database: ', err);
        });
      }
    })
  }

}
import { Component } from '@angular/core';
import { NavController, ModalController, ViewController, NavParams, Platform } from 'ionic-angular';
import { RecipedetailsPage } from '../recipedetails/recipedetails';
import { AddrecipeformPage } from '../addrecipeform/addrecipeform';
import { RecipesProvider } from '../../providers/recipes-provider';

@Component({
  selector: 'page-recipeslist',
  templateUrl: 'recipeslist.html'
})
export class RecipeslistPage {

  recipesList:any = [];
  isModal:boolean = this.params.get('modal') || false;

  constructor(
    public navCtrl: NavController,
    public modalCtrl: ModalController,
    public viewCtrl: ViewController,
    public params: NavParams,
    public recipes: RecipesProvider,
    public platform: Platform
  ) {
    this.platform.ready().then(
      () => {
        this.recipes.get().then(
          data => {
            this.recipesList = data;
          }
        )
      }
    )
  }

  goToRecipeDetails(item) {
    if (!this.isModal) {
      this.navCtrl.push(RecipedetailsPage, {recipe: item});
    } else {
      this.close(item);
    }
  }

  add() {
    let modal = this.modalCtrl.create(AddrecipeformPage, {}, { showBackdrop: true, enableBackdropDismiss: true });
    modal.present();
  }
  close(data?: any) {
    this.viewCtrl.dismiss(data);
  }
}
import { Injectable } from '@angular/core';
import { DbinitProvider } from './dbinit-provider';
import * as _ from 'underscore';
import 'rxjs/add/operator/map';

@Injectable()
export class RemediesProvider {
  data:any = [];
  defaultData:any = [
    {
      image: './assets/img/remedio.jpg',
      name: 'Dermacorten 20',
      createdAt: '2016-12-12T21:01:34-03:00'
    }
  ]

  constructor(public db: DbinitProvider) {
    this.db.openDB().then(
      () => {
        this.setDB(true);
      }
    )
  }

  setDB(testcontent?:boolean) {
    return new Promise((resolve, reject) => {
      this.db.tx.executeSql('CREATE TABLE IF NOT EXISTS remedies ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, "name", "image", "createdAt")', {}).then(() => {
        console.log("base de dados de REMEDIES setada");
        if (testcontent === true) {
          this.db.tx.executeSql('SELECT * FROM remedies', []).then(
            result => {
              if (result.rows.length == 0) {
                for(let i = 0; i < this.defaultData.length; i++) {

                  this.db.tx.executeSql('INSERT INTO remedies (name, image, createdAt) VALUES (?,?,?)', [
                    this.defaultData[i].name,
                    this.defaultData[i].image,
                    this.defaultData[i].createdAt,
                  ]).then(
                    insertResult => {
                      this.data[i] = {
                        id: this.defaultData[i].id,
                        name: this.defaultData[i].name,
                        image: this.defaultData[i].image,
                        createdAt: this.defaultData[i].createdAt,
                      };
                    },
                    err => {
                      console.log('Não foi possível inserir os dados ', err);
                    });
                    if (i == this.defaultData.length-1) {
                      resolve(this.data);
                    }
                  }
                } else {
                  this.get().then(successData => {
                    this.data = successData;
                    resolve(this.data);
                  })
                }
              },
              err => {
                console.log('Não foi possível ler os dados ', err);
              });
            } else {
              resolve();
            }
          });

    })
  }

  get(id?: number) {
    return new Promise((resolve, reject) => {
      if (id) {
        this.db.tx.executeSql('SELECT * FROM remedies WHERE id=?', [id]).then(
          success => {
            if (success.rows.length > 0) {
              let idx = _.indexOf(this.data, success.rows.item(0));
              if (idx > -1) {
                this.data[idx] = success.rows.item(0);
              } else {
                this.data.push(success.rows.item(0));
              }
              resolve(this.data);
            } else {
              resolve("");
            }
          },
          err => {
            console.log('Não foi possível ler os dados ', err);
          });
        } else {
          this.db.tx.executeSql('SELECT * FROM remedies', []).then(
            success => {
              if (success.rows.item(0)) {
                this.data = [];
                for(let i = 0; i < success.rows.length; i++) {
                  this.data.push({
                    id: success.rows.item(i).id,
                    name: success.rows.item(i).name,
                    image: success.rows.item(i).image,
                    createdAt: success.rows.item(i).createdAt
                  });
                }
                resolve(this.data);
              } else {
                resolve("");
              }
            },
            err => {
              console.log('Não foi possível ler os dados ', err);
            });
          }

    });
  }

  save(remedy:any) {
    return new Promise((resolve, reject) => {
      this.db.tx.executeSql('INSERT INTO remedies (name, image, createdAt) VALUES (?,?,?)', [
        remedy.name,
        remedy.image,
        remedy.createdAt
      ]).then(
        success => {
          remedy.id = success.insertId;
          this.data.push(remedy);
          resolve({
            status: 'success',
            data: remedy
          })
        },
        err => {
          console.log('Não foi possível inserir os dados ', err);
        })

    })
  }

  update(remedy:any) {
    return new Promise((resolve, reject) => {
      this.db.tx.executeSql('UPDATE remedies SET "name"=?, "image"=? WHERE "id"=?',[
        remedy.name,
        remedy.image,
        remedy.id
      ]).then(
        success => {
          let index;
          this._returnIndex(remedy.id).then(data => {
            index = data;
            if (index > -1) {
              this.data[index] = remedy;
              resolve({
                status: 'success',
                data: remedy
              });
            } else {
              reject({error: "Remédio Não encontrado"});
            }
          });
        },
        err => {
          console.log('Não foi possível atualizar os dados ', err);
        }
      )
    })
  }

  remove(id:number) {
    return new Promise((resolve, reject)=> {
      this.db.tx.executeSql('DELETE FROM remedies WHERE id=?', [id]).then(
        success => {
          let index;
          this._returnIndex(id).then(data => {
            index = data;
            if (index > -1) {
              this.data.splice(index, 1);
              resolve({
                status: 'success'
              });
            } else {
              reject({error: "Remédio Não encontrado"});
            }
          });
        },
        err => {
          console.log('Não foi possível apagar o Remédio: ', err);
          reject({error: "Remédio Não encontrado"});
        }
      )
    })
  }

  clear() {
    this.db.tx.executeSql('DELETE FROM remedies', []).then(
      data => {
        console.log("banco de dados REMEDIES apagado");
        this.data = [];
      },
      err => {
        console.log('Não foi possível ler os dados ', err);
      });
  }

  _returnIndex(id) {
    return new Promise((resolve, reject)=> {
      this.data.find((item, idx) => {
        if (item.id == id) {
          resolve(this.data.indexOf(item));
        }
      })
    })
  }

}
import { Component } from '@angular/core';
import { NavController, ModalController, NavParams, ViewController, Platform } from 'ionic-angular';
import { RemedydetailsPage } from '../remedydetails/remedydetails';
import { AddremedyformPage } from '../addremedyform/addremedyform';
import { RemediesProvider } from '../../providers/remedies-provider';

@Component({
  selector: 'page-remedieslist',
  templateUrl: 'remedieslist.html'
})
export class RemedieslistPage {

  isModal:boolean = this.params.get('modal') || false;
  remediesList:any = [];

  constructor(
    public navCtrl: NavController,
    public modalCtrl: ModalController,
    public params: NavParams,
    public viewCtrl: ViewController,
    public remedies: RemediesProvider,
    public platform: Platform
  ) {}

  ionViewWillEnter() {
    this.platform.ready().then(
      () => {
        this.remedies.get().then(
          success => {
            if (success) {
              this.remediesList = success;
            }
          }
        );
      }
    )
  }

  goToRemedyDetails(item) {
    if (!this.isModal) {
      this.navCtrl.push(RemedydetailsPage, {remedy: item});
    } else {
      this.close(item);
    }
  }

  add() {
    let modal = this.modalCtrl.create(AddremedyformPage, {}, { showBackdrop: true, enableBackdropDismiss: true });
    modal.present();
  }
  close(data?: any) {
    this.viewCtrl.dismiss(data);
  }

}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.