define(\ProcessMaker\Model\Application::class, function(Faker $faker) { $user = factory(\ProcessMaker\Model\User::class)->create(); $appNumber = $faker->unique()->numberBetween(1000); //APP_TITLE field is used in 'MYSQL: MATCH() AGAINST()' function, string size should not be less than 3. $appTitle = $faker->lexify(str_repeat('?', rand(3, 5)) . ' ' . str_repeat('?', rand(3, 5))); //APP_STATUS must start in TO_DO because all tests require this state. return [ 'APP_UID' => G::generateUniqueID(), 'APP_TITLE' => $appTitle, 'APP_NUMBER' => $appNumber, 'APP_STATUS' => 'TO_DO', 'APP_STATUS_ID' => 2, 'PRO_UID' => function() { return factory(\ProcessMaker\Model\Process::class)->create()->PRO_UID; }, 'APP_PARALLEL' => 'N', 'APP_INIT_USER' => $user->USR_UID, 'APP_CUR_USER' => $user->USR_UID, 'APP_PIN' => G::generateUniqueID(), 'APP_CREATE_DATE' => $faker->dateTime(), 'APP_UPDATE_DATE' => $faker->dateTime(), 'APP_INIT_DATE' => $faker->dateTime(), 'APP_DATA' => serialize(['APP_NUMBER' => $appNumber]) ]; }); // Create a delegation with the foreign keys $factory->state(\ProcessMaker\Model\Application::class, 'foreign_keys', function (Faker $faker) { // Create values in the foreign key relations $process = factory(\ProcessMaker\Model\Process::class)->create(); $user = factory(\ProcessMaker\Model\User::class)->create(); $appNumber = $faker->unique()->numberBetween(1000); //APP_TITLE field is used in 'MYSQL: MATCH() AGAINST()' function, string size should not be less than 3. $appTitle = $faker->lexify(str_repeat('?', rand(3, 5)) . ' ' . str_repeat('?', rand(3, 5))); //APP_STATUS must start in TO_DO because all tests require this state. return [ 'APP_UID' => G::generateUniqueID(), 'APP_TITLE' => $appTitle, 'APP_NUMBER' => $appNumber, 'APP_STATUS' => 'TO_DO', 'APP_STATUS_ID' => 2, 'PRO_UID' => $process->PRO_UID, 'APP_PARALLEL' => 'N', 'APP_INIT_USER' => $user->USR_UID, 'APP_CUR_USER' => $user->USR_UID, 'APP_PIN' => G::generateUniqueID(), 'APP_CREATE_DATE' => $faker->dateTime(), 'APP_UPDATE_DATE' => $faker->dateTime(), 'APP_INIT_DATE' => $faker->dateTime(), 'APP_DATA' => serialize(['APP_NUMBER' => $appNumber]) ]; }); $factory->state(\ProcessMaker\Model\Application::class, 'todo', function (Faker $faker) { return [ 'APP_NUMBER' => $faker->unique()->numberBetween(1000), 'APP_STATUS_ID' => 2, 'APP_STATUS' => 'TO_DO' ]; }); $factory->state(\ProcessMaker\Model\Application::class, 'draft', function (Faker $faker) { return [ 'APP_NUMBER' => $faker->unique()->numberBetween(1000), 'APP_STATUS_ID' => 1, 'APP_STATUS' => 'DRAFT' ]; }); $factory->state(\ProcessMaker\Model\Application::class, 'completed', function (Faker $faker) { return [ 'APP_NUMBER' => $faker->unique()->numberBetween(1000), 'APP_STATUS_ID' => 3, 'APP_STATUS' => 'COMPLETED' ]; }); $factory->state(\ProcessMaker\Model\Application::class, 'draft_minor_case', function (Faker $faker) { $caseNumber = $faker->unique()->numberBetween(1, 1000); return [ 'APP_NUMBER' => $caseNumber, 'APP_TITLE' => 'Case # ' . $caseNumber, 'APP_STATUS_ID' => 1, 'APP_STATUS' => 'DRAFT', 'APP_UPDATE_DATE' => $faker->dateTimeBetween('-2 year', '-1 year') ]; }); $factory->state(\ProcessMaker\Model\Application::class, 'draft_major_case', function (Faker $faker) { $caseNumber = $faker->unique()->numberBetween(2000, 3000); return [ 'APP_NUMBER' => $caseNumber, 'APP_TITLE' => 'Case # ' . $caseNumber, 'APP_STATUS_ID' => 1, 'APP_STATUS' => 'DRAFT', 'APP_UPDATE_DATE' => $faker->dateTimeBetween('now', '+1 year') ]; });