Commit 4343ab94 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

- Fix : Les dates de débuts et de fin n'étaient pas correctement enregistrées...

- Fix : Les dates de débuts et de fin n'étaient pas correctement enregistrées lors de la modification des affectations des personnes depuis la fiche activité
- Fix : Erreur lors de la modification d'un rôle niveau Projet depuis la fiche activité
parent 7ef78581
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -934,6 +934,7 @@ contract:
                defaults:
                    action: persons


        organizations:
            type: segment
            options:
+10 −3
Original line number Diff line number Diff line
@@ -646,7 +646,8 @@ class EnrollController extends AbstractOscarController implements UsePersonServi

    private function getProjectEntity() :Project
    {
        $idProject = $this->params()->fromRoute('idenroller');
        $idProject = $this->params()->fromRoute('idenroll');
        $this->getLoggerService()->debug("Chargement du Projet");
        $project = $this->getProjectService()->getProject($idProject);
        return $project;
    }
@@ -697,7 +698,12 @@ class EnrollController extends AbstractOscarController implements UsePersonServi

    public function personProjectEditAction()
    {
        $this->getOscarUserContextService()->check(Privileges::PROJECT_PERSON_MANAGE, $this->getProjectEntity());
        /** @var ProjectMember $personProject */
        $personProject = $this->getEntityManager()->getRepository(ProjectMember::class)->find(
            $this->params()->fromRoute('idenroll')
        );

        $this->getOscarUserContextService()->check(Privileges::PROJECT_PERSON_MANAGE, $personProject->getProject());
        return $this->editEnroll(ProjectMember::class);
    }

@@ -771,7 +777,8 @@ class EnrollController extends AbstractOscarController implements UsePersonServi
        try {
            $datas = $this->getEnrollDatas(ActivityPerson::class);
            $this->getOscarUserContextService()->check(Privileges::ACTIVITY_PERSON_MANAGE, $datas['enroller']);
            $this->getPersonService()->personActivityChangeRole($datas['enroll'], $datas['role']);
            $this->getPersonService()->personActivityChangeRole($datas['enroll'], $datas['role'], $datas['dateStart'], $datas['dateEnd']);
            // PATCH DATE
            $this->updateIndex('Activity', $datas['enroller']);
            return $this->redirect()->toRoute( 'contract/show', ['id'=>$datas['enroller']->getId()]);
        } catch (\Exception $e) {
+5 −3
Original line number Diff line number Diff line
@@ -1880,6 +1880,7 @@ class ProjectGrantController extends AbstractOscarController implements UseNotif
                $editable = $editableA;
                $deletable = $deletableA;
                $context = "activity";
                $idEnroller = $activityPerson->getActivity()->getId();
            } else {
                $urlDelete = $deletableA ? $this->url()->fromRoute('personproject/delete',
                    ['idenroll' => $activityPerson->getId()]) : false;
@@ -1888,6 +1889,7 @@ class ProjectGrantController extends AbstractOscarController implements UseNotif
                $editable = $editableP;
                $deletable = $deletableP;
                $context = "project";
                $idEnroller = $activityPerson->getProject()->getId();
            }
            $urlShow = false;
            if( $showable ){
@@ -1904,14 +1906,14 @@ class ProjectGrantController extends AbstractOscarController implements UseNotif
                'context' => $context,
                'urlEdit' => $urlEdit,
                'urlShow' => $urlShow,
                'enroller' => $activity->getId(),
                'enroller' => $idEnroller,
                'enrollerLabel' => $activity->getLabel(),
                'editable' => $editable,
                'deletable' => $deletable,
                'enrolled' => $activityPerson->getPerson()->getId(),
                'enrolledLabel' => $activityPerson->getPerson()->getDisplayName(),
                'start' => $activityPerson->getDateStart(),
                'end' => $activityPerson->getDateEnd()
                'start' => DateTimeUtils::toStr($activityPerson->getDateStart(), 'Y-m-d'),
                'end' => DateTimeUtils::toStr($activityPerson->getDateEnd(), 'Y-m-d'),
            ];
        }

