Merged in feature/PMCORE-1388 (pull request #7374)
PMCORE-1388 Approved-by: Julio Cesar Laura Avendaño <contact@julio-laura.com>
This commit is contained in:
54
database/factories/DocumentsFactory.php
Normal file
54
database/factories/DocumentsFactory.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\Documents::class, function (Faker $faker) {
|
||||
$types = ['INPUT', 'OUTPUT', 'ATTACHED'];
|
||||
$type = $faker->randomElement($types);
|
||||
return [
|
||||
'APP_DOC_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_FILENAME' => 'image.png',
|
||||
'APP_DOC_TITLE' => '',
|
||||
'APP_DOC_COMMENT' => '',
|
||||
'DOC_VERSION' => 1,
|
||||
'APP_UID' => G::generateUniqueID(),
|
||||
'DEL_INDEX' => 1,
|
||||
'DOC_UID' => G::generateUniqueID(),
|
||||
'USR_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_TYPE' => $type,
|
||||
'APP_DOC_CREATE_DATE' => $faker->date(),
|
||||
'APP_DOC_INDEX' => 1,
|
||||
'FOLDER_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_PLUGIN' => '',
|
||||
'APP_DOC_TAGS' => '',
|
||||
'APP_DOC_STATUS' => 'ACTIVE',
|
||||
'APP_DOC_STATUS_DATE' => $faker->date(),
|
||||
'APP_DOC_FIELDNAME' => '',
|
||||
'APP_DOC_DRIVE_DOWNLOAD' => '',
|
||||
];
|
||||
});
|
||||
|
||||
// Create a document related to the case notes
|
||||
$factory->state(\ProcessMaker\Model\Documents::class, 'case_notes', function (Faker $faker) {
|
||||
return [
|
||||
'APP_DOC_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_FILENAME' => 'image.png',
|
||||
'APP_DOC_TITLE' => '',
|
||||
'APP_DOC_COMMENT' => '',
|
||||
'DOC_VERSION' => 1,
|
||||
'APP_UID' => G::generateUniqueID(),
|
||||
'DEL_INDEX' => 1,
|
||||
'DOC_UID' => G::generateUniqueID(),
|
||||
'USR_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_TYPE' => 'CASE_NOTE',
|
||||
'APP_DOC_CREATE_DATE' => $faker->date(),
|
||||
'APP_DOC_INDEX' => 1,
|
||||
'FOLDER_UID' => G::generateUniqueID(),
|
||||
'APP_DOC_PLUGIN' => '',
|
||||
'APP_DOC_TAGS' => '',
|
||||
'APP_DOC_STATUS' => 'ACTIVE',
|
||||
'APP_DOC_STATUS_DATE' => $faker->date(),
|
||||
'APP_DOC_FIELDNAME' => '',
|
||||
'APP_DOC_DRIVE_DOWNLOAD' => '',
|
||||
];
|
||||
});
|
||||
BIN
tests/resources/images/activate.png
Normal file
BIN
tests/resources/images/activate.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 750 B |
BIN
tests/resources/images/activity.gif
Normal file
BIN
tests/resources/images/activity.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.5 KiB |
BIN
tests/resources/testDocument.pdf
Normal file
BIN
tests/resources/testDocument.pdf
Normal file
Binary file not shown.
@@ -3,10 +3,14 @@
|
||||
namespace Tests\unit\workflow\engine\classes\model;
|
||||
|
||||
use AppNotes as ModelAppNotes;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\AppMessage;
|
||||
use Exception;
|
||||
use Faker\Factory;
|
||||
use ProcessMaker\Model\Application;
|
||||
use ProcessMaker\Model\AppMessage;
|
||||
use ProcessMaker\Model\AppNotes;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\Documents;
|
||||
use ProcessMaker\Model\EmailServerModel;
|
||||
use ProcessMaker\Model\User;
|
||||
use Tests\TestCase;
|
||||
|
||||
@@ -17,6 +21,17 @@ use Tests\TestCase;
|
||||
*/
|
||||
class AppNotesTest extends TestCase
|
||||
{
|
||||
private $faker;
|
||||
|
||||
/**
|
||||
* Set up method
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
$this->faker = Factory::create();
|
||||
}
|
||||
|
||||
/**
|
||||
* It test the cases notes creation
|
||||
*
|
||||
@@ -101,4 +116,111 @@ class AppNotesTest extends TestCase
|
||||
$result = $query->get()->values()->toArray();
|
||||
$this->assertNotEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test verifies the sending of the notification note with Exception.
|
||||
* @test
|
||||
* @covers \AppNotes::sendNoteNotification
|
||||
*/
|
||||
public function it_should_test_send_note_notification_with_exception()
|
||||
{
|
||||
//assert
|
||||
$this->expectException(Exception::class);
|
||||
|
||||
$appNotes = new ModelAppNotes();
|
||||
$appNotes->sendNoteNotification(null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test verifies the sending of the notification note.
|
||||
* @test
|
||||
* @covers \AppNotes::sendNoteNotification
|
||||
*/
|
||||
public function it_should_test_send_note_notification_without_user()
|
||||
{
|
||||
$user = User::where('USR_UID', '=', '00000000000000000000000000000001')
|
||||
->get()
|
||||
->first();
|
||||
$application = factory(Application::class)->create();
|
||||
$delegation = factory(Delegation::class)->create([
|
||||
'APP_UID' => $application->APP_UID,
|
||||
'USR_UID' => $user->USR_UID
|
||||
]);
|
||||
|
||||
$params = [
|
||||
$application->APP_UID,
|
||||
'',
|
||||
'',
|
||||
$user->USR_UID,
|
||||
$this->faker->email,
|
||||
$delegation->DEL_INDEX
|
||||
];
|
||||
$appNotes = new ModelAppNotes();
|
||||
$appNotes->sendNoteNotification(...$params);
|
||||
|
||||
//assert
|
||||
$appMessage = AppMessage::where('APP_UID', '=', $application->APP_UID)->get()->first()->toArray();
|
||||
$this->assertArrayHasKey('APP_UID', $appMessage);
|
||||
$this->assertEquals($appMessage['APP_UID'], $application->APP_UID);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test verifies the sending of the notification note with attach files.
|
||||
* @test
|
||||
* @covers \AppNotes::sendNoteNotification
|
||||
*/
|
||||
public function it_should_test_send_note_notification_with_attach_files()
|
||||
{
|
||||
$user = User::where('USR_UID', '=', '00000000000000000000000000000001')
|
||||
->get()
|
||||
->first();
|
||||
$application = factory(Application::class)->create();
|
||||
$delegation = factory(Delegation::class)->create([
|
||||
'APP_UID' => $application->APP_UID,
|
||||
'USR_UID' => $user->USR_UID
|
||||
]);
|
||||
$appNote = factory(AppNotes::class)->create();
|
||||
$appDocument = factory(Documents::class)->create([
|
||||
'APP_UID' => $application->APP_UID,
|
||||
'DOC_ID' => $appNote->NOTE_ID
|
||||
]);
|
||||
factory(EmailServerModel::class)->create([
|
||||
'MESS_DEFAULT' => 1
|
||||
]);
|
||||
|
||||
$params = [
|
||||
$application->APP_UID,
|
||||
$user->USR_UID,
|
||||
'',
|
||||
$user->USR_UID,
|
||||
$this->faker->email,
|
||||
$delegation->DEL_INDEX
|
||||
];
|
||||
$appNotes = new ModelAppNotes();
|
||||
$appNotes->sendNoteNotification(...$params);
|
||||
|
||||
//assert
|
||||
$appMessage = AppMessage::where('APP_UID', '=', $application->APP_UID)->get()->first()->toArray();
|
||||
$this->assertArrayHasKey('APP_UID', $appMessage);
|
||||
$this->assertEquals($appMessage['APP_UID'], $application->APP_UID);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test verify if exists attachment files.
|
||||
* @test
|
||||
* @covers \AppNotes::getAttachedFilesFromTheCaseNote
|
||||
*/
|
||||
public function it_should_test_get_attached_files_from_the_casenote()
|
||||
{
|
||||
$appNote = factory(AppNotes::class)->create();
|
||||
$appDocument = factory(Documents::class)->create([
|
||||
'DOC_ID' => $appNote->NOTE_ID
|
||||
]);
|
||||
|
||||
$appUid = $appDocument->APP_UID;
|
||||
$appNotes = new ModelAppNotes();
|
||||
$result = $appNotes->getAttachedFilesFromTheCaseNote($appNote->NOTE_ID);
|
||||
|
||||
$this->assertNotEmpty($result);
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,9 @@ namespace ProcessMaker\BusinessModel;
|
||||
use Exception;
|
||||
use G;
|
||||
use ProcessMaker\Model\Application;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\Documents;
|
||||
use ProcessMaker\Model\User;
|
||||
use RBAC;
|
||||
use Tests\TestCase;
|
||||
|
||||
@@ -15,6 +18,21 @@ use Tests\TestCase;
|
||||
*/
|
||||
class CasesTest extends TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* Set up method.
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
Delegation::truncate();
|
||||
Documents::truncate();
|
||||
Application::truncate();
|
||||
User::where('USR_ID', '=', 1)
|
||||
->where('USR_ID', '=', 2)
|
||||
->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* This checks the delete case
|
||||
*
|
||||
@@ -26,11 +44,11 @@ class CasesTest extends TestCase
|
||||
{
|
||||
// Set the RBAC
|
||||
global $RBAC;
|
||||
$_SESSION['USER_LOGGED'] = '00000000000000000000000000000002';
|
||||
$RBAC = RBAC::getSingleton(PATH_DATA, session_id());
|
||||
$_SESSION['USER_LOGGED'] = G::generateUniqueID();
|
||||
$RBAC = RBAC::getSingleton();
|
||||
$RBAC->initRBAC();
|
||||
|
||||
$application = factory(Application::class)->create();
|
||||
$application = factory(Application::class)->create(['APP_INIT_USER' => G::generateUniqueID()]);
|
||||
// Tried to delete case
|
||||
$case = new Cases();
|
||||
$case->deleteCase($application->APP_UID, $_SESSION['USER_LOGGED']);
|
||||
@@ -48,7 +66,7 @@ class CasesTest extends TestCase
|
||||
// Set the RBAC
|
||||
global $RBAC;
|
||||
$_SESSION['USER_LOGGED'] = '00000000000000000000000000000001';
|
||||
$RBAC = RBAC::getSingleton(PATH_DATA, session_id());
|
||||
$RBAC = RBAC::getSingleton();
|
||||
$RBAC->initRBAC();
|
||||
|
||||
$application = factory(Application::class)->create(['APP_STATUS' => 'TO_DO']);
|
||||
@@ -68,13 +86,50 @@ class CasesTest extends TestCase
|
||||
{
|
||||
// Set the RBAC
|
||||
global $RBAC;
|
||||
$_SESSION['USER_LOGGED'] = '00000000000000000000000000000001';
|
||||
$RBAC = RBAC::getSingleton(PATH_DATA, session_id());
|
||||
$_SESSION['USER_LOGGED'] = G::generateUniqueID();
|
||||
$RBAC = RBAC::getSingleton();
|
||||
$RBAC->initRBAC();
|
||||
|
||||
$application = factory(Application::class)->create(['APP_INIT_USER' => '00000000000000000000000000000002']);
|
||||
$application = factory(Application::class)->create(['APP_INIT_USER' => G::generateUniqueID()]);
|
||||
// Tried to delete case
|
||||
$case = new Cases();
|
||||
$case->deleteCase($application->APP_UID, $_SESSION['USER_LOGGED']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Review the upload file related to the case notes
|
||||
*
|
||||
* @covers \ProcessMaker\BusinessModel\Cases::uploadFilesInCaseNotes()
|
||||
*
|
||||
* @test
|
||||
*/
|
||||
public function it_should_upload_files_related_case_note()
|
||||
{
|
||||
$application = factory(Application::class)->create();
|
||||
factory(Delegation::class)->states('foreign_keys')->create([
|
||||
'APP_NUMBER' => $application->APP_NUMBER,
|
||||
'APP_UID' => $application->APP_UID
|
||||
]);
|
||||
// File reference to upload
|
||||
$filesReferences = [
|
||||
'activityRename.gif' => PATH_TRUNK . 'tests' . PATH_SEP . 'resources' . PATH_SEP . 'images' . PATH_SEP . 'activity.gif',
|
||||
];
|
||||
// Path of the case
|
||||
$pathCase = PATH_DB . config('system.workspace') . PATH_SEP . 'files' . PATH_SEP . $application->APP_UID . PATH_SEP;
|
||||
// Upload the file
|
||||
$case = new Cases();
|
||||
$result = $case->uploadFilesInCaseNotes('00000000000000000000000000000001', $application->APP_UID, $filesReferences);
|
||||
$this->assertNotEmpty($result['attachments']);
|
||||
$result = head($result['attachments']);
|
||||
$this->assertNotEmpty($result);
|
||||
$this->assertArrayHasKey('APP_UID', $result);
|
||||
$this->assertEquals($application->APP_UID, $result['APP_UID']);
|
||||
$this->assertArrayHasKey('APP_DOC_TYPE', $result);
|
||||
$this->assertEquals(Documents::DOC_TYPE_CASE_NOTE, $result['APP_DOC_TYPE']);
|
||||
$this->assertArrayHasKey('APP_DOC_FILENAME', $result);
|
||||
$this->assertEquals('activityRename.gif', $result['APP_DOC_FILENAME']);
|
||||
|
||||
// Remove the path created
|
||||
G::rm_dir($pathCase);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\unit\workflow\engine\src\ProcessMaker\Model;
|
||||
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use ProcessMaker\Model\AppNotes;
|
||||
use ProcessMaker\Model\Documents;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class DocumentsTest
|
||||
*
|
||||
* @coversDefaultClass \ProcessMaker\Model\Documents
|
||||
*/
|
||||
class DocumentsTest extends TestCase
|
||||
{
|
||||
use DatabaseTransactions;
|
||||
|
||||
/**
|
||||
* Review get app files related to the case notes
|
||||
*
|
||||
* @test
|
||||
*/
|
||||
public function it_test_get_case_note_files()
|
||||
{
|
||||
$appDoc = factory(Documents::class)->states('case_notes')->create();
|
||||
$doc = new Documents();
|
||||
$res = $doc->getAppFiles($appDoc->APP_UID, Documents::DOC_TYPE_CASE_NOTE);
|
||||
$this->assertNotEmpty($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test verify if exists attachment files.
|
||||
* @test
|
||||
* @covers Documents::getAttachedFilesFromTheCaseNote
|
||||
*/
|
||||
public function it_should_test_get_attached_files_from_the_casenote()
|
||||
{
|
||||
$appNote = factory(AppNotes::class)->create();
|
||||
$appDocument = factory(Documents::class)->create([
|
||||
'DOC_ID' => $appNote->NOTE_ID
|
||||
]);
|
||||
|
||||
$appUid = $appDocument->APP_UID;
|
||||
$result = Documents::getAttachedFilesFromTheCaseNote($appUid);
|
||||
|
||||
$this->assertNotEmpty($result);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\unit\workflow\src\ProcessMaker\Util\Helpers;
|
||||
|
||||
use G;
|
||||
use Tests\TestCase;
|
||||
|
||||
class SaveAppDocumentTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* It test if the file reference was uploaded
|
||||
*
|
||||
* @test
|
||||
*/
|
||||
public function it_should_copy_file_same_name()
|
||||
{
|
||||
$files = [
|
||||
'name' => PATH_TRUNK . 'tests' . PATH_SEP . 'resources' . PATH_SEP . 'images' . PATH_SEP . 'activate.png',
|
||||
'tmp_name' => PATH_TRUNK . 'tests' . PATH_SEP . 'resources' . PATH_SEP . 'images' . PATH_SEP . 'activate.png',
|
||||
];
|
||||
$appUid = G::generateUniqueID();
|
||||
$appDocUid = G::generateUniqueID();
|
||||
$pathCase = PATH_DB . config('system.workspace') . PATH_SEP . 'files' . PATH_SEP . G::getPathFromUID($appUid) . PATH_SEP;
|
||||
saveAppDocument($files, $appUid, $appDocUid, 1, false);
|
||||
$this->assertFileExists($pathCase . $appDocUid . '_1.png');
|
||||
G::rm_dir($pathCase);
|
||||
}
|
||||
|
||||
/**
|
||||
* It test if the file reference was uploaded
|
||||
*
|
||||
* @test
|
||||
*/
|
||||
public function it_should_copy_file_different_name()
|
||||
{
|
||||
$files = [
|
||||
'name' => 'activityRename.gif',
|
||||
'tmp_name' => PATH_TRUNK . 'tests' . PATH_SEP . 'resources' . PATH_SEP . 'images' . PATH_SEP . 'activity.gif',
|
||||
];
|
||||
$appUid = G::generateUniqueID();
|
||||
$appDocUid = G::generateUniqueID();
|
||||
$pathCase = PATH_DB . config('system.workspace') . PATH_SEP . 'files' . PATH_SEP . G::getPathFromUID($appUid) . PATH_SEP;
|
||||
saveAppDocument($files, $appUid, $appDocUid, 1, false);
|
||||
$this->assertFileExists($pathCase . $appDocUid . '_1.gif');
|
||||
G::rm_dir($pathCase);
|
||||
}
|
||||
}
|
||||
@@ -112,6 +112,43 @@ class ValidationUploadedFilesTest extends TestCase
|
||||
$this->assertEquals(0, $result->getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* This test verify validation rules for files post in cases notes.
|
||||
* @test
|
||||
* @covers ::runRulesForPostFilesOfNote
|
||||
*/
|
||||
public function it_should_test_run_rules_for_post_files_of_note()
|
||||
{
|
||||
//assert for file has not exist
|
||||
$file = [
|
||||
'filename' => 'testDocument.pdf',
|
||||
'path' => "testDocument.pdf"
|
||||
];
|
||||
$validation = new ValidationUploadedFiles();
|
||||
$result = $validation->runRulesForPostFilesOfNote($file);
|
||||
$this->assertTrue($result->fails());
|
||||
|
||||
//assert for file has not valid extension
|
||||
$file = [
|
||||
'filename' => 'projectData.json',
|
||||
'path' => PATH_TRUNK . "tests/resources/projectData.json"
|
||||
];
|
||||
$validation = new ValidationUploadedFiles();
|
||||
$result = $validation->runRulesForPostFilesOfNote($file);
|
||||
$this->assertTrue($result->fails());
|
||||
|
||||
//assert the file exists and has valid extension
|
||||
$file = [
|
||||
'filename' => 'testDocument.pdf',
|
||||
'path' => PATH_TRUNK . "tests/resources/testDocument.pdf"
|
||||
];
|
||||
$validation = new ValidationUploadedFiles();
|
||||
$result = $validation->runRulesForPostFilesOfNote($file);
|
||||
$this->assertFalse($result->fails());
|
||||
$this->assertEmpty($result->getMessage());
|
||||
$this->assertEquals(0, $result->getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* It deletes the images created
|
||||
*/
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
use App\Jobs\EmailEvent;
|
||||
use Illuminate\Support\Facades\Crypt;
|
||||
use ProcessMaker\BusinessModel\Cases as BmCases;
|
||||
use ProcessMaker\BusinessModel\EmailServer;
|
||||
/*----------------------------------********---------------------------------*/
|
||||
use ProcessMaker\ChangeLog\ChangeLog;
|
||||
@@ -3420,16 +3421,17 @@ class WsBase
|
||||
/**
|
||||
* Add case note
|
||||
*
|
||||
* @param string caseUid : ID of the case.
|
||||
* @param string processUid : ID of the process.
|
||||
* @param string taskUid : ID of the task.
|
||||
* @param string userUid : The unique ID of the user who will add note case.
|
||||
* @param string note : Note of the case.
|
||||
* @param int sendMail : Optional parameter. If set to 1, will send an email to all participants in the case.
|
||||
* @param string $caseUid, ID of the case.
|
||||
* @param string $processUid, ID of the process.
|
||||
* @param string $taskUid, ID of the task.
|
||||
* @param string $userUid, The unique ID of the user who will add note case.
|
||||
* @param string $note, Note of the case.
|
||||
* @param int $sendMail, Optional parameter. If set to 1, will send an email to all participants in the case.
|
||||
* @param array $files, Optional parameter. This is an array of files.
|
||||
*
|
||||
* @return $result will return an object
|
||||
* @return object
|
||||
*/
|
||||
public function addCaseNote($caseUid, $processUid, $taskUid, $userUid, $note, $sendMail = 1)
|
||||
public function addCaseNote($caseUid, $processUid, $taskUid, $userUid, $note, $sendMail = 1, $files = [])
|
||||
{
|
||||
try {
|
||||
if (empty($caseUid)) {
|
||||
@@ -3474,8 +3476,8 @@ class WsBase
|
||||
}
|
||||
|
||||
//Add note case
|
||||
$appNote = new AppNotes();
|
||||
$response = $appNote->addCaseNote($caseUid, $userUid, $note, $sendMail);
|
||||
$appNote = new BmCases();
|
||||
$response = $appNote->addNote($caseUid, $userUid, $note, $sendMail, $files);
|
||||
|
||||
//Response
|
||||
$result = new WsResponse(0, G::LoadTranslation("ID_COMMAND_EXECUTED_SUCCESSFULLY"));
|
||||
|
||||
@@ -3017,13 +3017,15 @@ function PMFUnpauseCase ($caseUid, $delIndex, $userUid)
|
||||
* @param string(32) | $userUid | ID user | The unique ID of the user who will add note case.
|
||||
* @param string | $note | Note of the case | Note of the case.
|
||||
* @param int | $sendMail = 1 | Send mail | Optional parameter. If set to 1, will send an email to all participants in the case.
|
||||
* @param array | $files | Array of files | An array of files (full paths) to be attached to the case notes.
|
||||
*
|
||||
* @return int | $result | Result of the add a case note | Returns 1 if the note has been added to the case.; otherwise, returns 0 if an error occurred.
|
||||
*
|
||||
*/
|
||||
function PMFAddCaseNote($caseUid, $processUid, $taskUid, $userUid, $note, $sendMail = 1)
|
||||
function PMFAddCaseNote($caseUid, $processUid, $taskUid, $userUid, $note, $sendMail = 1, $files = [])
|
||||
{
|
||||
$ws = new WsBase();
|
||||
$result = $ws->addCaseNote($caseUid, $processUid, $taskUid, $userUid, $note, $sendMail);
|
||||
$result = $ws->addCaseNote($caseUid, $processUid, $taskUid, $userUid, $note, $sendMail, $files);
|
||||
|
||||
if ($result->status_code == 0) {
|
||||
return 1;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
use ProcessMaker\Core\System;
|
||||
use ProcessMaker\Model\Documents;
|
||||
use ProcessMaker\Util\DateTime;
|
||||
|
||||
/**
|
||||
@@ -180,21 +181,29 @@ class AppNotes extends BaseAppNotes
|
||||
* @param string $noteRecipients
|
||||
* @param string $from
|
||||
* @param integer $delIndex
|
||||
* @param integer $noteId
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*
|
||||
* @see AppNotes->addCaseNote()
|
||||
* @see AppNotes->postNewNote()
|
||||
* @see workflow/engine/src/ProcessMaker/Util/helpers.php::postNote()
|
||||
*/
|
||||
public function sendNoteNotification ($appUid, $usrUid, $noteContent, $noteRecipients, $from = '', $delIndex = 0)
|
||||
*/
|
||||
public function sendNoteNotification(
|
||||
$appUid,
|
||||
$usrUid,
|
||||
$noteContent,
|
||||
$noteRecipients,
|
||||
$from = '',
|
||||
$delIndex = 0,
|
||||
$noteId = 0
|
||||
)
|
||||
{
|
||||
try {
|
||||
|
||||
$configuration = System::getEmailConfiguration();
|
||||
|
||||
$msgError = "";
|
||||
if (! isset( $configuration['MESS_ENABLED'] ) || $configuration['MESS_ENABLED'] != '1') {
|
||||
if (!isset($configuration['MESS_ENABLED']) || $configuration['MESS_ENABLED'] != '1') {
|
||||
$msgError = "The default configuration wasn't defined";
|
||||
$configuration['MESS_ENGINE'] = '';
|
||||
}
|
||||
@@ -211,20 +220,31 @@ class AppNotes extends BaseAppNotes
|
||||
$cases = new Cases();
|
||||
$fieldCase = $cases->loadCase($appUid, $delIndex);
|
||||
$configNoteNotification['subject'] = G::LoadTranslation('ID_MESSAGE_SUBJECT_NOTE_NOTIFICATION') . " @#APP_TITLE ";
|
||||
|
||||
//Define the body for the notification
|
||||
$configNoteNotification['body'] = $this->getBodyCaseNote($authorName, $noteContent);
|
||||
$body = nl2br(G::replaceDataField($configNoteNotification['body'], $fieldCase, 'mysql', false));
|
||||
|
||||
// Get the files related to the specific case note
|
||||
if ($noteId !== 0) {
|
||||
$attachFileLinks = $this->getAttachedFilesFromTheCaseNote($noteId);
|
||||
}
|
||||
|
||||
if (!empty($attachFileLinks)) {
|
||||
$body = $body . "<br />" . G::LoadTranslation('ID_ATTACHED_FILES') . ": <br />" . implode("<br />", $attachFileLinks);
|
||||
}
|
||||
$users = new Users();
|
||||
$recipientsArray = explode(",", $noteRecipients);
|
||||
|
||||
foreach ($recipientsArray as $recipientUid) {
|
||||
$userInfo = $users->load($recipientUid);
|
||||
$to = ((($userInfo['USR_FIRSTNAME'] != '') || ($userInfo['USR_LASTNAME'] != '')) ? $userInfo['USR_FIRSTNAME'] . ' ' . $userInfo['USR_LASTNAME'] . ' ' : '') . '<' . $userInfo['USR_EMAIL'] . '>';
|
||||
$ifUserNameDefined = $userInfo['USR_FIRSTNAME'] != '' || $userInfo['USR_LASTNAME'] != '';
|
||||
$to = ($ifUserNameDefined ? $userInfo['USR_FIRSTNAME'] . ' ' . $userInfo['USR_LASTNAME'] . ' ' : '') . '<' . $userInfo['USR_EMAIL'] . '>';
|
||||
|
||||
$spool = new SpoolRun();
|
||||
$spool->setConfig($configuration);
|
||||
$messageArray = AppMessage::buildMessageRow(
|
||||
|
||||
$parameters = [
|
||||
'',
|
||||
$appUid,
|
||||
$delIndex,
|
||||
@@ -244,7 +264,8 @@ class AppNotes extends BaseAppNotes
|
||||
(isset($fieldCase['APP_NUMBER'])) ? $fieldCase['APP_NUMBER'] : 0,
|
||||
(isset($fieldCase['PRO_ID'])) ? $fieldCase['PRO_ID'] : 0,
|
||||
(isset($fieldCase['TAS_ID'])) ? $fieldCase['TAS_ID'] : 0
|
||||
);
|
||||
];
|
||||
$messageArray = AppMessage::buildMessageRow(...$parameters);
|
||||
$spool->create($messageArray);
|
||||
|
||||
if ($msgError == '') {
|
||||
@@ -252,14 +273,30 @@ class AppNotes extends BaseAppNotes
|
||||
$spool->sendMail();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//Send derivation notification - End
|
||||
} catch (Exception $exception) {
|
||||
throw $exception;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get attached files from a specific case note
|
||||
* @param int $docId
|
||||
* @return array
|
||||
*/
|
||||
public function getAttachedFilesFromTheCaseNote(int $docId): array
|
||||
{
|
||||
$attachFileLinks = [];
|
||||
$url = System::getServerMainPath();
|
||||
$result = Documents::getFiles($docId);
|
||||
foreach ($result as $item) {
|
||||
$href = $url . "/cases/casesShowCaseNotes?a={$item['APP_DOC_UID']}&v={$item['DOC_VERSION']}";
|
||||
$attachFileLinks[] = "<a href='{$href}'>{$item['APP_DOC_FILENAME']}</a>";
|
||||
}
|
||||
|
||||
return $attachFileLinks;
|
||||
}
|
||||
|
||||
public function addCaseNote($applicationUid, $userUid, $note, $sendMail)
|
||||
{
|
||||
$response = $this->postNewNote($applicationUid, $userUid, $note, false);
|
||||
|
||||
@@ -81,6 +81,8 @@ class AppDocumentMapBuilder
|
||||
|
||||
$tMap->addColumn('DOC_UID', 'DocUid', 'string', CreoleTypes::VARCHAR, true, 32);
|
||||
|
||||
$tMap->addColumn('DOC_ID', 'DocId', 'int', CreoleTypes::INTEGER, false, null);
|
||||
|
||||
$tMap->addColumn('USR_UID', 'UsrUid', 'string', CreoleTypes::VARCHAR, true, 32);
|
||||
|
||||
$tMap->addColumn('APP_DOC_TYPE', 'AppDocType', 'string', CreoleTypes::VARCHAR, true, 32);
|
||||
@@ -127,7 +129,7 @@ class AppDocumentMapBuilder
|
||||
|
||||
$tMap->addValidator('USR_UID', 'required', 'propel.validator.RequiredValidator', '', 'User UID is required.');
|
||||
|
||||
$tMap->addValidator('APP_DOC_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'INPUT|OUTPUT|ATTACHED', 'Please select a valid document type.');
|
||||
$tMap->addValidator('APP_DOC_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'INPUT|OUTPUT|ATTACHED|CASE_NOTE', 'Please select a valid document type.');
|
||||
|
||||
$tMap->addValidator('APP_DOC_TYPE', 'required', 'propel.validator.RequiredValidator', '', 'Application Document Type is required.');
|
||||
|
||||
|
||||
@@ -63,7 +63,9 @@ class AppNotesMapBuilder
|
||||
$tMap = $this->dbMap->addTable('APP_NOTES');
|
||||
$tMap->setPhpName('AppNotes');
|
||||
|
||||
$tMap->setUseIdGenerator(false);
|
||||
$tMap->setUseIdGenerator(true);
|
||||
|
||||
$tMap->addColumn('NOTE_ID', 'NoteId', 'int', CreoleTypes::INTEGER, true, null);
|
||||
|
||||
$tMap->addColumn('APP_UID', 'AppUid', 'string', CreoleTypes::VARCHAR, true, 32);
|
||||
|
||||
|
||||
@@ -75,6 +75,12 @@ abstract class BaseAppDocument extends BaseObject implements Persistent
|
||||
*/
|
||||
protected $doc_uid = '';
|
||||
|
||||
/**
|
||||
* The value for the doc_id field.
|
||||
* @var int
|
||||
*/
|
||||
protected $doc_id = 0;
|
||||
|
||||
/**
|
||||
* The value for the usr_uid field.
|
||||
* @var string
|
||||
@@ -255,6 +261,17 @@ abstract class BaseAppDocument extends BaseObject implements Persistent
|
||||
return $this->doc_uid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [doc_id] column value.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getDocId()
|
||||
{
|
||||
|
||||
return $this->doc_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [usr_uid] column value.
|
||||
*
|
||||
@@ -616,6 +633,28 @@ abstract class BaseAppDocument extends BaseObject implements Persistent
|
||||
|
||||
} // setDocUid()
|
||||
|
||||
/**
|
||||
* Set the value of [doc_id] column.
|
||||
*
|
||||
* @param int $v new value
|
||||
* @return void
|
||||
*/
|
||||
public function setDocId($v)
|
||||
{
|
||||
|
||||
// Since the native PHP type for this column is integer,
|
||||
// we will cast the input value to an int (if it is not).
|
||||
if ($v !== null && !is_int($v) && is_numeric($v)) {
|
||||
$v = (int) $v;
|
||||
}
|
||||
|
||||
if ($this->doc_id !== $v || $v === 0) {
|
||||
$this->doc_id = $v;
|
||||
$this->modifiedColumns[] = AppDocumentPeer::DOC_ID;
|
||||
}
|
||||
|
||||
} // setDocId()
|
||||
|
||||
/**
|
||||
* Set the value of [usr_uid] column.
|
||||
*
|
||||
@@ -949,38 +988,40 @@ abstract class BaseAppDocument extends BaseObject implements Persistent
|
||||
|
||||
$this->doc_uid = $rs->getString($startcol + 7);
|
||||
|
||||
$this->usr_uid = $rs->getString($startcol + 8);
|
||||
$this->doc_id = $rs->getInt($startcol + 8);
|
||||
|
||||
$this->app_doc_type = $rs->getString($startcol + 9);
|
||||
$this->usr_uid = $rs->getString($startcol + 9);
|
||||
|
||||
$this->app_doc_create_date = $rs->getTimestamp($startcol + 10, null);
|
||||
$this->app_doc_type = $rs->getString($startcol + 10);
|
||||
|
||||
$this->app_doc_index = $rs->getInt($startcol + 11);
|
||||
$this->app_doc_create_date = $rs->getTimestamp($startcol + 11, null);
|
||||
|
||||
$this->folder_uid = $rs->getString($startcol + 12);
|
||||
$this->app_doc_index = $rs->getInt($startcol + 12);
|
||||
|
||||
$this->app_doc_plugin = $rs->getString($startcol + 13);
|
||||
$this->folder_uid = $rs->getString($startcol + 13);
|
||||
|
||||
$this->app_doc_tags = $rs->getString($startcol + 14);
|
||||
$this->app_doc_plugin = $rs->getString($startcol + 14);
|
||||
|
||||
$this->app_doc_status = $rs->getString($startcol + 15);
|
||||
$this->app_doc_tags = $rs->getString($startcol + 15);
|
||||
|
||||
$this->app_doc_status_date = $rs->getTimestamp($startcol + 16, null);
|
||||
$this->app_doc_status = $rs->getString($startcol + 16);
|
||||
|
||||
$this->app_doc_fieldname = $rs->getString($startcol + 17);
|
||||
$this->app_doc_status_date = $rs->getTimestamp($startcol + 17, null);
|
||||
|
||||
$this->app_doc_drive_download = $rs->getString($startcol + 18);
|
||||
$this->app_doc_fieldname = $rs->getString($startcol + 18);
|
||||
|
||||
$this->sync_with_drive = $rs->getString($startcol + 19);
|
||||
$this->app_doc_drive_download = $rs->getString($startcol + 19);
|
||||
|
||||
$this->sync_permissions = $rs->getString($startcol + 20);
|
||||
$this->sync_with_drive = $rs->getString($startcol + 20);
|
||||
|
||||
$this->sync_permissions = $rs->getString($startcol + 21);
|
||||
|
||||
$this->resetModified();
|
||||
|
||||
$this->setNew(false);
|
||||
|
||||
// FIXME - using NUM_COLUMNS may be clearer.
|
||||
return $startcol + 21; // 21 = AppDocumentPeer::NUM_COLUMNS - AppDocumentPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
return $startcol + 22; // 22 = AppDocumentPeer::NUM_COLUMNS - AppDocumentPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
|
||||
} catch (Exception $e) {
|
||||
throw new PropelException("Error populating AppDocument object", $e);
|
||||
@@ -1209,42 +1250,45 @@ abstract class BaseAppDocument extends BaseObject implements Persistent
|
||||
return $this->getDocUid();
|
||||
break;
|
||||
case 8:
|
||||
return $this->getUsrUid();
|
||||
return $this->getDocId();
|
||||
break;
|
||||
case 9:
|
||||
return $this->getAppDocType();
|
||||
return $this->getUsrUid();
|
||||
break;
|
||||
case 10:
|
||||
return $this->getAppDocCreateDate();
|
||||
return $this->getAppDocType();
|
||||
break;
|
||||
case 11:
|
||||
return $this->getAppDocIndex();
|
||||
return $this->getAppDocCreateDate();
|
||||
break;
|
||||
case 12:
|
||||
return $this->getFolderUid();
|
||||
return $this->getAppDocIndex();
|
||||
break;
|
||||
case 13:
|
||||
return $this->getAppDocPlugin();
|
||||
return $this->getFolderUid();
|
||||
break;
|
||||
case 14:
|
||||
return $this->getAppDocTags();
|
||||
return $this->getAppDocPlugin();
|
||||
break;
|
||||
case 15:
|
||||
return $this->getAppDocStatus();
|
||||
return $this->getAppDocTags();
|
||||
break;
|
||||
case 16:
|
||||
return $this->getAppDocStatusDate();
|
||||
return $this->getAppDocStatus();
|
||||
break;
|
||||
case 17:
|
||||
return $this->getAppDocFieldname();
|
||||
return $this->getAppDocStatusDate();
|
||||
break;
|
||||
case 18:
|
||||
return $this->getAppDocDriveDownload();
|
||||
return $this->getAppDocFieldname();
|
||||
break;
|
||||
case 19:
|
||||
return $this->getSyncWithDrive();
|
||||
return $this->getAppDocDriveDownload();
|
||||
break;
|
||||
case 20:
|
||||
return $this->getSyncWithDrive();
|
||||
break;
|
||||
case 21:
|
||||
return $this->getSyncPermissions();
|
||||
break;
|
||||
default:
|
||||
@@ -1275,19 +1319,20 @@ abstract class BaseAppDocument extends BaseObject implements Persistent
|
||||
$keys[5] => $this->getAppUid(),
|
||||
$keys[6] => $this->getDelIndex(),
|
||||
$keys[7] => $this->getDocUid(),
|
||||
$keys[8] => $this->getUsrUid(),
|
||||
$keys[9] => $this->getAppDocType(),
|
||||
$keys[10] => $this->getAppDocCreateDate(),
|
||||
$keys[11] => $this->getAppDocIndex(),
|
||||
$keys[12] => $this->getFolderUid(),
|
||||
$keys[13] => $this->getAppDocPlugin(),
|
||||
$keys[14] => $this->getAppDocTags(),
|
||||
$keys[15] => $this->getAppDocStatus(),
|
||||
$keys[16] => $this->getAppDocStatusDate(),
|
||||
$keys[17] => $this->getAppDocFieldname(),
|
||||
$keys[18] => $this->getAppDocDriveDownload(),
|
||||
$keys[19] => $this->getSyncWithDrive(),
|
||||
$keys[20] => $this->getSyncPermissions(),
|
||||
$keys[8] => $this->getDocId(),
|
||||
$keys[9] => $this->getUsrUid(),
|
||||
$keys[10] => $this->getAppDocType(),
|
||||
$keys[11] => $this->getAppDocCreateDate(),
|
||||
$keys[12] => $this->getAppDocIndex(),
|
||||
$keys[13] => $this->getFolderUid(),
|
||||
$keys[14] => $this->getAppDocPlugin(),
|
||||
$keys[15] => $this->getAppDocTags(),
|
||||
$keys[16] => $this->getAppDocStatus(),
|
||||
$keys[17] => $this->getAppDocStatusDate(),
|
||||
$keys[18] => $this->getAppDocFieldname(),
|
||||
$keys[19] => $this->getAppDocDriveDownload(),
|
||||
$keys[20] => $this->getSyncWithDrive(),
|
||||
$keys[21] => $this->getSyncPermissions(),
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
@@ -1344,42 +1389,45 @@ abstract class BaseAppDocument extends BaseObject implements Persistent
|
||||
$this->setDocUid($value);
|
||||
break;
|
||||
case 8:
|
||||
$this->setUsrUid($value);
|
||||
$this->setDocId($value);
|
||||
break;
|
||||
case 9:
|
||||
$this->setAppDocType($value);
|
||||
$this->setUsrUid($value);
|
||||
break;
|
||||
case 10:
|
||||
$this->setAppDocCreateDate($value);
|
||||
$this->setAppDocType($value);
|
||||
break;
|
||||
case 11:
|
||||
$this->setAppDocIndex($value);
|
||||
$this->setAppDocCreateDate($value);
|
||||
break;
|
||||
case 12:
|
||||
$this->setFolderUid($value);
|
||||
$this->setAppDocIndex($value);
|
||||
break;
|
||||
case 13:
|
||||
$this->setAppDocPlugin($value);
|
||||
$this->setFolderUid($value);
|
||||
break;
|
||||
case 14:
|
||||
$this->setAppDocTags($value);
|
||||
$this->setAppDocPlugin($value);
|
||||
break;
|
||||
case 15:
|
||||
$this->setAppDocStatus($value);
|
||||
$this->setAppDocTags($value);
|
||||
break;
|
||||
case 16:
|
||||
$this->setAppDocStatusDate($value);
|
||||
$this->setAppDocStatus($value);
|
||||
break;
|
||||
case 17:
|
||||
$this->setAppDocFieldname($value);
|
||||
$this->setAppDocStatusDate($value);
|
||||
break;
|
||||
case 18:
|
||||
$this->setAppDocDriveDownload($value);
|
||||
$this->setAppDocFieldname($value);
|
||||
break;
|
||||
case 19:
|
||||
$this->setSyncWithDrive($value);
|
||||
$this->setAppDocDriveDownload($value);
|
||||
break;
|
||||
case 20:
|
||||
$this->setSyncWithDrive($value);
|
||||
break;
|
||||
case 21:
|
||||
$this->setSyncPermissions($value);
|
||||
break;
|
||||
} // switch()
|
||||
@@ -1438,55 +1486,59 @@ abstract class BaseAppDocument extends BaseObject implements Persistent
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[8], $arr)) {
|
||||
$this->setUsrUid($arr[$keys[8]]);
|
||||
$this->setDocId($arr[$keys[8]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[9], $arr)) {
|
||||
$this->setAppDocType($arr[$keys[9]]);
|
||||
$this->setUsrUid($arr[$keys[9]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[10], $arr)) {
|
||||
$this->setAppDocCreateDate($arr[$keys[10]]);
|
||||
$this->setAppDocType($arr[$keys[10]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[11], $arr)) {
|
||||
$this->setAppDocIndex($arr[$keys[11]]);
|
||||
$this->setAppDocCreateDate($arr[$keys[11]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[12], $arr)) {
|
||||
$this->setFolderUid($arr[$keys[12]]);
|
||||
$this->setAppDocIndex($arr[$keys[12]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[13], $arr)) {
|
||||
$this->setAppDocPlugin($arr[$keys[13]]);
|
||||
$this->setFolderUid($arr[$keys[13]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[14], $arr)) {
|
||||
$this->setAppDocTags($arr[$keys[14]]);
|
||||
$this->setAppDocPlugin($arr[$keys[14]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[15], $arr)) {
|
||||
$this->setAppDocStatus($arr[$keys[15]]);
|
||||
$this->setAppDocTags($arr[$keys[15]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[16], $arr)) {
|
||||
$this->setAppDocStatusDate($arr[$keys[16]]);
|
||||
$this->setAppDocStatus($arr[$keys[16]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[17], $arr)) {
|
||||
$this->setAppDocFieldname($arr[$keys[17]]);
|
||||
$this->setAppDocStatusDate($arr[$keys[17]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[18], $arr)) {
|
||||
$this->setAppDocDriveDownload($arr[$keys[18]]);
|
||||
$this->setAppDocFieldname($arr[$keys[18]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[19], $arr)) {
|
||||
$this->setSyncWithDrive($arr[$keys[19]]);
|
||||
$this->setAppDocDriveDownload($arr[$keys[19]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[20], $arr)) {
|
||||
$this->setSyncPermissions($arr[$keys[20]]);
|
||||
$this->setSyncWithDrive($arr[$keys[20]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[21], $arr)) {
|
||||
$this->setSyncPermissions($arr[$keys[21]]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1532,6 +1584,10 @@ abstract class BaseAppDocument extends BaseObject implements Persistent
|
||||
$criteria->add(AppDocumentPeer::DOC_UID, $this->doc_uid);
|
||||
}
|
||||
|
||||
if ($this->isColumnModified(AppDocumentPeer::DOC_ID)) {
|
||||
$criteria->add(AppDocumentPeer::DOC_ID, $this->doc_id);
|
||||
}
|
||||
|
||||
if ($this->isColumnModified(AppDocumentPeer::USR_UID)) {
|
||||
$criteria->add(AppDocumentPeer::USR_UID, $this->usr_uid);
|
||||
}
|
||||
@@ -1662,6 +1718,8 @@ abstract class BaseAppDocument extends BaseObject implements Persistent
|
||||
|
||||
$copyObj->setDocUid($this->doc_uid);
|
||||
|
||||
$copyObj->setDocId($this->doc_id);
|
||||
|
||||
$copyObj->setUsrUid($this->usr_uid);
|
||||
|
||||
$copyObj->setAppDocType($this->app_doc_type);
|
||||
|
||||
@@ -25,7 +25,7 @@ abstract class BaseAppDocumentPeer
|
||||
const CLASS_DEFAULT = 'classes.model.AppDocument';
|
||||
|
||||
/** The total number of columns. */
|
||||
const NUM_COLUMNS = 21;
|
||||
const NUM_COLUMNS = 22;
|
||||
|
||||
/** The number of lazy-loaded columns. */
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
@@ -55,6 +55,9 @@ abstract class BaseAppDocumentPeer
|
||||
/** the column name for the DOC_UID field */
|
||||
const DOC_UID = 'APP_DOCUMENT.DOC_UID';
|
||||
|
||||
/** the column name for the DOC_ID field */
|
||||
const DOC_ID = 'APP_DOCUMENT.DOC_ID';
|
||||
|
||||
/** the column name for the USR_UID field */
|
||||
const USR_UID = 'APP_DOCUMENT.USR_UID';
|
||||
|
||||
@@ -105,10 +108,10 @@ abstract class BaseAppDocumentPeer
|
||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
private static $fieldNames = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('AppDocUid', 'AppDocFilename', 'AppDocTitle', 'AppDocComment', 'DocVersion', 'AppUid', 'DelIndex', 'DocUid', 'UsrUid', 'AppDocType', 'AppDocCreateDate', 'AppDocIndex', 'FolderUid', 'AppDocPlugin', 'AppDocTags', 'AppDocStatus', 'AppDocStatusDate', 'AppDocFieldname', 'AppDocDriveDownload', 'SyncWithDrive', 'SyncPermissions', ),
|
||||
BasePeer::TYPE_COLNAME => array (AppDocumentPeer::APP_DOC_UID, AppDocumentPeer::APP_DOC_FILENAME, AppDocumentPeer::APP_DOC_TITLE, AppDocumentPeer::APP_DOC_COMMENT, AppDocumentPeer::DOC_VERSION, AppDocumentPeer::APP_UID, AppDocumentPeer::DEL_INDEX, AppDocumentPeer::DOC_UID, AppDocumentPeer::USR_UID, AppDocumentPeer::APP_DOC_TYPE, AppDocumentPeer::APP_DOC_CREATE_DATE, AppDocumentPeer::APP_DOC_INDEX, AppDocumentPeer::FOLDER_UID, AppDocumentPeer::APP_DOC_PLUGIN, AppDocumentPeer::APP_DOC_TAGS, AppDocumentPeer::APP_DOC_STATUS, AppDocumentPeer::APP_DOC_STATUS_DATE, AppDocumentPeer::APP_DOC_FIELDNAME, AppDocumentPeer::APP_DOC_DRIVE_DOWNLOAD, AppDocumentPeer::SYNC_WITH_DRIVE, AppDocumentPeer::SYNC_PERMISSIONS, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('APP_DOC_UID', 'APP_DOC_FILENAME', 'APP_DOC_TITLE', 'APP_DOC_COMMENT', 'DOC_VERSION', 'APP_UID', 'DEL_INDEX', 'DOC_UID', 'USR_UID', 'APP_DOC_TYPE', 'APP_DOC_CREATE_DATE', 'APP_DOC_INDEX', 'FOLDER_UID', 'APP_DOC_PLUGIN', 'APP_DOC_TAGS', 'APP_DOC_STATUS', 'APP_DOC_STATUS_DATE', 'APP_DOC_FIELDNAME', 'APP_DOC_DRIVE_DOWNLOAD', 'SYNC_WITH_DRIVE', 'SYNC_PERMISSIONS', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, )
|
||||
BasePeer::TYPE_PHPNAME => array ('AppDocUid', 'AppDocFilename', 'AppDocTitle', 'AppDocComment', 'DocVersion', 'AppUid', 'DelIndex', 'DocUid', 'DocId', 'UsrUid', 'AppDocType', 'AppDocCreateDate', 'AppDocIndex', 'FolderUid', 'AppDocPlugin', 'AppDocTags', 'AppDocStatus', 'AppDocStatusDate', 'AppDocFieldname', 'AppDocDriveDownload', 'SyncWithDrive', 'SyncPermissions', ),
|
||||
BasePeer::TYPE_COLNAME => array (AppDocumentPeer::APP_DOC_UID, AppDocumentPeer::APP_DOC_FILENAME, AppDocumentPeer::APP_DOC_TITLE, AppDocumentPeer::APP_DOC_COMMENT, AppDocumentPeer::DOC_VERSION, AppDocumentPeer::APP_UID, AppDocumentPeer::DEL_INDEX, AppDocumentPeer::DOC_UID, AppDocumentPeer::DOC_ID, AppDocumentPeer::USR_UID, AppDocumentPeer::APP_DOC_TYPE, AppDocumentPeer::APP_DOC_CREATE_DATE, AppDocumentPeer::APP_DOC_INDEX, AppDocumentPeer::FOLDER_UID, AppDocumentPeer::APP_DOC_PLUGIN, AppDocumentPeer::APP_DOC_TAGS, AppDocumentPeer::APP_DOC_STATUS, AppDocumentPeer::APP_DOC_STATUS_DATE, AppDocumentPeer::APP_DOC_FIELDNAME, AppDocumentPeer::APP_DOC_DRIVE_DOWNLOAD, AppDocumentPeer::SYNC_WITH_DRIVE, AppDocumentPeer::SYNC_PERMISSIONS, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('APP_DOC_UID', 'APP_DOC_FILENAME', 'APP_DOC_TITLE', 'APP_DOC_COMMENT', 'DOC_VERSION', 'APP_UID', 'DEL_INDEX', 'DOC_UID', 'DOC_ID', 'USR_UID', 'APP_DOC_TYPE', 'APP_DOC_CREATE_DATE', 'APP_DOC_INDEX', 'FOLDER_UID', 'APP_DOC_PLUGIN', 'APP_DOC_TAGS', 'APP_DOC_STATUS', 'APP_DOC_STATUS_DATE', 'APP_DOC_FIELDNAME', 'APP_DOC_DRIVE_DOWNLOAD', 'SYNC_WITH_DRIVE', 'SYNC_PERMISSIONS', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, )
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -118,10 +121,10 @@ abstract class BaseAppDocumentPeer
|
||||
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
private static $fieldKeys = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('AppDocUid' => 0, 'AppDocFilename' => 1, 'AppDocTitle' => 2, 'AppDocComment' => 3, 'DocVersion' => 4, 'AppUid' => 5, 'DelIndex' => 6, 'DocUid' => 7, 'UsrUid' => 8, 'AppDocType' => 9, 'AppDocCreateDate' => 10, 'AppDocIndex' => 11, 'FolderUid' => 12, 'AppDocPlugin' => 13, 'AppDocTags' => 14, 'AppDocStatus' => 15, 'AppDocStatusDate' => 16, 'AppDocFieldname' => 17, 'AppDocDriveDownload' => 18, 'SyncWithDrive' => 19, 'SyncPermissions' => 20, ),
|
||||
BasePeer::TYPE_COLNAME => array (AppDocumentPeer::APP_DOC_UID => 0, AppDocumentPeer::APP_DOC_FILENAME => 1, AppDocumentPeer::APP_DOC_TITLE => 2, AppDocumentPeer::APP_DOC_COMMENT => 3, AppDocumentPeer::DOC_VERSION => 4, AppDocumentPeer::APP_UID => 5, AppDocumentPeer::DEL_INDEX => 6, AppDocumentPeer::DOC_UID => 7, AppDocumentPeer::USR_UID => 8, AppDocumentPeer::APP_DOC_TYPE => 9, AppDocumentPeer::APP_DOC_CREATE_DATE => 10, AppDocumentPeer::APP_DOC_INDEX => 11, AppDocumentPeer::FOLDER_UID => 12, AppDocumentPeer::APP_DOC_PLUGIN => 13, AppDocumentPeer::APP_DOC_TAGS => 14, AppDocumentPeer::APP_DOC_STATUS => 15, AppDocumentPeer::APP_DOC_STATUS_DATE => 16, AppDocumentPeer::APP_DOC_FIELDNAME => 17, AppDocumentPeer::APP_DOC_DRIVE_DOWNLOAD => 18, AppDocumentPeer::SYNC_WITH_DRIVE => 19, AppDocumentPeer::SYNC_PERMISSIONS => 20, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('APP_DOC_UID' => 0, 'APP_DOC_FILENAME' => 1, 'APP_DOC_TITLE' => 2, 'APP_DOC_COMMENT' => 3, 'DOC_VERSION' => 4, 'APP_UID' => 5, 'DEL_INDEX' => 6, 'DOC_UID' => 7, 'USR_UID' => 8, 'APP_DOC_TYPE' => 9, 'APP_DOC_CREATE_DATE' => 10, 'APP_DOC_INDEX' => 11, 'FOLDER_UID' => 12, 'APP_DOC_PLUGIN' => 13, 'APP_DOC_TAGS' => 14, 'APP_DOC_STATUS' => 15, 'APP_DOC_STATUS_DATE' => 16, 'APP_DOC_FIELDNAME' => 17, 'APP_DOC_DRIVE_DOWNLOAD' => 18, 'SYNC_WITH_DRIVE' => 19, 'SYNC_PERMISSIONS' => 20, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, )
|
||||
BasePeer::TYPE_PHPNAME => array ('AppDocUid' => 0, 'AppDocFilename' => 1, 'AppDocTitle' => 2, 'AppDocComment' => 3, 'DocVersion' => 4, 'AppUid' => 5, 'DelIndex' => 6, 'DocUid' => 7, 'DocId' => 8, 'UsrUid' => 9, 'AppDocType' => 10, 'AppDocCreateDate' => 11, 'AppDocIndex' => 12, 'FolderUid' => 13, 'AppDocPlugin' => 14, 'AppDocTags' => 15, 'AppDocStatus' => 16, 'AppDocStatusDate' => 17, 'AppDocFieldname' => 18, 'AppDocDriveDownload' => 19, 'SyncWithDrive' => 20, 'SyncPermissions' => 21, ),
|
||||
BasePeer::TYPE_COLNAME => array (AppDocumentPeer::APP_DOC_UID => 0, AppDocumentPeer::APP_DOC_FILENAME => 1, AppDocumentPeer::APP_DOC_TITLE => 2, AppDocumentPeer::APP_DOC_COMMENT => 3, AppDocumentPeer::DOC_VERSION => 4, AppDocumentPeer::APP_UID => 5, AppDocumentPeer::DEL_INDEX => 6, AppDocumentPeer::DOC_UID => 7, AppDocumentPeer::DOC_ID => 8, AppDocumentPeer::USR_UID => 9, AppDocumentPeer::APP_DOC_TYPE => 10, AppDocumentPeer::APP_DOC_CREATE_DATE => 11, AppDocumentPeer::APP_DOC_INDEX => 12, AppDocumentPeer::FOLDER_UID => 13, AppDocumentPeer::APP_DOC_PLUGIN => 14, AppDocumentPeer::APP_DOC_TAGS => 15, AppDocumentPeer::APP_DOC_STATUS => 16, AppDocumentPeer::APP_DOC_STATUS_DATE => 17, AppDocumentPeer::APP_DOC_FIELDNAME => 18, AppDocumentPeer::APP_DOC_DRIVE_DOWNLOAD => 19, AppDocumentPeer::SYNC_WITH_DRIVE => 20, AppDocumentPeer::SYNC_PERMISSIONS => 21, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('APP_DOC_UID' => 0, 'APP_DOC_FILENAME' => 1, 'APP_DOC_TITLE' => 2, 'APP_DOC_COMMENT' => 3, 'DOC_VERSION' => 4, 'APP_UID' => 5, 'DEL_INDEX' => 6, 'DOC_UID' => 7, 'DOC_ID' => 8, 'USR_UID' => 9, 'APP_DOC_TYPE' => 10, 'APP_DOC_CREATE_DATE' => 11, 'APP_DOC_INDEX' => 12, 'FOLDER_UID' => 13, 'APP_DOC_PLUGIN' => 14, 'APP_DOC_TAGS' => 15, 'APP_DOC_STATUS' => 16, 'APP_DOC_STATUS_DATE' => 17, 'APP_DOC_FIELDNAME' => 18, 'APP_DOC_DRIVE_DOWNLOAD' => 19, 'SYNC_WITH_DRIVE' => 20, 'SYNC_PERMISSIONS' => 21, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, )
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -238,6 +241,8 @@ abstract class BaseAppDocumentPeer
|
||||
|
||||
$criteria->addSelectColumn(AppDocumentPeer::DOC_UID);
|
||||
|
||||
$criteria->addSelectColumn(AppDocumentPeer::DOC_ID);
|
||||
|
||||
$criteria->addSelectColumn(AppDocumentPeer::USR_UID);
|
||||
|
||||
$criteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
|
||||
|
||||
@@ -27,6 +27,12 @@ abstract class BaseAppNotes extends BaseObject implements Persistent
|
||||
*/
|
||||
protected static $peer;
|
||||
|
||||
/**
|
||||
* The value for the note_id field.
|
||||
* @var int
|
||||
*/
|
||||
protected $note_id;
|
||||
|
||||
/**
|
||||
* The value for the app_uid field.
|
||||
* @var string
|
||||
@@ -101,6 +107,17 @@ abstract class BaseAppNotes extends BaseObject implements Persistent
|
||||
*/
|
||||
protected $alreadyInValidation = false;
|
||||
|
||||
/**
|
||||
* Get the [note_id] column value.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getNoteId()
|
||||
{
|
||||
|
||||
return $this->note_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [app_uid] column value.
|
||||
*
|
||||
@@ -232,6 +249,28 @@ abstract class BaseAppNotes extends BaseObject implements Persistent
|
||||
return $this->note_recipients;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of [note_id] column.
|
||||
*
|
||||
* @param int $v new value
|
||||
* @return void
|
||||
*/
|
||||
public function setNoteId($v)
|
||||
{
|
||||
|
||||
// Since the native PHP type for this column is integer,
|
||||
// we will cast the input value to an int (if it is not).
|
||||
if ($v !== null && !is_int($v) && is_numeric($v)) {
|
||||
$v = (int) $v;
|
||||
}
|
||||
|
||||
if ($this->note_id !== $v) {
|
||||
$this->note_id = $v;
|
||||
$this->modifiedColumns[] = AppNotesPeer::NOTE_ID;
|
||||
}
|
||||
|
||||
} // setNoteId()
|
||||
|
||||
/**
|
||||
* Set the value of [app_uid] column.
|
||||
*
|
||||
@@ -476,32 +515,34 @@ abstract class BaseAppNotes extends BaseObject implements Persistent
|
||||
{
|
||||
try {
|
||||
|
||||
$this->app_uid = $rs->getString($startcol + 0);
|
||||
$this->note_id = $rs->getInt($startcol + 0);
|
||||
|
||||
$this->usr_uid = $rs->getString($startcol + 1);
|
||||
$this->app_uid = $rs->getString($startcol + 1);
|
||||
|
||||
$this->note_date = $rs->getTimestamp($startcol + 2, null);
|
||||
$this->usr_uid = $rs->getString($startcol + 2);
|
||||
|
||||
$this->note_content = $rs->getString($startcol + 3);
|
||||
$this->note_date = $rs->getTimestamp($startcol + 3, null);
|
||||
|
||||
$this->note_type = $rs->getString($startcol + 4);
|
||||
$this->note_content = $rs->getString($startcol + 4);
|
||||
|
||||
$this->note_availability = $rs->getString($startcol + 5);
|
||||
$this->note_type = $rs->getString($startcol + 5);
|
||||
|
||||
$this->note_origin_obj = $rs->getString($startcol + 6);
|
||||
$this->note_availability = $rs->getString($startcol + 6);
|
||||
|
||||
$this->note_affected_obj1 = $rs->getString($startcol + 7);
|
||||
$this->note_origin_obj = $rs->getString($startcol + 7);
|
||||
|
||||
$this->note_affected_obj2 = $rs->getString($startcol + 8);
|
||||
$this->note_affected_obj1 = $rs->getString($startcol + 8);
|
||||
|
||||
$this->note_recipients = $rs->getString($startcol + 9);
|
||||
$this->note_affected_obj2 = $rs->getString($startcol + 9);
|
||||
|
||||
$this->note_recipients = $rs->getString($startcol + 10);
|
||||
|
||||
$this->resetModified();
|
||||
|
||||
$this->setNew(false);
|
||||
|
||||
// FIXME - using NUM_COLUMNS may be clearer.
|
||||
return $startcol + 10; // 10 = AppNotesPeer::NUM_COLUMNS - AppNotesPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
return $startcol + 11; // 11 = AppNotesPeer::NUM_COLUMNS - AppNotesPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
|
||||
} catch (Exception $e) {
|
||||
throw new PropelException("Error populating AppNotes object", $e);
|
||||
@@ -706,33 +747,36 @@ abstract class BaseAppNotes extends BaseObject implements Persistent
|
||||
{
|
||||
switch($pos) {
|
||||
case 0:
|
||||
return $this->getAppUid();
|
||||
return $this->getNoteId();
|
||||
break;
|
||||
case 1:
|
||||
return $this->getUsrUid();
|
||||
return $this->getAppUid();
|
||||
break;
|
||||
case 2:
|
||||
return $this->getNoteDate();
|
||||
return $this->getUsrUid();
|
||||
break;
|
||||
case 3:
|
||||
return $this->getNoteContent();
|
||||
return $this->getNoteDate();
|
||||
break;
|
||||
case 4:
|
||||
return $this->getNoteType();
|
||||
return $this->getNoteContent();
|
||||
break;
|
||||
case 5:
|
||||
return $this->getNoteAvailability();
|
||||
return $this->getNoteType();
|
||||
break;
|
||||
case 6:
|
||||
return $this->getNoteOriginObj();
|
||||
return $this->getNoteAvailability();
|
||||
break;
|
||||
case 7:
|
||||
return $this->getNoteAffectedObj1();
|
||||
return $this->getNoteOriginObj();
|
||||
break;
|
||||
case 8:
|
||||
return $this->getNoteAffectedObj2();
|
||||
return $this->getNoteAffectedObj1();
|
||||
break;
|
||||
case 9:
|
||||
return $this->getNoteAffectedObj2();
|
||||
break;
|
||||
case 10:
|
||||
return $this->getNoteRecipients();
|
||||
break;
|
||||
default:
|
||||
@@ -755,16 +799,17 @@ abstract class BaseAppNotes extends BaseObject implements Persistent
|
||||
{
|
||||
$keys = AppNotesPeer::getFieldNames($keyType);
|
||||
$result = array(
|
||||
$keys[0] => $this->getAppUid(),
|
||||
$keys[1] => $this->getUsrUid(),
|
||||
$keys[2] => $this->getNoteDate(),
|
||||
$keys[3] => $this->getNoteContent(),
|
||||
$keys[4] => $this->getNoteType(),
|
||||
$keys[5] => $this->getNoteAvailability(),
|
||||
$keys[6] => $this->getNoteOriginObj(),
|
||||
$keys[7] => $this->getNoteAffectedObj1(),
|
||||
$keys[8] => $this->getNoteAffectedObj2(),
|
||||
$keys[9] => $this->getNoteRecipients(),
|
||||
$keys[0] => $this->getNoteId(),
|
||||
$keys[1] => $this->getAppUid(),
|
||||
$keys[2] => $this->getUsrUid(),
|
||||
$keys[3] => $this->getNoteDate(),
|
||||
$keys[4] => $this->getNoteContent(),
|
||||
$keys[5] => $this->getNoteType(),
|
||||
$keys[6] => $this->getNoteAvailability(),
|
||||
$keys[7] => $this->getNoteOriginObj(),
|
||||
$keys[8] => $this->getNoteAffectedObj1(),
|
||||
$keys[9] => $this->getNoteAffectedObj2(),
|
||||
$keys[10] => $this->getNoteRecipients(),
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
@@ -797,33 +842,36 @@ abstract class BaseAppNotes extends BaseObject implements Persistent
|
||||
{
|
||||
switch($pos) {
|
||||
case 0:
|
||||
$this->setAppUid($value);
|
||||
$this->setNoteId($value);
|
||||
break;
|
||||
case 1:
|
||||
$this->setUsrUid($value);
|
||||
$this->setAppUid($value);
|
||||
break;
|
||||
case 2:
|
||||
$this->setNoteDate($value);
|
||||
$this->setUsrUid($value);
|
||||
break;
|
||||
case 3:
|
||||
$this->setNoteContent($value);
|
||||
$this->setNoteDate($value);
|
||||
break;
|
||||
case 4:
|
||||
$this->setNoteType($value);
|
||||
$this->setNoteContent($value);
|
||||
break;
|
||||
case 5:
|
||||
$this->setNoteAvailability($value);
|
||||
$this->setNoteType($value);
|
||||
break;
|
||||
case 6:
|
||||
$this->setNoteOriginObj($value);
|
||||
$this->setNoteAvailability($value);
|
||||
break;
|
||||
case 7:
|
||||
$this->setNoteAffectedObj1($value);
|
||||
$this->setNoteOriginObj($value);
|
||||
break;
|
||||
case 8:
|
||||
$this->setNoteAffectedObj2($value);
|
||||
$this->setNoteAffectedObj1($value);
|
||||
break;
|
||||
case 9:
|
||||
$this->setNoteAffectedObj2($value);
|
||||
break;
|
||||
case 10:
|
||||
$this->setNoteRecipients($value);
|
||||
break;
|
||||
} // switch()
|
||||
@@ -850,43 +898,47 @@ abstract class BaseAppNotes extends BaseObject implements Persistent
|
||||
$keys = AppNotesPeer::getFieldNames($keyType);
|
||||
|
||||
if (array_key_exists($keys[0], $arr)) {
|
||||
$this->setAppUid($arr[$keys[0]]);
|
||||
$this->setNoteId($arr[$keys[0]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[1], $arr)) {
|
||||
$this->setUsrUid($arr[$keys[1]]);
|
||||
$this->setAppUid($arr[$keys[1]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[2], $arr)) {
|
||||
$this->setNoteDate($arr[$keys[2]]);
|
||||
$this->setUsrUid($arr[$keys[2]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[3], $arr)) {
|
||||
$this->setNoteContent($arr[$keys[3]]);
|
||||
$this->setNoteDate($arr[$keys[3]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[4], $arr)) {
|
||||
$this->setNoteType($arr[$keys[4]]);
|
||||
$this->setNoteContent($arr[$keys[4]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[5], $arr)) {
|
||||
$this->setNoteAvailability($arr[$keys[5]]);
|
||||
$this->setNoteType($arr[$keys[5]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[6], $arr)) {
|
||||
$this->setNoteOriginObj($arr[$keys[6]]);
|
||||
$this->setNoteAvailability($arr[$keys[6]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[7], $arr)) {
|
||||
$this->setNoteAffectedObj1($arr[$keys[7]]);
|
||||
$this->setNoteOriginObj($arr[$keys[7]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[8], $arr)) {
|
||||
$this->setNoteAffectedObj2($arr[$keys[8]]);
|
||||
$this->setNoteAffectedObj1($arr[$keys[8]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[9], $arr)) {
|
||||
$this->setNoteRecipients($arr[$keys[9]]);
|
||||
$this->setNoteAffectedObj2($arr[$keys[9]]);
|
||||
}
|
||||
|
||||
if (array_key_exists($keys[10], $arr)) {
|
||||
$this->setNoteRecipients($arr[$keys[10]]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -900,6 +952,10 @@ abstract class BaseAppNotes extends BaseObject implements Persistent
|
||||
{
|
||||
$criteria = new Criteria(AppNotesPeer::DATABASE_NAME);
|
||||
|
||||
if ($this->isColumnModified(AppNotesPeer::NOTE_ID)) {
|
||||
$criteria->add(AppNotesPeer::NOTE_ID, $this->note_id);
|
||||
}
|
||||
|
||||
if ($this->isColumnModified(AppNotesPeer::APP_UID)) {
|
||||
$criteria->add(AppNotesPeer::APP_UID, $this->app_uid);
|
||||
}
|
||||
@@ -997,6 +1053,8 @@ abstract class BaseAppNotes extends BaseObject implements Persistent
|
||||
public function copyInto($copyObj, $deepCopy = false)
|
||||
{
|
||||
|
||||
$copyObj->setNoteId($this->note_id);
|
||||
|
||||
$copyObj->setAppUid($this->app_uid);
|
||||
|
||||
$copyObj->setUsrUid($this->usr_uid);
|
||||
|
||||
@@ -25,12 +25,15 @@ abstract class BaseAppNotesPeer
|
||||
const CLASS_DEFAULT = 'classes.model.AppNotes';
|
||||
|
||||
/** The total number of columns. */
|
||||
const NUM_COLUMNS = 10;
|
||||
const NUM_COLUMNS = 11;
|
||||
|
||||
/** The number of lazy-loaded columns. */
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
|
||||
|
||||
/** the column name for the NOTE_ID field */
|
||||
const NOTE_ID = 'APP_NOTES.NOTE_ID';
|
||||
|
||||
/** the column name for the APP_UID field */
|
||||
const APP_UID = 'APP_NOTES.APP_UID';
|
||||
|
||||
@@ -72,10 +75,10 @@ abstract class BaseAppNotesPeer
|
||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
private static $fieldNames = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('AppUid', 'UsrUid', 'NoteDate', 'NoteContent', 'NoteType', 'NoteAvailability', 'NoteOriginObj', 'NoteAffectedObj1', 'NoteAffectedObj2', 'NoteRecipients', ),
|
||||
BasePeer::TYPE_COLNAME => array (AppNotesPeer::APP_UID, AppNotesPeer::USR_UID, AppNotesPeer::NOTE_DATE, AppNotesPeer::NOTE_CONTENT, AppNotesPeer::NOTE_TYPE, AppNotesPeer::NOTE_AVAILABILITY, AppNotesPeer::NOTE_ORIGIN_OBJ, AppNotesPeer::NOTE_AFFECTED_OBJ1, AppNotesPeer::NOTE_AFFECTED_OBJ2, AppNotesPeer::NOTE_RECIPIENTS, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('APP_UID', 'USR_UID', 'NOTE_DATE', 'NOTE_CONTENT', 'NOTE_TYPE', 'NOTE_AVAILABILITY', 'NOTE_ORIGIN_OBJ', 'NOTE_AFFECTED_OBJ1', 'NOTE_AFFECTED_OBJ2', 'NOTE_RECIPIENTS', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
|
||||
BasePeer::TYPE_PHPNAME => array ('NoteId', 'AppUid', 'UsrUid', 'NoteDate', 'NoteContent', 'NoteType', 'NoteAvailability', 'NoteOriginObj', 'NoteAffectedObj1', 'NoteAffectedObj2', 'NoteRecipients', ),
|
||||
BasePeer::TYPE_COLNAME => array (AppNotesPeer::NOTE_ID, AppNotesPeer::APP_UID, AppNotesPeer::USR_UID, AppNotesPeer::NOTE_DATE, AppNotesPeer::NOTE_CONTENT, AppNotesPeer::NOTE_TYPE, AppNotesPeer::NOTE_AVAILABILITY, AppNotesPeer::NOTE_ORIGIN_OBJ, AppNotesPeer::NOTE_AFFECTED_OBJ1, AppNotesPeer::NOTE_AFFECTED_OBJ2, AppNotesPeer::NOTE_RECIPIENTS, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('NOTE_ID', 'APP_UID', 'USR_UID', 'NOTE_DATE', 'NOTE_CONTENT', 'NOTE_TYPE', 'NOTE_AVAILABILITY', 'NOTE_ORIGIN_OBJ', 'NOTE_AFFECTED_OBJ1', 'NOTE_AFFECTED_OBJ2', 'NOTE_RECIPIENTS', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, )
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -85,10 +88,10 @@ abstract class BaseAppNotesPeer
|
||||
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
private static $fieldKeys = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('AppUid' => 0, 'UsrUid' => 1, 'NoteDate' => 2, 'NoteContent' => 3, 'NoteType' => 4, 'NoteAvailability' => 5, 'NoteOriginObj' => 6, 'NoteAffectedObj1' => 7, 'NoteAffectedObj2' => 8, 'NoteRecipients' => 9, ),
|
||||
BasePeer::TYPE_COLNAME => array (AppNotesPeer::APP_UID => 0, AppNotesPeer::USR_UID => 1, AppNotesPeer::NOTE_DATE => 2, AppNotesPeer::NOTE_CONTENT => 3, AppNotesPeer::NOTE_TYPE => 4, AppNotesPeer::NOTE_AVAILABILITY => 5, AppNotesPeer::NOTE_ORIGIN_OBJ => 6, AppNotesPeer::NOTE_AFFECTED_OBJ1 => 7, AppNotesPeer::NOTE_AFFECTED_OBJ2 => 8, AppNotesPeer::NOTE_RECIPIENTS => 9, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('APP_UID' => 0, 'USR_UID' => 1, 'NOTE_DATE' => 2, 'NOTE_CONTENT' => 3, 'NOTE_TYPE' => 4, 'NOTE_AVAILABILITY' => 5, 'NOTE_ORIGIN_OBJ' => 6, 'NOTE_AFFECTED_OBJ1' => 7, 'NOTE_AFFECTED_OBJ2' => 8, 'NOTE_RECIPIENTS' => 9, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
|
||||
BasePeer::TYPE_PHPNAME => array ('NoteId' => 0, 'AppUid' => 1, 'UsrUid' => 2, 'NoteDate' => 3, 'NoteContent' => 4, 'NoteType' => 5, 'NoteAvailability' => 6, 'NoteOriginObj' => 7, 'NoteAffectedObj1' => 8, 'NoteAffectedObj2' => 9, 'NoteRecipients' => 10, ),
|
||||
BasePeer::TYPE_COLNAME => array (AppNotesPeer::NOTE_ID => 0, AppNotesPeer::APP_UID => 1, AppNotesPeer::USR_UID => 2, AppNotesPeer::NOTE_DATE => 3, AppNotesPeer::NOTE_CONTENT => 4, AppNotesPeer::NOTE_TYPE => 5, AppNotesPeer::NOTE_AVAILABILITY => 6, AppNotesPeer::NOTE_ORIGIN_OBJ => 7, AppNotesPeer::NOTE_AFFECTED_OBJ1 => 8, AppNotesPeer::NOTE_AFFECTED_OBJ2 => 9, AppNotesPeer::NOTE_RECIPIENTS => 10, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('NOTE_ID' => 0, 'APP_UID' => 1, 'USR_UID' => 2, 'NOTE_DATE' => 3, 'NOTE_CONTENT' => 4, 'NOTE_TYPE' => 5, 'NOTE_AVAILABILITY' => 6, 'NOTE_ORIGIN_OBJ' => 7, 'NOTE_AFFECTED_OBJ1' => 8, 'NOTE_AFFECTED_OBJ2' => 9, 'NOTE_RECIPIENTS' => 10, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, )
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -189,6 +192,8 @@ abstract class BaseAppNotesPeer
|
||||
public static function addSelectColumns(Criteria $criteria)
|
||||
{
|
||||
|
||||
$criteria->addSelectColumn(AppNotesPeer::NOTE_ID);
|
||||
|
||||
$criteria->addSelectColumn(AppNotesPeer::APP_UID);
|
||||
|
||||
$criteria->addSelectColumn(AppNotesPeer::USR_UID);
|
||||
|
||||
@@ -230,6 +230,7 @@
|
||||
<column name="APP_UID" type="VARCHAR" size="32" required="true" default=""/>
|
||||
<column name="DEL_INDEX" type="INTEGER" required="true" default="0"/>
|
||||
<column name="DOC_UID" type="VARCHAR" size="32" required="true" default=""/>
|
||||
<column name="DOC_ID" type="INTEGER" required="false" default="0"/>
|
||||
<column name="USR_UID" type="VARCHAR" size="32" required="true" default=""/>
|
||||
<column name="APP_DOC_TYPE" type="VARCHAR" size="32" required="true" default=""/>
|
||||
<column name="APP_DOC_CREATE_DATE" type="TIMESTAMP" required="true"/>
|
||||
@@ -284,7 +285,7 @@
|
||||
<rule name="required" message="User UID is required."/>
|
||||
</validator>
|
||||
<validator column="APP_DOC_TYPE">
|
||||
<rule name="validValues" value="INPUT|OUTPUT|ATTACHED" message="Please select a valid document type."/>
|
||||
<rule name="validValues" value="INPUT|OUTPUT|ATTACHED|CASE_NOTE" message="Please select a valid document type."/>
|
||||
<rule name="required" message="Application Document Type is required."/>
|
||||
</validator>
|
||||
<validator column="APP_DOC_CREATE_DATE">
|
||||
@@ -3287,7 +3288,7 @@
|
||||
<unique-column name="CATEGORY_ID"/>
|
||||
</unique>
|
||||
</table>
|
||||
<table name="APP_NOTES">
|
||||
<table name="APP_NOTES" idMethod="native">
|
||||
<vendor type="mysql">
|
||||
<parameter name="Name" value="APP_NOTES"/>
|
||||
<parameter name="Engine" value="InnoDB"/>
|
||||
@@ -3308,6 +3309,7 @@
|
||||
<parameter name="Create_options" value=""/>
|
||||
<parameter name="Comment" value="Application Notes"/>
|
||||
</vendor>
|
||||
<column name="NOTE_ID" type="INTEGER" required="true" autoIncrement="true" unique="true"/>
|
||||
<column name="APP_UID" type="VARCHAR" size="32" required="true" default=""/>
|
||||
<column name="USR_UID" type="VARCHAR" size="32" required="true" default=""/>
|
||||
<column name="NOTE_DATE" type="TIMESTAMP" required="true"/>
|
||||
@@ -3318,6 +3320,9 @@
|
||||
<column name="NOTE_AFFECTED_OBJ1" type="VARCHAR" size="32" default=""/>
|
||||
<column name="NOTE_AFFECTED_OBJ2" type="VARCHAR" size="32" required="true" default=""/>
|
||||
<column name="NOTE_RECIPIENTS" type="LONGVARCHAR"/>
|
||||
<unique name="NOTE_ID">
|
||||
<unique-column name="NOTE_ID"/>
|
||||
</unique>
|
||||
<index name="indexAppNotesDate">
|
||||
<index-column name="APP_UID"/>
|
||||
<index-column name="NOTE_DATE"/>
|
||||
|
||||
@@ -1993,6 +1993,12 @@ msgstr "Add Data to PM table"
|
||||
msgid "Add field"
|
||||
msgstr "Add field"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ADD_FILE
|
||||
#: LABEL/ID_ADD_FILE
|
||||
msgid "Add file"
|
||||
msgstr "Add file"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ADD_HORIZONTAL_LINE
|
||||
#: LABEL/ID_ADD_HORIZONTAL_LINE
|
||||
@@ -2575,6 +2581,18 @@ msgstr "Attach"
|
||||
msgid "Attached"
|
||||
msgstr "Attached"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ATTACH_FILE
|
||||
#: LABEL/ID_ATTACH_FILE
|
||||
msgid "Attach file"
|
||||
msgstr "Attach file"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ATTACHED_FILES
|
||||
#: LABEL/ID_ATTACHED_FILES
|
||||
msgid "Attached files"
|
||||
msgstr "Attached files"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ATTRIBUTES
|
||||
#: LABEL/ID_ATTRIBUTES
|
||||
@@ -25289,6 +25307,12 @@ msgstr "Error: The application {0} is not canceled."
|
||||
msgid "The default configuration was not defined"
|
||||
msgstr "The default configuration was not defined"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_THE_FILE_COULDNT_BE_UPLOADED
|
||||
#: LABEL/ID_THE_FILE_COULDNT_BE_UPLOADED
|
||||
msgid "The file couldn’t be uploaded please review the allowed files or contact your System Administrator."
|
||||
msgstr "The file couldn’t be uploaded please review the allowed files or contact your System Administrator."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_THE_FILE_SIZE_IS_BIGGER_THAN_THE_MAXIMUM_ALLOWED
|
||||
#: LABEL/ID_THE_FILE_SIZE_IS_BIGGER_THAN_THE_MAXIMUM_ALLOWED
|
||||
@@ -27695,6 +27719,12 @@ msgstr "Yesterday"
|
||||
msgid "[LABEL/ID_YES_VALUE] Yes"
|
||||
msgstr "Yes"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_YOUR_FILE_HAS_EXCEEDED
|
||||
#: LABEL/ID_YOUR_FILE_HAS_EXCEEDED
|
||||
msgid "Your file has exceeded the file maximum size that is {0}."
|
||||
msgstr "Your file has exceeded the file maximum size that is {0}."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_YOUR_IMAGE_HAS_BEEN_SUCCESSFULLY
|
||||
#: LABEL/ID_YOUR_IMAGE_HAS_BEEN_SUCCESSFULLY
|
||||
@@ -27749,6 +27779,12 @@ msgstr "You do not select any user to import"
|
||||
msgid "you have an error"
|
||||
msgstr "you have an error"
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_YOU_UPLOADED_AN_UNSUPPORTED_FILE_EXTENSION
|
||||
#: LABEL/ID_YOU_UPLOADED_AN_UNSUPPORTED_FILE_EXTENSION
|
||||
msgid "You uploaded an unsupported file extension, please review the permitted files uploaded in the wiki of ProcessMaker for the cases notes."
|
||||
msgstr "You uploaded an unsupported file extension, please review the permitted files uploaded in the wiki of ProcessMaker for the cases notes."
|
||||
|
||||
# TRANSLATION
|
||||
# LABEL/ID_ZIP_CODE
|
||||
#: LABEL/ID_ZIP_CODE
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* appProxy.php
|
||||
*
|
||||
* Controller for return information about the cases notes and summary form
|
||||
*
|
||||
* @link https://wiki.processmaker.com/3.2/Case_Notes
|
||||
* @link https://wiki.processmaker.com/3.2/Case_Summary
|
||||
*/
|
||||
|
||||
use ProcessMaker\BusinessModel\Cases as BmCases;
|
||||
use ProcessMaker\Exception\CaseNoteUploadFile;
|
||||
use ProcessMaker\Model\AppNotes as Notes;
|
||||
use ProcessMaker\Model\Documents;
|
||||
use ProcessMaker\Util\DateTime;
|
||||
|
||||
if (!isset($_SESSION['USER_LOGGED'])) {
|
||||
@@ -86,11 +100,13 @@ class AppProxy extends HttpProxyController
|
||||
} else {
|
||||
$tasUid = $httpData->tas;
|
||||
}
|
||||
|
||||
// Get user logged
|
||||
$usrUid = $_SESSION['USER_LOGGED'];
|
||||
|
||||
// Review if the user has the permissions
|
||||
$respView = $case->getAllObjectsFrom($proUid, $appUid, $tasUid, $usrUid, "VIEW", $delIndex);
|
||||
$respBlock = $case->getAllObjectsFrom($proUid, $appUid, $tasUid, $usrUid, "BLOCK", $delIndex);
|
||||
|
||||
if ($respView['CASES_NOTES'] == 0 && $respBlock['CASES_NOTES'] == 0) {
|
||||
return [
|
||||
'totalCount' => 0,
|
||||
@@ -99,27 +115,30 @@ class AppProxy extends HttpProxyController
|
||||
];
|
||||
}
|
||||
|
||||
$usrUid = isset($_SESSION['USER_LOGGED']) ? $_SESSION['USER_LOGGED'] : "";
|
||||
$appNotes = new AppNotes();
|
||||
$response = $appNotes->getNotesList($appUid, '', $httpData->start, $httpData->limit);
|
||||
// Get the notes
|
||||
$appNote = new Notes();
|
||||
$response = $appNote->getNotes($appUid, $httpData->start, $httpData->limit);
|
||||
$response = AppNotes::applyHtmlentitiesInNotes($response);
|
||||
|
||||
// Prepare the response
|
||||
$documents = new Documents();
|
||||
$iterator = 0;
|
||||
foreach ($response['array']['notes'] as $value) {
|
||||
$response ['array']['notes'][$iterator]['NOTE_DATE'] = DateTime::convertUtcToTimeZone($value['NOTE_DATE']);
|
||||
foreach ($response['notes'] as $value) {
|
||||
$response['notes'][$iterator]['NOTE_DATE'] = DateTime::convertUtcToTimeZone($value['NOTE_DATE']);
|
||||
$response['notes'][$iterator]['attachments'] = $documents->getFiles($value['NOTE_ID']);
|
||||
$iterator++;
|
||||
}
|
||||
|
||||
require_once("classes/model/Application.php");
|
||||
$oApplication = new Application();
|
||||
$aApplication = $oApplication->Load($appUid);
|
||||
$response['array']['appTitle'] = $aApplication['APP_TITLE'];
|
||||
$application = new Application();
|
||||
$appInfo = $application->Load($appUid);
|
||||
$response['appTitle'] = $appInfo['APP_TITLE'];
|
||||
|
||||
return $response['array'];
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* post Note Action
|
||||
* Post a note
|
||||
*
|
||||
* @param string $httpData->appUid (optional, if it is not passed try use $_SESSION['APPLICATION'])
|
||||
* @return array containg the case notes
|
||||
@@ -143,9 +162,15 @@ class AppProxy extends HttpProxyController
|
||||
$this->setSendResponse(false);
|
||||
|
||||
//Add note case
|
||||
$appNote = new AppNotes();
|
||||
$cases = new BmCases();
|
||||
try {
|
||||
$response = $appNote->addCaseNote($appUid, $usrUid, $noteContent, intval($httpData->swSendMail));
|
||||
$sendMail = intval($httpData->swSendMail);
|
||||
$response = $cases->addNote($appUid, $usrUid, $noteContent, $sendMail);
|
||||
} catch (CaseNoteUploadFile $e) {
|
||||
$response = new stdclass();
|
||||
$response->success = 'success';
|
||||
$response->message = $e->getMessage();
|
||||
die(G::json_encode($response));
|
||||
} catch (Exception $error) {
|
||||
$response = new stdclass();
|
||||
$response->success = 'success';
|
||||
|
||||
@@ -57133,6 +57133,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_ADD_CUSTOM_COLUMN','en','Add Custom Column','2014-01-15') ,
|
||||
( 'LABEL','ID_ADD_DATA_PMTABLE','en','Add Data to PM table','2014-10-10') ,
|
||||
( 'LABEL','ID_ADD_FIELD','en','Add field','2014-01-15') ,
|
||||
( 'LABEL','ID_ADD_FILE','en','Add file','2020-06-11') ,
|
||||
( 'LABEL','ID_ADD_HORIZONTAL_LINE','en','Add horizontal line','2015-02-20') ,
|
||||
( 'LABEL','ID_ADD_LICENSE','en','Please add a new license','2014-01-15') ,
|
||||
( 'LABEL','ID_ADD_MESSAGE','en','Add message','2014-01-15') ,
|
||||
@@ -57232,6 +57233,8 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_ASSIGN_VARIABLES_OUT','en','Assign Variables Out','2014-01-15') ,
|
||||
( 'LABEL','ID_ATTACH','en','Attach','2014-01-15') ,
|
||||
( 'LABEL','ID_ATTACHED_DB','en','Attached','2014-10-08') ,
|
||||
( 'LABEL','ID_ATTACH_FILE','en','Attach file','2020-06-11') ,
|
||||
( 'LABEL','ID_ATTACHED_FILES','en','Attached files','2020-06-10') ,
|
||||
( 'LABEL','ID_ATTRIBUTES','en','Attributes','2014-01-15') ,
|
||||
( 'LABEL','ID_ATTRIBUTE_HAS_INVALID_ELEMENT_KEY','en','The attribute {0}, has an invalid element (incorrect keys).','2014-05-20') ,
|
||||
( 'LABEL','ID_AT_RISK','en','At Risk','2014-01-15') ,
|
||||
@@ -61106,6 +61109,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_THERE_PROBLEM_SENDING_EMAIL','en','There was a problem sending the email to','2016-04-08') ,
|
||||
( 'LABEL','ID_THE_APPLICATION_IS_NOT_CANCELED','en','Error: The application {0} is not canceled.','2016-06-15') ,
|
||||
( 'LABEL','ID_THE_DEFAULT_CONFIGURATION','en','The default configuration was not defined','2016-11-16') ,
|
||||
( 'LABEL','ID_THE_FILE_COULDNT_BE_UPLOADED','en','The file couldn’t be uploaded please review the allowed files or contact your System Administrator.','2020-06-12') ,
|
||||
( 'LABEL','ID_THE_FILE_SIZE_IS_BIGGER_THAN_THE_MAXIMUM_ALLOWED','en','The file size is bigger than the maximum allowed, the maximum size allowed is {0} Mbytes.','2019-02-26') ,
|
||||
( 'LABEL','ID_THE_MAXIMUM_VALUE_OF_THIS_FIELD_IS','en','The maximum value of this field is {0}.','2019-02-26') ,
|
||||
( 'LABEL','ID_THE_MIMETYPE_EXTENSION_ERROR','en','The mime type does not correspond to the permitted extension, please verify your file.','2018-10-02') ,
|
||||
@@ -61517,6 +61521,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_YES','en','Yes','2014-01-15') ,
|
||||
( 'LABEL','ID_YESTERDAY','en','Yesterday','2014-01-15') ,
|
||||
( 'LABEL','ID_YES_VALUE','en','Yes','2014-01-15') ,
|
||||
( 'LABEL','ID_YOUR_FILE_HAS_EXCEEDED','en','Your file has exceeded the file maximum size that is 10MB.','2020-06-12') ,
|
||||
( 'LABEL','ID_YOUR_IMAGE_HAS_BEEN_SUCCESSFULLY','en','Your image has been successfully uploaded','2014-01-15') ,
|
||||
( 'LABEL','ID_YOUR_LICENSE','en','Your license','2014-09-18') ,
|
||||
( 'LABEL','ID_YOUR_PASSWORD_IS','en','Your password is','2014-01-15') ,
|
||||
@@ -61526,6 +61531,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
|
||||
( 'LABEL','ID_YOU_DO_NOT_HAVE_PERMISSION','en','Error: You do not have permission.','2016-06-15') ,
|
||||
( 'LABEL','ID_YOU_DO_NOT_SELECT_ANY_USER_TO_IMPORT','en','You do not select any user to import','2015-09-15') ,
|
||||
( 'LABEL','ID_YOU_HAVE_ERROR','en','you have an error','2014-01-15') ,
|
||||
( 'LABEL','ID_YOU_UPLOADED_AN_UNSUPPORTED_FILE_EXTENSION','en','You uploaded an unsupported file extension, please review the permitted files uploaded in the wiki of ProcessMaker for the cases notes.','2020-06-12') ,
|
||||
( 'LABEL','ID_ZIP_CODE','en','Zip Code','2014-01-15') ,
|
||||
( 'LABEL','IMAGE_DETAIL','en','Image detail','2014-01-15') ,
|
||||
( 'LABEL','IMPORT_LANGUAGE_ERR_NO_WRITABLE','en','The XML forms directory is not writable','2014-01-15') ,
|
||||
|
||||
@@ -120,6 +120,7 @@ CREATE TABLE `APP_DOCUMENT`
|
||||
`APP_UID` VARCHAR(32) default '' NOT NULL,
|
||||
`DEL_INDEX` INTEGER default 0 NOT NULL,
|
||||
`DOC_UID` VARCHAR(32) default '' NOT NULL,
|
||||
`DOC_ID` INTEGER default 0,
|
||||
`USR_UID` VARCHAR(32) default '' NOT NULL,
|
||||
`APP_DOC_TYPE` VARCHAR(32) default '' NOT NULL,
|
||||
`APP_DOC_CREATE_DATE` DATETIME NOT NULL,
|
||||
@@ -1583,6 +1584,7 @@ DROP TABLE IF EXISTS `APP_NOTES`;
|
||||
|
||||
CREATE TABLE `APP_NOTES`
|
||||
(
|
||||
`NOTE_ID` INTEGER NOT NULL AUTO_INCREMENT,
|
||||
`APP_UID` VARCHAR(32) default '' NOT NULL,
|
||||
`USR_UID` VARCHAR(32) default '' NOT NULL,
|
||||
`NOTE_DATE` DATETIME NOT NULL,
|
||||
@@ -1593,6 +1595,7 @@ CREATE TABLE `APP_NOTES`
|
||||
`NOTE_AFFECTED_OBJ1` VARCHAR(32) default '',
|
||||
`NOTE_AFFECTED_OBJ2` VARCHAR(32) default '' NOT NULL,
|
||||
`NOTE_RECIPIENTS` MEDIUMTEXT,
|
||||
UNIQUE KEY `NOTE_ID` (`NOTE_ID`),
|
||||
KEY `indexAppNotesDate`(`APP_UID`, `NOTE_DATE`),
|
||||
KEY `indexAppNotesUser`(`APP_UID`, `USR_UID`)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='Application Notes';
|
||||
|
||||
94
workflow/engine/methods/cases/casesShowCaseNotes.php
Normal file
94
workflow/engine/methods/cases/casesShowCaseNotes.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
/**
|
||||
* Download documents related to the cases notes
|
||||
*/
|
||||
|
||||
use ProcessMaker\BusinessModel\Cases;
|
||||
|
||||
if (empty($_SESSION['USER_LOGGED'])) {
|
||||
G::SendMessageText(G::LoadTranslation('ID_LOGIN_TO_SEE_OUTPUTDOCS'), "WARNING");
|
||||
G::header('Location: /errors/error403.php?url=' . urlencode($_SERVER['REQUEST_URI']));
|
||||
die();
|
||||
}
|
||||
|
||||
$appDocument = new AppDocument();
|
||||
|
||||
if (empty($_GET['a'])) {
|
||||
G::header('Location: /errors/error403.php');
|
||||
die();
|
||||
}
|
||||
|
||||
if (empty($_GET['v'])) {
|
||||
//Load last version of the document
|
||||
$docVersion = $appDocument->getLastAppDocVersion($_GET['a']);
|
||||
} else {
|
||||
$docVersion = $_GET['v'];
|
||||
}
|
||||
|
||||
$appDocument->fields = $appDocument->load($_GET['a'], $docVersion);
|
||||
|
||||
//Check if the document is a case note document
|
||||
if ($appDocument->fields['APP_DOC_TYPE'] != 'CASE_NOTE') {
|
||||
G::header('Location: /errors/error403.php');
|
||||
die();
|
||||
}
|
||||
|
||||
//Check if the user can be download the input Document
|
||||
//Send the parameter v = Version
|
||||
//Send the parameter a = Case UID
|
||||
if ($RBAC->userCanAccess('PM_FOLDERS_ALL') != 1 && defined('DISABLE_DOWNLOAD_DOCUMENTS_SESSION_VALIDATION') && DISABLE_DOWNLOAD_DOCUMENTS_SESSION_VALIDATION == 0) {
|
||||
if (!$appDocument->canDownloadInput($_SESSION['USER_LOGGED'], $_GET['a'], $docVersion)) {
|
||||
G::header('Location: /errors/error403.php');
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
//Create the Cases object
|
||||
$case = new Cases();
|
||||
//Get the case information to get the processUid
|
||||
$processUid = $case->getCaseInfo($appDocument->fields['APP_UID'], $_SESSION['USER_LOGGED'])->pro_uid;
|
||||
//Get the user authorization
|
||||
$userCanAccess = $case->userAuthorization(
|
||||
$_SESSION['USER_LOGGED'],
|
||||
$processUid,
|
||||
$appDocument->fields['APP_UID'],
|
||||
['PM_ALLCASES'],
|
||||
['CASES_NOTES' => 'VIEW']
|
||||
);
|
||||
|
||||
//Check if the user has the Case Notes permissions
|
||||
if ($userCanAccess['objectPermissions']['CASES_NOTES'] != 1) {
|
||||
G::header('Location: /errors/error403.php');
|
||||
die();
|
||||
}
|
||||
|
||||
$appDocUid = $appDocument->getAppDocUid();
|
||||
$docVersionInformation = $appDocument->getDocVersion();
|
||||
$info = pathinfo($appDocument->getAppDocFilename());
|
||||
$ext = (isset($info['extension']) ? $info['extension'] : '');
|
||||
|
||||
$download = true;
|
||||
|
||||
//Get the document path
|
||||
$appUid = G::getPathFromUID($appDocument->fields['APP_UID']);
|
||||
$file = G::getPathFromFileUID($appDocument->fields['APP_UID'], $appDocUid);
|
||||
|
||||
$realPath = PATH_DOCUMENT . $appUid . '/' . $file[0] . $file[1] . '_' . $docVersionInformation . '.' . $ext;
|
||||
$realPath1 = PATH_DOCUMENT . $appUid . '/' . $file[0] . $file[1] . '.' . $ext;
|
||||
$sw_file_exists = false;
|
||||
if (file_exists($realPath)) {
|
||||
$sw_file_exists = true;
|
||||
} elseif (file_exists($realPath1)) {
|
||||
$sw_file_exists = true;
|
||||
$realPath = $realPath1;
|
||||
}
|
||||
|
||||
if (!$sw_file_exists) {
|
||||
$error_message = G::LoadTranslation('ID_ERROR_STREAMING_FILE');
|
||||
G::SendMessageText($error_message, "ERROR");
|
||||
G::header('Location: ' . $_SERVER['HTTP_REFERER']);
|
||||
die();
|
||||
} else {
|
||||
$nameFile = $appDocument->fields['APP_DOC_FILENAME'];
|
||||
G::streamFile($realPath, $download, $nameFile); //download
|
||||
}
|
||||
@@ -1676,3 +1676,11 @@ white-space:normal;
|
||||
clear: both;
|
||||
height: 50px;
|
||||
}
|
||||
.nav_list li a {
|
||||
padding: 2px 2px 2px 10px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 100px;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
}
|
||||
@@ -1868,3 +1868,11 @@ white-space:normal;
|
||||
clear: both;
|
||||
height: 50px;
|
||||
}
|
||||
.nav_list li a {
|
||||
padding: 2px 2px 2px 10px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 100px;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
}
|
||||
@@ -1705,3 +1705,11 @@ text-decoration: none;
|
||||
clear: both;
|
||||
height: 50px;
|
||||
}
|
||||
.nav_list li a {
|
||||
padding: 2px 2px 2px 10px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 100px;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
}
|
||||
@@ -1250,3 +1250,11 @@ td.x-cnotes-label {
|
||||
clear: both;
|
||||
height: 50px;
|
||||
}
|
||||
.nav_list li a {
|
||||
padding: 2px 2px 2px 10px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 100px;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
}
|
||||
@@ -14,6 +14,7 @@ use AppHistoryPeer;
|
||||
use Application;
|
||||
use ApplicationPeer;
|
||||
use Applications;
|
||||
use AppNotes;
|
||||
use AppNotesPeer;
|
||||
use AppSolr;
|
||||
use BasePeer;
|
||||
@@ -40,12 +41,16 @@ use ProcessMaker\BusinessModel\Task as BmTask;
|
||||
use ProcessMaker\BusinessModel\User as BmUser;
|
||||
use ProcessMaker\Core\System;
|
||||
use ProcessMaker\Exception\UploadException;
|
||||
use ProcessMaker\Exception\CaseNoteUploadFile;
|
||||
use ProcessMaker\Model\Application as ModelApplication;
|
||||
use ProcessMaker\Model\AppNotes as Notes;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\Documents;
|
||||
use ProcessMaker\Plugins\PluginRegistry;
|
||||
use ProcessMaker\Services\OAuth2\Server;
|
||||
use ProcessMaker\Util\DateTime as UtilDateTime;
|
||||
use ProcessMaker\Validation\ExceptionRestApi;
|
||||
use ProcessMaker\Validation\ValidationUploadedFiles;
|
||||
use ProcessMaker\Validation\Validator as FileValidator;
|
||||
use ProcessPeer;
|
||||
use ProcessUser;
|
||||
@@ -3843,6 +3848,186 @@ class Cases
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a case note
|
||||
*
|
||||
* @param string $appUid
|
||||
* @param string $userUid
|
||||
* @param string $note
|
||||
* @param bool $sendMail
|
||||
* @param array $files
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function addNote($appUid, $userUid, $note, $sendMail = false, $files = [])
|
||||
{
|
||||
// Register the note
|
||||
$attributes = [
|
||||
"APP_UID" => $appUid,
|
||||
"USR_UID" => $userUid,
|
||||
"NOTE_DATE" => date("Y-m-d H:i:s"),
|
||||
"NOTE_CONTENT" => $note,
|
||||
"NOTE_TYPE" => "USER",
|
||||
"NOTE_AVAILABILITY" => "PUBLIC",
|
||||
"NOTE_RECIPIENTS" => ""
|
||||
];
|
||||
$newNote = Notes::create($attributes);
|
||||
// Get the FK
|
||||
$noteId = $newNote->NOTE_ID;
|
||||
|
||||
$attachments = [];
|
||||
// Register the files related to the note
|
||||
if (!empty($files) || !empty($_FILES["filesToUpload"])) {
|
||||
$filesResponse = $this->uploadFilesInCaseNotes($userUid, $appUid, $files, $noteId);
|
||||
foreach ($filesResponse['attachments'] as $key => $value) {
|
||||
$attachments[$key] = [];
|
||||
$attachments[$key]['APP_DOC_FILENAME'] = $value['APP_DOC_FILENAME'];
|
||||
$attachments[$key]['LINK'] = "../cases/casesShowCaseNotes?a=" . $value["APP_DOC_UID"] . "&v=" . $value["DOC_VERSION"];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Send the email
|
||||
if ($sendMail) {
|
||||
// Get the recipients
|
||||
$case = new ClassesCases();
|
||||
$p = $case->getUsersParticipatedInCase($appUid, 'ACTIVE');
|
||||
$noteRecipientsList = [];
|
||||
|
||||
foreach ($p["array"] as $key => $userParticipated) {
|
||||
if ($key != '') {
|
||||
$noteRecipientsList[] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
$noteRecipients = implode(",", $noteRecipientsList);
|
||||
$note = stripslashes($note);
|
||||
|
||||
// Send the notification
|
||||
$appNote = new AppNotes();
|
||||
$appNote->sendNoteNotification($appUid, $userUid, $note, $noteRecipients, '', 0, $noteId);
|
||||
}
|
||||
|
||||
// Prepare the response
|
||||
$result = [];
|
||||
$result['success'] = 'success';
|
||||
$result['message'] = '';
|
||||
$result['attachments'] = $attachments;
|
||||
$result['attachment_errors'] = [];
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload file related to the case notes
|
||||
*
|
||||
* @param string $userUid
|
||||
* @param string $appUid
|
||||
* @param array $filesReferences
|
||||
* @param int $noteId
|
||||
*
|
||||
* @return array
|
||||
* @throws Exception
|
||||
*/
|
||||
public function uploadFilesInCaseNotes($userUid, $appUid, $filesReferences = [], $noteId = 0)
|
||||
{
|
||||
$files = [];
|
||||
if (!empty($_FILES["filesToUpload"])) {
|
||||
$upload = true;
|
||||
// This format is from ext-js multipart
|
||||
$filesName = !empty($_FILES["filesToUpload"]["name"]) ? $_FILES["filesToUpload"]["name"] : [];
|
||||
$filesTmpName = !empty($_FILES["filesToUpload"]["tmp_name"]) ? $_FILES["filesToUpload"]["tmp_name"] : [];
|
||||
$filesError = !empty($_FILES["filesToUpload"]["error"]) ? $_FILES["filesToUpload"]["error"] : [];
|
||||
|
||||
foreach ($filesName as $index => $value) {
|
||||
if (!empty($value)) {
|
||||
$files[] = [
|
||||
'name' => $filesName[$index],
|
||||
'tmp_name' => $filesTmpName[$index],
|
||||
'error' => $filesError[$index]
|
||||
];
|
||||
}
|
||||
}
|
||||
} elseif (!empty($filesReferences)) {
|
||||
$upload = false;
|
||||
// Array with path references
|
||||
foreach ($filesReferences as $fileIndex => $fileName) {
|
||||
$nameFile = !is_numeric($fileIndex) ? basename($fileIndex) : basename($fileName);
|
||||
$files[] = [
|
||||
'name' => $nameFile,
|
||||
'tmp_name' => $fileName,
|
||||
'error' => UPLOAD_ERR_OK
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
//rules validation
|
||||
foreach ($files as $key => $value) {
|
||||
$entry = [
|
||||
"filename" => $value['name'],
|
||||
"path" => $value['tmp_name']
|
||||
];
|
||||
$validator = ValidationUploadedFiles::getValidationUploadedFiles()
|
||||
->runRulesForPostFilesOfNote($entry);
|
||||
if ($validator->fails()) {
|
||||
Notes::where('NOTE_ID', '=', $noteId)->delete();
|
||||
$messageError = G::LoadTranslation('ID_THE_FILE_COULDNT_BE_UPLOADED');
|
||||
throw new CaseNoteUploadFile($messageError . ' ' . $validator->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Get the delIndex related to the case
|
||||
$cases = new ClassesCases();
|
||||
$delIndex = $cases->getCurrentDelegation($appUid);
|
||||
|
||||
// We will to register the files in the database
|
||||
$response = [];
|
||||
$response['attachments'] = [];
|
||||
$response['attachment_errors'] = [];
|
||||
if (!empty($files)) {
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
foreach ($files as $fileIndex => $fileName) {
|
||||
// There is no error, the file uploaded with success
|
||||
if ($fileName["error"] === UPLOAD_ERR_OK) {
|
||||
$appDocUid = G::generateUniqueID();
|
||||
|
||||
// Upload or move the file
|
||||
$isUploaded = saveAppDocument($fileName, $appUid, $appDocUid, 1, $upload);
|
||||
|
||||
// If the file was uploaded correctly we will to register in the DB
|
||||
if ($isUploaded) {
|
||||
$attributes = [
|
||||
"DOC_ID" => $noteId,
|
||||
"APP_DOC_UID" => $appDocUid,
|
||||
"DOC_VERSION" => 1,
|
||||
"APP_UID" => $appUid,
|
||||
"DEL_INDEX" => $delIndex,
|
||||
"USR_UID" => $userUid,
|
||||
"DOC_UID" => -1,
|
||||
"APP_DOC_TYPE" => 'CASE_NOTE',
|
||||
"APP_DOC_CREATE_DATE" => date("Y-m-d H:i:s"),
|
||||
"APP_DOC_FILENAME" => $fileName["name"]
|
||||
];
|
||||
Documents::create($attributes);
|
||||
|
||||
// List of files uploaded or copy
|
||||
$response['attachments'][$i++] = $attributes;
|
||||
} else {
|
||||
$response['attachment_errors'][$j++] = [
|
||||
'error' => 'error',
|
||||
'file' => $fileName["name"]
|
||||
];
|
||||
}
|
||||
} else {
|
||||
throw new UploadException($fileName['error']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the validations related to an Input Document
|
||||
*
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace ProcessMaker\Exception;
|
||||
|
||||
use Exception;
|
||||
use Throwable;
|
||||
|
||||
class CaseNoteUploadFile extends Exception
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor method.
|
||||
* @param string $message
|
||||
* @param int $code
|
||||
* @param Throwable $previous
|
||||
*/
|
||||
public function __construct(string $message = "", int $code = 0, Throwable $previous = null)
|
||||
{
|
||||
parent::__construct($message, $code, $previous);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,101 @@ use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class AppNotes extends Model
|
||||
{
|
||||
// Set our table name
|
||||
protected $table = 'APP_NOTES';
|
||||
// No timestamps
|
||||
public $timestamps = false;
|
||||
// Primary key
|
||||
protected $primaryKey = 'NOTE_ID';
|
||||
// The IDs are auto-incrementing
|
||||
public $incrementing = true;
|
||||
|
||||
/**
|
||||
* The model's default values for attributes.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $attributes = [
|
||||
'NOTE_TYPE' => 'USER',
|
||||
'NOTE_ORIGIN_OBJ' => '',
|
||||
'NOTE_AFFECTED_OBJ1' => '',
|
||||
'NOTE_AFFECTED_OBJ2' => ''
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fillable = [
|
||||
'APP_UID',
|
||||
'USR_UID',
|
||||
'NOTE_DATE',
|
||||
'NOTE_CONTENT',
|
||||
'NOTE_TYPE',
|
||||
'NOTE_AVAILABILITY',
|
||||
'NOTE_ORIGIN_OBJ',
|
||||
'NOTE_AFFECTED_OBJ1',
|
||||
'NOTE_AFFECTED_OBJ2',
|
||||
'NOTE_RECIPIENTS'
|
||||
];
|
||||
|
||||
/**
|
||||
* Scope a query to filter an specific case
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param string $appUid
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeAppUid($query, string $appUid)
|
||||
{
|
||||
return $query->where('APP_UID', $appUid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the documents related to the case
|
||||
*
|
||||
* @param string $appUid
|
||||
* @param int $start
|
||||
* @param int $limit
|
||||
* @param string $dir
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getNotes(string $appUid, $start = 0, $limit = 25, $dir = 'DESC')
|
||||
{
|
||||
$query = AppNotes::query()->select([
|
||||
'NOTE_ID',
|
||||
'APP_UID',
|
||||
'NOTE_DATE',
|
||||
'NOTE_CONTENT',
|
||||
'NOTE_TYPE',
|
||||
'NOTE_AVAILABILITY',
|
||||
'USERS.USR_UID',
|
||||
'USERS.USR_USERNAME',
|
||||
'USERS.USR_FIRSTNAME',
|
||||
'USERS.USR_LASTNAME'
|
||||
]);
|
||||
$query->leftJoin('USERS', function ($join) {
|
||||
$join->on('USERS.USR_UID', '=', 'APP_NOTES.USR_UID');
|
||||
});
|
||||
$query->appUid($appUid);
|
||||
$query->orderBy('NOTE_DATE', $dir);
|
||||
// Add pagination to the query
|
||||
$query->offset($start)->limit($limit);
|
||||
|
||||
$results = $query->get();
|
||||
$notes = [];
|
||||
$notes['notes'] = [];
|
||||
$results->each(function ($item, $key) use (&$notes) {
|
||||
$row = $item->toArray();
|
||||
$row['NOTE_CONTENT'] = stripslashes($row['NOTE_CONTENT']);
|
||||
$notes['notes'][] = $row;
|
||||
});
|
||||
|
||||
// Add the total of rows to return
|
||||
$notes['totalCount'] = $limit;
|
||||
|
||||
return $notes;
|
||||
}
|
||||
}
|
||||
|
||||
148
workflow/engine/src/ProcessMaker/Model/Documents.php
Normal file
148
workflow/engine/src/ProcessMaker/Model/Documents.php
Normal file
@@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
namespace ProcessMaker\Model;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Documents extends Model
|
||||
{
|
||||
// Set our table name
|
||||
protected $table = 'APP_DOCUMENT';
|
||||
// No timestamps
|
||||
public $timestamps = false;
|
||||
// Primary key
|
||||
protected $primaryKey = 'NOTE_ID';
|
||||
// The IDs are auto-incrementing
|
||||
public $incrementing = false;
|
||||
// Valid AppDocType's
|
||||
const DOC_TYPE_ATTACHED = 'ATTACHED';
|
||||
const DOC_TYPE_CASE_NOTE = 'CASE_NOTE';
|
||||
const DOC_TYPE_INPUT = 'INPUT';
|
||||
const DOC_TYPE_OUTPUT = 'OUTPUT';
|
||||
|
||||
/**
|
||||
* The model's default values for attributes.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $attributes = [
|
||||
'APP_DOC_TITLE' => '',
|
||||
'APP_DOC_COMMENT' => '',
|
||||
'DOC_UID' => '-1',
|
||||
'FOLDER_UID' => '',
|
||||
'APP_DOC_PLUGIN' => '',
|
||||
'APP_DOC_TAGS' => '',
|
||||
'APP_DOC_FIELDNAME' => '',
|
||||
'APP_DOC_DRIVE_DOWNLOAD' => 'a:0:{}',
|
||||
'SYNC_WITH_DRIVE' => 'UNSYNCHRONIZED',
|
||||
'SYNC_PERMISSIONS' => '',
|
||||
'APP_DOC_STATUS_DATE' => '',
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fillable = [
|
||||
'DOC_ID',
|
||||
'APP_DOC_UID',
|
||||
'DOC_VERSION',
|
||||
'APP_DOC_FILENAME',
|
||||
'APP_UID',
|
||||
'DEL_INDEX',
|
||||
'DOC_UID',
|
||||
'USR_UID',
|
||||
'APP_DOC_TYPE',
|
||||
'APP_DOC_CREATE_DATE',
|
||||
'APP_DOC_INDEX',
|
||||
'FOLDER_UID',
|
||||
'APP_DOC_STATUS',
|
||||
];
|
||||
|
||||
/**
|
||||
* Scope a query to filter an specific case
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param string $appUid
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeAppUid($query, string $appUid)
|
||||
{
|
||||
return $query->where('APP_UID', $appUid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope a query to filter an specific reference file
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param int $docId
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeDocId($query, int $docId)
|
||||
{
|
||||
return $query->where('DOC_ID', $docId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the documents related to the case
|
||||
*
|
||||
* @param string $appUid
|
||||
* @param string $type
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getAppFiles(string $appUid, $type = 'CASE_NOTES')
|
||||
{
|
||||
$query = Documents::query()->select();
|
||||
$query->appUid($appUid);
|
||||
$query->where('APP_DOC_TYPE', $type);
|
||||
$results = $query->get();
|
||||
$documentList = [];
|
||||
$results->each(function ($item, $key) use (&$documentList) {
|
||||
$documentList[] = $item->toArray();
|
||||
});
|
||||
|
||||
return $documentList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get attached files from the case note.
|
||||
*
|
||||
* @param string $appUid
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
public static function getAttachedFilesFromTheCaseNote(string $appUid)
|
||||
{
|
||||
$result = Documents::select('APP_DOCUMENT.APP_DOC_UID', 'APP_DOCUMENT.DOC_VERSION', 'APP_DOCUMENT.APP_DOC_FILENAME')
|
||||
->join('APP_NOTES', function($join) use($appUid) {
|
||||
$join->on('APP_NOTES.NOTE_ID', '=', 'APP_DOCUMENT.DOC_ID')
|
||||
->where('APP_DOCUMENT.APP_UID', '=', $appUid);
|
||||
})
|
||||
->get();
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the documents related to the specific DOC_ID
|
||||
*
|
||||
* @param int $docId
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getFiles(int $docId)
|
||||
{
|
||||
$query = Documents::query()->select(['APP_DOC_UID', 'APP_DOC_FILENAME', 'DOC_VERSION']);
|
||||
$query->docId($docId);
|
||||
$results = $query->get();
|
||||
$documentList = [];
|
||||
$results->each(function ($item, $key) use (&$documentList) {
|
||||
$row = $item->toArray();
|
||||
$row['LINK'] = "../cases/casesShowCaseNotes?a=" . $row["APP_DOC_UID"] . "&v=" . $row["DOC_VERSION"];
|
||||
$documentList[] = $row;
|
||||
});
|
||||
|
||||
return $documentList;
|
||||
}
|
||||
}
|
||||
@@ -601,3 +601,42 @@ function getMysqlVersion()
|
||||
|
||||
return $mysqlVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the uploaded file to the documents folder
|
||||
*
|
||||
* @param array $file
|
||||
* @param string $appUid
|
||||
* @param string $appDocUid
|
||||
* @param int $version
|
||||
* @param bool $upload
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function saveAppDocument($file, $appUid, $appDocUid, $version = 1, $upload = true)
|
||||
{
|
||||
try {
|
||||
$info = pathinfo($file["name"]);
|
||||
$extension = ((isset($info["extension"])) ? $info["extension"] : "");
|
||||
$fileName = $appDocUid . "_" . $version . "." . $extension;
|
||||
|
||||
$pathCase = PATH_DATA_SITE . 'files' . PATH_SEP . G::getPathFromUID($appUid) . PATH_SEP;
|
||||
|
||||
$response = false;
|
||||
if ($upload) {
|
||||
G::uploadFile(
|
||||
$file["tmp_name"],
|
||||
$pathCase,
|
||||
$fileName
|
||||
);
|
||||
$response = true;
|
||||
} else {
|
||||
G::verifyPath($pathCase, true);
|
||||
$response = copy($file["tmp_name"], $pathCase . $fileName);
|
||||
}
|
||||
|
||||
return $response;
|
||||
} catch (Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,16 @@ class ValidationUploadedFiles
|
||||
*/
|
||||
private $fails = [];
|
||||
|
||||
/**
|
||||
* Return this constant when rule is invalid.
|
||||
*/
|
||||
private const INVALID = true;
|
||||
|
||||
/**
|
||||
* Return this constant when rule is valid.
|
||||
*/
|
||||
private const VALID = false;
|
||||
|
||||
/**
|
||||
* Check if the loaded files comply with the validation rules, add here if you
|
||||
* want more validation rules.
|
||||
@@ -280,6 +290,110 @@ class ValidationUploadedFiles
|
||||
return $validator->validate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the loaded files comply with the validation rules, add here if you
|
||||
* want more validation rules.
|
||||
* Accept per argument an array or object that contains a "filename" and "path" values.
|
||||
* The rules are verified in the order in which they have been added.
|
||||
*
|
||||
* @param array|object $file
|
||||
* @return Validator
|
||||
*/
|
||||
public function runRulesForPostFilesOfNote($file)
|
||||
{
|
||||
$validator = new Validator();
|
||||
|
||||
//rule: file exists
|
||||
$rule = $validator->addRule();
|
||||
$rule->validate($file, function($file) use($rule) {
|
||||
$path = isset($file->path) ? $file->path : "";
|
||||
$filesystem = new Filesystem();
|
||||
if (!$filesystem->exists($path)) {
|
||||
$rule->message(G::LoadTranslation('ID_NOT_EXISTS_FILE'));
|
||||
return self::INVALID;
|
||||
}
|
||||
return self::VALID;
|
||||
})
|
||||
->status(400)
|
||||
->log(function($rule) {
|
||||
/**
|
||||
* Levels supported by MonologProvider is:
|
||||
* 100 "DEBUG"
|
||||
* 200 "INFO"
|
||||
* 250 "NOTICE"
|
||||
* 300 "WARNING"
|
||||
* 400 "ERROR"
|
||||
* 500 "CRITICAL"
|
||||
* 550 "ALERT"
|
||||
* 600 "EMERGENCY"
|
||||
*/
|
||||
Bootstrap::registerMonologPhpUploadExecution('phpUpload', $rule->getStatus(), $rule->getMessage(), $rule->getData()->filename);
|
||||
});
|
||||
|
||||
//rule: extensions
|
||||
$rule = $validator->addRule();
|
||||
$rule->validate($file, function($file) use($rule) {
|
||||
$filesystem = new Filesystem();
|
||||
$extension = strtolower($filesystem->extension($file->filename));
|
||||
$extensions = [
|
||||
'pdf', 'gif', 'jpg', 'png', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'mp4', 'mpv', 'mpeg', 'mpg', 'mov'
|
||||
];
|
||||
if (!in_array($extension, $extensions)) {
|
||||
$rule->message(G::LoadTranslation('ID_YOU_UPLOADED_AN_UNSUPPORTED_FILE_EXTENSION'));
|
||||
return self::INVALID;
|
||||
}
|
||||
return self::VALID;
|
||||
})
|
||||
->status(400)
|
||||
->log(function($rule) {
|
||||
/**
|
||||
* Levels supported by MonologProvider is:
|
||||
* 100 "DEBUG"
|
||||
* 200 "INFO"
|
||||
* 250 "NOTICE"
|
||||
* 300 "WARNING"
|
||||
* 400 "ERROR"
|
||||
* 500 "CRITICAL"
|
||||
* 550 "ALERT"
|
||||
* 600 "EMERGENCY"
|
||||
*/
|
||||
Bootstrap::registerMonologPhpUploadExecution('phpUpload', $rule->getStatus(), $rule->getMessage(), $rule->getData()->filename);
|
||||
});
|
||||
|
||||
//rule: file size
|
||||
$rule = $validator->addRule();
|
||||
$rule->validate($file, function($file) use($rule) {
|
||||
$path = isset($file->path) ? $file->path : "";
|
||||
$filesystem = new Filesystem();
|
||||
$limitSize = '10M';
|
||||
$size = $filesystem->size($path);
|
||||
$phpShorthandByte = new PhpShorthandByte();
|
||||
$postMaxSizeBytes = $phpShorthandByte->valueToBytes($limitSize);
|
||||
if ($size > $postMaxSizeBytes) {
|
||||
$rule->message(G::LoadTranslation('ID_YOUR_FILE_HAS_EXCEEDED', [$limitSize]));
|
||||
return self::INVALID;
|
||||
}
|
||||
return self::VALID;
|
||||
})
|
||||
->status(400)
|
||||
->log(function($rule) {
|
||||
/**
|
||||
* Levels supported by MonologProvider is:
|
||||
* 100 "DEBUG"
|
||||
* 200 "INFO"
|
||||
* 250 "NOTICE"
|
||||
* 300 "WARNING"
|
||||
* 400 "ERROR"
|
||||
* 500 "CRITICAL"
|
||||
* 550 "ALERT"
|
||||
* 600 "EMERGENCY"
|
||||
*/
|
||||
Bootstrap::registerMonologPhpUploadExecution('phpUpload', $rule->getStatus(), $rule->getMessage(), $rule->getData()->filename);
|
||||
});
|
||||
|
||||
return $validator->validate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the first error and call the argument function.
|
||||
*
|
||||
|
||||
@@ -4,8 +4,9 @@ var storeNotes;
|
||||
var appUid;
|
||||
var title;
|
||||
var summaryWindowOpened = false;
|
||||
|
||||
var toolTipChkSendMail;
|
||||
var caseNotesForm;
|
||||
var uploadItemsSize = 5;
|
||||
|
||||
function closeCaseNotesWindow(){
|
||||
if(Ext.get("caseNotesWindowPanel")){
|
||||
@@ -39,7 +40,7 @@ function openCaseNotesWindow(appUid1, delIndex, modalSw, appTitle, proUid, taskU
|
||||
url: "../appProxy/getNotesList?appUid=" + appUid + "&delIndex=" + delIndex + "&pro=" + proUid + "&tas=" + taskUid,
|
||||
root: 'notes',
|
||||
totalProperty: 'totalCount',
|
||||
fields: ['USR_USERNAME','USR_FIRSTNAME','USR_LASTNAME','USR_FULL_NAME','NOTE_DATE','NOTE_CONTENT', 'USR_UID', 'user'],
|
||||
fields: ['USR_USERNAME','USR_FIRSTNAME','USR_LASTNAME','USR_FULL_NAME','NOTE_DATE','NOTE_CONTENT', 'USR_UID','USR_EMAIL', 'attachments', 'user'],
|
||||
baseParams:{
|
||||
start:0,
|
||||
limit:startRecord+loadSize
|
||||
@@ -117,7 +118,8 @@ function openCaseNotesWindow(appUid1, delIndex, modalSw, appTitle, proUid, taskU
|
||||
'<td class="x-cnotes-label"><img border="0" src="../users/users_ViewPhotoGrid?pUID={USR_UID}" width="40" height="40"/></td>' +
|
||||
'<td class="x-cnotes-name">'+
|
||||
'<p class="user-from">{user}</p>'+
|
||||
'<p style="width: 370px; overflow-x:auto; height: 80px;", class="x-editable x-message">{NOTE_CONTENT}</p> '+
|
||||
'<div style="width: 370px; overflow-x:auto; height: 80px;" class="x-editable x-message"><p>{NOTE_CONTENT}</p>'+
|
||||
'<ul class="nav_list"><li>{files}</li></ul></div>' +
|
||||
'<p class="x-editable"><small>'+_('ID_POSTED_AT')+'<i> {NOTE_DATE}</i></small></p>'+
|
||||
'</td>' +
|
||||
'</tr>' +
|
||||
@@ -126,15 +128,16 @@ function openCaseNotesWindow(appUid1, delIndex, modalSw, appTitle, proUid, taskU
|
||||
itemSelector: 'div.x-cnotes-source',
|
||||
overClass: 'x-cnotes-over',
|
||||
selectedClass: 'x-cnotes-selected',
|
||||
singleSelect: true,
|
||||
singleSelect: false,
|
||||
|
||||
prepareData: function(data){
|
||||
//data.shortName = Ext.util.Format.ellipsis(data.name, 15);
|
||||
//data.sizeString = Ext.util.Format.fileSize(data.size);
|
||||
//data.dateString = data.lastmod.format("m/d/Y g:i a");
|
||||
|
||||
data.user = _FNF(data.USR_USERNAME, data.USR_FIRSTNAME, data.USR_LASTNAME);
|
||||
var i;
|
||||
data.user = _FNF(data.USR_EMAIL, data.USR_FIRSTNAME, data.USR_LASTNAME);
|
||||
data.NOTE_CONTENT = data.NOTE_CONTENT.replace(/\n/g,' <br/>');
|
||||
data.files = "";
|
||||
for (i = 0; i < data.attachments.length; i += 1) {
|
||||
data.files += "<a href='" + data.attachments[i].LINK + "' title='" + data.attachments[i].APP_DOC_FILENAME + "'>" + data.attachments[i].APP_DOC_FILENAME + "</a>";
|
||||
}
|
||||
return data;
|
||||
},
|
||||
|
||||
@@ -171,12 +174,101 @@ function openCaseNotesWindow(appUid1, delIndex, modalSw, appTitle, proUid, taskU
|
||||
}
|
||||
]
|
||||
});
|
||||
/**
|
||||
* Factory to create upload files field dinamically
|
||||
* @return {Object}
|
||||
*/
|
||||
function uploadFileFactory () {
|
||||
return {
|
||||
xtype: 'fileuploadfield',
|
||||
emptyText: '',
|
||||
fieldLabel: _('ID_ATTACH_FILE'),
|
||||
buttonText: _('ID_SELECT_FILE'),
|
||||
name: 'filesToUpload[]',
|
||||
allowBlank: true,
|
||||
width : '70%',
|
||||
validator: function (filePath) {
|
||||
var flag = false;
|
||||
if (caseNotesWindow.isVisible() === false || filePath === "") {
|
||||
return true;
|
||||
}
|
||||
filePath = filePath.replace(/^\s|\s$/g, ""); //trims string
|
||||
if (filePath.match(/([^\/\\]+)\.(pdf|gif|jpg|png|doc|docx|xls|xlsx|txt|mp4|mpv|mpeg|mpg|mov)$/i)) {
|
||||
flag = true;
|
||||
} else {
|
||||
messageError = _('ID_ERROR_UPLOADING_IMAGE_TYPE');
|
||||
PMExt.notify(_('ID_ERROR'), messageError);
|
||||
flag = false;
|
||||
this.setRawValue(null);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
// Cases notes form to insert coments and attach files
|
||||
caseNotesForm = new Ext.FormPanel({
|
||||
width: 462,
|
||||
anchor: '100%',
|
||||
baseCls: 'x-plain',
|
||||
fileUpload: true,
|
||||
items:
|
||||
[
|
||||
{
|
||||
text : _('ID_NEW_NOTE'),
|
||||
xtype : 'textarea',
|
||||
id : 'caseNoteText',
|
||||
name : 'caseNoteText',
|
||||
width : '98%',
|
||||
height : 100,
|
||||
hideLabel: true,
|
||||
maxLengthText : 1500,
|
||||
allowBlank :false,
|
||||
selectOnFocus :true,
|
||||
enableKeyEvents: true,
|
||||
listeners : {
|
||||
scope : this,
|
||||
keyup : updateTextCtr,
|
||||
keydown: updateTextCtr,
|
||||
'change': function(field, newVal, oldVal) {
|
||||
var textAreaValue = newVal.replace(/^\s+/,'').replace(/\s+$/,'');
|
||||
field.setValue(textAreaValue.trim());
|
||||
Ext.getCmp('caseNoteText').focus(false, 200);
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
buttons:
|
||||
[
|
||||
{
|
||||
text: _('ID_ADD_FILE'),
|
||||
id: 'btnAddFile',
|
||||
type: 'button',
|
||||
handler: function () {
|
||||
var uploadFields = caseNotesForm.findByType('fileuploadfield');
|
||||
if (uploadFields.length >= 1 && uploadFields.length < uploadItemsSize) {
|
||||
if (uploadFields[uploadFields.length - 1].getValue() !== "") {
|
||||
caseNotesForm.add(uploadFileFactory());
|
||||
caseNotesForm.doLayout();
|
||||
caseNotesWindow.doLayout();
|
||||
} else {
|
||||
messageError = _('ID_PLEASE_SELECT_FILES_TO_UPLOAD');
|
||||
PMExt.notify(_('ID_ERROR'), messageError);
|
||||
}
|
||||
}
|
||||
if (uploadFields.length === uploadItemsSize - 1) {
|
||||
this.setDisabled(true);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
caseNotesWindow = new Ext.Window({
|
||||
title: _('ID_CASES_NOTES'), //Title of the Window
|
||||
id: 'caseNotesWindowPanel', //ID of the Window Panel
|
||||
width: 480, //Width of the Window
|
||||
resizable: true, //Resize of the Window, if false - it cannot be resized
|
||||
resizable: false, //Resize of the Window, if false - it cannot be resized
|
||||
closable: true, //Hide close button of the Window
|
||||
modal: modalSw, //When modal:true it make the window modal and mask everything behind it when displayed
|
||||
//iconCls: 'ICON_CASES_NOTES',
|
||||
@@ -203,33 +295,7 @@ function openCaseNotesWindow(appUid1, delIndex, modalSw, appTitle, proUid, taskU
|
||||
}
|
||||
}
|
||||
],
|
||||
tbar:[
|
||||
new Ext.form.TextArea({
|
||||
text : _('ID_NEW_NOTE'),
|
||||
xtype : 'textarea',
|
||||
id : 'caseNoteText',
|
||||
name : 'caseNoteText',
|
||||
width : 440,
|
||||
grow : true,
|
||||
height : 100,
|
||||
growMin: 100,
|
||||
growMax: 80,
|
||||
maxLengthText : 1500,
|
||||
allowBlank :false,
|
||||
selectOnFocus :true,
|
||||
enableKeyEvents: true,
|
||||
listeners : {
|
||||
scope : this,
|
||||
keyup : updateTextCtr,
|
||||
keydown: updateTextCtr,
|
||||
'change': function(field, newVal, oldVal){
|
||||
var textAreaValue = newVal.replace(/^\s+/,'').replace(/\s+$/,'');
|
||||
field.setValue(textAreaValue.trim());
|
||||
Ext.getCmp('caseNoteText').focus(false, 200);
|
||||
}
|
||||
}
|
||||
})
|
||||
],
|
||||
tbar:[caseNotesForm],
|
||||
rowtbar: [
|
||||
[
|
||||
{
|
||||
@@ -281,6 +347,9 @@ function openCaseNotesWindow(appUid1, delIndex, modalSw, appTitle, proUid, taskU
|
||||
this.loadMask = new Ext.LoadMask(this.body, {
|
||||
msg:_('ID_LOADING')
|
||||
});
|
||||
caseNotesForm.add(uploadFileFactory());
|
||||
caseNotesForm.doLayout();
|
||||
caseNotesWindow.doLayout();
|
||||
},
|
||||
close:function(){
|
||||
if (typeof(parent.setFlag) != 'undefined') {
|
||||
@@ -320,6 +389,7 @@ function updateTextCtr(body, event) {
|
||||
|
||||
function newNoteHandler()
|
||||
{
|
||||
var i;
|
||||
newNoteAreaActive = newNoteAreaActive ? false : true;
|
||||
if (newNoteAreaActive) {
|
||||
Ext.getCmp('addCancelBtn').setText('');
|
||||
@@ -349,6 +419,14 @@ function newNoteHandler()
|
||||
document.getElementById('countChar').style.display = 'block';
|
||||
Ext.getCmp('caseNoteText').focus();
|
||||
Ext.getCmp('caseNoteText').reset();
|
||||
uploadFields = caseNotesForm.findByType('fileuploadfield');
|
||||
// clean the first upload field
|
||||
uploadFields[0].setRawValue(null);
|
||||
for (i = 1; i < uploadFields.length; i += 1) {
|
||||
caseNotesForm.remove(uploadFields[i]);
|
||||
}
|
||||
caseNotesForm.doLayout();
|
||||
Ext.getCmp('btnAddFile').setDisabled(false);
|
||||
document.getElementById('countChar').innerHTML = '1500';
|
||||
caseNotesWindow.doLayout();
|
||||
}
|
||||
@@ -356,81 +434,76 @@ function newNoteHandler()
|
||||
caseNotesWindow.doLayout();
|
||||
}
|
||||
|
||||
function sendNote()
|
||||
{
|
||||
function sendNote(){
|
||||
var noteText = Ext.getCmp('caseNoteText').getValue();
|
||||
|
||||
if (noteText == "") {
|
||||
return false;
|
||||
}
|
||||
|
||||
newNoteHandler();
|
||||
|
||||
Ext.getCmp('caseNoteText').focus();
|
||||
Ext.getCmp('caseNoteText').reset();
|
||||
Ext.getCmp('caseNoteText').setDisabled(true);
|
||||
Ext.getCmp('sendBtn').setDisabled(true);
|
||||
Ext.getCmp('addCancelBtn').setDisabled(true);
|
||||
statusBarMessage( _('ID_CASES_NOTE_POSTING'), true);
|
||||
Ext.Ajax.request({
|
||||
url : '../appProxy/postNote' ,
|
||||
params : {
|
||||
appUid: appUid,
|
||||
noteText: noteText,
|
||||
swSendMail: (Ext.getCmp("chkSendMail").checked == true)? 1 : 0
|
||||
},
|
||||
success: function ( result, request ) {
|
||||
var data = Ext.util.JSON.decode(result.responseText);
|
||||
if(data.success=="success"){
|
||||
Ext.getCmp('caseNoteText').setDisabled(false);
|
||||
Ext.getCmp('sendBtn').setDisabled(false);
|
||||
Ext.getCmp('addCancelBtn').setDisabled(false);
|
||||
if (data.message != '') {
|
||||
Ext.Msg.show({
|
||||
|
||||
caseNotesForm.getForm().submit({
|
||||
clientValidation: true,
|
||||
url: '../appProxy/postNote',
|
||||
params: {
|
||||
appUid: appUid,
|
||||
noteText: noteText,
|
||||
swSendMail: (Ext.getCmp("chkSendMail").checked === true) ? 1 : 0
|
||||
},
|
||||
success: function ( result, request ) {
|
||||
var data = Ext.util.JSON.decode(request.response.responseText);
|
||||
if(data.success=="success"){
|
||||
Ext.getCmp('caseNoteText').setDisabled(false);
|
||||
Ext.getCmp('sendBtn').setDisabled(false);
|
||||
Ext.getCmp('addCancelBtn').setDisabled(false);
|
||||
if (data.message != '') {
|
||||
Ext.Msg.show({
|
||||
title : _('ID_CASES_NOTE_POST_ERROR'),
|
||||
msg : data.message,
|
||||
icon : Ext.MessageBox.WARNING,
|
||||
buttons : Ext.Msg.OK,
|
||||
fn : function(btn) {
|
||||
statusBarMessage( _('ID_CASES_NOTE_POST_SUCCESS'), false,true);
|
||||
storeNotes.load();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
statusBarMessage( _('ID_CASES_NOTE_POST_SUCCESS'), false,true);
|
||||
storeNotes.load();
|
||||
}
|
||||
} else if (data.lostSession) {
|
||||
Ext.Msg.show({
|
||||
title : _('ID_CASES_NOTE_POST_ERROR'),
|
||||
msg : data.message,
|
||||
icon : Ext.MessageBox.WARNING,
|
||||
icon : Ext.MessageBox.ERROR,
|
||||
buttons : Ext.Msg.OK,
|
||||
fn : function(btn) {
|
||||
statusBarMessage( _('ID_CASES_NOTE_POST_SUCCESS'), false,true);
|
||||
storeNotes.load();
|
||||
try {
|
||||
prnt = parent.parent;
|
||||
top.location = top.location;
|
||||
} catch (err) {
|
||||
parent.location = parent.location;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
statusBarMessage( _('ID_CASES_NOTE_POST_SUCCESS'), false,true);
|
||||
storeNotes.load();
|
||||
}
|
||||
} else if (data.lostSession) {
|
||||
Ext.Msg.show({
|
||||
title : _('ID_CASES_NOTE_POST_ERROR'),
|
||||
msg : data.message,
|
||||
icon : Ext.MessageBox.ERROR,
|
||||
buttons : Ext.Msg.OK,
|
||||
fn : function(btn) {
|
||||
try
|
||||
{
|
||||
prnt = parent.parent;
|
||||
top.location = top.location;
|
||||
}
|
||||
catch (err)
|
||||
{
|
||||
parent.location = parent.location;
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Ext.getCmp('caseNoteText').setDisabled(false);
|
||||
Ext.getCmp('sendBtn').setDisabled(false);
|
||||
Ext.getCmp('addCancelBtn').setDisabled(false);
|
||||
statusBarMessage( _('ID_CASES_NOTE_POST_ERROR'), false,false);
|
||||
Ext.MessageBox.alert(_('ID_CASES_NOTE_POST_ERROR'), data.message);
|
||||
Ext.getCmp('caseNoteText').setDisabled(false);
|
||||
Ext.getCmp('sendBtn').setDisabled(false);
|
||||
Ext.getCmp('addCancelBtn').setDisabled(false);
|
||||
statusBarMessage( _('ID_CASES_NOTE_POST_ERROR'), false,false);
|
||||
Ext.MessageBox.alert(_('ID_CASES_NOTE_POST_ERROR'), data.message);
|
||||
|
||||
}
|
||||
},
|
||||
failure: function ( result, request) {
|
||||
statusBarMessage( _('ID_CASES_NOTE_POST_FAILED'), false,false);
|
||||
Ext.MessageBox.alert(_('ID_CASES_NOTE_POST_FAILED'), result.responseText);
|
||||
}
|
||||
},
|
||||
failure: function ( result, request) {
|
||||
statusBarMessage( _('ID_CASES_NOTE_POST_FAILED'), false,false);
|
||||
Ext.MessageBox.alert(_('ID_CASES_NOTE_POST_FAILED'), result.responseText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -974,6 +974,7 @@ if (!defined('EXECUTE_BY_CRON')) {
|
||||
$noLoginFiles[] = 'cases_SaveData';
|
||||
$noLoginFiles[] = 'cases_Derivate';
|
||||
$noLoginFiles[] = 'cases_NextStep';
|
||||
$noLoginFiles[] = 'casesShowCaseNotes';
|
||||
$noLoginFiles[] = 'genericAjax';
|
||||
$noLoginFiles[] = 'casesSaveDataView';
|
||||
$noLoginFiles[] = 'propelTableAjax';
|
||||
|
||||
Reference in New Issue
Block a user