コード例 #1
0
 /**
  * 
  */
 public function addAction()
 {
     $sd_req_model = new Default_Model_Servicerequests();
     $request_form = new Default_Form_Servicerequest();
     $isUpdate = "0";
     $msgarray = array();
     $auth = Zend_Auth::getInstance();
     $grid_type = $this->_getParam('t', null);
     $status_value = $this->_getParam('v', null);
     $this->view->x_grid_type = $grid_type;
     $this->view->x_status_value = $status_value;
     if ($auth->hasIdentity()) {
         $loginUserId = $auth->getStorage()->read()->id;
         $loginuserRole = $auth->getStorage()->read()->emprole;
         $loginuserGroup = $auth->getStorage()->read()->group_id;
         $login_bu = $auth->getStorage()->read()->businessunit_id;
         $login_dept = $auth->getStorage()->read()->department_id;
         $reporting_manager = $auth->getStorage()->read()->reporting_manager;
         $org_head_flag = $auth->getStorage()->read()->is_orghead;
     }
     if ($org_head_flag == 1) {
         $this->view->ermsg = 'norecord';
         $this->render('form');
     }
     if ($grid_type != '') {
         if ($login_bu == 0) {
             $service_desk_flag = 0;
         } else {
             $bu_model = new Default_Model_Businessunits();
             $bu_data = $bu_model->getSingleUnitData($login_bu);
             $service_desk_flag = $bu_data['service_desk_flag'];
         }
         $service_types_data = $sd_req_model->getServiceTypes($login_bu, $login_dept, $service_desk_flag);
         $grid_type = sapp_Global::_decrypt($grid_type);
         $grid_type_arr = $sd_req_model->getGridtypearr();
         if ($login_bu == 0 && $login_dept == 0) {
             $msgarray['service_desk_conf_id'] = "To use service request management, please assign to any department.";
         }
         $this->view->msgarray = $msgarray;
         $this->view->form = $request_form;
         $this->view->service_types_data = $service_types_data;
         $this->view->action_name = $this->getRequest()->getActionName();
         $this->view->grid_type = $grid_type_arr[$grid_type];
         $this->view->grid_type_arr = $sd_req_model->getGridtypearr_rev();
         $this->view->status_value = $status_value;
         $id = $this->getRequest()->getParam('id', null);
         $where = "";
         $actionflag = 1;
         if ($id > 0 && is_numeric($id)) {
             //update code
             $actionflag = 2;
             $id = abs($id);
             $serviceticketdata = $sd_req_model->getServiceTicketByID($id);
             if ($serviceticketdata != false) {
                 $request_form->setDefault('service_desk_conf_id', $serviceticketdata['service_desk_conf_id']);
                 $request_form->setDefault('priority', $serviceticketdata['priority']);
                 $request_form->setDefault('description', $serviceticketdata['description']);
                 $sd_dept_model = new Default_Model_Servicedeskdepartment();
                 $servicedeskrequesttypes = $sd_dept_model->getRequestIDNameById($serviceticketdata['service_desk_conf_id']);
                 $request_form->service_request_id->addMultiOptions(array('' => 'Select Request') + $servicedeskrequesttypes);
                 $request_form->setDefault('service_request_id', $serviceticketdata['service_request_id']);
                 $request_form->submit->setLabel('Update');
             } else {
                 $this->view->ermsg = 'norecord';
             }
         }
         if ($this->getRequest()->getPost()) {
             if ($request_form->isValid($this->_request->getPost())) {
                 $service_desk_id = $this->_getParam('service_desk_id', null);
                 $service_desk_conf_id = $this->_getParam('service_desk_conf_id', null);
                 if ($service_desk_id == "") {
                     $service_desk_id = $service_desk_conf_id;
                 }
                 $service_request_id = $this->_getParam('service_request_id', null);
                 $priority = $this->_getParam('priority', null);
                 $description = $this->_getParam('description', null);
                 $attachment = $this->_getParam('attachment', null);
                 $check_raiser = $sd_req_model->check_raiser($service_desk_conf_id, $loginUserId);
                 if ($check_raiser == 'yes') {
                     $file_original_names = $this->_getParam('file_original_names', null);
                     $file_new_names = $this->_getParam('file_new_names', null);
                     $org_names = explode(',', $file_original_names);
                     $new_names = explode(',', $file_new_names);
                     $attachment_array = array();
                     for ($i = 0; $i < count($org_names); $i++) {
                         if ($new_names[$i] != '') {
                             $attachment_array[$org_names[$i]] = $new_names[$i];
                         }
                     }
                     $data = array('service_desk_id' => $service_desk_id, 'service_desk_conf_id' => $service_desk_conf_id, 'service_request_id' => $service_request_id, 'priority' => $priority, 'description' => $description, 'attachment' => count($attachment_array) > 0 ? json_encode($attachment_array) : null, 'status' => 'Open', 'reporting_manager_id' => $reporting_manager, 'raised_by' => $loginUserId, 'isactive' => 1, 'createdby' => $loginUserId, 'modifiedby' => $loginUserId, 'createddate' => gmdate("Y-m-d H:i:s"), 'modifieddate' => gmdate("Y-m-d H:i:s"));
                     $trDb = Zend_Db_Table::getDefaultAdapter();
                     // starting transaction
                     $trDb->beginTransaction();
                     try {
                         if ($id != '') {
                             $isUpdate = "1";
                             unset($data['createdby']);
                             unset($data['createdon']);
                             $where = "id = " . $id;
                             $actionflag = 2;
                             $result = $sd_req_model->SaveorUpdateRequestData($data, $where);
                             $rslt = "Request updated successfully.";
                             //start of saving history
                             $reqh_model = new Default_Model_Requesthistory();
                             $reqh_data = array('request_id' => $id, 'description' => ucfirst($rslt), 'emp_id' => $loginUserId, 'emp_name' => ucfirst($auth->getStorage()->read()->userfullname), 'emp_profileimg' => $auth->getStorage()->read()->profileimg, 'createdby' => $loginUserId, 'modifiedby' => $loginUserId, 'comments' => trim($description), 'isactive' => 1, 'createddate' => gmdate("Y-m-d H:i:s"), 'modifieddate' => gmdate("Y-m-d H:i:s"));
                             $reqh_model->SaveorUpdateRhistory($reqh_data, '');
                         } else {
                             $id = $sd_req_model->SaveorUpdateRequestData($data, '');
                             $data = array('modifiedby' => $loginUserId, 'modifieddate' => gmdate("Y-m-d H:i:s"), 'ticket_number' => "SD" . str_pad($id, 4, '0', STR_PAD_LEFT));
                             $sd_req_model->SaveorUpdateRequestData($data, 'id = ' . $id);
                             $rslt = "Request raised successfully.";
                         }
                         if (count($new_names) > 0) {
                             foreach ($new_names as $n) {
                                 if ($n != '') {
                                     if (file_exists(SD_TEMP_UPLOAD_PATH . $n)) {
                                         copy(SD_TEMP_UPLOAD_PATH . $n, SD_UPLOAD_PATH . $n);
                                         unlink(SD_TEMP_UPLOAD_PATH . $n);
                                     }
                                 }
                             }
                         }
                         $result = sapp_Global::logManager(SERVICEDESK, 1, $loginUserId, $id);
                         $this->send_req_mails($id, $isUpdate);
                         $trDb->commit();
                         $this->_helper->getHelper("FlashMessenger")->addMessage(array(array("success" => $rslt)));
                         $this->_redirect('servicerequests/index/t/' . sapp_Global::_encrypt('1'));
                     } catch (Exception $ex) {
                         $trDb->rollBack();
                         $msgarray['service_desk_conf_id'] = "Something went wrong, please try again.";
                         $this->view->msgarray = $msgarray;
                     }
                 } else {
                     $msgarray['service_desk_conf_id'] = "You cannot raise the request as you are the request receiver.";
                     $this->view->msgarray = $msgarray;
                 }
             } else {
                 $file_original_names = $this->_getParam('file_original_names', null);
                 $file_new_names = $this->_getParam('file_new_names', null);
                 $show_attachment = $this->_getParam('show_attachment', null);
                 $messages = $request_form->getMessages();
                 foreach ($messages as $key => $val) {
                     foreach ($val as $key2 => $val2) {
                         $msgarray[$key] = $val2;
                         break;
                     }
                 }
                 $this->view->msgarray = $msgarray;
                 $this->view->file_original_names = $file_original_names;
                 $this->view->file_new_names = $file_new_names;
                 $this->view->show_attachment = $show_attachment;
             }
             if (count($msgarray) > 0) {
                 $sd_dept_model = new Default_Model_Servicedeskdepartment();
                 $data = $sd_dept_model->getRequestsById($this->_getParam('service_desk_id'));
                 $ser_req_options = array('' => 'Select request');
                 if (count($data) > 0) {
                     foreach ($data as $opt) {
                         $ser_req_options[$opt['id']] = $opt['service_request_name'];
                     }
                 }
                 $request_form->service_request_id->addMultiOptions($ser_req_options);
             }
         }
     } else {
         $this->view->ermsg = 'norecord';
     }
     $this->render('form');
 }