Commit 0471708f authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Administration des disciplines (Création à faire)

parent d76ea1f6
Loading
Loading
Loading
Loading
Loading
+70 −137
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ use Oscar\Entity\TVA;
use Oscar\Exception\OscarException;
use Oscar\Formatter\OscarFormatterConst;
use Oscar\Provider\Privileges;
use Oscar\Service\administration\AdminDisciplineAPIService;
use Oscar\Service\administration\AdministrationConfigService;
use Oscar\Service\administration\AdminRolePrivilegeServiceAPIService;
use Oscar\Service\ConfigurationParser;
@@ -528,32 +529,22 @@ class AdministrationController extends AbstractOscarController implements
                ', ',
                $this->getOscarConfigurationService()->getSpentAccountFilter()
            ),
            OscarConfigurationService::activity_request_limit       => $this->getOscarConfigurationService(
            )->getActivityRequestLimit(),
            'timesheet_preview'                                     => $this->getOscarConfigurationService(
            )->getTimesheetPreview(),
            'timesheet_excel'                                       => $this->getOscarConfigurationService(
            )->getTimesheetExcel(),
            'allow_numerotation_custom'                             => $this->getOscarConfigurationService(
            )->getNumerotationEditable(),
            'themes'                                                => $this->getOscarConfigurationService(
            )->getConfiguration('themes'),
            'theme'                                                 => $this->getOscarConfigurationService()->getTheme(
            ),
            OscarConfigurationService::activity_request_limit => $this->getOscarConfigurationService()->getActivityRequestLimit(),
            'timesheet_preview' => $this->getOscarConfigurationService()->getTimesheetPreview(),
            'timesheet_excel' => $this->getOscarConfigurationService()->getTimesheetExcel(),
            'allow_numerotation_custom' => $this->getOscarConfigurationService()->getNumerotationEditable(),
            'themes' => $this->getOscarConfigurationService()->getConfiguration('themes'),
            'theme' => $this->getOscarConfigurationService()->getTheme(),
            'export' => [
                'separator' => $this->getOscarConfigurationService()->getExportSeparator(),
                'dateformat' => $this->getOscarConfigurationService()->getExportDateFormat()
            ],
            'organization_leader_role' => $organization_leader_role,
            OscarConfigurationService::document_use_version_in_name => $this->getOscarConfigurationService(
            )->getDocumentUseVersionInName(),
            OscarConfigurationService::pfi_strict                   => $this->getOscarConfigurationService(
            )->isPfiStrict(),
            OscarConfigurationService::document_use_version_in_name => $this->getOscarConfigurationService()->getDocumentUseVersionInName(),
            OscarConfigurationService::pfi_strict => $this->getOscarConfigurationService()->isPfiStrict(),
            OscarConfigurationService::pfi_strict_format => $pfiFixed,
            "pfi_default_format"                                    => $this->getOscarConfigurationService(
            )->getConfiguration('validation.pfi'),
            "allow_node_selection"                                  => $this->getOscarConfigurationService(
            )->isAllowNodeSelection(),
            "pfi_default_format" => $this->getOscarConfigurationService()->getConfiguration('validation.pfi'),
            "allow_node_selection" => $this->getOscarConfigurationService()->isAllowNodeSelection(),
            "organizationRequire" => [
                "type" => $this->getOscarConfigurationService()->getOrganizationRequired()['type'],
                "country" => $this->getOscarConfigurationService()->getOrganizationRequired()['country']
@@ -609,8 +600,7 @@ class AdministrationController extends AbstractOscarController implements
                    default:
                        return $this->getResponseInternalError();
                }
            }
            else {
            } else {
                switch ($method) {
                    case 'GET':
                        $numerotation = $this->getOscarConfigurationService()->getEditableConfKey('numerotation', []);
@@ -693,8 +683,7 @@ class AdministrationController extends AbstractOscarController implements
                            if (!$tva) {
                                return $this->getResponseInternalError("Impossible de charger la TVA '$id'");
                            }
                        }
                        else {
                        } else {
                            return $this->getResponseBadRequest("");
                        }
                        $this->getEntityManager()->remove($tva);
@@ -721,8 +710,7 @@ class AdministrationController extends AbstractOscarController implements
                            if (!$tva) {
                                throw new OscarException("Impossible de charger la TVA '$id'");
                            }
                        }
                        else {
                        } else {
                            $tva = new TVA();
                            $this->getEntityManager()->persist($tva);
                        }
