[5636] | 1 | <?php
|
---|
| 2 |
|
---|
| 3 | /**
|
---|
| 4 | * Recupera os eventos de um usuário para uso no mapa de disponibilidade
|
---|
| 5 | *
|
---|
| 6 | * @license http://www.gnu.org/copyleft/gpl.html GPL
|
---|
| 7 | * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)
|
---|
| 8 | * @sponsor Caixa Econômica Federal
|
---|
| 9 | * @author Adriano Coutinho da Silva
|
---|
| 10 | * @return Array de objetos com os eventos mergedos indexados por id de usuário
|
---|
| 11 | * @access public
|
---|
| 12 | */
|
---|
| 13 |
|
---|
| 14 | //TODO - Teste Remover comentario
|
---|
| 15 | $data = $_GET;
|
---|
| 16 |
|
---|
| 17 | require_once "api/controller.php";
|
---|
| 18 |
|
---|
| 19 | if(isset($data)){
|
---|
| 20 |
|
---|
| 21 | $users = $data['attendees'];
|
---|
| 22 |
|
---|
| 23 | $disponibility = array();
|
---|
| 24 |
|
---|
| 25 | foreach($users as $key => $value){
|
---|
| 26 | /*
|
---|
| 27 |
|
---|
| 28 | SELECT * FROM
|
---|
| 29 | calendar_object as co inner join
|
---|
| 30 | calendar_to_calendar_object as ctco on
|
---|
| 31 | ctco.calendar_object_id = co.id
|
---|
| 32 | WHERE (range_start >= 1331434800000 AND range_end <= 1332039600000) AND
|
---|
| 33 | ctco.calendar_id IN(5)
|
---|
| 34 |
|
---|
| 35 | SELECT * FROM
|
---|
| 36 | calendar_object WHERE (range_start >= 1331434800000 AND range_end <= 1332039600000 AND id IN
|
---|
| 37 | ( SELECT calendar_object_id from calendar_to_calendar_object where calendar_id IN (5) ))
|
---|
| 38 | */
|
---|
| 39 |
|
---|
| 40 |
|
---|
| 41 |
|
---|
| 42 | $sql = 'SELECT calendar_object.range_start as "startTime" , calendar_object.range_end as "endTime", calendar_object.allday as "allDay" FROM calendar_object WHERE (range_start >= '.$data['startTime']
|
---|
| 43 | .' AND range_end <= '.$data['endTime'].' AND transp = 0 AND id IN ( SELECT calendar_object_id from calendar_to_calendar_object where '
|
---|
| 44 | .'calendar_id IN (SELECT calendar_id FROM calendar_signature WHERE (user_uidnumber = '. $value['id'] .' AND is_owner = 1 )) ))';
|
---|
| 45 |
|
---|
| 46 | $result = Controller::service('PostgreSQL')->execResultSql($sql);
|
---|
| 47 |
|
---|
| 48 | if(!count($result))
|
---|
| 49 | continue;
|
---|
| 50 |
|
---|
| 51 | $disponibilyUser = array();
|
---|
| 52 |
|
---|
| 53 | foreach($result as $ke => $va){
|
---|
| 54 |
|
---|
| 55 | array_push($disponibilyUser, array('startTime' => $va['startTime'], 'endTime' => $va['endTime'], 'allDay' => $va['allDay']));
|
---|
| 56 |
|
---|
| 57 | /*
|
---|
| 58 | *
|
---|
| 59 | * A implementação abaixo une eventos que convergem os horários
|
---|
| 60 | *
|
---|
| 61 |
|
---|
| 62 | if(count($disponibilyUser) == 0){
|
---|
| 63 | array_push($disponibilyUser, array('startTime' => $va['startTime'], 'endTime' => $va['endTime']));
|
---|
| 64 | continue;
|
---|
| 65 | }
|
---|
| 66 |
|
---|
| 67 | $action = 'new';
|
---|
| 68 | $position = '0';
|
---|
| 69 |
|
---|
| 70 | foreach($disponibilyUser as $k => $v){
|
---|
| 71 |
|
---|
| 72 | if($v['startTime'] >= $va['startTime']){
|
---|
| 73 |
|
---|
| 74 | if($v['startTime'] > $va['endTime'])
|
---|
| 75 | continue;
|
---|
| 76 |
|
---|
| 77 | else if(($v['endTime'] <= $va['endTime'])){
|
---|
| 78 | $action = 'delete';
|
---|
| 79 |
|
---|
| 80 | }else if(($v['endTime'] > $va['endTime'])){
|
---|
| 81 |
|
---|
| 82 | $action = 'afterUpdate';
|
---|
| 83 |
|
---|
| 84 |
|
---|
| 85 | }
|
---|
| 86 | }else if($v['startTime'] <= $va['startTime']){
|
---|
| 87 |
|
---|
| 88 | if($v['endTime'] < $va['startTime'])
|
---|
| 89 | continue;
|
---|
| 90 |
|
---|
| 91 | else if($v['endTime'] >= $va['endTime']){
|
---|
| 92 |
|
---|
| 93 | $action = 'update';
|
---|
| 94 |
|
---|
| 95 |
|
---|
| 96 | }else
|
---|
| 97 | $action = 'afterUpdate';
|
---|
| 98 |
|
---|
| 99 | }
|
---|
| 100 |
|
---|
| 101 | $position = $k;
|
---|
| 102 | }
|
---|
| 103 |
|
---|
| 104 | switch($action){
|
---|
| 105 | case 'new':
|
---|
| 106 | array_push($disponibilyUser, array('startTime' => $va['startTime'], 'endTime' => $va['endTime']));
|
---|
| 107 | break;
|
---|
| 108 |
|
---|
| 109 | case 'update':
|
---|
| 110 |
|
---|
| 111 | $disponibilyUser[$position]['startTime'] = $v['startTime'];
|
---|
| 112 | $disponibilyUser[$position]['endTime'] = $v['endTime'];
|
---|
| 113 |
|
---|
| 114 | break;
|
---|
| 115 |
|
---|
| 116 | case 'beforeUpdate':
|
---|
| 117 |
|
---|
| 118 | $disponibilyUser[$position]['startTime'] = $v['startTime'];
|
---|
| 119 |
|
---|
| 120 | break;
|
---|
| 121 |
|
---|
| 122 | case 'afterUpdate':
|
---|
| 123 |
|
---|
| 124 | $disponibilyUser[$position]['endTime'] = $v['endTime'];
|
---|
| 125 |
|
---|
| 126 | break;
|
---|
| 127 |
|
---|
| 128 | case 'delete':
|
---|
| 129 | break;
|
---|
| 130 | }
|
---|
| 131 | */
|
---|
| 132 | }
|
---|
| 133 |
|
---|
| 134 | $disponibility[$value['id']] = $disponibilyUser;
|
---|
| 135 |
|
---|
| 136 | unset($disponibilyUser);
|
---|
| 137 |
|
---|
| 138 | }
|
---|
| 139 | echo json_encode($disponibility);
|
---|
| 140 |
|
---|
| 141 | }else{
|
---|
| 142 |
|
---|
| 143 | return json_encode(array('false'));
|
---|
| 144 | }
|
---|
| 145 |
|
---|
| 146 | ?> |
---|