
/**
 * @author 
 * @copyright 2011
 */
 

     //** PANEL PARA MANTENIMIENTO A USUARIOS **///
    
    
    var item1 = new Ext.Panel({
        title: 'Alta de usuarios',
        bodyStyle:'padding:5px',
        layout:'form',
        iconCls:'addusuario',
        tbar:[
            {xtype:'tbfill'},
            {text:'Registrar Usuario',iconCls:'guardar',handler:function(){
              if (Ext.getCmp('formaalta').getForm().isValid())
                    Ext.getCmp('formaalta').getForm().submit({
                        url : 'ctradministrador/altausuario',                                                                
                        waitMsg : 'Registrando .....',
                        success : function(form,action){  
                   	    var json=Ext.util.JSON.decode(action.response.responseText); 
                           msgINFO('Informacion','Alta de usuario registrado correctamente, clave asignada.. '+json.clave);     
                           Ext.getCmp('formaalta').getForm().reset();                                           
                        },
                        failure:function(){
                            msgERROR('Error','Ocurrio un error al registrar');
                        }
                    });
                else
                    msgALERTA('Aviso','Ingrese datos ....');                       
            }},
        ],
        items:[
            new Ext.form.FormPanel({
                id:'formaalta',
                border:false,
                labelWidth:200,
                items:[
                    {xtype:'numberfield',width:50,fieldLabel:'No. de empleado ',allowBlank:false,name:'altanemp',allowDecimals:false,allowNegative:false},
                    {xtype:'textfield',width:400,fieldLabel:'Nombre de usuario ',allowBlank:false,name:'altausuario'},
                    {xtype:'textfield',width:400,fieldLabel:'Correo electrónico ',allowBlank:false,name:'altacorreo',vtype:'email'},
                    {xtype:'combo',width:100,fieldLabel:'Perfil ',allowBlank:false,name:'altaperfil',valueField:'id',displayField:'descripcion',hiddenName:'altaperfil',mode:'local',triggerAction:'all',emptyText:'Seleccione',
                    store: new Ext.data.ArrayStore({
                        fields:[
                            'id',
                            'descripcion'                            
                        ],
                        data:[['1','Usuario'],['2','Administrador']]
                    })
                    }
                    
                                        
                ]
            })
        ]
    });

    var stcombo1=new Ext.form.ComboBox({
        emptyText	:'Seleccione....',
    	displayField:'descripcion',
    	hiddenName	:'stactividad',
    	valueField 	:'id',
        mode   :'local',
    	triggerAction	:'all',
    	name	:'stactividad',
        id:'stactividad',
    	store	:new Ext.data.ArrayStore({
            data    :[['t','SI'],['f','NO']],
    		fields	:['id','descripcion']	
    	})
    });
    var item2 = new Ext.Panel({
        title: 'Permisos',
        iconCls:'permisos',
        layout:'fit',
        listeners:{
            beforeexpand:function(){
                var mascara=new Ext.LoadMask(Ext.getBody(),{msg:'Extrayendo informacion, espere un momento...',store: Ext.getCmp('gridlistpermisos').getStore()});
                mascara.show();
                Ext.getCmp('gridlistpermisos').getStore().load();
                ACWin.collapse();
            }    
        },
        items   :[
            new Ext.grid.EditorGridPanel({
                stripeRows  :true,
                columnLines :true,
                border  :false,
                id  :'gridlistpermisos',
                tools   :[
                    {id:'minus',qtip:'Deshabilitar usuario',handler:function(){
                        Ext.MessageBox.confirm('Confirmacion','Deshabilitar usuario, esta seguro?',function(btn){
                            if(btn=='yes')
                                Ext.Ajax.request({
                                   url:'ctrcatalogos/delusuario',
                                   method:'POST',
                                   success:function(response,request){
                                    var json=Ext.decode(response.responseText);
                                    if(json.respuesta==0) msgERROR('Error','Ocurrio un error al vincular, verifique si la actividad no esta vinculada');
                                    else{ 
                                        Ext.getCmp('gridlistpermisos').getStore().reload();
                                        msgINFO('Informacion','Actividad vinculada con exito');
                                    }
                                   }
                                });
                                
                        },this);
                        
                    }},
                    {id:'refresh',qtip:'Buscar',handler:function(){
                        Ext.getCmp('gridlistpermisos').getStore().reload();
                    }}
                ],
                store   :new Ext.data.JsonStore({
                    proxy   :new Ext.data.HttpProxy({
                        api :{read:'ctrcatalogos/permisos_usuario'},
                        method  :'POST'
                        
                    }),
                    root    :'data',
		      id:'id',
                    fields:[
                        {name:'id'},
                        {name:'nombre'},
                        {name:'nemp'},
                        {name:'asignacion'},
                        {name:'atencion'},
                        {name:'solucion'},
                        {name:'reclasificacion'},
                        {name:'cancelacion'},
                        {name:'catalogos'}
                    ]   
                }),
                autoExpandColumn:'nombre',
                columns :[
                    new Ext.grid.RowNumberer(),
                    {header:'No.Emp',dataIndex:'nemp',width:50},
                    {header:'Asignacion',align:'center',dataIndex:'asignacion',editor:stcombo1,sortable:true,width:75,renderer:function(value, metaData, record, rowIndex, colIndex, store){
                    switch(value){
                        case 't':return '<img src="'+base_url+'application/extjs/resources/images/accept.png">';break;
                        case 'f':return '<img src="'+base_url+'application/extjs/resources/images/cancel.png">';break;
                    }
                    }},
                    {header:'Atencion',align:'center',dataIndex:'atencion',editor:stcombo1,sortable:true,width:75,renderer:function(value, metaData, record, rowIndex, colIndex, store){
                    switch(value){
                        case 't':return '<img src="'+base_url+'application/extjs/resources/images/accept.png">';break;
                        case 'f':return '<img src="'+base_url+'application/extjs/resources/images/cancel.png">';break;
                    }
                    }},
                    {header:'Solucion',align:'center',dataIndex:'solucion',editor:stcombo1,sortable:true,width:75,renderer:function(value, metaData, record, rowIndex, colIndex, store){
                    switch(value){
                        case 't':return '<img src="'+base_url+'application/extjs/resources/images/accept.png">';break;
                        case 'f':return '<img src="'+base_url+'application/extjs/resources/images/cancel.png">';break;
                    }
                    }},
                    {header:'Reclasifica',align:'center',dataIndex:'reclasificacion',editor:stcombo1,sortable:true,width:75,renderer:function(value, metaData, record, rowIndex, colIndex, store){
                    switch(value){
                        case 't':return '<img src="'+base_url+'application/extjs/resources/images/accept.png">';break;
                        case 'f':return '<img src="'+base_url+'application/extjs/resources/images/cancel.png">';break;
                    }
                    }},
                    {header:'Cancela',align:'center',dataIndex:'cancelacion',editor:stcombo1,sortable:true,width:75,renderer:function(value, metaData, record, rowIndex, colIndex, store){
                    switch(value){
                        case 't':return '<img src="'+base_url+'application/extjs/resources/images/accept.png">';break;
                        case 'f':return '<img src="'+base_url+'application/extjs/resources/images/cancel.png">';break;
                    }
                    }},
                    {header:'Catalogos',align:'center',dataIndex:'catalogos',editor:stcombo1,sortable:true,width:75,renderer:function(value, metaData, record, rowIndex, colIndex, store){
                    switch(value){
                        case 't':return '<img src="'+base_url+'application/extjs/resources/images/accept.png">';break;
                        case 'f':return '<img src="'+base_url+'application/extjs/resources/images/cancel.png">';break;
                    }
                    }},
                    {header:'Nombre',dataIndex:'nombre',id:'nombre',sortable:true}       
                ] 
            })
        ]
    });

    Ext.getCmp('gridlistpermisos').on('afteredit',function(){ 
        var modificados=Ext.getCmp('gridlistpermisos').getStore().getModifiedRecords();
    	var registros=[];
    	Ext.each(modificados,function(record){
    		registros.push(Ext.apply({id:record.id},{asignacion:record.data['asignacion'],atencion:record.data['atencion'],solucion:record.data['solucion'],cancelacion:record.data['cancelacion'],reclasificacion:record.data['reclasificacion'],catalogos:record.data['catalogos']}));
       	});
    	Ext.getCmp('gridlistpermisos').stopEditing();
    	registros=Ext.encode(registros);
   		Ext.Ajax.request({
    		url:'ctrcatalogos/actualiza_permisos_usuarios',
    		method  :'POST',
    		params	:{records:registros},
    		success	:function(response,request){
    			var json=Ext.decode(response.responseText);
                if(json.respuesta==1)
                    Ext.getCmp('gridlistpermisos').getStore().commitChanges();
                else{
                    Ext.getCmp('gridlistpermisos').getStore().rejectChanges();
                    msgERROR('Mensaje','No cuenta con permisos para actualizar la informacion');  
                }
    		},
    		failure	:function(){
                Ext.getCmp('gridlistpermisos').getStore().rejectChanges();
                msgERROR('Mensaje','Ocurrio un error al actualizar')
    		}	
 	     });    
    },this);

    var item3 = new Ext.Panel({
        title: 'Actividades',
        layout  :'fit',
        iconCls:'actividades',
        items   :[
            new Ext.grid.GridPanel({
                stripeRows  :true,
                columnLines :true,
                border  :false,
                id  :'gridlistaactividades',
                tbar    :[
                    new Ext.form.ComboBox({
                      name : 'combousuariosactividades',
                      id : 'combousuariosactividades',
                      triggerAction:'all',   //trae los datos del query
                      displayField : 'nombre',
                      valueField : 'nemp',
                      emptyText : 'Seleccione usuario ...',
                      hiddenName : 'combousuariosactividades',
                      editable : false,
                      width : 300,                       
                      store : new Ext.data.JsonStore({
                        proxy : new Ext.data.HttpProxy({   //se especifica a que archivo php va a consultar
                            api :{
                                read : 'ctradministrador/catalogo_usuarios'
                            },
                            method : 'post'
                            }),
                        root : 'data',
                        fields : [
                            {name :'nemp'},
                            {name :'nombre'} 
                        ]
                      }) //crear nuevo objeto store de datos   
                    }),
                    {text:'Reset',handler:function(){Ext.getCmp('combousuariosactividades').clearValue()}},
                    '-',
                    {xtype:'tbspacer'},
                    new Ext.form.ComboBox({
                      name : 'comboactividadesactividades',
                      id : 'comboactividadesactividades',
                      triggerAction:'all',   //trae los datos del query
                      displayField : 'descripcion',
                      valueField : 'id',
                      emptyText : 'Seleccione actividad...',
                      hiddenName : 'comboactividadesactividades',
                      editable : false,
                      width : 300,                       
                      store : new Ext.data.JsonStore({
                        proxy : new Ext.data.HttpProxy({   //se especifica a que archivo php va a consultar
                            api :{
                                read : 'ctrcatalogos/catalogo_actividades'
                            },
                            method : 'post'
                            }),
                        baseParams:{cadena:''},
                        root : 'data',
                        fields : [
                            {name :'id'},
                            {name :'descripcion'} 
                        ]
                      }) //crear nuevo objeto store de datos   
                    }),
                    {text:'Reset',handler:function(){Ext.getCmp('comboactividadesactividades').clearValue()}}
                    
                ],
                tools   :[
                    {id:'plus',qtip:'Vincular actividad',handler:function(){
                        Ext.MessageBox.confirm('Confirmacion','Vincular actividad al usuario seleccionado?',function(btn){
                            if(btn=='yes')
                                Ext.Ajax.request({
                                   url:'ctrcatalogos/addusuarioactividad',
                                   method:'POST',
                                   params:{usuario:Ext.getCmp('combousuariosactividades').getValue(),actividad:Ext.getCmp('comboactividadesactividades').getValue()},
                                   success:function(response,request){
                                    var json=Ext.decode(response.responseText);
                                    if(json.respuesta==0) msgERROR('Error','Ocurrio un error al vincular, verifique si la actividad no esta vinculada');
                                    else{ 
                                        Ext.getCmp('gridlistaactividades').getStore().reload();
                                        msgINFO('Informacion','Actividad vinculada con exito');
                                    }
                                   }
                                });
                                
                        },this);
                        
                    }},
                    {id:'search',handler:function(){
                        if(Ext.getCmp('combousuariosactividades').getValue()>0 || Ext.getCmp('comboactividadesactividades').getValue()>0)   {          
                            var mascara=new Ext.LoadMask(Ext.getBody(),{msg:'Buscando informacion, espere un momento...',store: Ext.getCmp('gridlistaactividades').getStore()});
                            mascara.show();
                            Ext.getCmp('gridlistaactividades').getStore().load({params:{usuario:Ext.getCmp('combousuariosactividades').getValue(),actividad:Ext.getCmp('comboactividadesactividades').getValue()}});     
                }
                    }},
                    {id:'refresh',qtip:'Buscar',handler:function(){
                    }}
                ],
                store   :new Ext.data.JsonStore({
                    proxy   :new Ext.data.HttpProxy({
                        api :{read:'ctrcatalogos/actividad_usuario'},
                        method  :'POST'
                        
                    }),
                    root    :'data',
                    fields:[
                        {name:'id'},
                        {name:'actividad'},
                        {name:'nombre'},
                        {name:'nemp'},
                        {name:'id_maagtic_actividad'},
                        {name:'servicio'},
                        {name:'familia'},
                        {name:'status'}
                    ]   
                }),
                columns :[
                    new Ext.grid.RowNumberer(),
                    {header:'No.Emp',dataIndex:'nemp',width:50},
                    {header:'Nombre',dataIndex:'nombre',width:250,sortable:true},
                    {header:'Actividad',dataIndex:'actividad',sortable:true,width:400},
                    {header:'Servicio',dataIndex:'servicio',sortable:true,width:200},
                    {header:'Familia',dataIndex:'familia',sortable:true,width:200}                    
                ] 
            })
        ]
    });

    Ext.getCmp('gridlistaactividades').on('rowdblclick',function(grid,index,ev){
        var registro=grid.store.getAt(index);  
        Ext.MessageBox.confirm('Confirmacion','Desvincular actividad al usuario seleccionado?',function(btn){
            if(btn=='yes')  
                Ext.Ajax.request({
                   url:'ctrcatalogos/delusuarioactividad',
                   method:'POST',
                   params:{usuario:registro.get('nemp'),actividad:registro.get('id_maagtic_actividad')},
                   success:function(response,request){
                    var json=Ext.decode(response.responseText);
                    if(json.respuesta==0) msgERROR('Error','Ocurrio un error al vincular, verifique si la actividad no esta vinculada');
                    else{ 
                        Ext.getCmp('gridlistaactividades').getStore().reload();
                        msgINFO('Informacion','Actividad desvinculada con exito');
                    }
                   }
                });
        });
    });
    
    var usuarios = new Ext.Panel({
        margins:'2 2 2 2',       
        width: '50%', 
        region:'center',       
        layout:'accordion',
        layoutConfig: {
        titleCollapse: false,
        animate: true,
        activeOnTop: true
        },
        border:false,
        items: [item3,item2,item1]
    });
    
    
    var mantenimiento = new Ext.Panel({
       title: 'Mantenimiento',
       layout : 'border',
       items:[usuarios,ACWin]
        
    });
    
    

     //** PANEL PARA MANTENIMIENTO A USUARIOS **///
     
  
    



