public function add()
 {
     //Utils::pre($_POST);exit();
     $idReserva = null;
     $_POST[$this->Reserva->name]['id'] = $_SESSION['Form']['reservas_id'];
     /**
      * recupero o id do meu cliente
      */
     $cliente = $this->Cliente->find('first', array('md5(id)' => $_POST[$this->Reserva->name]['clientes_id']));
     $_POST[$this->Reserva->name]['clientes_id'] = $cliente[0]['Cliente']['id'];
     $_POST[$this->Reserva->name]['title'] = $cliente[0]['Cliente']['nome'];
     $_POST[$this->Reserva->name]['status'] = 1;
     $_POST[$this->Reserva->name]['token'] = Authentication::uuid();
     /**
      * trabalho com as datas para ficar no padrão do fullcalendar 
      */
     $dataCallendar = Utils::convertDataSemHora($_POST[$this->Reserva->name]['data']) . ' ' . $_POST[$this->Reserva->name]['hora'];
     $_POST[$this->Reserva->name]['start'] = $dataCallendar;
     $_POST[$this->Reserva->name]['end'] = Utils::adicionaHora(1, $dataCallendar);
     /**
      * retiro os ambientes do node central
      */
     $ambientes = $_POST[$this->Reserva->name]['ambientes_id'];
     unset($_POST[$this->Reserva->name]['ambientes_id']);
     /**
      * retiro as mesas do node central
      */
     $mesas = $_POST[$this->Reserva->name]['mesas_id'];
     unset($_POST[$this->Reserva->name]['mesas_id']);
     $_POST[$this->Reserva->name]['empresas_id'] = $this->empresas_id;
     $_POST[$this->Reserva->name]['pessoas_id'] = $this->pessoas_id;
     //unset($_POST['Reserva']);
     $this->Reserva->data = $_POST[$this->Reserva->name];
     unset($_POST[$this->Reserva->name]['data']);
     unset($_POST[$this->Reserva->name]['hora']);
     try {
         /**
          * validacoes do formulario
          */
         if ($this->Reserva->validates()) {
             //               Utils::pre($this->Reserva->data);
             //               exit();
             $this->Reserva->genericUpdate($_POST[$this->Reserva->name]);
             $idReserva = $_SESSION['Form']['reservas_id'];
             unset($_SESSION['Form']['reservas_id']);
             /**
              * INSERIR UM CONVIDADO NESSE CASO É O PROPRIO CLIENTE QUE ESTA SENDO FEITO A RESERVA
              */
             $this->Reserva->inserirConvidado($_POST[$this->Reserva->name]['clientes_id'], $idReserva);
             /**
              * gravar mesas
              */
             $this->Reserva->mesasReservas($mesas, $idReserva, $_POST[$this->Reserva->name]['start']);
             /**
              * gravar ambientes
              */
             $this->Reserva->AmbientesReservas($ambientes, $idReserva);
             /**
              * recupero o salão e ambiente da reserva
              */
             $dadoEmailReserva = $this->Reserva->recuperaDadosReservaEmail($idReserva);
             /**
              * VERIFICO SE O CLIENTE TEM EMAIL CADASTRADO
              */
             if (!empty($dadoEmailReserva[0]['email']) && Session::read('Empresa.envio_sistema') == 1) {
                 /**
                  * envio o email para o cliente cadastrado para inserir na lista os dados das pessoas relacionadas
                  */
                 $email = new Email();
                 $email->useTable = 'emails_sistema';
                 $registro = $email->find('first', array('tag' => 'reserva_nova'));
                 /**
                  * recupero o endereço da empresa
                  */
                 $endereco = $this->Endereco->findEnderecosEmpresa($this->empresas_id);
                 $enderecoEmpresa = $endereco[0]['logradouro'] . ', ' . $endereco[0]['numero'] . ' | ' . $endereco[0]['cidade'] . ' - ' . $endereco[0]['bairro'] . ' - ' . $endereco[0]['uf'];
                 /**
                  * recupero as mesas
                  */
                 $mesaModel = new Mesa();
                 $ambientesModel = new Ambiente();
                 $mesas = $mesaModel->selectIn($mesas);
                 $ambientes = $ambientesModel->ambientesReservas($idReserva);
                 /**
                  * #faço a troca de siglas para personalizar o email
                  */
                 $dataMail = explode(' ', Utils::convertData($dataCallendar));
                 $email->useTable = 'empresas_email_parametros';
                 $email_parametros = $email->find('first', array('emails_sistema_id' => 5, 'empresas_id' => $this->empresas_id));
                 $corpoEmailConfirmacao = $email->ajusteEmailConfirmacao($registro[0]['Email']['corpo_mail'], $email_parametros[0][$email->name]);
                 $array = array('__CLIENTE__' => $cliente[0]['Cliente']['nome'], '__DATE__' => date('d/m/Y h:i:s'), '__NOME_FANTASIA__' => Session::read('Empresa.nome_fantasia'), '__LOGO__' => Session::read('Empresa.logo'), '__CONVIDADOS__' => $_POST[$this->Reserva->name]['qtde_pessoas'], '__LUGARES__' => $_POST[$this->Reserva->name]['assentos'], '__ENDERECO_EMPRESA__' => $enderecoEmpresa, '__MESAS__' => join(' - ', array_values($mesas)), '__DATA_INICIO__' => $dataMail[0], '__HORAS_INICIO__' => $dataMail[1], '__SALAO__' => $dadoEmailReserva[0]['salao'], '__AMBIENTE__' => join(' - ', array_values($ambientes)), '__CAPACIDADE__' => $dadoEmailReserva[0]['capacidade'], '__URL_ATIVAR__' => Router::url(array('Reservas', 'confirmReservaEmail', $_POST[$this->Reserva->name]['token'])));
                 #envio o email de confirmação para o meu cliente cadastrado
                 $objeto = new MailPHPMailer();
                 $objeto->setAssunto('Reserva: ' . Session::read('Empresa.nome_fantasia'));
                 //$objeto->setRemetente();
                 /**
                  *   CORPO DO EMAIL
                  */
                 $corpoEmailConfirmacao = str_replace(array_keys($array), array_values($array), $corpoEmailConfirmacao);
                 $objeto->setBody($corpoEmailConfirmacao);
                 /**
                  *   DESTINO PARA QUEM VAI O EMAIL - CLIENTE
                  */
                 $objeto->setDestinatario($dadoEmailReserva[0]['email'], $dadoEmailReserva[0]['cliente']);
                 $emailEnvio = $objeto->sendMail();
                 if ($emailEnvio) {
                     $gravaEmail = array('reservas_id' => $idReserva, 'empresas_id' => $_POST[$this->Reserva->name]['empresas_id'], 'pessoas_id' => $this->pessoas_id, 'clientes_id' => $_POST[$this->Reserva->name]['clientes_id'], 'created' => date('Y-m-d H:i:s'), 'status' => 1);
                     $this->Reserva->gravaEnvioEmail($gravaEmail);
                 }
             }
             //                echo json_encode(array(
             //                    'funcao' => "sucessoForm( 'Cadastro efetuado com sucesso!', '#ReservaAddForm' ); "
             //                    . "window.location.reload();",
             //                   ));
             echo json_encode(array('funcao' => "sucessoForm( 'Cadastro efetuado com sucesso!', '#ReservaAddForm' ); " . "filtrarReservas( '' , '{$_POST[$this->Reserva->name]['start']}', '' ); " . "disponibilidadeDeMesas( '{$_POST[$this->Reserva->name]['start']}' );" . "\$('#loading').fadeOut(500);" . "\$('#ModalFormulario').modal('hide');"));
         } else {
             echo json_encode(array('erros' => $this->Reserva->validateErros, 'form' => 'ReservaAddForm'));
         }
     } catch (SystemException $ex) {
         echo $ex->getErrorJson('#ReservaAddForm');
     } catch (Exception $e) {
         echo $e->getMessage();
     }
 }