/**
  * @param Mark $mark
  * @param null $oldMark
  */
 public function __construct(Mark $mark, $oldMark = null)
 {
     $result = $mark->getResult();
     $receiverUser = $mark->getUser();
     $details = ['receiverUser' => ['firstName' => $receiverUser->getFirstName(), 'lastName' => $receiverUser->getLastName(), 'username' => $receiverUser->getUsername()], 'result' => $mark->getValue(), 'update' => $oldMark !== null, 'mark' => ['id' => $mark->getId(), 'value' => $mark->getValue(), 'oldValue' => $oldMark]];
     parent::__construct($result->getResourceNode(), $details);
     $this->setReceiver($receiverUser);
 }
Esempio n. 2
0
 /**
  * Updates a mark.
  *
  * @param Mark   $mark
  * @param string $value
  */
 public function updateMark(Mark $mark, $value)
 {
     $oldMark = $mark->getValue();
     $mark->setValue($value);
     $this->om->flush();
     // First of all update older mark events so as result would be new value
     $this->updateNewMarkEventResult($mark->getUser(), $mark->getId(), $value);
     // Then create new mark event to log update
     $newMarkEvent = new LogResultsNewMarkEvent($mark, $oldMark);
     $this->dispatcher->dispatch('log', $newMarkEvent);
 }
 /**
  * @EXT\Route("/marks/{id}", name="claro_edit_mark")
  * @EXT\Method("PUT")
  *
  * @param Request $request
  * @param Mark    $mark
  *
  * @return JsonResponse
  */
 public function editMarkAction(Request $request, Mark $mark)
 {
     $this->assertCanEdit($mark->getResult());
     $newValue = $request->request->get('value', false);
     $response = new JsonResponse();
     if ($newValue !== false) {
         if (!$this->manager->isValidMark($mark->getResult(), $newValue)) {
             $response->setData('Mark is not valid');
             $response->setStatusCode(422);
         } else {
             $this->manager->updateMark($mark, $newValue);
             $response->setStatusCode(204);
         }
     } else {
         $response->setData('Field "value" is missing');
         $response->setStatusCode(422);
     }
     return $response;
 }