Projeto

CRUD: Estrutura de Gestão Organizacional - Currículo

CRUD: 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