Skip to content

Commit 8d1829e

Browse files
Adicionar e Listar Membros do Time
1 parent a46eeab commit 8d1829e

File tree

8 files changed

+237
-6
lines changed

8 files changed

+237
-6
lines changed

application/config/routes.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@
6565
$route['time/editar/(:num)'] = 'team/edit/$1';
6666
$route['time/atualizar/(:num)'] = 'team/update/$1';
6767

68+
$route['time/(:num)'] = 'teamMember/view/$1';
69+
$route['time/membro/adicionar/(:num)/(:num)'] = 'teamMember/addmember/$1/$2';
70+
$route['time/membro/adicionar'] = 'teamMember/addmember';
71+
$route['time/membro/remover'] = 'teamMember/removemember/$1';
72+
6873
$route['tarefas'] = 'task';
6974
$route['inserir'] = 'task/insert';
7075
$route['editar/(:num)'] = 'task/edit/$1';

application/controllers/Team.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public function update($id){
9999
$this->TeamModel->updateById($team, $id);
100100

101101
$this->session->set_flashdata('success', 'Dados do Time Atualizados');
102-
redirect('time');
102+
redirect('time/'.$id.'#settings');
103103
}
104104

105105
public function delete($id){
@@ -109,18 +109,25 @@ public function delete($id){
109109

110110
$this->TeamModel->deleteById($id);
111111

112+
$this->load->model('TeamMemberModel');
113+
114+
$this->TeamMemberModel->removeAllMembersOfTeam($id);
115+
112116
$this->session->set_flashdata('success', 'Time Excluído');
113117

114118
redirect('time');
115119
}
116120

117-
public function iManageThisTeam($id, $user_id){
118-
$this->load->model('TeamModel');
121+
public static function iManageThisTeam($id, $user_id){
122+
123+
$ci = & get_instance();
124+
125+
$ci->load->model('TeamModel');
119126

120-
$my_team = $this->TeamModel->iManageThisTeam($id, $user_id);
127+
$my_team = $ci->TeamModel->iManageThisTeam($id, $user_id);
121128

122129
if(!$my_team){
123-
$this->session->set_flashdata('error', 'Escolha um time válido');
130+
$ci->session->set_flashdata('error', 'Escolha um time válido');
124131
redirect('/');
125132
}
126133

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
defined('BASEPATH') or exit('Sem Permissão');
3+
4+
require_once(APPPATH.'controllers/Team.php');
5+
6+
class TeamMember extends Team{
7+
public function view($team_id){
8+
$user = authorize(1);
9+
10+
$this->load->model('TeamMemberModel');
11+
$team = parent::iManageThisTeam($team_id, $user->id_user);
12+
13+
$availableMembers = $this->TeamMemberModel->searchAvailableMembersForThisTeam($team_id, $user->id_user);
14+
15+
$members = $this->TeamMemberModel->searchAllMembersOfTeam($team_id);
16+
17+
$page = [
18+
'page_title' => 'Gerenciar Time',
19+
'page_content' => 'team/view',
20+
'user' => $user,
21+
'team' => $team,
22+
'availableMembers' => $availableMembers,
23+
'members' => $members,
24+
];
25+
26+
$this->load->view('public/base', $page);
27+
}
28+
29+
public function addMember(){
30+
$team_id = $this->input->post('team_id', true);
31+
$member_id = $this->input->post('member_id', true);
32+
33+
$user = authorize(1);
34+
35+
$this->load->model('TeamMemberModel');
36+
37+
$team = parent::iManageThisTeam($team_id, $user->id_user);
38+
39+
$teamMember = ['member_id'=>$member_id, 'team_id'=>$team_id, 'created_in'=>datetime_current()];
40+
$this->TeamMemberModel->insertMemberInTeam($teamMember);
41+
42+
$this->session->set_flashdata('success', 'Novo Usuário inserido no grupo');
43+
redirect('time/'.$team_id.'#members');
44+
}
45+
46+
public function removeMember($team_id, $member_id){
47+
48+
}
49+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
class TeamMemberModel extends CI_Model{
3+
protected $table = 'tb_teammember';
4+
5+
public function insertMemberInTeam($teamMember){
6+
$this->db->insert($this->table, $teamMember);
7+
return $this->db->insert_id();
8+
}
9+
10+
public function removeMemberOfTeam($team_id, $member_id){
11+
$this->db->where('team_id', $team_id);
12+
$this->db->where('member_id', $member_id);
13+
14+
$this->db->delete($this->table);
15+
16+
return true;
17+
}
18+
19+
public function removeAllMembersOfTeam($team_id){
20+
$this->db->where('team_id', $team_id);
21+
$this->db->from($this->table);
22+
23+
return true;
24+
}
25+
26+
public function searchAllMembersOfTeam($team_id){
27+
$this->db->select('name, photo, id_user, tb_teammember.created_in');
28+
$this->db->where('team_id', $team_id);
29+
$this->db->join('tb_user', 'id_user = member_id');
30+
$this->db->from($this->table);
31+
32+
return $this->db->get()->result();
33+
}
34+
35+
public function searchAllTeamsOfMember($member_id){
36+
$this->db->where('member_id', $member_id);
37+
$this->db->from($this->table);
38+
39+
return $this->db->get()->result();
40+
}
41+
42+
public function searchAvailableMembersForThisTeam($team_id, $id_user){
43+
$this->db->select('name, photo, id_user');
44+
$this->db->where('id_user!=', $id_user);
45+
$this->db->where('member_id is null');
46+
$this->db->join('tb_user', 'id_user = member_id', 'right');
47+
$this->db->from($this->table);
48+
49+
50+
return $this->db->get()->result();
51+
}
52+
}

application/views/team/list.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@
1818
<script src="<?php echo base_url('assets/datatables/js/datatables.bootstrap.min.js'); ?>"></script>
1919

2020
<div class="row">
21-
<div class="col-lg-12" style="padding: 20px;">
21+
<div class="col-lg-12">
2222
<div class="table-responsive">
2323
<table class="table table-hover table-striped" id="table_teams">
2424
<thead>
2525
<tr>
2626
<th>Nome</th>
27+
<th>Logo</th>
2728
<th>Descrição</th>
29+
<th>Criado em</th>
2830
<th>Opções</th>
2931
</tr>
3032
</thead>
@@ -33,8 +35,11 @@
3335
foreach($teams as $each_team){
3436
echo '<tr>';
3537
echo '<td>',$each_team->name,'</td>';
38+
echo '<td><img src="',base_url('assets/img/teams/'.$each_team->logo),'" class="img-circle" width="25px"></td>';
3639
echo '<td>',$each_team->description,'</td>';
40+
echo '<td>',$each_team->created_in,'</td>';
3741
echo '<td>';
42+
echo '<a href="',base_url('time/'.$each_team->id_team),'" data-placement="top" title="Gerenciar Membros" class="btn btn-info btn-sm"><span class="fa fa-group"></span></a> ';
3843
echo '<a href="',base_url('time/editar/'.$each_team->id_team),'" data-placement="top" title="Editar" class="btn btn-warning btn-sm"><span class="fa fa-edit"></span></a> ';
3944
echo '<button data-target="#deleteTeam" value="',$each_team->id_team,'" data-toggle="modal" data-placement="top" title="Excluir" class="btn btn-danger btn-sm"><span class="fa fa-trash"></span></button>';
4045
echo '</td>';

application/views/team/view.php

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
2+
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
3+
4+
<link rel="stylesheet" href="<?php echo base_url('assets/datatables/css/datatables.bootstrap.min.css'); ?>">
5+
<script src="<?php echo base_url('assets/datatables/js/jquery.datatables.min.js'); ?>"></script>
6+
<script src="<?php echo base_url('assets/datatables/js/datatables.bootstrap.min.js'); ?>"></script>
7+
8+
<script>
9+
$(document).ready(function(){
10+
$('select').select2();
11+
12+
$('[data-placement="top"]').tooltip();
13+
14+
var hash = window.location.hash;
15+
hash && $('ul.nav a[href="' + hash + '"]').tab('show');
16+
17+
$('#table_members').DataTable({
18+
responsive: true
19+
});
20+
21+
function formatState (state) {
22+
if (!state.id || state.value == "") { return state.text; }
23+
24+
var $state = $(
25+
'<span><img width="30px;" src="<?php echo base_url(); ?>assets/img/users/' + state.title + '" class="img-flag" /> ' + state.text + '</span>'
26+
);
27+
return $state;
28+
};
29+
30+
$(".js-example-templating").select2({
31+
templateResult: formatState
32+
});
33+
});
34+
</script>
35+
36+
<!-- <div class="alert alert-info"> -->
37+
<strong>Nome do Time: </strong> <?php echo $team->name; ?><br>
38+
<strong>Descrição: </strong> <?php echo $team->description; ?><br>
39+
<strong>Criado em: </strong> <?php echo $team->created_in; ?>
40+
<!-- </div> -->
41+
42+
<br><br>
43+
<ul class="nav nav-tabs">
44+
<li class="active"><a href="#tasks" data-toggle="tab">Tarefas</a>
45+
</li>
46+
<li><a href="#members" data-toggle="tab">Membros</a>
47+
</li>
48+
<li><a href="#settings" data-toggle="tab">Configurações</a>
49+
</li>
50+
</ul>
51+
52+
<!-- Tab panes -->
53+
<div class="tab-content">
54+
<div class="tab-pane fade in active" id="tasks">
55+
<br>
56+
<h4>Tarefas</h4>
57+
</div>
58+
<div class="tab-pane fade" id="members">
59+
<br>
60+
<h4>Membros</h4>
61+
62+
<a class="btn btn-primary" role="button" data-toggle="collapse" href="#collapseAddMember" aria-expanded="false" aria-controls="collapseExample">
63+
<span class="fa fa-plus"></span> Adicionar Membro
64+
</a><br>
65+
<div class="collapse" id="collapseAddMember">
66+
<div class="well">
67+
<form action="<?php echo base_url('time/membro/adicionar'); ?>" method="post">
68+
<input type="hidden" name="team_id" value="<?php echo $team->id_team; ?>">
69+
<select name="member_id" style="width: 100%" class="js-example-templating js-states form-control input-lg">
70+
<option disabled selected value=""> -- Selecione -- </option>
71+
<?php
72+
foreach($availableMembers as $member){
73+
echo '<option value="',$member->id_user,'" title="',$member->photo,'">',$member->name,'</option>';
74+
}
75+
?>
76+
</select><br>
77+
<button class="btn btn-primary">Confirmar</button>
78+
79+
</form>
80+
</div>
81+
</div>
82+
83+
<br><br>
84+
<div class="table-responsive">
85+
<table class="table table-hover table-striped" id="table_members">
86+
<thead>
87+
<tr>
88+
<th>Nome</th>
89+
<th>Adicionado em</th>
90+
<th>Opções</th>
91+
</tr>
92+
</thead>
93+
<tbody>
94+
<?php
95+
foreach($members as $member){
96+
echo '<tr>';
97+
echo '<td><img width="30px" src="',base_url('assets/img/users/'.$member->photo),'" class="img-circle">&nbsp;&nbsp;', $member->name,'</td>';
98+
echo '<td>',$member->created_in,'</td>';
99+
echo '<td><a href="" data-placement="top" class="btn btn-sm btn-danger" title="Remover do Time"><span class="fa fa-trash"></span></a></td>';
100+
echo '</tr>';
101+
}
102+
?>
103+
</tbody>
104+
</table>
105+
</div>
106+
</div>
107+
<div class="tab-pane fade" id="settings">
108+
<br><br>
109+
<?php $this->load->view('team/edit'); ?>
110+
</div>
111+
</div>

assets/img/users/3.jpg

15.1 KB
Loading

assets/materialloginform/style.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ body {
9494
max-width: 100%;
9595
width: 100%;
9696
margin: 0 auto 100px;
97+
9798
}
9899
.container.active .card:first-child {
99100
background: #f2f2f2;
@@ -168,6 +169,7 @@ body {
168169
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
169170
-webkit-transition: .3s ease;
170171
transition: .3s ease;
172+
padding: 10px;
171173
/* Title */
172174
/* Inputs */
173175
/* Button */

0 commit comments

Comments
 (0)