@@ -801,63 +789,12 @@ class AdministrationController extends AbstractOscarController implements
    public function disciplineAction()
    {
        $this->getOscarUserContextService()->check(Privileges::MAINTENANCE_DISCIPLINE_MANAGE);

        $disciplines = $this->getEntityManager()->getRepository(Discipline::class)->getDisciplinesCounted();
        $method = $this->getHttpXMethod();

        switch ($method) {
            case 'PUT' :
                $label = $this->params()->fromPost('label');
                $discipline = new Discipline();
                $this->getEntityManager()->persist($discipline);
                $discipline->setLabel($label);

                try {
                    $this->getEntityManager()->flush($discipline);
                    $data = $discipline->toJson();
                    $data['actyivitiesLng'] = 0;
                    return $this->ajaxResponse(['discipline' => $data]);
                } catch (\Exception $e) {
                    return $this->getResponseInternalError("Impossible d'ajouter la discipline : " . $e->getMessage());
                }


                break;

            case 'POST' :
                $label = $this->params()->fromPost('label');
                $id = $this->params()->fromPost('id');

                try {
                    $discipline = $this->getEntityManager()->getRepository(Discipline::class)->find($id);
                    $discipline->setLabel($label);
                    $this->getEntityManager()->flush($discipline);
                    $data = $discipline->toJson();
                    return $this->ajaxResponse(['discipline' => $data]);
                } catch (\Exception $e) {
                    return $this->getResponseInternalError("Impossible d'ajouter la discipline : " . $e->getMessage());
                }
                return $this->getResponseNotImplemented("MODIFICATION Pas encore implanté");
                break;

            case 'DELETE' :
                $id = $this->params()->fromQuery('id');
                try {
                    $discipline = $this->getEntityManager()->getRepository(Discipline::class)->find($id);
                    $this->getEntityManager()->remove($discipline);
                    $this->getEntityManager()->flush();
                    return $this->getResponseOk();
                } catch (\Exception $exception) {
                    return $this->getResponseInternalError(
                        "Impossible de supprimer la discipline : " . $exception->getMessage()
                    );
                }
        $disciplineConfigApi = new AdminDisciplineAPIService();
        $disciplineConfigApi->setServiceContainer($this->getServiceLocator());
        if ($this->isAjax() || $this->getRequest()->getQuery('f') === 'json') {
            return $disciplineConfigApi->entrypoint($this->getRequest());
        }

        $datas = [
            'disciplines' => $disciplines
        ];
        return $datas;
        return [];
    }

    public function motsclesAction()
@@ -1069,7 +1006,8 @@ class AdministrationController extends AbstractOscarController implements
        }
    }

    public function activityStatusAction() {
    public function activityStatusAction()
    {
        $this->getOscarUserContextService()->check(Privileges::MAINTENANCE_PARAMETERS_MANAGE);

        /** @var AdministrationConfigService $administrationService */
@@ -1643,8 +1581,7 @@ class AdministrationController extends AbstractOscarController implements
                            $this->getLoggerService()->critical("Action $datas->action inconnue !");
                            return $this->getResponseNotImplemented();
                    }
                }
                else {
                } else {
                    // Contrôle du Role
                    $roleId = trim($datas->get('label'));
                    if ($roleId == "") {
@@ -1668,8 +1605,7 @@ class AdministrationController extends AbstractOscarController implements
                    return $this->ajaxResponse($role->toArray());
                }
            }
        }
        else {
        } else {
            $method = $this->getHttpXMethod();
            $this->getOscarUserContextService()->check(Privileges::DROIT_ROLEORGA_EDITION);
            $role = $this->getEntityManager()->getRepository(OrganizationRole::class)->find($roleId);
@@ -1868,8 +1804,7 @@ class AdministrationController extends AbstractOscarController implements
            'declarersRelanceJour1' => $this->getOscarConfigurationService()->getDeclarersRelanceJour1(),
            'declarersRelance2' => $this->getOscarConfigurationService()->getDeclarersRelance2(),
            'declarersRelanceJour2' => $this->getOscarConfigurationService()->getDeclarersRelanceJour2(),
            'declarersRelanceConflitMessage' => $this->getOscarConfigurationService(
            )->getDeclarersRelanceConflitMessage(),
            'declarersRelanceConflitMessage' => $this->getOscarConfigurationService()->getDeclarersRelanceConflitMessage(),
            'declarersRelanceConflitJour' => $this->getOscarConfigurationService()->getDeclarersRelanceConflitJour(),
            /**  **/
            'validatorsRelance1' => $this->getOscarConfigurationService()->getValidatorsRelance1(),
@@ -1952,8 +1887,7 @@ class AdministrationController extends AbstractOscarController implements
            }

            return [];
        }
        elseif ($method == "POST") {
        } elseif ($method == "POST") {
            // Enregistrement des associations TYPE OSCAR <> TYPE PCRU
            $datas = $this->getJsonPosted();
            $idTypeActivity = $datas['oscar_id'];
@@ -1965,8 +1899,7 @@ class AdministrationController extends AbstractOscarController implements
                $this->getLoggerService()->error($e->getMessage());
                return $this->getResponseInternalError($e->getMessage());
            }
        }
        else {
        } else {
            return $this->getResponseBadRequest("La méthode de transmission ne fonctionne pas");
        }
    }
