import { observable, action, computed } from 'mobx';
export default class Transaction {
  @observable isLoading = false;
  @observable list = [];
  @observable transactionListFiltered = [];
  @observable transactionList = [
    {
      id : '47efc62f-fb69-427a-9a12-51eac2c45e75',
      payment_proof : '',
      amount : '500000',
      status : 'Waiting Approval',
      transaction_id: '47efc62f-fb69-427a-9a12-51eac2c45e75',
      user_id: '47efc62f-fb69-427a-9a12-51eac2c45e75',
      approver_user_id:'',
      type: 'Withdraw',
      bank_account_number : 'T3ST4J4',
      bank_name : 'BCA',
      reject_reason : '',
      bank_behalf_of : 'Sunshine Store',
      bank_to: 'Admin Martketplace',
      user : {
        username : 'sunshine',
        email : 'store@marketplace.com',
      }
    }
  ];
  @observable detail = {
    "payment_proof": "",
    "amount": "",
    "status": "",
    account:{
      id: '',
      name : '',
    },
    "approver_user_id": null,
    "bank_account_number": "",
    "bank_name": "",
    "reject_reason": null,
    "bank_behalf_of": "",
    "bank_to": {
        "name": "",
        "account_number": "",
        "on_behalf": ""
    },
    "type": "",
    created_at :'',
    transaction : {
      id : '',
      status : '',
      amount  : '',
      created_at : '',
    }
  };
  @observable saldo = [
  {
    amount : 0
  },{
    amount : 0
  }];
  @observable wallet ={
    pending_payment_to_wallet : 0,
    balance : 0
  }

  constructor(context) {
    this.context = context;
    this.http = context.http;
  }

  @action
  reset(){
    this.detail = {
    "payment_proof": "",
    "amount": "",
    "status": "",
    account:{
      id: '',
      name : '',
    },
    "approver_user_id": null,
    "bank_account_number": "",
    "bank_name": "",
    "reject_reason": null,
    "bank_behalf_of": "",
    "bank_to": {
        "name": "",
        "account_number": "",
        "on_behalf": ""
    },
    "type": "",
    created_at :'',
    transaction : {
      id : '',
      status : '',
      amount  : '',
      created_at : '',
    }
    };
  }

  // @action 
  // getAll() {
  //   this.isLoading = true;
  //   return this.http.get("transaction")
  //     .then(res => {
  //       this.isLoading = false;
  //       this.list = res;
  //     })
  // }

  @action
  getAll() {
    this.isLoading = true;
    return this.http.get("transaction")
      .then(res => {
        this.list = res;
        this.isLoading = false;
      })
      .catch(err => {
        this.isLoading = false;
        throw err;
      })
  }

  @action
  getAmount(){
    return this.http.get(`wallet`).then(res => {
      this.wallet = res;
    });
  }

  @action
  getById(id) {
    this.isLoading = true;
    return this.http.get(`transaction/${id}`).then(res => {
      this.detail = res;
      this.isLoading = false;
    });
  }

  filterItems = (query) => {
    return this.transactionList.filter((el) =>
      el.user.email.toLowerCase().indexOf(query.toLowerCase()) > -1
    );
  }

  @action
  search(text){
    // var a = _.filter(this.tasks,function(o){return _.includes(o,text)});
    this.transactionListFiltered = this.filterItems(text);
  }
}
