/**
  * @param                              $id
  * @param Request                      $request
  * @param OrganizationElementValidator $orgElementValidator
  * @return \Illuminate\Http\RedirectResponse
  */
 public function updateStatus($id, Request $request, OrganizationElementValidator $orgElementValidator)
 {
     $organization = $this->organizationManager->getOrganization($id);
     if (Gate::denies('belongsToOrganization', $organization)) {
         return redirect()->back()->withResponse($this->getNoPrivilegesMessage());
     }
     $input = $request->all();
     $status = $input['status'];
     if ($status == 3) {
         $this->authorize('publish_activity', $organization);
     }
     $organization = $this->organizationManager->getOrganization($id);
     $organizationData = $this->organizationManager->getOrganizationData($id);
     $settings = $this->settingsManager->getSettings($id);
     $orgElem = $this->organizationManager->getOrganizationElement();
     $xmlService = $orgElem->getOrgXmlService();
     if ($status === "1") {
         $validationMessage = $orgElementValidator->validateOrganization($organizationData);
         if ($validationMessage) {
             $response = ['type' => 'warning', 'code' => ['message', ['message' => $validationMessage]]];
             return redirect()->back()->withResponse($response);
         }
         $messages = $xmlService->validateOrgSchema($organization, $organizationData, $settings, $orgElem);
         if ($messages != []) {
             $response = ['type' => 'danger', 'messages' => $messages, 'organization' => 'true'];
             return redirect()->back()->withResponse($response);
         }
     } else {
         if ($status === "3") {
             if (empty($settings['registry_info'][0]['publisher_id']) && empty($settings['registry_info'][0]['api_id'])) {
                 $response = ['type' => 'warning', 'code' => ['settings_registry_info', ['name' => '']]];
                 return redirect()->to('/settings')->withResponse($response);
             }
             $result = $xmlService->generateOrgXml($organization, $organizationData, $settings, $orgElem);
             if (!$result) {
                 $this->organizationManager->updateStatus($input, $organizationData);
                 $response = ['type' => 'warning', 'code' => ['publish_registry', ['name' => '']]];
                 return redirect()->back()->withResponse($response);
             }
         }
     }
     $statusLabel = ['Completed', 'Verified', 'Published'];
     $response = $this->organizationManager->updateStatus($input, $organizationData) ? ['type' => 'success', 'code' => ['org_statuses', ['name' => $statusLabel[$status - 1]]]] : ['type' => 'danger', 'code' => ['org_statuses_failed', ['name' => $statusLabel[$status - 1]]]];
     return redirect()->back()->withResponse($response);
 }