Blame view

src/Controller/StatsController.php 5.57 KB
409758d9   Etienne Pallier   Ajout d'une nouve...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace App\Controller;

use App\Controller\AppController;

/**
 * Stats Controller
 *
 * @property \App\Model\Table\StatsTable $Stats
 *
 * @method \App\Model\Entity\Stat[]|\Cake\Datasource\ResultSetInterface paginate($object = null, array $settings = [])
 */
class StatsController extends AppController
{
1b901ee9   Etienne Pallier   Refactorisation e...
15
16
    
    
409758d9   Etienne Pallier   Ajout d'une nouve...
17
18
19
20
21
22
23
    /**
     * Index method
     *
     * @return \Cake\Http\Response|null
     */
    public function index()
    {
1b901ee9   Etienne Pallier   Refactorisation e...
24
25
26
27
28
29
30
31
32
33
34
35
36
37
        
        // Moyenne générale pour le nombre de connexions et le temps de connexion
        
        $connex_nb_tot = 0;
        $connex_dur_tot_tot = 0;
        $stats = $this->Stats->find();
        foreach ($stats as $stat) {
            $connex_nb_tot += $stat->connex_nb;
            $connex_dur_tot_tot += $stat->connex_dur_tot;
        }
        $connex_nb_year_avg = $connex_nb_tot / $stats->count();
        $connex_dur_tot_avg = round($connex_dur_tot_tot / $connex_nb_tot);
        $this->set(compact('connex_nb_year_avg', 'connex_dur_tot_avg'));
        
06938694   Etienne Pallier   Vue liste projets...
38
39
40
41
42
43
44
45
46
47
48
        $sortWhitelist = [
            'year' => 'year',
            'user_id' => 'Users.nom',
            'last_login_time' => 'last_login_time',
            'last_connex_dur' => 'last_connex_dur',
            'last_logout_time' => 'last_logout_time',
            'connex_dur_tot' => 'connex_dur_tot',
            'connex_nb' => 'connex_nb',
            //'connexDurAvg' => 'connexDurAvg',
        ];
        
1b901ee9   Etienne Pallier   Refactorisation e...
49
50
51
52
        $this->index_generic(
            'statistiques de connexion',
            [
                'year'=>['nice_name'=>'Année'],
43c3d804   Etienne Pallier   Bugfix label (con...
53
54
55
                'user_id'=>[
                    //'nice_name'=>'Utilisateur', 
                    'contained_entity_name'=>'user', 'controller_name'=>'Users'],
1b901ee9   Etienne Pallier   Refactorisation e...
56
                'last_login_time' => [],
43c3d804   Etienne Pallier   Bugfix label (con...
57
58
                'last_connex_dur'=>[
                    'nice_name'=>'Last connexion duration (h)', 'f'=>'getHourMnSecForDuration'],
1b901ee9   Etienne Pallier   Refactorisation e...
59
                'last_logout_time'=>[],
43c3d804   Etienne Pallier   Bugfix label (con...
60
61
                'connex_dur_tot'=>[
                    'nice_name'=>"Temps connexion cumulé (h)", 'f'=>'getHourMnSecForDuration'],
1b901ee9   Etienne Pallier   Refactorisation e...
62
                'connex_nb'=>['nice_name'=>"Nb connexions"],
43c3d804   Etienne Pallier   Bugfix label (con...
63
                'connexDurAvg'=>[
3c4f9138   Etienne Pallier   BIG NEW FEATURE: ...
64
                    'nice_name'=>"Durée connexion moyenne (sur 1 an)", 'f'=>'getHourMnSecForDuration']
1b901ee9   Etienne Pallier   Refactorisation e...
65
66
67
            ],
            ['Users'],
            false, false,
06938694   Etienne Pallier   Vue liste projets...
68
69
70
            ['last_login_time' => 'desc'],
            [],
            $sortWhitelist
1b901ee9   Etienne Pallier   Refactorisation e...
71
72
73
        );
        
        /*
409758d9   Etienne Pallier   Ajout d'une nouve...
74
75
76
        $this->paginate = [
            'contain' => ['Users']
        ];
0065a652   Etienne Pallier   Vue Stats de conn...
77
        $stats = $this->paginate($this->Stats)->sortBy('last_login_time');
409758d9   Etienne Pallier   Ajout d'une nouve...
78
79

        $this->set(compact('stats'));
1b901ee9   Etienne Pallier   Refactorisation e...
80
        */
409758d9   Etienne Pallier   Ajout d'une nouve...
81
82
83
84
85
86
87
88
89
    }

    /**
     * View method
     *
     * @param string|null $id Stat id.
     * @return \Cake\Http\Response|null
     * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
     */
4480648b   Etienne Pallier   Bugfix vues pour ...
90
91
92
    //public function view($id = null)
    public function view($year=null,$user_id=null) {
        $id = [$year,$user_id];
409758d9   Etienne Pallier   Ajout d'une nouve...
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
        $stat = $this->Stats->get($id, [
            'contain' => ['Users']
        ]);

        $this->set('stat', $stat);
    }

    /**
     * Add method
     *
     * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise.
     */
    public function add()
    {
        $stat = $this->Stats->newEntity();
        if ($this->request->is('post')) {
            $stat = $this->Stats->patchEntity($stat, $this->request->getData());
            if ($this->Stats->save($stat)) {
                $this->Flash->success(__('The stat has been saved.'));

                return $this->redirect(['action' => 'index']);
            }
            $this->Flash->error(__('The stat could not be saved. Please, try again.'));
        }
        $users = $this->Stats->Users->find('list', ['limit' => 200]);
        $this->set(compact('stat', 'users'));
    }

    /**
     * Edit method
     *
     * @param string|null $id Stat id.
     * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise.
     * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
     */
4480648b   Etienne Pallier   Bugfix vues pour ...
128
129
130
    //public function edit($id = null)
    public function edit($year=null,$user_id=null) {
        $id = [$year,$user_id];
409758d9   Etienne Pallier   Ajout d'une nouve...
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
        $stat = $this->Stats->get($id, [
            'contain' => []
        ]);
        if ($this->request->is(['patch', 'post', 'put'])) {
            $stat = $this->Stats->patchEntity($stat, $this->request->getData());
            if ($this->Stats->save($stat)) {
                $this->Flash->success(__('The stat has been saved.'));

                return $this->redirect(['action' => 'index']);
            }
            $this->Flash->error(__('The stat could not be saved. Please, try again.'));
        }
        $users = $this->Stats->Users->find('list', ['limit' => 200]);
        $this->set(compact('stat', 'users'));
    }

    /**
     * Delete method
     *
     * @param string|null $id Stat id.
     * @return \Cake\Http\Response|null Redirects to index.
     * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found.
     */
a5d404c2   Etienne Pallier   Grosse refactoris...
154
155
    public function delete($year=null,$user_id=null)
    //public function delete($id = null)
409758d9   Etienne Pallier   Ajout d'une nouve...
156
    {
a5d404c2   Etienne Pallier   Grosse refactoris...
157
        $id = [$year,$user_id];
087b29e7   Etienne Pallier   GROSSE REFACTORIS...
158
159
        $this->delete_generic($id);
        /*
409758d9   Etienne Pallier   Ajout d'une nouve...
160
161
162
163
164
165
166
        $this->request->allowMethod(['post', 'delete']);
        $stat = $this->Stats->get($id);
        if ($this->Stats->delete($stat)) {
            $this->Flash->success(__('The stat has been deleted.'));
        } else {
            $this->Flash->error(__('The stat could not be deleted. Please, try again.'));
        }
409758d9   Etienne Pallier   Ajout d'une nouve...
167
        return $this->redirect(['action' => 'index']);
087b29e7   Etienne Pallier   GROSSE REFACTORIS...
168
        */
409758d9   Etienne Pallier   Ajout d'une nouve...
169
170
    }
}