Projeto
CRUD: Estrutura de Gestão Organizacional - CurrículoCRUD: Estrutura de Gestão Organizacional - Currículo
Fabrício de Medeiros
CRUD para gerenciar currículos na Medeiros Corporation Inc. Abaixo, segue o guia passo a passo para a implementação desse sistema:
Estrutura do Projeto
Estrutura de Arquivos:
library-system ├── src │ ├── Controller │ │ ├── ResumeController.php │ ├── Model │ │ ├── Resume.php │ ├── View │ │ ├── ResumeView.php │ ├── Service │ │ ├── ResumeService.php ├── public │ └── index.php ├── config │ └── database.php ├── vendor └── composer.json
1. Modelo (Model)
src/Model/Resume.php
<?php
namespace LibrarySystem\Model;
class Resume {
private $id_resume;
private $collaborator_id;
private $education;
private $experience;
private $skills;
// Getters and Setters
public function getIdResume() {
return $this->id_resume;
}
public function setIdResume($id) {
$this->id_resume = (int)$id; // Sanitização
}
public function getCollaboratorId() {
return $this->collaborator_id;
}
public function setCollaboratorId($id) {
$this->collaborator_id = (int)$id; // Sanitização
}
public function getEducation() {
return $this->education;
}
public function setEducation($education) {
$this->education = htmlspecialchars(strip_tags($education)); // Sanitização
}
public function getExperience() {
return $this->experience;
}
public function setExperience($experience) {
$this->experience = htmlspecialchars(strip_tags($experience)); // Sanitização
}
public function getSkills() {
return $this->skills;
}
public function setSkills($skills) {
$this->skills = htmlspecialchars(strip_tags($skills)); // Sanitização
}
}
2. Visualização (View)
src/View/PositionView.php
html
/html
3. Controlador (Controller)
src/Controller/ResumeController.php
<?php
namespace LibrarySystem\Controller;
use LibrarySystem\Model\Resume;
use LibrarySystem\Service\ResumeService;
class ResumeController {
private $resumeService;
public function __construct($dbConnection) {
$this->resumeService = new ResumeService($dbConnection);
}
public function create() {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$resume = new Resume();
$resume->setCollaboratorId($_POST['collaborator_id']);
$resume->setEducation($_POST['education']);
$resume->setExperience($_POST['experience']);
$resume->setSkills($_POST['skills']);
$this->resumeService->createResume($resume);
header('Location: /resumes');
}
}
public function read() {
$resumes = $this->resumeService->getAllResumes();
include '../src/View/ResumeView.php';
}
public function update($id) {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$resume = new Resume();
$resume->setIdResume($id);
$resume->setCollaboratorId($_POST['collaborator_id']);
$resume->setEducation($_POST['education']);
$resume->setExperience($_POST['experience']);
$resume->setSkills($_POST['skills']);
$this->resumeService->updateResume($resume);
header('Location: /resumes');
} else {
$resume = $this->resumeService->getResume($id);
include '../src/View/ResumeView.php';
}
}
public function delete($id) {
$this->resumeService->deleteResume($id);
header('Location: /resumes');
}
}
4. Serviço (Service)
src/Service/ResumeService.php
<?php
namespace LibrarySystem\Service;
use LibrarySystem\Model\Resume;
class ResumeService {
private $db;
public function __construct($dbConnection) {
$this->db = $dbConnection;
}
public function createResume(Resume $resume) {
$stmt = $this->db->prepare("INSERT INTO resumes (collaborator_id, education, experience, skills) VALUES (:collaborator_id, :education, :experience, :skills)");
$stmt->bindValue(':collaborator_id', $resume->getCollaboratorId());
$stmt->bindValue(':education', $resume->getEducation());
$stmt->bindValue(':experience', $resume->getExperience());
$stmt->bindValue(':skills', $resume->getSkills());
return $stmt->execute();
}
public function getAllResumes() {
$stmt = $this->db->query("SELECT * FROM resumes");
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
public function getResume($id) {
$stmt = $this->db->prepare("SELECT * FROM resumes WHERE id_resume = :id");
$stmt->bindValue(':id', (int)$id);
$stmt->execute();
return $stmt->fetch(\PDO::FETCH_ASSOC);
}
public function updateResume(Resume $resume) {
$stmt = $this->db->prepare("UPDATE resumes SET collaborator_id = :collaborator_id, education = :education, experience = :experience, skills = :skills WHERE id_resume = :id");
$stmt->bindValue(':collaborator_id', $resume->getCollaboratorId());
$stmt->bindValue(':education', $resume->getEducation());
$stmt->bindValue(':experience', $resume->getExperience());
$stmt->bindValue(':skills', $resume->getSkills());
$stmt->bindValue(':id', $resume->getIdResume());
return $stmt->execute();
}
public function deleteResume($id) {
$stmt = $this->db->prepare("DELETE FROM resumes WHERE id_resume = :id");
$stmt->bindValue(':id', (int)$id);
return $stmt->execute();
}
}
5. Configuração do Banco de Dados
Verifique se a conexão com o banco de dados está configurada corretamente em config/database.php.
6. Roteamento
Implemente o roteamento em public/index.php para chamar os métodos corretos do controlador de acordo com as requisições.
Considerações Finais
Este CRUD para gerenciamento de currículos segue as melhores práticas de sanitização, encapsulamento e um design orientado a objetos. Adapte e expanda conforme necessário para atender às necessidades específicas da Medeiros Corporation Inc.
Editar Voltar