+19 −0
Original line number Diff line number Diff line
@@ -38,6 +38,14 @@ class Discipline
     */
    private $label;

    /**
     * Est disponible à la selection
     *
     * @var boolean
     * @ORM\Column(type="boolean", nullable=false, options={"default"=true})
     */
    protected $active = false;

    /**
     * @var \Doctrine\Common\Collections\Collection
     * @ORM\ManyToMany(targetEntity="Activity", mappedBy="disciplines")
@@ -70,6 +78,17 @@ class Discipline
        return $this;
    }

    public function isActive(): bool
    {
        return $this->active;
    }

    public function setActive(bool $active): self
    {
        $this->active = $active;
        return $this;
    }

    /**
     * @return string
     */
+4 −1
Original line number Diff line number Diff line
@@ -30,7 +30,10 @@ class DisciplineRepository extends EntityRepository
     */
    public function getDisciplinesCounted()
    {
        $dql = "SELECT d.id, d.label, count(a.id) as activitiesLng FROM Oscar\Entity\Discipline d LEFT JOIN d.activities a GROUP BY d.id ORDER BY d.label";
        $dql = "SELECT d.id, d.label, d.active, count(a.id) as count FROM Oscar\Entity\Discipline d 
            LEFT JOIN d.activities a 
            GROUP BY d.id 
            ORDER BY d.label";
        $query = $this->getEntityManager()->createQuery($dql);
        return $query->getArrayResult();
    }
+53 −0
Original line number Diff line number Diff line
<?php

namespace Oscar\Service\administration;

use Doctrine\ORM\EntityManager;
use Laminas\Http\Request;
use Laminas\Http\Response;
use Laminas\View\Model\JsonModel;
use Oscar\Entity\Discipline;
use Oscar\Entity\DisciplineRepository;
use Oscar\Entity\Role;
use Oscar\Entity\RoleRepository;
use Oscar\Exception\OscarException;
use Oscar\Service\core\AbstractAPIService;

/**
 * Administration des Rôles/Privilèges
 */
class AdminDisciplineAPIService extends AbstractAPIService
{
    protected function get(Request $request): JsonModel|Response|array
    {
        return $this->getDisciplineRepository()->getDisciplinesCounted();
    }

    protected function put(Request $request): JsonModel|Response|array
    {
        $data = $this->getRequestData($request);
        /** @var Discipline $entity */
        $entity = $this->getDisciplineRepository()->findOneBy(['id' => $data['id']]);
        $entity->setLabel($data['label']);
        $entity->setActive($data['active'] === true);
        $this->getEntityManager()->flush($entity);
        return $this->responseData(null);
    }

    protected function post(Request $request): JsonModel|Response|array
    {
        $data = $this->getRequestData($request);
        /** @var Discipline $entity */
        $entity = new Discipline();
        $this->getEntityManager()->persist($entity);
        $entity->setLabel($data['label']);
        $entity->setActive($data['active'] === true);
        $this->getEntityManager()->flush($entity);
        return $this->responseData(null);
    }

    protected function getDisciplineRepository(): DisciplineRepository
    {
        return $this->getEntityManager()->getRepository(Discipline::class);
    }
}
 No newline at end of file
+8 −9
Original line number Diff line number Diff line
@@ -56,7 +56,6 @@ class AdministrationConfigService implements
        $disabled = $this->getOscarConfigurationService()->getEditableConfKey("status_disabled", []);
        $out = [];
        foreach ($status as $code => $label) {

            $disabledStatus = in_array($code, $disabled);
            $use = 0;
            foreach ($usage as $dt) {
Loading