public function updateEnterpriseTransaction($ficha, $enterpriseRow, $addressEnterpriseRow, $presidentRow, $addressPresidentRow, $userRow) { $User = new Model_User(); $President = new Model_President(); $PresidentProgram = new Model_PresidentProgram(); //$Eligibility = new Model_Eligibility(); $AddressEnterprise = new Model_AddressEnterprise(); $AddressPresident = new Model_AddressPresident(); $modelEntCatAwardCompetition = new Model_EnterpriseCategoryAwardCompetition(); $modelLogCadastroEmpresa = new Model_LogCadastroEmpresa(); // dados Empresa $registerEnterpriseData = $ficha['enterprise']; // dados endereço da empresa $registerAddressEnterpriseData = $ficha['addressEnterprise']; $registerAddressPresidentData = $ficha['addressPresident']; $registerAddressEnterpriseData['enterprise_id'] = $enterpriseRow->getId(); $registerAddressPresidentData['president_id'] = $presidentRow->getId(); // dados do presidente da empresa $registerPresidentData = $ficha['president']; $registerPresidentData['enterprise_id'] = $enterpriseRow->getId(); $registerPresidentData['hasnt_email'] = isset($ficha['enterprise']['hasnt_email']) ? $ficha['enterprise']['hasnt_email'] : 0; // dados do programa do presidente da empresa $registerPresidentProgramData = isset($ficha['presidentProgram']) ? $ficha['presidentProgram'] : null; // dados do usuário $registerUserData = isset($ficha['user']) ? $ficha['user'] : array(); $registerUserData['first_name'] = $registerPresidentData['name']; $registerUserData['surname'] = $registerPresidentData['nick_name']; $registerUserData['email'] = $registerPresidentData['email']; $registerUserData['login'] = $registerPresidentData['cpf']; $registerLogCadastro = $ficha['log_empresa']; $presidentId = $presidentRow->getId(); // start transaction externo Zend_Registry::get('db')->beginTransaction(); try { $hasntEmail = $registerPresidentData['hasnt_email']; $enterpriseEmail = isset($ficha['enterprise']['email_default']) ? $ficha['enterprise']['email_default'] : ''; $this->validateEmail($enterpriseRow->getId(), $enterpriseEmail, $hasntEmail); $this->validateLandline($ficha['enterprise']['phone']); $programaId = Zend_Registry::get('configDb')->competitionId; // Validação Categoria do Premio $updateCategoryAward = $this->validCategoryAward($registerEnterpriseData); if (!$updateCategoryAward['status']) { throw new Vtx_UserException($updateCategoryAward['messageError'], 10); } // 1.1 Empresa $updateEnterprise = $this->updateEnterprise($enterpriseRow, $registerEnterpriseData); if (!$updateEnterprise['status']) { throw new Vtx_UserException($updateEnterprise['messageError'], 10); } // elegibilidade para questionario de diagnostico //$Eligibility->doDiagnosticoEligibility($updateEnterprise['row']); // 1.2 Endereço da Empresa $updateAddressEnterprise = $AddressEnterprise->updateAddressEnterprise($addressEnterpriseRow, $registerAddressEnterpriseData); if (!$updateAddressEnterprise['status']) { throw new Vtx_UserException($updateAddressEnterprise['messageError'], 10); } // validação dos campos NewsLetter da Candidata (President) $newsLetterValid = $President->isValidNewsletter($ficha['newsletter'], $registerPresidentData); if (!$newsLetterValid['status']) { throw new Vtx_UserException($newsLetterValid['messageError']); } // 2.1 Presidente da Empresa $registerPresidentData['agree'] = $presidentRow->getAgree(); $updatePresident = $President->updatePresident($presidentRow, $registerPresidentData); if (!$updatePresident['status']) { throw new Vtx_UserException($updatePresident['messageError']); } // 2.2 Endereço da Presidente (candidata) $updateAddressPresident = $AddressPresident->updateAddressPresident($addressPresidentRow, $registerAddressPresidentData); if (!$updateAddressPresident['status']) { throw new Vtx_UserException($updateAddressPresident['messageError']); } // 2.3 Programa do Presidente da Empresa if ($registerPresidentProgramData) { $PresidentProgram->deleteAllPresidentProgramByPresidentId($presidentId); $createPresidentProgram = $PresidentProgram->createPresidentProgramByPresidentId($registerPresidentProgramData, $presidentId); if (!$createPresidentProgram['status']) { throw new Vtx_UserException($createPresidentProgram['messageError']); } } $enterpriseId = $enterpriseRow->getId(); $hasCurrentECAC = $modelEntCatAwardCompetition->hasECAC($enterpriseId, $programaId); if (!$hasCurrentECAC) { $registerECAC = array(); $registerECAC['enterprise_id'] = $enterpriseId; $registerECAC['competition_id'] = $programaId; $registerECAC['category_award_id'] = $registerEnterpriseData['category_award_id']; $insertECAC = $modelEntCatAwardCompetition->createECAC($registerECAC); if (!$insertECAC['status']) { throw new Vtx_UserException($insertECAC['messageError']); } // Log Cadastro da Empresa - ACEITE $logCadastroEmpresa['user_id_log'] = $registerLogCadastro['user_id_log']; $logCadastroEmpresa['enterprise_id'] = $enterpriseId; $logCadastroEmpresa['programa_id'] = $programaId; $logCadastroEmpresa['acao'] = 'aceite'; $insertlogCadastroEmpresa = $modelLogCadastroEmpresa->createLogCadastroEmpresa($logCadastroEmpresa); if (!$insertlogCadastroEmpresa['status']) { throw new Vtx_UserException($insertlogCadastroEmpresa['messageError']); } } // 3.1 Usuário (nome + sobrenome) $updateUser = $User->updateUser($userRow, $registerUserData); if (!$updateUser['status']) { throw new Vtx_UserException($updateUser['messageError']); } // Envia email com login/senha pro responsavel pelo cadastro $pass = isset($registerUserData['keypass']) ? $registerUserData['keypass'] : null; $enterpriseEmail = $registerEnterpriseData['email_default']; $presidentEmail = $registerPresidentData['email']; if ($enterpriseEmail != '') { $this->sendMailEdit($enterpriseEmail, $registerUserData['first_name'], $registerUserData['login'], $pass, $enterpriseId); if ($enterpriseEmail != $presidentEmail) { $this->sendMailEdit($presidentEmail, $registerPresidentData['name'], $registerPresidentData['cpf'], $pass, $enterpriseId); } } // Log Cadastro da Empresa - EDICAO CADASTRO $logCadastroEmpresa['user_id_log'] = $registerLogCadastro['user_id_log']; $logCadastroEmpresa['enterprise_id'] = $enterpriseId; $logCadastroEmpresa['programa_id'] = $programaId; $logCadastroEmpresa['acao'] = 'edicao_cadastro'; $insertlogCadastroEmpresaCad = $modelLogCadastroEmpresa->createLogCadastroEmpresa($logCadastroEmpresa); if (!$insertlogCadastroEmpresaCad['status']) { throw new Vtx_UserException($insertlogCadastroEmpresaCad['messageError']); } // update // end transaction externo Zend_Registry::get('db')->commit(); return array('status' => true); } catch (Vtx_UserException $e) { Zend_Registry::get('db')->rollBack(); return array('status' => false, 'messageError' => $e->getMessage(), 'errorCode' => $e->getCode()); } catch (Exception $e) { Zend_Registry::get('db')->rollBack(); throw new Exception($e); } }
public function editAction() { $Acl = Zend_Registry::get('acl'); $auth = Zend_Auth::getInstance(); $User = new Model_User(); $President = new Model_President(); $PresidentProgram = new Model_PresidentProgram(); $modelLogCadastroEmpresa = new Model_LogCadastroEmpresa(); $UserLocality = new Model_UserLocality(); $AddressEnterprise = new Model_AddressEnterprise(); $AddressPresident = new Model_AddressPresident(); $this->_helper->viewRenderer->setRender('index'); $this->view->editStatus = false; $this->view->editByAdmin = false; if ($this->_getParam('id_key') and ($Acl->isAllowed($this->userLogged->getRole(), 'questionnaire:register', 'publisher') or $Acl->isAllowed($this->userLogged->getRole(), 'questionnaire:register', 'acompanhacadastro'))) { $enterpriseIdKey = $this->_getParam('id_key'); $enterpriseRow = $this->Enterprise->getEnterpriseByIdKey($enterpriseIdKey); $userLocalityGetEnterprise = $UserLocality->getUserLocalityByEnterpriseId($enterpriseRow->getId()); if (!$userLocalityGetEnterprise) { throw new Exception('Nenhum usuário relacionado nesta empresa.'); } $this->view->editStatus = true; $this->view->enterpriseIdKey = $enterpriseIdKey; $userId = $userLocalityGetEnterprise->getUserId(); $this->view->editByAdmin = true; } else { $userId = $this->userLogged->getUserId(); } $userRow = $User->getUserById($userId); $userLocalityRow = $UserLocality->getUserLocalityByUserId($userRow->getId()); $enterpriseRow = $this->Enterprise->getEnterpriseById($userLocalityRow->getEnterpriseId()); $presidentRow = $President->getPresidentByEnterpriseId($enterpriseRow->getId()); $addressPresidentRow = $AddressPresident->getAddressPresidentByPresidentId($presidentRow->getId()); $presidentProgramRow = $PresidentProgram->getAllPresidentProgramByPresidentId($presidentRow->getId()); $addressEnterpriseRow = $AddressEnterprise->getAddressEnterpriseByEnterpriseId($enterpriseRow->getId()); $logCadastradoPor = $modelLogCadastroEmpresa->getLogCadastroEmpresaByEnterpriseId($enterpriseRow->getId()); $cadastroNome = 'Site'; $cadastroCriadoEm = '00:00:00'; if ($logCadastradoPor) { if ($logCadastradoPor->getUserIdLog() != $userLocalityRow->getUserId()) { $cadastroNome = $User->getUserById($logCadastradoPor->getUserIdLog())->getFirstName(); } $cadastroCriadoEm = $logCadastradoPor->getCriadoEm(); } $this->view->logCadastroEmpresa = array('NomeCadastro' => $cadastroNome, 'CriadoEm' => $cadastroCriadoEm); if (!$enterpriseRow || !$presidentRow) { throw new Exception('Usuário inválido, não encontrado.'); } $this->view->userIdview = $userId; $this->view->enterpriseIdview = $enterpriseRow->getId(); // $modelQuest = new Model_Questionnaire(); // // $arrTerminoEtapas = $modelQuest->terminoEtapas($enterpriseRow, $userId); // // var_dump($arrTerminoEtapas); $this->view->getAllStates = $this->State->getAll(); if ($addressEnterpriseRow) { $this->view->getAllCities = $this->City->getAllCityByStateId($addressEnterpriseRow->getStateId()); //$this->view->getAllNeighborhoods = $this->Neighborhood->getAllNeighborhoodByCityId($addressEnterpriseRow->getCityId()); $this->view->getAllNeighborhoods = $addressEnterpriseRow->getCityId() ? $this->Neighborhood->getAllNeighborhoodByCityId($addressEnterpriseRow->getCityId()) : null; } if ($addressPresidentRow) { $this->view->getAllCitiesPresident = $this->City->getAllCityByStateId($addressPresidentRow->getStateId()); //$this->view->getAllNeighborhoodsPresident = $this->Neighborhood->getAllNeighborhoodByCityId($addressPresidentRow->getCityId()); $this->view->getAllNeighborhoodsPresident = $addressPresidentRow->getCityId() ? $this->Neighborhood->getAllNeighborhoodByCityId($addressPresidentRow->getCityId()) : null; } $this->view->getAllPositions = $this->Position->getAll(); $this->view->getAllEducations = $this->Education->getAll(); $this->view->getAllMetier = $this->Metier->getAll(); $this->view->getAllPresidentProgramType = $this->modelPresidentProgramType->getAll(); $this->view->hasECAC = $this->modelEnterpriseCategoryAwardCompetition->hasECAC($enterpriseRow->getId(), Zend_Registry::get('configDb')->competitionId); $hasntEmail = $enterpriseRow->getHasntEmail(); $hasntEmail = isset($hasntEmail) ? $hasntEmail : 1; $this->view->registerEnterpriseData = array('cnpj' => $enterpriseRow->getCnpj(), 'category_award_id' => $enterpriseRow->getCategoryAwardId(), 'category_sector_id' => $enterpriseRow->getCategorySectorId(), 'state_registration' => $enterpriseRow->getStateRegistration(), 'dap' => $enterpriseRow->getDap(), 'register_ministry_fisher' => $enterpriseRow->getRegisterMinistryFisher(), 'company_history' => $enterpriseRow->getCompanyHistory(), 'site' => $enterpriseRow->getSite(), 'status' => $enterpriseRow->getStatus(), 'social_name' => $enterpriseRow->getSocialName(), 'fantasy_name' => $enterpriseRow->getFantasyName(), 'creation_date' => $enterpriseRow->getCreationDate(), 'employees_quantity' => $enterpriseRow->getEmployeesQuantity(), 'phone' => $enterpriseRow->getPhone(), 'email_default' => $enterpriseRow->getEmailDefault(), 'annual_revenue' => $enterpriseRow->getAnnualRevenue(), 'cnae' => $enterpriseRow->getCnae(), 'nirf' => $enterpriseRow->getNirf(), 'farm_size' => $enterpriseRow->getFarmSize(), 'hasnt_email' => $hasntEmail); if ($addressEnterpriseRow) { $this->view->registerAddressEnterpriseData = array('cep' => $addressEnterpriseRow->getCep(), 'state_id' => $addressEnterpriseRow->getStateId(), 'city_id' => $addressEnterpriseRow->getCityId(), 'name_full_log' => $addressEnterpriseRow->getStreetNameFull(), 'street_number' => $addressEnterpriseRow->getStreetNumber(), 'street_completion' => $addressEnterpriseRow->getStreetCompletion(), 'neighborhood_id' => $addressEnterpriseRow->getNeighborhoodId()); } $this->view->registerPresidentData = array('enterprise_id' => $presidentRow->getEnterpriseId(), 'education_id' => $presidentRow->getEducationId(), 'position_id' => $presidentRow->getPositionId(), 'find_us_id' => $presidentRow->getFindUsId(), 'nick_name' => $presidentRow->getNickName(), 'cellphone' => $presidentRow->getCellphone(), 'newsletter_email' => $presidentRow->getNewsletterEmail(), 'newsletter_mail' => $presidentRow->getNewsletterMail(), 'newsletter_sms' => $presidentRow->getNewsletterSms(), 'agree' => $presidentRow->getAgree(), 'name' => $presidentRow->getName(), 'cpf' => $presidentRow->getCpf(), 'email' => $presidentRow->getEmail(), 'phone' => $presidentRow->getPhone(), 'born_date' => $presidentRow->getBornDate(), 'gender' => $presidentRow->getGender()); if ($addressPresidentRow) { $this->view->registerAddressPresidentData = array('cep' => $addressPresidentRow->getCep(), 'state_id' => $addressPresidentRow->getStateId(), 'city_id' => $addressPresidentRow->getCityId(), 'name_full_log' => $addressPresidentRow->getStreetNameFull(), 'street_number' => $addressPresidentRow->getStreetNumber(), 'street_completion' => $addressPresidentRow->getStreetCompletion(), 'neighborhood_id' => $addressPresidentRow->getNeighborhoodId()); } $this->view->registerPresidentProgramData = $presidentProgramRow; $this->view->registerUserData = array('first_name' => $userRow->getFirstName(), 'surname' => $userRow->getSurname(), 'password_hint' => $userRow->getPasswordHint()); $this->view->hasEligibility = $hasEligibility = $this->Enterprise->hasEligibilityRules($enterpriseRow->getIdKey()); if ($this->_getParam('forward', null) == true) { return; } if (!$this->getRequest()->isPost()) { return; } $ficha = $this->_getAllParams(); $ficha['log_empresa']['user_id_log'] = $this->userLogged->getUserId(); unset($this->view->editStatus); unset($this->view->getAllStates); unset($this->view->getAllCities); unset($this->view->getAllNeighborhoods); unset($this->view->getAllCitiesPresident); unset($this->view->getAllNeighborhoodsPresident); unset($this->view->getAllPositions); unset($this->view->getAllEducations); unset($this->view->getAllMetier); unset($this->view->getAllPresidentProgramType); unset($this->view->hasECAC); unset($this->view->registerEnterpriseData); unset($this->view->registerAddressEnterpriseData); unset($this->view->registerPresidentData); unset($this->view->registerAddressPresidentData); unset($this->view->registerPresidentProgramData); unset($this->view->registerUserData); unset($this->view->editByAdmin); // $this->view->registerData = $ficha; $updateEnterpriseTransaction = $this->Enterprise->updateEnterpriseTransaction($ficha, $enterpriseRow, $addressEnterpriseRow, $presidentRow, $addressPresidentRow, $userRow); if (!$updateEnterpriseTransaction['status']) { $this->view->messageError = $updateEnterpriseTransaction['messageError']; $this->view->errorCode = $updateEnterpriseTransaction['errorCode']; return; } $this->view->itemSuccess = true; $emailEnterprise = isset($ficha['enterprise']['email_default']) ? $ficha['enterprise']['email_default'] : ''; $socialName = $ficha['enterprise']['social_name']; $cnpj = $ficha['enterprise']['cnpj']; if ($this->view->itemSuccess && ($emailEnterprise == null || $emailEnterprise == '')) { $stateId = $ficha['addressEnterprise']['state_id']; $this->sendWhiteListMail($stateId, $socialName, $cnpj); } $hasEligibility = $this->Enterprise->hasEligibilityRules($enterpriseRow->getIdKey()); if ($Acl->isAllowed($auth->getIdentity()->getRole(), 'questionnaire:register', 'publisher')) { $this->view->loadUrlRegister = $this->view->baseUrl('/management/enterprise/success/itemEditSuccess/true/social_name/' . urlencode($ficha['enterprise']['social_name']) . '/enterpriseIdKey/' . $enterpriseIdKey . '/hasEligibility/' . $hasEligibility); return; } if ($Acl->isAllowed($auth->getIdentity()->getRole(), 'questionnaire:register', 'index')) { $this->view->loadUrlRegister = $this->view->baseUrl('/questionnaire/register/success/itemEditSuccess/true/hasEligibility/' . $hasEligibility); return; } }