Main = new Main(); /** Carrega as configurações */ $config = $this->Main->LoadConfigPublic(); /** Diretório do usuario */ $this->dirTemp = "temp"; $this->dirGeral = $config->app->ged;//Caminho aonde serão gravados os arquivos $this->dirFinancial = "financial"; $this->dirDocuments = "documents"; $this->dirCompany = (isset($_SESSION['USERSCOMPANYID'])) && ((int)$_SESSION['USERSCOMPANYID'] > 0) ? $this->Main->setzeros($_SESSION['USERSCOMPANYID'], 8) : 0; $this->dirUser = $this->Main->setzeros($_SESSION['USERSID'], 8); $this->dirYear = date('Y'); $this->dirMonth = date('m'); $this->dirPermission = 0777; $this->markings = new \stdClass(); } /** Método trata campo documents_id */ public function setDocumentsId(int $documentsId) : void { /** Trata a entrada da informação */ $this->documentsId = isset($documentsId) ? (int)$this->Main->antiInjection($documentsId) : 0; /** Verifica se a informação foi informada */ if($this->documentsId < 0) { /** Adição de elemento */ array_push($this->errors, 'O "ID do documento", deve ser informado'); }else{ /** Descrição do arquivo */ $this->markings->descricao = $this->description; /** Listas as marcações do arquivos */ for($k=0; $ktag); $k++){ /** Tags */ $masks = $this->mask[$k]; $this->tags = $this->tag[$k]; /** Prepara o objeto das marcações */ $this->markings->$masks = new \stdClass(); /** Carrega as marcações do arquivo */ $this->markings->$masks->value = $this->tags; $this->markings->$masks->format = $this->format[$k]; $this->markings->$masks->required = $this->required[$k]; } } } /** Método trata campo documents_drafts_id */ public function setDocumentsDraftsId(int $documentsDraftsId) : void { /** Trata a entrada da informação */ $this->documentsDraftsId = isset($documentsDraftsId) ? $this->Main->antiInjection($documentsDraftsId) : null; /** Verifica se a informação foi informada */ if(empty($this->documentsDraftsId)) { /** Adição de elemento */ array_push($this->errors, 'O campo "documents_drafts_id", deve ser informado'); } } /** Método trata campo documents_categorys_id */ public function setDocumentsCategorysId(int $documentsCategorysId) : void { /** Trata a entrada da informação */ $this->documentsCategorysId = isset($documentsCategorysId) ? (int)$this->Main->antiInjection($documentsCategorysId) : 0; /** Verifica se a informação foi informada */ if( ((int)$this->documentsCategorysId < 0) && ($this->documentsId == 0)) { /** Adição de elemento */ array_push($this->errors, 'Selecione uma categoria'); } } /** Método trata campo users_id */ public function setUsersId(int $usersId) : void { /** Trata a entrada da informação */ $this->usersId = isset($usersId) ? $this->Main->antiInjection($usersId) : null; /** Verifica se a informação foi informada */ if(empty($this->usersId)) { /** Adição de elemento */ array_push($this->errors, 'O campo "users_id", deve ser informado'); } } /** Método trata campo company_id */ public function setCompanyId(int $companyId) : void { /** Trata a entrada da informação */ $this->companyId = isset($companyId) ? $this->Main->antiInjection($companyId) : null; /** Verifica se a informação foi informada */ // if(empty($this->companyId)) // { // /** Adição de elemento */ // array_push($this->errors, 'O cliente deve ser informado'); // } } /** Método trata campo financial_movements_id */ public function setFinancialMovementsId(int $financialMovementsId) : void { /** Trata a entrada da informação */ $this->financialMovementsId = isset($financialMovementsId) ? $this->Main->antiInjection($financialMovementsId) : null; /** Verifica se a informação foi informada */ if(empty($this->financialMovementsId)) { /** Adição de elemento */ array_push($this->errors, 'O campo "financial_movements_id", deve ser informado'); } } /** Método trata campo description */ public function setDescription(string $description) : void { /** Trata a entrada da informação */ $this->description = isset($description) ? $this->Main->antiInjection($description) : null; /** Verifica se a informação foi informada */ if(empty($this->description)) { /** Adição de elemento */ array_push($this->errors, 'O campo "Descrição", deve ser informado'); } } /** Método trata campo date_register */ public function setDateRegister(string $dateRegister) : void { /** Trata a entrada da informação */ $this->dateRegister = isset($dateRegister) ? $this->Main->antiInjection($dateRegister) : null; /** Verifica se a informação foi informada */ if(empty($this->dateRegister)) { /** Adição de elemento */ array_push($this->errors, 'O campo "date_register", deve ser informado'); } } /** Método trata campo archive */ public function setArchive(string $archive) : void { /** Trata a entrada da informação */ $this->archive = isset($archive) ? $this->Main->antiInjection($archive) : null; /** Verifica se a informação foi informada */ if(empty($this->archive)) { /** Adição de elemento */ array_push($this->errors, 'O campo "archive", deve ser informado'); } } /** Método trata campo extension */ public function setExtension(string $extension) : void { /** Trata a entrada da informação */ $this->extension = isset($extension) ? $this->Main->antiInjection($extension) : null; /** Verifica se a informação foi informada */ if(empty($this->extension)) { /** Adição de elemento */ array_push($this->errors, 'O campo "extension", deve ser informado'); } } /** Método trata campo active */ public function setActive(string $active) : void { /** Trata a entrada da informação */ $this->active = isset($active) ? $this->Main->antiInjection($active) : null; /** Verifica se a informação foi informada */ if(empty($this->active)) { /** Adição de elemento */ array_push($this->errors, 'O campo "active", deve ser informado'); } } /** Método trata campo tag */ public function setTag(array $tag) : void { /** Trata a entrada da informação */ $this->tag = count($tag) > 0 ? $this->Main->antiInjectionArray($tag) : []; /** Verifica se a informação foi informada */ if(count($this->tag) == 0) { /** Adição de elemento */ array_push($this->errors, 'Nenhuma marcação informado para o arquivo selecionado'); }else{ for($i=0; $itag); $i++){ /** Verifica se o campo obrigatório foi informado */ if( $this->required[($i+1)] == 'S' ){ /** Leganda dos tippos de marcações * * 1 => Texto * 2 => Número * 3 => Data * 4 => Monetário * 5 => CPF * 6 => CNPJ * 7 => CEP * 8 => Telefone * 9 => Celular * 10 => E-mail * 11 => OAB * 12 => RG * */ /** Verifica o formato do campo para validar o mesmo */ switch ((int)$this->format[$i]){ /** Texto */ case 1: /** Caso a informação não tenha sido informada, informo */ if( empty($this->tag[$i]) ){ /** Trata a mensagem de resposta */ array_push($this->errors, 'O campo "'.$this->Main->treatMask($this->mask[$i]).'", deve ser informado'); } break; /** Número */ case 2: /** Caso a número não tenha sido informada, informo */ if( (int)$this->tag[$i] == 0){ /** Trata a mensagem de resposta */ array_push($this->errors, 'O campo "'.$this->Main->treatMask($this->mask[$i]).'", deve ser informado'); } break; /** Data */ case 3: /** Caso a data não tenha sido informada ou esteja em formato inválido, informo */ if( (empty($this->tag[$i])) || (!$this->Main->validaData($this->tag[$i])) ){ /** Trata a mensagem de resposta */ array_push($this->errors, 'O campo "'.$this->Main->treatMask($this->mask[$i]).'", deve ser informado ou esta em um formato inválido'); } break; /** Montetário */ case 4: /** Caso o valor não tenha sido informado ou esteja em formato inválido, informo */ if( (!is_float($this->Main->MoeadDB($this->tag[$i]))) || ($this->tag[$i] == '0,00') ){ /** Trata a mensagem de resposta */ array_push($this->errors, 'O campo "'.$this->Main->treatMask($this->mask[$i]).'", deve ser informado'); } break; /** CPF */ case 5: /** Caso o CPF não tenha sido informada ou esteja em formato inválido, informo */ if( !$this->Main->cpfj($this->tag[$i]) ){ /** Trata a mensagem de resposta */ array_push($this->errors, 'O campo "'.$this->Main->treatMask($this->mask[$i]).'", deve ser informado, ou está em um formato inválido'); } break; /** CNPJ */ case 6: /** Caso o CNPJ não tenha sido informada ou esteja em formato inválido, informo */ if( !$this->Main->cpfj($this->tag[$i]) ){ /** Trata a mensagem de resposta */ array_push($this->errors, 'O campo "'.$this->Main->treatMask($this->mask[$i]).'", deve ser informado, ou está em um formato inválido'); } break; /** CEP */ case 7: /** Caso o CEP não tenha sido informado, informo */ if( (empty($this->Main->clearDoc($this->tag[$i]))) || ((int)$this->Main->clearDoc($this->tag[$i]) == 0) ){ /** Trata a mensagem de resposta */ array_push($this->errors, 'O campo "'.$this->Main->treatMask($this->mask[$i]).'", deve ser informado'); } break; /** Telefone */ case 8: /** Caso o Telefone não tenha sido informado, informo */ if( (empty($this->Main->clearDoc($this->tag[$i]))) || ((int)$this->Main->clearDoc($this->tag[$i]) == 0) ){ /** Trata a mensagem de resposta */ array_push($this->errors, 'O campo "'.$this->Main->treatMask($this->mask[$i]).'", deve ser informado'); } break; /** Celular */ case 9: /** Caso o Celular não tenha sido informado, informo */ if( (empty($this->Main->clearDoc($this->tag[$i]))) || ((int)$this->Main->clearDoc($this->tag[$i]) == 0) ){ /** Trata a mensagem de resposta */ array_push($this->errors, 'O campo "'.$this->Main->treatMask($this->mask[$i]).'", deve ser informado'); } break; /** Email */ case 10: /** Caso o E-mail não tenha sido informado, informo */ if( (empty($this->Main->clearDoc($this->tag[$i]))) || (!$this->Main->validarEmail($this->tag[$i])) ){ /** Trata a mensagem de resposta */ array_push($this->errors, 'O campo "'.$this->Main->treatMask($this->mask[$i]).'", deve ser informado'); } break; } } } } } /** Método trata campo tag */ public function setMask(array $mask) : void { /** Trata a entrada da informação */ $this->mask = count($mask) > 0 ? $this->Main->antiInjectionArray($mask) : []; /** Verifica se a informação foi informada */ if(count($this->mask) == 0) { /** Adição de elemento */ array_push($this->errors, 'O campo "mask", deve ser informado'); } } /** Método trata campo tag */ public function setRequired(array $required) : void { /** Trata a entrada da informação */ $this->required = count($required) > 0 ? $this->Main->antiInjectionArray($required) : []; /** Verifica se a informação foi informada */ if(count($this->required) == 0) { /** Adição de elemento */ array_push($this->errors, 'O campo "required", deve ser informado'); } } /** Método trata campo tag */ public function setFormat(array $format) : void { /** Trata a entrada da informação */ $this->format = count($format) > 0 ? $this->Main->antiInjectionArray($format) : []; /** Verifica se a informação foi informada */ if(count($this->format) == 0) { /** Adição de elemento */ array_push($this->errors, 'O campo "format", deve ser informado'); } } /** Método trata campo tag */ public function setPath(string $path) : void { /** Trata a entrada da informação */ $this->path = isset($path) ? (string)$this->Main->antiInjection($path) : null; $this->dirCompany = $this->getCompanyId(); /** Verifica se a informação não foi informada */ if( (empty($this->path)) && ($this->documentsId == 0) ) { /** Adição de elemento */ array_push($this->errors, 'O "Arquivo", deve ser informado'); }else if( (!empty($this->path)) && ($this->documentsId == 0) ){/** Caso o arquivo tenha sido informado, gravo o arquivo na pasta correta */ /** Verifica se o arquivo existe na pasta temporária */ if( (is_file($this->path)) && ($this->documentsId == 0) ){ /** Verifica se a pasta documents existe */ if( !is_dir($this->dirGeral.'/'.$this->dirDocuments) ){ /** Cria o diretório */ mkdir($this->dirGeral.'/'.$this->dirDocuments, $this->dirPermission); } /** Verifica se a pasta company existe */ if( !is_dir($this->dirGeral.'/'.$this->dirDocuments.'/'.$this->dirCompany) ){ /** Cria o diretório */ mkdir($this->dirGeral.'/'.$this->dirDocuments.'/'.$this->dirCompany, $this->dirPermission); } /** Verifica se a pasta company/ano existe */ if( !is_dir($this->dirGeral.'/'.$this->dirDocuments.'/'.$this->dirCompany.'/'.$this->dirYear) ){ /** Cria o diretório */ mkdir($this->dirGeral.'/'.$this->dirDocuments.'/'.$this->dirCompany.'/'.$this->dirYear, $this->dirPermission); } /** Verifica se a pasta company/ano/mês existe */ if( !is_dir($this->dirGeral.'/'.$this->dirDocuments.'/'.$this->dirCompany.'/'.$this->dirYear.'/'.$this->dirMonth) ){ /** Cria o diretório */ mkdir($this->dirGeral.'/'.$this->dirDocuments.'/'.$this->dirCompany.'/'.$this->dirYear.'/'.$this->dirMonth, $this->dirPermission); } /** Verifica se a pasta de destino existe */ if( is_dir($this->dirGeral.'/'.$this->dirDocuments.'/'.$this->dirCompany.'/'.$this->dirYear.'/'.$this->dirMonth) ){ /** Pega a extensão do arquivo */ $rev = explode(".", strrev($this->path)); /** Pega a extensão do arquivo */ $this->extension = strrev($rev[0]); /** Gera um nome de arquivo aleatorio */ $this->archive = md5($this->Main->NewPassword()).'.'.$this->extension; /** Descrição do arquivo */ $this->markings->descricao = $this->description; /** Listas as marcações do arquivos */ for($k=0; $ktag); $k++){ /** Tags */ $masks = $this->mask[$k]; $this->tags = $this->tag[$k]; /** Prepara o objeto das marcações */ $this->markings->$masks = new \stdClass(); /** Carrega as marcações do arquivo */ $this->markings->$masks->value = $this->tags; $this->markings->$masks->format = $this->format[$k]; $this->markings->$masks->required = $this->required[$k]; } /** Move o arquivo para o diretório de destino */ rename($path, $this->dirGeral.'/'.$this->dirDocuments.'/'.$this->dirCompany.'/'.$this->dirYear.'/'.$this->dirMonth.'/'.$this->archive); /** Verifica se o arquivo foi enviado corretamente, caso não tenha sido, informo */ if( !is_file($this->dirGeral.'/'.$this->dirDocuments.'/'.$this->dirCompany.'/'.$this->dirYear.'/'.$this->dirMonth.'/'.$this->archive) ){ /** Adição de elemento */ array_push($this->errors, 'Não foi possível mover o arquivo'); } }else{ /** Adição de elemento */ array_push($this->errors, 'Não foi possível mover o arquivo, diretório não encontrado'); } }else{ /** Adição de elemento */ array_push($this->errors, 'O "Arquivo", deve ser informado'); } } } /** Método trata campo file */ public function setFile(string $file) : void { /** Trata a entrada da informação */ $this->file = isset($file) ? (string)$this->Main->antiInjection($file) : null; /** Verifica se a informação foi informada */ if(empty($this->file)) { /** Adição de elemento */ array_push($this->errors, 'Selecione o arquivo'); }else{ /** Pega o base64 do arquivo */ $this->base64 = explode(",", $this->file); /** Verifica se a pasta do usuário não existe, caso não exista, cria a mesma */ if( !is_dir($this->dirTemp.'/'.$this->dirUser) ){ /** Cria a pasta do usuário */ mkdir($this->dirTemp.'/'.$this->dirUser, $this->dirPermission); /** Verifica se a pasta do usuário foi criada */ if( !is_dir($this->dirTemp.'/'.$this->dirUser) ){ /** Caso não tenha sido criada informo */ /** Adição de elemento */ array_push($this->errors, 'Não foi possível carregar criar o ditetório'); }else{ /** Grava o arquivo na pasta temporária */ $fp = fopen($this->dirTemp.'/'.$this->dirUser.'/'.$this->name, 'w'); fwrite($fp, base64_decode($this->base64[1])); fclose($fp); } }else{ /** Grava o arquivo na pasta temporária */ $fp = fopen($this->dirTemp.'/'.$this->dirUser.'/'.$this->name, 'w'); fwrite($fp, base64_decode($this->base64[1])); fclose($fp); } } } /** Método trata campo file */ public function setName(string $name) : void { /** Trata a entrada da informação */ $this->name = isset($name) ? (string)$this->Main->antiInjection($name) : null; /** Verifica se a informação foi informada */ if(empty($this->name)) { /** Adição de elemento */ array_push($this->errors, 'Selecione o arquivo'); } } /** Método trata campo titles */ public function setTitles(string $titles) : void { /** Trata a entrada da informação */ $this->titles = isset($titles) ? (string)$this->Main->antiInjection($titles) : null; /** Verifica se a informação foi informada */ if(empty($this->titles)) { /** Adição de elemento */ array_push($this->errors, 'Nenhum título selecionado para esta solicitação'); } } /** Sanitiza array */ public function setSanitizeArray(array $input) { /** Trata a entrada da informação */ $this->sanitize = count($input) > 0 ? $input : []; /** Limpa array de input */ $this->input = array(); /** Verficia se foram informado itens */ if( count($this->sanitize) > 0 ){ foreach($this->sanitize as $value){ array_push($this->input, addslashes($this->Main->antiInjection($value))); } } /** Retorna a array tratada */ return $this->input; } /** Método trata campo setDirYear */ public function setDirYear(string $dateRegister) : void { /** Retorna o ano/diretório do arquivo */ $this->dirYear = date('Y', strtotime($dateRegister)); } /** Método trata campo setDirYear */ public function setdirMonth(string $dirMonth) : void { /** Retorna o ano/diretório do arquivo */ $this->dirMonth = date('m', strtotime($dirMonth)); } /** Método retorna campo DirDocuments */ public function getDirDocuments() : ? string { /** Retorna o ano/diretório do arquivo */ return (string)$this->dirDocuments; } /** Método retorna campo DirYear */ public function getDirYear() : ? string { /** Retorna o ano/diretório do arquivo */ return (string)$this->dirYear; } /** Método retorna campo dirMonth */ public function getDirMonth() : ? string { /** Retorna o ano/diretório do arquivo */ return (string)$this->dirMonth; } /** Método retorna campo DirCompany */ public function getDirCompany() : ? string { /** Retorna o ano/diretório do arquivo */ return (string)$this->dirCompany; } /** Método retorna campo documents_id */ public function getDocumentsId() : ? int { /** Retorno da informação */ return (int)$this->documentsId; } /** Método retorna campo documents_drafts_id */ public function getDocumentsDraftsId() : ? int { /** Retorno da informação */ return (int)$this->documentsDraftsId; } /** Método retorna campo documents_categorys_id */ public function getDocumentsCategorysId() : ? int { /** Retorno da informação */ return (int)$this->documentsCategorysId; } /** Método retorna campo users_id */ public function getUsersId() : ? int { /** Retorno da informação */ return (int)$this->usersId; } /** Método retorna campo company_id */ public function getCompanyId() : ? int { /** Retorno da informação */ return (int)$this->companyId; } /** Método retorna campo financial_movements_id */ public function getFinancialMovementsId() : ? int { /** Retorno da informação */ return (int)$this->financialMovementsId; } /** Método retorna campo description */ public function getDescription() : ? string { /** Retorno da informação */ return (string)$this->description; } /** Método retorna campo date_register */ public function getDateRegister() : ? string { /** Retorno da informação */ return (string)$this->dateRegister; } /** Método retorna campo titles */ public function getTitles() : ? string { /** Retorno da informação */ return (string)$this->titles; } /** Método retorna campo archive */ public function getArchive() : ? string { /** Retorno da informação */ return (string)$this->archive; } /** Método retorna campo extension */ public function getExtension() : ? string { /** Retorno da informação */ return (string)$this->extension; } /** Método retorna campo active */ public function getActive() : ? string { /** Retorno da informação */ return (string)$this->active; } /** Método retorna campo tag */ public function getTag() : ? string { /** Retorno da informação */ return (string)$this->tag; } /** Método retorna campo file */ public function getFile() : ? string { /** Retorno da informação */ return (string)$this->file; } /** Método retorna campo name */ public function getName() : ? string { /** Retorno da informação */ return (string)$this->name; } /** Método retorna campo dirGeral */ public function getDirGeral() : ? string { /** Retorno da informação */ return (string)$this->dirGeral; } /** Método retorna campo dirTemp */ public function getDirTemp() : ? string { /** Retorno da informação */ return (string)$this->dirTemp; } /** Método retorna campo dirUser */ public function getDirUser() : ? string { /** Retorno da informação */ return (string)$this->dirUser; } /** Método retorna campo markings */ public function getMarkings() : ? object { /** Retorno da informação */ return (object)$this->markings; } /** Método retorna campo dirFinancial */ public function getDirFinancial() : ? string { /** Retorno da informação */ return (string)$this->dirFinancial; } /** Método retorna o campo Path de documentos financeiros */ public function getPathDocFinancial() : ? string { /** Caminho absoluto do arquivo */ $this->path = $this->getDirGeral()."/".$this->getDirFinancial()."/".$this->getDirCompany()."/".$this->getDirYear()."/".$this->getDirMonth()."/"; /** Retorno da informação */ return (string)$this->path; } /** Método retorna o campo Path */ public function getPath() : ? string { /** Caminho absoluto do arquivo */ $this->path = $this->getDirGeral()."/".$this->getDirDocuments()."/".$this->getDirCompany()."/".$this->getDirYear()."/".$this->getDirMonth()."/"; /** Retorno da informação */ return (string)$this->path; } public function getErrors(): ? string { /** Verifico se deve informar os erros */ if (count($this->errors)) { /** Verifica a quantidade de erros para informar a legenda */ $this->info = count($this->errors) > 1 ? '
Os seguintes erros foram encontrados
' : '
O seguinte erro foi encontrado
'; /** Lista os erros */ foreach ($this->errors as $keyError => $error) { /** Monto a mensagem de erro */ $this->info .= '
' . ($keyError + 1) . ' - ' . $error; } /** Retorno os erros encontrados */ return (string)$this->info; } else { return false; } } /** destrutor da classe */ public function __destruct(){} }