+3 −4
Original line number Diff line number Diff line
@@ -1559,16 +1559,15 @@ class PersonService implements UseOscarConfigurationService, UseEntityManager, U
        $this->jobSearchUpdate($person);
    }

    public function personActivityChangeRole(ActivityPerson $activityPerson, Role $newRole)
    public function personActivityChangeRole(ActivityPerson $activityPerson, Role $newRole, $dateStart, $dateEnd)
    {

        $person = $activityPerson->getPerson();
        $activity = $activityPerson->getActivity();

        // TODO Faire un contrôle sur les dates


        $updateNotification = $activityPerson->isPrincipal() || $newRole->isPrincipal();
        $activityPerson->setRoleObj($newRole);
        $activityPerson->setDateStart($dateStart)->setDateEnd($dateEnd);
        $this->getEntityManager()->flush($activityPerson);
        $this->getLoggerService()->info(sprintf("Le rôle de personne %s a été modifié dans l'activité %s", $person, $activity));

+135 −0
Original line number Diff line number Diff line
@@ -5364,3 +5364,138 @@ pre.alert-danger, pre.alert-info {
  text-align: center;
  width: 100%;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//    COMPOSANTS VUEJS
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


.datepicker-selector {
  position: absolute;
  width: 16em;
  z-index: 1000;
  background: white;
  font-size: .9em;
  box-shadow: 0 0 1em rgba(0, 0, 0, 0.25);
  border: thin solid rgba(0, 0, 0, 0.5);
  .datepicker-wrapper {
    position: relative;
    z-index: 900;
    background: white;
    padding: 4px;
  }
  &:before {
    content: '';
    position: absolute;
    background: white;
    border: thin solid rgba(0, 0, 0, 0.5);
    width: 16px;
    left: 16px;
    height: 16px;
    transform: rotate(45deg);
    top: -8px;
    z-index: 800;
  }

  header nav {
    display: flex;
    .heading {
      white-space: nowrap;
      text-align: center;
    }
    .currentMonth, .currentYear {
      cursor: pointer;
      &:hover {
        background: rgba(255, 0, 0, 0.5);
      }
    }
    > * {
      flex: 1;
    }
    > span {
      flex: 0;
      cursor: pointer;
      &:hover {
        background: rgba(255, 0, 0, 0.5);
      }
    }
  }

  .day-labels {
    display: flex;
    align-items: stretch;

    .day-label {
      color: rgba(0, 0, 0, 0.5);
      flex: 1;
    }
  }

  .months, .years, .week {
    display: flex;
    flex-wrap: wrap;
    cursor: pointer;
  }

  .months .month {
    flex: 1;
    width: 33.3333333333333333%;
    padding: .3em 0;
  }
}

.datepicker-selector .months .month, .datepicker-selector .months .year, .datepicker-selector .months .week-day, .datepicker-selector .years .month, .datepicker-selector .years .year, .datepicker-selector .years .week-day, .datepicker-selector .week .month, .datepicker-selector .week .year, .datepicker-selector .week .week-day {
  padding: .3em;
  flex: 1;
  text-align: center;
  border-radius: 4px;
}

.datepicker-selector .months .month:hover, .datepicker-selector .months .year:hover, .datepicker-selector .months .week-day:hover, .datepicker-selector .years .month:hover, .datepicker-selector .years .year:hover, .datepicker-selector .years .week-day:hover, .datepicker-selector .week .month:hover, .datepicker-selector .week .year:hover, .datepicker-selector .week .week-day:hover {
  background: rgba(255, 0, 0, 0.9);
  color: white;
}

.datepicker-selector .months .month.active, .datepicker-selector .months .year.active, .datepicker-selector .months .week-day.active, .datepicker-selector .years .month.active, .datepicker-selector .years .year.active, .datepicker-selector .years .week-day.active, .datepicker-selector .week .month.active, .datepicker-selector .week .year.active, .datepicker-selector .week .week-day.active {
  background: rgba(255, 0, 0, 0.4) !important;
  text-shadow: -1px 1px 0 rgba(0, 0, 0, 0.3);
  color: white;
}

.datepicker-selector .months .month.disabled, .datepicker-selector .months .year.disabled, .datepicker-selector .months .week-day.disabled, .datepicker-selector .years .month.disabled, .datepicker-selector .years .year.disabled, .datepicker-selector .years .week-day.disabled, .datepicker-selector .week .month.disabled, .datepicker-selector .week .year.disabled, .datepicker-selector .week .week-day.disabled {
  background: white !important;
  color: rgba(0, 0, 0, 0.2);
  pointer-events: none;
}

.datepicker-selector .week {
  display: flex;
  align-items: stretch;
  line-height: 1em;
}

.datepicker-selector .week .week-label {
  font-size: .8em;
  flex: 1;
  color: rgba(0, 0, 0, 0.5);
}

.datepicker-selector .week .week-day {
  text-align: center;
  flex: 1;
  padding: 4px;
  cursor: pointer;
}

.datepicker-selector .week .week-day:hover {
  background-color: rgba(255, 0, 0, 0.75) !important;
  color: white;
}

.datepicker-selector .week .week-day:nth-child(odd) {
  background: rgba(0, 0, 0, 0.05);
}
 No newline at end of file
Loading