Ext.ns('energywater');

energywater.entriesPanel = Ext.extend(Ext.Panel,{
  border: true
  ,defaults: {bodyStyle:'background-color:#eeeeee'}
  ,initComponent:function() {
    // hard coded config - cannot be changed from outside
    var config = {
      items:[{
        xtype:'energywaterentriesform'
        ,height: 230
      },{
        xtype:'energywaterentriesgrid'
      }]
    };
    // apply config
    Ext.apply(this, Ext.apply(this.initialConfig, config));
    // call parent initComponent
    energywater.entriesPanel.superclass.initComponent.call(this);
    //this.counterInfos = this.items.itemAt(0);
    this.entriesForm = this.items.itemAt(0);
    this.entriesGrid = this.items.itemAt(1);
    // Water initComponent
    this.waterEntriesForm = this.entriesForm.items.itemAt(0);
    this.waterEntriesForm.buttons[1].on('click',this.addUpdateWaterEntry,this);
    this.waterEntriesGrid = this.entriesGrid.items.itemAt(0);
    this.waterEntriesGrid.actionEdit.callbacks = {
      'icon-edit':function(grid, record, action, row, col) {
        this.initEditWaterEntry(grid, row);
      }.createDelegate(this)
    }
    this.waterEntriesGrid.topToolbar.items.itemAt(0).on('click',this.deleteWaterEntries,this);
    //Energy initComponent
    this.energyEntriesForm = this.entriesForm.items.itemAt(1);
    this.energyEntriesForm.buttons[1].on('click',this.addUpdateEnergyEntry,this);
    this.energyEntriesGrid = this.entriesGrid.items.itemAt(1);
    this.energyEntriesGrid.actionEdit.callbacks = {
      'icon-edit':function(grid, record, action, row, col) {
        this.initEditEnergyEntry(grid, row);
      }.createDelegate(this)
    }
    this.energyEntriesGrid.topToolbar.items.itemAt(0).on('click',this.deleteEnergyEntries,this);
    //Elecsimple initComponent
    this.elecSimpleEntriesForm = this.entriesForm.items.itemAt(2);
    this.elecSimpleEntriesForm.buttons[1].on('click',this.addUpdateElecSimpleEntry,this);
    this.elecSimpleEntriesGrid = this.entriesGrid.items.itemAt(2);
    this.elecSimpleEntriesGrid.actionEdit.callbacks = {
      'icon-edit':function(grid, record, action, row, col) {
        this.initEditElecSimpleEntry(grid, row);
      }.createDelegate(this)
    }
    this.elecSimpleEntriesGrid.topToolbar.items.itemAt(0).on('click',this.deleteElecSimpleEntries,this);
    //Elecdouble initComponent
    this.elecDoubleEntriesForm = this.entriesForm.items.itemAt(3);
    this.elecDoubleEntriesForm.buttons[1].on('click',this.addUpdateElecDoubleEntry,this);
    this.elecDoubleEntriesGrid = this.entriesGrid.items.itemAt(3);
    this.elecDoubleEntriesGrid.actionEdit.callbacks = {
      'icon-edit':function(grid, record, action, row, col) {
        this.initEditElecDoubleEntry(grid, row);
      }.createDelegate(this)
    }
    this.elecDoubleEntriesGrid.topToolbar.items.itemAt(0).on('click',this.deleteElecDoubleEntries,this);
  } // end of function initComponent
  ,onRender:function() {
    // call parent
    energywater.entriesPanel.superclass.onRender.apply(this, arguments);
    // after parent code, e.g. install event handlers on rendered components
  } // eo function onRender
  ,addUpdateWaterEntry: function() {
    if(this.waterEntriesForm.isValid()){
      Ext.Ajax.request({
        ownerCt: this,
        waitMsg: 'Please wait...',
        url: '/process/EMBrowser/site/counter/entries/process.waterentries.php',
        params: {
          cmd: this.waterEntriesForm.buttons[1].cmd,
          counter_id:this.waterEntriesForm.counter_id,
          entry_id:this.waterEntriesForm.getField('entry_id').getValue(),
          value: this.waterEntriesForm.getField('value').getValue(),
          price: this.waterEntriesForm.getField('price').getValue(),
          startdate: this.waterEntriesForm.getField('startdate').getValue().format("Ymd"),
          enddate: this.waterEntriesForm.getField('enddate').getValue().format("Ymd")
        },
        success: function(response,scope){
          var result = Ext.util.JSON.decode(response.responseText);
          switch(result.success){
            case 1:
              scope.ownerCt.waterEntriesForm.init(scope.ownerCt.waterEntriesForm.counter_id);
              scope.ownerCt.waterEntriesForm._initFields();
              scope.ownerCt.waterEntriesGrid.refresh(scope.ownerCt.waterEntriesForm.counter_id);
            break;
            default:
              Ext.MessageBox.alert('Attention',result.error);
            break;
          }
        },
        failure: function(response) {
          Ext.MessageBox.alert('error','L application n a pas pu se connecter a la base de données. Veuillez réessayer plus tard');
        }
      });
    }else {
      Ext.MessageBox.alert('Attention','Le formulaire n est pas valide');
    }
  }
  ,initEditWaterEntry: function(grid, rowIndex) {
    var record = grid.getStore().getAt(rowIndex);
    this.waterEntriesForm.setField('entry_id',record.get('entry_id'));
    this.waterEntriesForm.setField('value',record.get('value'));
    this.waterEntriesForm.setField('price',record.get('price'));
    this.waterEntriesForm.setField('startdate',record.get('start_date'));
    this.waterEntriesForm.setField('enddate',record.get('end_date'));
    this.waterEntriesForm.buttons[1].setText("Modification");
    this.waterEntriesForm.buttons[1].cmd="update";
  }
  ,deleteWaterEntries: function() {
    if(this.waterEntriesGrid.countCheck() > 0) {
      Ext.Ajax.request({
        ownerCt: this,
        waitMsg: 'Please wait...',
        url: '/process/EMBrowser/site/counter/entries/process.waterentries.php',
        params: {
          entry_ids:Ext.util.JSON.encode(this.waterEntriesGrid.getCheckBoxValues())
          ,cmd:'delete'
        },
        success: function(response,scope){
          scope.ownerCt.waterEntriesGrid.refresh(scope.ownerCt.waterEntriesGrid.counter_id);
          scope.ownerCt.waterEntriesForm._initFields();
        },
        failure: function() {
        }
      });
    } else {
      Ext.MessageBox.show({
        title: 'Aucun élément sélectionné',
        msg: 'Pour supprimer, veuillez sélectionner les éléments à supprimer avec les checkbox',
        width: 300
      });
    }
  }
  ,addUpdateEnergyEntry: function() {
    if(this.energyEntriesForm.isValid()){
      Ext.Ajax.request({
        ownerCt: this,
        waitMsg: 'Please wait...',
        url: '/process/EMBrowser/site/counter/entries/process.energyentries.php',
        params: {
          cmd: this.energyEntriesForm.buttons[1].cmd,
          counter_id:this.energyEntriesForm.counter_id,
          entry_id:this.energyEntriesForm.getField('entry_id').getValue(),
          high_value: this.energyEntriesForm.getField('value').getValue(),
          low_value:0,
          price: this.energyEntriesForm.getField('price').getValue(),
          power:0,
          startdate: this.energyEntriesForm.getField('startdate').getValue().format("Ymd"),
          enddate: this.energyEntriesForm.getField('enddate').getValue().format("Ymd"),
          //energy_supplier_name: this.energyEntriesForm.getField('energy_supplier_name').getValue()
        },
        success: function(response,scope){
          var result = Ext.util.JSON.decode(response.responseText);
          switch(result.success){
            case 1:
              scope.ownerCt.energyEntriesForm.init(scope.ownerCt.energyEntriesForm.counter_id);
              scope.ownerCt.energyEntriesForm._initFields();
              scope.ownerCt.energyEntriesGrid.refresh(scope.ownerCt.energyEntriesForm.counter_id);
            break;
            default:
              Ext.MessageBox.alert('Attention',result.error);
            break;
          }
        },
        failure: function(response) {
          Ext.MessageBox.alert('error','L application n a pas pu se connecter a la base de données. Veuillez réessayer plus tard');
        }
      });
    }else {
      Ext.MessageBox.alert('Attention','Le formulaire n est pas valide');
    }
  }
  ,initEditEnergyEntry: function(grid, rowIndex) {
    var record = grid.getStore().getAt(rowIndex);
    this.energyEntriesForm.setField('entry_id',record.get('entry_id'));
    this.energyEntriesForm.setField('value',record.get('value'));
    this.energyEntriesForm.setField('price',record.get('price'));
    this.energyEntriesForm.setField('startdate',record.get('start_date'));
    this.energyEntriesForm.setField('enddate',record.get('end_date'));
    //this.energyEntriesForm.setField('energy_supplier_name',record.get('energy_supplier_name'));
    this.energyEntriesForm.buttons[1].setText("Modification");
    this.energyEntriesForm.buttons[1].cmd="update";
  }
  ,deleteEnergyEntries: function() {
    if(this.energyEntriesGrid.countCheck() > 0) {
      Ext.Ajax.request({
        ownerCt: this,
        waitMsg: 'Please wait...',
        url: '/process/EMBrowser/site/counter/entries/process.energyentries.php',
        params: {
          entry_ids:Ext.util.JSON.encode(this.energyEntriesGrid.getCheckBoxValues())
          ,cmd:'delete'
        },
        success: function(response,scope){
          scope.ownerCt.energyEntriesGrid.refresh(scope.ownerCt.energyEntriesGrid.counter_id);
          scope.ownerCt.energyEntriesForm._initFields();
        },
        failure: function() {
        }
      });
    } else {
      Ext.MessageBox.show({
        title: 'Aucun élément sélectionné',
        msg: 'Pour supprimer, veuillez sélectionner les éléments à supprimer avec les checkbox',
        width: 300
      });
    }
  }
  ,addUpdateElecSimpleEntry: function() {
    if(this.elecSimpleEntriesForm.isValid()){
      Ext.Ajax.request({
        ownerCt: this,
        waitMsg: 'Please wait...',
        url: '/process/EMBrowser/site/counter/entries/process.energyentries.php',
        params: {
          cmd: this.elecSimpleEntriesForm.buttons[1].cmd,
          counter_id:this.elecSimpleEntriesForm.counter_id,
          entry_id:this.elecSimpleEntriesForm.getField('entry_id').getValue(),
          high_value: this.elecSimpleEntriesForm.getField('value').getValue(),
          low_value:0,
          price: this.elecSimpleEntriesForm.getField('price').getValue(),
          power: this.elecSimpleEntriesForm.getField('power').getValue(),
          startdate: this.elecSimpleEntriesForm.getField('startdate').getValue().format("Ymd"),
          enddate: this.elecSimpleEntriesForm.getField('enddate').getValue().format("Ymd"),
          //energy_supplier_name: this.elecSimpleEntriesForm.getField('energy_supplier_name').getValue()
        },
        success: function(response,scope){
          var result = Ext.util.JSON.decode(response.responseText);
          switch(result.success){
            case 1:
              scope.ownerCt.elecSimpleEntriesForm.init(scope.ownerCt.elecSimpleEntriesForm.counter_id);
              scope.ownerCt.elecSimpleEntriesForm._initFields();
              scope.ownerCt.elecSimpleEntriesGrid.refresh(scope.ownerCt.elecSimpleEntriesForm.counter_id);
            break;
            default:
              Ext.MessageBox.alert('Attention',result.error);
            break;
          }
        },
        failure: function(response) {
          Ext.MessageBox.alert('error','L application n a pas pu se connecter a la base de données. Veuillez réessayer plus tard');
        }
      });
    }else {
      Ext.MessageBox.alert('Attention','Le formulaire n est pas valide');
    }
  }
  ,initEditElecSimpleEntry: function(grid, rowIndex) {
    var record = grid.getStore().getAt(rowIndex);
    this.elecSimpleEntriesForm.setField('entry_id',record.get('entry_id'));
    this.elecSimpleEntriesForm.setField('value',record.get('value'));
    this.elecSimpleEntriesForm.setField('price',record.get('price'));
    this.elecSimpleEntriesForm.setField('power',record.get('power'));
    this.elecSimpleEntriesForm.setField('startdate',record.get('start_date'));
    this.elecSimpleEntriesForm.setField('enddate',record.get('end_date'));
    //this.elecSimpleEntriesForm.setField('energy_supplier_name',record.get('energy_supplier_name'));
    this.elecSimpleEntriesForm.buttons[1].setText("Modification");
    this.elecSimpleEntriesForm.buttons[1].cmd="update";
  }
  ,deleteElecSimpleEntries: function() {
    if(this.elecSimpleEntriesGrid.countCheck() > 0) {
      Ext.Ajax.request({
        ownerCt: this,
        waitMsg: 'Please wait...',
        url: '/process/EMBrowser/site/counter/entries/process.energyentries.php',
        params: {
          entry_ids:Ext.util.JSON.encode(this.elecSimpleEntriesGrid.getCheckBoxValues())
          ,cmd:'delete'
        },
        success: function(response,scope){
          scope.ownerCt.elecSimpleEntriesGrid.refresh(scope.ownerCt.elecSimpleEntriesGrid.counter_id);
          scope.ownerCt.elecSimpleEntriesForm._initFields();
        },
        failure: function() {
        }
      });
    } else {
      Ext.MessageBox.show({
        title: 'Aucun élément sélectionné',
        msg: 'Pour supprimer, veuillez sélectionner les éléments à supprimer avec les checkbox',
        width: 300
      });
    }
  }
  ,addUpdateElecDoubleEntry: function() {
    if(this.elecDoubleEntriesForm.isValid()){
      Ext.Ajax.request({
        ownerCt: this,
        waitMsg: 'Please wait...',
        url: '/process/EMBrowser/site/counter/entries/process.energyentries.php',
        params: {
          cmd: this.elecDoubleEntriesForm.buttons[1].cmd,
          counter_id:this.elecDoubleEntriesForm.counter_id,
          entry_id:this.elecDoubleEntriesForm.getField('entry_id').getValue(),
          high_value:this.elecDoubleEntriesForm.getField('high_value').getValue(),
          low_value:this.elecDoubleEntriesForm.getField('low_value').getValue(),
          price: this.elecDoubleEntriesForm.getField('price').getValue(),
          power: this.elecDoubleEntriesForm.getField('power').getValue(),
          startdate: this.elecDoubleEntriesForm.getField('startdate').getValue().format("Ymd"),
          enddate: this.elecDoubleEntriesForm.getField('enddate').getValue().format("Ymd"),
          //energy_supplier_name: this.elecDoubleEntriesForm.getField('energy_supplier_name').getValue()
        },
        success: function(response,scope){
          var result = Ext.util.JSON.decode(response.responseText);
          switch(result.success){
            case 1:
              scope.ownerCt.elecDoubleEntriesForm.init(scope.ownerCt.elecDoubleEntriesForm.counter_id);
              scope.ownerCt.elecDoubleEntriesForm._initFields();
              scope.ownerCt.elecDoubleEntriesGrid.refresh(scope.ownerCt.elecDoubleEntriesForm.counter_id);
            break;
            default:
              Ext.MessageBox.alert('Attention',result.error);
            break;
          }
        },
        failure: function(response) {
          Ext.MessageBox.alert('error','L application n a pas pu se connecter a la base de données. Veuillez réessayer plus tard');
        }
      });
    }else {
      Ext.MessageBox.alert('Attention','Le formulaire n est pas valide');
    }
  }
  ,initEditElecDoubleEntry: function(grid, rowIndex) {
    var record = grid.getStore().getAt(rowIndex);
    this.elecDoubleEntriesForm.setField('entry_id',record.get('entry_id'));
    this.elecDoubleEntriesForm.setField('high_value',record.get('high_value'));
    this.elecDoubleEntriesForm.setField('low_value',record.get('low_value'));
    this.elecDoubleEntriesForm.setField('price',record.get('price'));
    this.elecDoubleEntriesForm.setField('power',record.get('power'));
    this.elecDoubleEntriesForm.setField('startdate',record.get('start_date'));
    this.elecDoubleEntriesForm.setField('enddate',record.get('end_date'));
    //this.elecDoubleEntriesForm.setField('energy_supplier_name',record.get('energy_supplier_name'));
    this.elecDoubleEntriesForm.buttons[1].setText("Modification");
    this.elecDoubleEntriesForm.buttons[1].cmd="update";
  }
  ,deleteElecDoubleEntries: function() {
    if(this.elecDoubleEntriesGrid.countCheck() > 0) {
      Ext.Ajax.request({
        ownerCt: this,
        waitMsg: 'Please wait...',
        url: '/process/EMBrowser/site/counter/entries/process.energyentries.php',
        params: {
          entry_ids:Ext.util.JSON.encode(this.elecDoubleEntriesGrid.getCheckBoxValues())
          ,cmd:'delete'
        },
        success: function(response,scope){
          scope.ownerCt.elecDoubleEntriesGrid.refresh(scope.ownerCt.elecDoubleEntriesGrid.counter_id);
          scope.ownerCt.elecDoubleEntriesForm._initFields();
        },
        failure: function() {
        }
      });
    } else {
      Ext.MessageBox.show({
        title: 'Aucun élément sélectionné',
        msg: 'Pour supprimer, veuillez sélectionner les éléments à supprimer avec les checkbox',
        width: 300
      });
    }
  }
});

Ext.reg('energywaterentriespanel', energywater.entriesPanel);



