Merged in victorsl/processmaker (pull request #385)

ProcessMaker-BE "Calendar cambios"
This commit is contained in:
Erik Amaru Ortiz
2014-04-10 10:24:42 -04:00
3 changed files with 88 additions and 54 deletions

View File

@@ -8,8 +8,8 @@ class Calendar
"CAL_NAME" => array("fieldName" => "CALENDAR_NAME", "type" => "string", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "calendarName"),
"CAL_DESCRIPTION" => array("fieldName" => "CALENDAR_DESCRIPTION", "type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "calendarDescription"),
"CAL_WORK_DAYS" => array("fieldName" => "CALENDAR_WORK_DAYS", "type" => "array", "required" => true, "empty" => false, "defaultValues" => array("SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"), "fieldNameAux" => "calendarWorkDays"),
"CAL_STATUS" => array("fieldName" => "CALENDAR_STATUS", "type" => "string", "required" => true, "empty" => false, "defaultValues" => array("ACTIVE", "INACTIVE"), "fieldNameAux" => "calendarStatus"),
"CAL_WORK_DAYS" => array("fieldName" => "CALENDAR_WORK_DAYS", "type" => "array", "required" => true, "empty" => false, "defaultValues" => array(1, 2, 3, 4, 5, 6, 7), "fieldNameAux" => "calendarWorkDays"),
"CAL_STATUS" => array("fieldName" => "CALENDAR_STATUS", "type" => "string", "required" => false, "empty" => false, "defaultValues" => array("ACTIVE", "INACTIVE"), "fieldNameAux" => "calendarStatus"),
"CAL_WORK_HOUR" => array("fieldName" => "CALENDAR_WORK_HOUR", "type" => "array", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "calendarWorkHour"),
"CAL_HOLIDAY" => array("fieldName" => "CALENDAR_HOLIDAY", "type" => "array", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "calendarHoliday"),
@@ -18,9 +18,9 @@ class Calendar
);
private $arrayWorkHourFieldDefinition = array(
"DAY" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array("SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT", "ALL"), "fieldNameAux" => "day"),
"HOUR_START" => array("type" => "hour", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "hourStart"),
"HOUR_END" => array("type" => "hour", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "hourEnd")
"DAY" => array("type" => "int", "required" => true, "empty" => false, "defaultValues" => array(0, 1, 2, 3, 4, 5, 6, 7), "fieldNameAux" => "day"),
"HOUR_START" => array("type" => "hour", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "hourStart"),
"HOUR_END" => array("type" => "hour", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "hourEnd")
);
private $arrayHolidayFieldDefinition = array(
@@ -188,20 +188,50 @@ class Calendar
}
/**
* Replace and Get Work Days
* Transform Work Days
*
* @param string $workDays Work days
* @param bool $toNumber If is true replace to numbers, replace to string otherwise
* @param mixed $workDays Work days
* @param bool $toDb If is true transform data to represent it according to database, do the reverse otherwise
*
* return string Return Work days
* return mixed Return Work days
*/
public function workDaysReplaceData($workDays, $toNumber = true)
public function workDaysTransformData($workDays, $toDb = true)
{
try {
$arrayDayString = array("SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT", "ALL");
$arrayDayNumber = array(0, 1, 2, 3, 4, 5, 6, 7);
$arrayDayName = array("SUN", "ALL");
$arrayDay = array(7, 0);
$arrayDayDb = array(0, 7);
return ($toNumber)? str_replace($arrayDayString, $arrayDayNumber, $workDays) : str_replace($arrayDayNumber, $arrayDayString, $workDays);
$data = (is_string($workDays) && preg_match("/\|/", $workDays))? explode("|", $workDays) : $workDays;
$type = "int";
if (is_array($data)) {
$data = implode("|", $data);
$type = "array";
}
if ($toDb) {
$data = str_replace($arrayDay, $arrayDayName, $data);
$data = str_replace($arrayDayName, $arrayDayDb, $data);
} else {
$data = str_replace($arrayDayDb, $arrayDayName, $data);
$data = str_replace($arrayDayName, $arrayDay, $data);
}
switch ($type) {
case "int":
$data = (int)($data);
break;
case "array":
$data = explode("|", $data);
foreach ($data as $key => $value) {
$data[$key] = (int)($value);
}
break;
}
return $data;
} catch (\Exception $e) {
throw $e;
}
@@ -300,12 +330,12 @@ class Calendar
if (isset($arrayData["CAL_WORK_HOUR"])) {
foreach ($arrayData["CAL_WORK_HOUR"] as $value) {
if ($value["DAY"] != "ALL" && !in_array($value["DAY"], $arrayData["CAL_WORK_DAYS"])) {
if ($value["DAY"] != 0 && !in_array($value["DAY"], $arrayData["CAL_WORK_DAYS"], true)) {
throw (new \Exception(str_replace(array("{0}", "{1}"), array($this->arrayWorkHourFieldNameForException["day"], $this->arrayFieldNameForException["calendarWorkDays"]), "Value specified for \"{0}\" does not exist in \"{1}\".")));
}
$arrayCalendarWorkHour[] = array(
"CALENDAR_BUSINESS_DAY" => $this->workDaysReplaceData($value["DAY"]),
"CALENDAR_BUSINESS_DAY" => $this->workDaysTransformData($value["DAY"]),
"CALENDAR_BUSINESS_START" => $value["HOUR_START"],
"CALENDAR_BUSINESS_END" => $value["HOUR_END"]
);
@@ -328,8 +358,8 @@ class Calendar
$arrayDataAux["CALENDAR_UID"] = \G::generateUniqueID();
$arrayDataAux["CALENDAR_NAME"] = $arrayData["CAL_NAME"];
$arrayDataAux["CALENDAR_DESCRIPTION"] = (isset($arrayData["CAL_DESCRIPTION"]))? $arrayData["CAL_DESCRIPTION"] : "";
$arrayDataAux["CALENDAR_WORK_DAYS"] = explode("|", $this->workDaysReplaceData(implode("|", $arrayData["CAL_WORK_DAYS"])));
$arrayDataAux["CALENDAR_STATUS"] = $arrayData["CAL_STATUS"];
$arrayDataAux["CALENDAR_WORK_DAYS"] = $this->workDaysTransformData($arrayData["CAL_WORK_DAYS"]);
$arrayDataAux["CALENDAR_STATUS"] = (isset($arrayData["CAL_STATUS"]))? $arrayData["CAL_STATUS"] : "ACTIVE";
$arrayDataAux["BUSINESS_DAY"] = $arrayCalendarWorkHour;
$arrayDataAux["HOLIDAY"] = $arrayCalendarHoliday;
@@ -401,18 +431,18 @@ class Calendar
//Set variables
$arrayCalendarData = \G::array_change_key_case2($this->getCalendar($calendarUid), CASE_UPPER);
$calendarWorkDays = (isset($arrayData["CAL_WORK_DAYS"]))? $arrayData["CAL_WORK_DAYS"] : $arrayCalendarData["CAL_WORK_DAYS"];
$calendarWorkDays = (isset($arrayData["CAL_WORK_DAYS"]))? $arrayData["CAL_WORK_DAYS"] : array_keys($arrayCalendarData["CAL_WORK_DAYS"]);
$arrayCalendarWorkHour = array();
$arrayAux = (isset($arrayData["CAL_WORK_HOUR"]))? $arrayData["CAL_WORK_HOUR"] : $arrayCalendarData["CAL_WORK_HOUR"];
foreach ($arrayAux as $value) {
if (isset($arrayData["CAL_WORK_HOUR"]) && $value["DAY"] != "ALL" && !in_array($value["DAY"], $calendarWorkDays)) {
if (isset($arrayData["CAL_WORK_HOUR"]) && $value["DAY"] != 0 && !in_array($value["DAY"], $calendarWorkDays, true)) {
throw (new \Exception(str_replace(array("{0}", "{1}"), array($this->arrayWorkHourFieldNameForException["day"], $this->arrayFieldNameForException["calendarWorkDays"]), "Value specified for \"{0}\" does not exist in \"{1}\".")));
}
$arrayCalendarWorkHour[] = array(
"CALENDAR_BUSINESS_DAY" => $this->workDaysReplaceData($value["DAY"]),
"CALENDAR_BUSINESS_DAY" => $this->workDaysTransformData($value["DAY"]),
"CALENDAR_BUSINESS_START" => $value["HOUR_START"],
"CALENDAR_BUSINESS_END" => $value["HOUR_END"]
);
@@ -433,7 +463,7 @@ class Calendar
$arrayDataAux["CALENDAR_UID"] = $calendarUid;
$arrayDataAux["CALENDAR_NAME"] = (isset($arrayData["CAL_NAME"]))? $arrayData["CAL_NAME"] : $arrayCalendarData["CAL_NAME"];
$arrayDataAux["CALENDAR_DESCRIPTION"] = (isset($arrayData["CAL_DESCRIPTION"]))? $arrayData["CAL_DESCRIPTION"] : $arrayCalendarData["CAL_DESCRIPTION"];
$arrayDataAux["CALENDAR_WORK_DAYS"] = explode("|", $this->workDaysReplaceData(implode("|", $calendarWorkDays)));
$arrayDataAux["CALENDAR_WORK_DAYS"] = $this->workDaysTransformData($calendarWorkDays);
$arrayDataAux["CALENDAR_STATUS"] = (isset($arrayData["CAL_STATUS"]))? $arrayData["CAL_STATUS"] : $arrayCalendarData["CAL_STATUS"];
$arrayDataAux["BUSINESS_DAY"] = $arrayCalendarWorkHour;
@@ -531,7 +561,7 @@ class Calendar
foreach ($arrayData as $value) {
$arrayCalendarWorkHour[] = array(
$this->getFieldNameByFormatFieldName("DAY") => $this->workDaysReplaceData($value["CALENDAR_BUSINESS_DAY"] . "", false),
$this->getFieldNameByFormatFieldName("DAY") => $this->workDaysTransformData($value["CALENDAR_BUSINESS_DAY"] . "", false),
$this->getFieldNameByFormatFieldName("HOUR_START") => $value["CALENDAR_BUSINESS_START"] . "",
$this->getFieldNameByFormatFieldName("HOUR_END") => $value["CALENDAR_BUSINESS_END"] . "",
);
@@ -548,16 +578,30 @@ class Calendar
);
}
$conf = new \Configurations();
$confEnvSetting = $conf->getFormats();
$dateTime = new \DateTime($record["CALENDAR_CREATE_DATE"]);
$dateCreate = $dateTime->format($confEnvSetting["dateFormat"]);
$dateTime = new \DateTime($record["CALENDAR_UPDATE_DATE"]);
$dateUpdate = $dateTime->format($confEnvSetting["dateFormat"]);
$arrayCalendarWorkDays = array();
foreach ($this->workDaysTransformData($record["CALENDAR_WORK_DAYS"] . "", false) as $value) {
$arrayCalendarWorkDays[$value] = \G::LoadTranslation("ID_WEEKDAY_" . (($value != 7)? $value : 0));
}
return array(
$this->getFieldNameByFormatFieldName("CAL_UID") => $record["CALENDAR_UID"],
$this->getFieldNameByFormatFieldName("CAL_NAME") => $record["CALENDAR_NAME"],
$this->getFieldNameByFormatFieldName("CAL_DESCRIPTION") => $record["CALENDAR_DESCRIPTION"] . "",
$this->getFieldNameByFormatFieldName("CAL_WORK_DAYS") => explode("|", $this->workDaysReplaceData($record["CALENDAR_WORK_DAYS"] . "", false)),
$this->getFieldNameByFormatFieldName("CAL_WORK_DAYS") => $arrayCalendarWorkDays,
$this->getFieldNameByFormatFieldName("CAL_STATUS") => $record["CALENDAR_STATUS"],
$this->getFieldNameByFormatFieldName("CAL_WORK_HOUR") => $arrayCalendarWorkHour,
$this->getFieldNameByFormatFieldName("CAL_HOLIDAY") => $arrayCalendarHoliday,
$this->getFieldNameByFormatFieldName("CAL_CREATE_DATE") => $record["CALENDAR_CREATE_DATE"] . "",
$this->getFieldNameByFormatFieldName("CAL_UPDATE_DATE") => $record["CALENDAR_UPDATE_DATE"] . "",
$this->getFieldNameByFormatFieldName("CAL_CREATE_DATE") => $dateCreate,
$this->getFieldNameByFormatFieldName("CAL_UPDATE_DATE") => $dateUpdate,
$this->getFieldNameByFormatFieldName("CAL_TOTAL_USERS") => (int)($record["CALENDAR_TOTAL_USERS"]),
$this->getFieldNameByFormatFieldName("CAL_TOTAL_PROCESSES") => (int)($record["CALENDAR_TOTAL_PROCESSES"]),
$this->getFieldNameByFormatFieldName("CAL_TOTAL_TASKS") => (int)($record["CALENDAR_TOTAL_TASKS"])

View File

@@ -205,7 +205,7 @@ class Process
}
//defaultValues
if (count($arrayFieldDefinition[$fieldName]["defaultValues"]) > 0 && !in_array($fieldValue, $arrayFieldDefinition[$fieldName]["defaultValues"])) {
if (count($arrayFieldDefinition[$fieldName]["defaultValues"]) > 0 && !in_array($fieldValue, $arrayFieldDefinition[$fieldName]["defaultValues"], true)) {
throw (new \Exception(str_replace(array("{0}", "{1}"), array($fieldNameAux, implode("|", $arrayFieldDefinition[$fieldName]["defaultValues"])), "Invalid value for \"{0}\", it only accepts values: \"{1}\".")));
}
@@ -276,7 +276,7 @@ class Process
}
foreach ($arrayAux as $value) {
if (!in_array($value, $arrayFieldDefinition[$fieldName]["defaultValues"])) {
if (!in_array($value, $arrayFieldDefinition[$fieldName]["defaultValues"], true)) {
throw (new \Exception(str_replace(array("{0}", "{1}"), array($fieldNameAux, implode("|", $arrayFieldDefinition[$fieldName]["defaultValues"])), "Invalid value for \"{0}\", it only accepts values: \"{1}\".")));
}
}

View File

@@ -41,11 +41,10 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
$arrayData = array(
"CAL_NAME" => "PHPUnit Calendar$i",
"CAL_DESCRIPTION" => "Description",
"CAL_WORK_DAYS" => array("MON", "TUE", "WED", "THU", "FRI"),
"CAL_STATUS" => "ACTIVE",
"CAL_WORK_DAYS" => array(1, 2, 3, 4, 5),
"CAL_WORK_HOUR" => array(
array("DAY" => "ALL", "HOUR_START" => "00:00", "HOUR_END" => "00:00"),
array("DAY" => "MON", "HOUR_START" => "09:00", "HOUR_END" => "17:00")
array("DAY" => 0, "HOUR_START" => "00:00", "HOUR_END" => "00:00"),
array("DAY" => 1, "HOUR_START" => "09:00", "HOUR_END" => "17:00")
),
"CAL_HOLIDAY" => array(
array("NAME" => "holiday1", "DATE_START" => "2014-03-01", "DATE_END" => "2014-03-31"),
@@ -65,9 +64,9 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
//Create - Japanese characters
$arrayData = array(
"CAL_NAME" => "私の名前PHPUnitの",
"CAL_WORK_DAYS" => array("MON", "TUE", "WED", "THU", "FRI"),
"CAL_STATUS" => "ACTIVE"
"CAL_NAME" => "私の名前PHPUnitの",
"CAL_DESCRIPTION" => "Description",
"CAL_WORK_DAYS" => array(1, 2, 3, 4, 5)
);
$arrayCalendar = self::$calendar->create($arrayData);
@@ -131,7 +130,6 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($arrayCalendar[0]["CAL_UID"], $arrayRecord[0]["CAL_UID"]);
$this->assertEquals($arrayCalendar[0]["CAL_NAME"], $arrayRecord[0]["CAL_NAME"]);
$this->assertEquals($arrayCalendar[0]["CAL_DESCRIPTION"], $arrayRecord[0]["CAL_DESCRIPTION"]);
$this->assertEquals($arrayCalendar[0]["CAL_STATUS"], $arrayRecord[0]["CAL_STATUS"]);
}
/**
@@ -153,7 +151,6 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($arrayCalendar["CAL_UID"], $arrayRecord[0]["CAL_UID"]);
$this->assertEquals($arrayCalendar["CAL_NAME"], $arrayRecord[0]["CAL_NAME"]);
$this->assertEquals($arrayCalendar["CAL_DESCRIPTION"], $arrayRecord[0]["CAL_DESCRIPTION"]);
$this->assertEquals($arrayCalendar["CAL_STATUS"], $arrayRecord[0]["CAL_STATUS"]);
//Get - Japanese characters
$arrayCalendar = self::$calendar->getCalendar($arrayRecord[self::$numCalendar]["CAL_UID"]);
@@ -161,9 +158,9 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
$this->assertTrue(is_array($arrayCalendar));
$this->assertNotEmpty($arrayCalendar);
$this->assertEquals($arrayCalendar["CAL_UID"], $arrayRecord[self::$numCalendar]["CAL_UID"]);
$this->assertEquals($arrayCalendar["CAL_NAME"], "私の名前PHPUnitの");
$this->assertEquals($arrayCalendar["CAL_WORK_DAYS"], array("MON", "TUE", "WED", "THU", "FRI"));
$this->assertEquals($arrayCalendar["CAL_STATUS"], "ACTIVE");
$this->assertEquals($arrayCalendar["CAL_DESCRIPTION"], "Description");
}
/**
@@ -209,8 +206,7 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
$arrayData = array(
//"CAL_NAME" => "PHPUnit Calendar",
"CAL_DESCRIPTION" => "Description",
"CAL_WORK_DAYS" => array("MON", "TUE", "WED", "THU", "FRI"),
"CAL_STATUS" => "ACTIVE"
"CAL_WORK_DAYS" => array(1, 2, 3, 4, 5)
);
$arrayCalendar = self::$calendar->create($arrayData);
@@ -229,8 +225,7 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
$arrayData = array(
"CAL_NAME" => "",
"CAL_DESCRIPTION" => "Description",
"CAL_WORK_DAYS" => array("MON", "TUE", "WED", "THU", "FRI"),
"CAL_STATUS" => "ACTIVE"
"CAL_WORK_DAYS" => array(1, 2, 3, 4, 5)
);
$arrayCalendar = self::$calendar->create($arrayData);
@@ -242,15 +237,14 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
* @covers \ProcessMaker\BusinessModel\Calendar::create
*
* @expectedException Exception
* @expectedExceptionMessage Invalid value for "CAL_WORK_DAYS", it only accepts values: "SUN|MON|TUE|WED|THU|FRI|SAT".
* @expectedExceptionMessage Invalid value for "CAL_WORK_DAYS", it only accepts values: "1|2|3|4|5|6|7".
*/
public function testCreateExceptionInvalidDataCalWorkDays()
{
$arrayData = array(
"CAL_NAME" => "PHPUnit Calendar",
"CAL_DESCRIPTION" => "Description",
"CAL_WORK_DAYS" => array("MONDAY", "TUE", "WED", "THU", "FRI"),
"CAL_STATUS" => "ACTIVE"
"CAL_WORK_DAYS" => array(10, 2, 3, 4, 5)
);
$arrayCalendar = self::$calendar->create($arrayData);
@@ -269,8 +263,7 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
$arrayData = array(
"CAL_NAME" => "PHPUnit Calendar0",
"CAL_DESCRIPTION" => "Description",
"CAL_WORK_DAYS" => array("MON", "TUE", "WED", "THU", "FRI"),
"CAL_STATUS" => "ACTIVE"
"CAL_WORK_DAYS" => array(1, 2, 3, 4, 5),
);
$arrayCalendar = self::$calendar->create($arrayData);
@@ -319,8 +312,7 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
$arrayData = array(
"CAL_NAME" => "PHPUnit Calendar",
"CAL_DESCRIPTION" => "Description",
"CAL_WORK_DAYS" => array("MON", "TUE", "WED", "THU", "FRI"),
"CAL_STATUS" => "ACTIVE"
"CAL_WORK_DAYS" => array(1, 2, 3, 4, 5),
);
$arrayCalendar = self::$calendar->update("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", $arrayData);
@@ -342,8 +334,7 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
$arrayData = array(
"CAL_NAME" => "",
"CAL_DESCRIPTION" => "Description",
"CAL_WORK_DAYS" => array("MON", "TUE", "WED", "THU", "FRI"),
"CAL_STATUS" => "ACTIVE"
"CAL_WORK_DAYS" => array(1, 2, 3, 4, 5),
);
$arrayCalendar = self::$calendar->update($arrayRecord[0]["CAL_UID"], $arrayData);
@@ -358,15 +349,14 @@ class CalendarTest extends \PHPUnit_Framework_TestCase
* @param array $arrayRecord Data of the calendars
*
* @expectedException Exception
* @expectedExceptionMessage Invalid value for "CAL_WORK_DAYS", it only accepts values: "SUN|MON|TUE|WED|THU|FRI|SAT".
* @expectedExceptionMessage Invalid value for "CAL_WORK_DAYS", it only accepts values: "1|2|3|4|5|6|7".
*/
public function testUpdateExceptionInvalidDataCalWorkDays($arrayRecord)
{
$arrayData = array(
"CAL_NAME" => "PHPUnit Calendar",
"CAL_DESCRIPTION" => "Description",
"CAL_WORK_DAYS" => array("MONDAY", "TUE", "WED", "THU", "FRI"),
"CAL_STATUS" => "ACTIVE"
"CAL_WORK_DAYS" => array(10, 2, 3, 4, 5),
);
$arrayCalendar = self::$calendar->update($arrayRecord[0]["CAL_UID"], $arrayData);