/**
  * Returns an array of parameter values of a phone
  */
 public static function astPhoneParameterValuesToArray($astPhone)
 {
     $valuesArray = array();
     $values = astPhoneParameterValueModel::where('PHONE_ID', '=', $astPhone->PHONE_ID)->get();
     foreach ($values as $value) {
         $valuesArray[$value->parameter->NAME] = $value->VALUE;
     }
     return $valuesArray;
 }
 /**
  * Transfer the XML file with overwrite.
  */
 public function transferXMLOverwrite($id)
 {
     // create file
     $astPhone = astPhoneModel::findOrFail($id);
     $template = $astPhone->phoneTemplate->TEMPLATE;
     $values = astPhoneParameterValueModel::where('PHONE_ID', '=', $id)->get();
     // place the parameter values into the template
     foreach ($values as $value) {
         $template = str_replace('_' . $value->parameter->NAME . '_', $value->VALUE, $template);
     }
     $filename = $astPhone->phoneModel->PSN . '-' . $astPhone->MAC . '.cnf.xml';
     $filepath = 'documents/ast_xml/' . $filename;
     $outfile = fopen($filepath, "w");
     fwrite($outfile, $template);
     fclose($outfile);
     $serverIP = $astPhone->phoneLocation->SERVER_IP;
     // file transfer
     // Remote File Name and Path
     $remote_file = '/tftpboot/' . $filename;
     // FTP Account (Remote Server)
     $ftp_host = $serverIP;
     // host
     $ftp_user_name = session()->get('astServerUsername');
     // username
     $ftp_user_pass = session()->get('astServerPassword');
     // password
     session()->forget('astServerUsername');
     session()->forget('astServerPassword');
     // Connect using basic FTP
     $connect_it = ftp_connect($ftp_host);
     if ($connect_it == false) {
         Session::flash('unsuccessfulMessage', 'Could not connect.');
         return redirect()->back();
     }
     // Login to FTP
     $login_result = ftp_login($connect_it, $ftp_user_name, $ftp_user_pass);
     // If can not connect.
     if ($login_result == false) {
         Session::flash('unsuccessfulMessage', 'Could not connect.');
         return redirect()->back();
     }
     // check if file already exists
     $check_file_exist = $remote_file;
     $contents_on_server = ftp_nlist($connect_it, '/tftpboot/');
     if (in_array($check_file_exist, $contents_on_server)) {
         ftp_delete($connect_it, $remote_file);
     }
     // Send $local_file to FTP
     if (ftp_put($connect_it, $remote_file, $filepath, FTP_BINARY)) {
         // Close the connection
         ftp_close($connect_it);
         Session::flash('astMessage', 'XML file has been transferred!');
         return Redirect::route('phones');
     } else {
         Session::flash('unsuccessfulMessage', 'XML file could not be transferred!');
         return Redirect::route('showPhone', [$id]);
     }
 }
 /**
  * Delete an existing parameter.
  */
 public function delete($id)
 {
     // delete parameter values
     $astParameterValues = astPhoneParameterValueModel::where('PARAMETER_ID', '=', $id)->get();
     foreach ($astParameterValues as $astParameterValue) {
         $astParameterValue->delete();
     }
     $astParameter = astParameterModel::findOrFail($id);
     $astParameter->delete();
     Session::flash('astMessage', 'Parameter has been deleted!');
     return Redirect::route('parameters');
 }