diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/SaveRecord.php b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/SaveRecord.php index 1ef7ad42c4646b2bb6cad8dfa7f74b0608a74e02..6a9b2ee337d3382d091c91cc7fa1afe89fba85c0 100644 --- a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/SaveRecord.php +++ b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/SaveRecord.php @@ -34,60 +34,49 @@ class Mobile_WS_SaveRecord extends Mobile_WS_FetchRecordWithGrouping { } else { $values = $valuesJSONString; // Either empty or already decoded. } - $response = new Mobile_API_Response(); - if (empty($values)) { $response->setError(1501, "Values cannot be empty!"); return $response; } - try { if (vtws_recordExists($recordid)) { // Retrieve or Initalize - if (!empty($recordid)) { - $recordModel = Vtiger_Record_Model::getInstanceById($recordid, $module); - } else { - $recordModel = Vtiger_Record_Model::getCleanInstance($module); + if (!empty($recordid) && !$this->isTemplateRecordRequest($request)) { + $this->recordValues = vtws_retrieve($recordid, $current_user); + } else { + $this->recordValues = array(); } - // Set the modified values foreach($values as $name => $value) { - $recordModel->set($name, $value); + $this->recordValues[$name] = $value; } - - $moduleModel = Vtiger_Module_Model::getInstance($module); - $fieldModelList = $moduleModel->getFields(); - foreach ($fieldModelList as $fieldName => $fieldModel) { - $fieldValue = $values[$fieldName]; - $fieldDataType = $fieldModel->getFieldDataType(); - if($fieldDataType == 'time'){ - $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); - } - if($fieldValue !== null) { - if(!is_array($fieldValue) && $fieldDataType != 'currency') { - $fieldValue = trim($fieldValue); - } - $recordModel->set($fieldName, $fieldValue); - } - } - // Update or Create - if (!empty($recordid)) { - $recordModel->set('id', $recordid); - $recordModel->set('mode', 'edit'); - $recordModel->save(); - } else { - $recordModel->save(); - } - $response->setResult($recordModel->getData()); - } else { - $response->setError("RECORD_NOT_FOUND", "Record does not exist"); + // Update or Create + if (isset($this->recordValues['id'])) { + $this->recordValues = vtws_update($this->recordValues, $current_user); + } else { + // Set right target module name for Calendar/Event record + if ($module == 'Calendar') { + if (!empty($this->recordValues['eventstatus']) && $this->recordValues['activitytype'] != 'Task') { + $module = 'Events'; + } + } + // to save Source of Record while Creating + $this->recordValues['source'] = 'MOBILE'; + $this->recordValues = vtws_create($module, $this->recordValues, $current_user); + } + // Update the record id + $request->set('record', $this->recordValues['id']); + // Gather response with full details + $response = parent::process($request); return $response; - } - } catch(Exception $e) { - $response->setError($e->getCode(), $e->getMessage()); - } - return $response; + } else { + $response->setError("RECORD_NOT_FOUND", "Record does not exist"); + return $response; + } + } catch(Exception $e) { + $response->setError($e->getCode(), $e->getMessage()); + } } } \ No newline at end of file