/**
  * Render client uploaded files and file upload form
  * @param web_request $request
  */
 public function executeLoadfile($request)
 {
     $client_id = $request->getParameter('id');
     $client_profile = ProfilePeer::retrieveByPK($client_id);
     $this->profile_details = $client_profile;
     $sf_user = $this->getUser();
     $sf_user_id = $sf_user->getGuardUser()->getId();
     $sf_guard_user = $sf_user->getGuardUser();
     $module = pmProjectObjectsPeer::RESOURCES;
     $filetype = pmProjectObjectsPeer::CLIENTFILES;
     $client_group = sfConfig::get('app_user_group_user_client');
     if (!($sf_user->hasHeadOfficeAdminAccess() || $sf_user->hasHeadOfficeStaffAccess())) {
         $branch_id = $sf_user->getUserBranch()->getId();
         $is_branch_owner = $sf_user->isBranchOwner($sf_user_id);
         if ($is_branch_owner) {
             $branch_ids = BranchUsersPeer::getBranchOwnerBranchIDs($sf_user_id);
         }
         $branch_users = $sf_user->checkBranchUsers($is_branch_owner ? $branch_ids : $branch_id, $client_id, $client_group);
         if ($client_id && !$branch_users || !$client_id) {
             $this->redirect('dashboard/index');
         }
     }
     $client_name = $client_profile->getsfGuardUserRelatedByUserId()->getUsername();
     $c = new Criteria();
     $c->add(CompanyUsersPeer::USER_ID, $this->getUser()->getGuardUser()->getId());
     $company = CompanyUsersPeer::doSelectOne($c);
     $company_name = $company ? $company->getCompany()->getName() : '';
     $this->clientcompany = $company_name . $client_name;
     $this->form = new ClientFileForm();
     $client_user_id = $client_profile->getUserId();
     $this->client_projects = pmProjectsPeer::getClientProjectsArrayList($client_user_id);
     if ($request->isMethod('post')) {
         $form_data = $request->getParameter('pm_project_objects');
         if ($form_data['name'] == sfConfig::get('app_client_details_otheragreement')) {
             $form_data['name'] = $form_data['name'] . '-' . $form_data['text_field_2'];
         } else {
             $form_data['name'] = $form_data['name'];
         }
         $form_data['module'] = $module;
         $form_data['type'] = $filetype;
         //$form_data['branch_id'] = $branch_id; // no need
         $form_data['created_by_id'] = $sf_guard_user->getId();
         $form_data['created_by_name'] = $sf_guard_user->getUsername();
         $form_data['integer_field_1'] = $client_user_id;
         $form_data['text_field_1'] = $request->getParameter('nfn');
         $tool = new myTools();
         if ($form_data['project_id']) {
             $folder_name = $tool->folderName($form_data['project_id'], 'project');
         } else {
             $folder_name = $tool->folderName($form_data['pj_lotno'], 'pj_lotno');
         }
         $s3_service = new AmazonS3Service();
         $s3_service->copyObject($request->getParameter('nfn'), $folder_name . '/' . $request->getParameter('nfn'));
         $s3_service->deleteObject($request->getParameter('nfn'));
         $this->form->bind($form_data, array());
         if ($this->form->isValid()) {
             $file = $this->form->getValue('varchar_field_2');
             if ($file) {
                 $pm_project_objects = $this->form->save();
                 $file_name = $pm_project_objects->getName();
                 $file_message = sfConfig::get('mod_client_messages_msg6');
                 $new_message = str_replace('new text', "'{$pm_project_objects->getPjLotno()}' - '{$file_name}'", $file_message);
                 $sf_user->setFlash('notice', $new_message);
                 $modification_message = 'Upload Client File';
                 $this->saveHistory($modification_message, $client_user_id);
                 $log = new pmActivityLogs();
                 $log->setModifications($pm_project_objects->getId());
                 $log->setAction('New File');
                 $log->setCreatedById($sf_guard_user->getId());
                 $log->setCreatedByName($sf_guard_user->getProfile()->getFullname());
                 $log->setComment('File: ' . $file_name);
                 $log->save();
             }
             $this->redirect('client/loadfile?id=' . $client_id);
         }
         $this->setTemplate('loadfile');
     }
 }