* Refactor stage::batchCreate method.
This commit is contained in:
@@ -11,3 +11,10 @@ $config->stage->form->create['projectType'] = array('type' => 'string', 'requi
|
||||
$config->stage->form->create['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
|
||||
$config->stage->form->create['createdDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
|
||||
if(isset($config->setPercent) && $config->setPercent == 1) $config->stage->form->create['percent'] = array('type' => 'int', 'required' => false, 'default' => 0);
|
||||
|
||||
$config->stage->form->batchcreate['name'] = array('type' => 'string', 'required' => false, 'default' => '', 'filter' => 'trim', 'base' => true);
|
||||
$config->stage->form->batchcreate['type'] = array('type' => 'string', 'required' => false, 'default' => '');
|
||||
$config->stage->form->batchcreate['projectType'] = array('type' => 'string', 'required' => false, 'default' => '');
|
||||
$config->stage->form->batchcreate['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account);
|
||||
$config->stage->form->batchcreate['createdDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now);
|
||||
if(isset($config->setPercent) && $config->setPercent == 1) $config->stage->form->batchcreate['percent'] = array('type' => 'int', 'required' => false, 'default' => 0);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* The control file of stage currentModule of ZenTaoPMS.
|
||||
*
|
||||
@@ -83,30 +84,23 @@ class stage extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量创建阶段。
|
||||
* Batch create stages.
|
||||
*
|
||||
* @param string $type
|
||||
* @param string $type waterfall|waterfallplus
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function batchCreate($type = 'waterfall')
|
||||
public function batchCreate(string $type = 'waterfall')
|
||||
{
|
||||
$this->stage->setMenu($type);
|
||||
if($_POST)
|
||||
{
|
||||
$this->stage->batchCreate($type);
|
||||
$stages = form::batchData()->setDefault('projectType', $type)->get();
|
||||
$this->stage->batchCreate($type, $stages);
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
$response['result'] = 'fail';
|
||||
$response['message'] = dao::getError();
|
||||
return $this->send($response);
|
||||
}
|
||||
|
||||
$response['result'] = 'success';
|
||||
$response['message'] = $this->lang->saveSuccess;
|
||||
$response['load'] = inlink($type == 'waterfall' ? 'browse' : 'plusBrowse', "orderBy=id_asc&type=$type");
|
||||
return $this->send($response);
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'closeModal' => true, 'load' => inlink($type == 'waterfall' ? 'browse' : 'plusBrowse', "orderBy=id_asc&type=$type")));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->stage->common . $this->lang->colon . $this->lang->stage->batchCreate;
|
||||
|
||||
+31
-19
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* The model file of stage module of ZenTaoPMS.
|
||||
*
|
||||
@@ -28,8 +29,16 @@ class stageModel extends model
|
||||
{
|
||||
$totalPercent = $this->getTotalPercent($type);
|
||||
|
||||
if(!is_numeric($stage->percent)) return dao::$errors['percent'] = $this->lang->stage->error->notNum;
|
||||
if(round($totalPercent + $stage->percent) > 100) return dao::$errors['percent'] = $this->lang->stage->error->percentOver;
|
||||
if(!is_numeric($stage->percent))
|
||||
{
|
||||
dao::$errors['percent'] = $this->lang->stage->error->notNum;
|
||||
return false;
|
||||
}
|
||||
if(round($totalPercent + $stage->percent) > 100)
|
||||
{
|
||||
dao::$errors['percent'] = $this->lang->stage->error->percentOver;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$this->dao->insert(TABLE_STAGE)
|
||||
@@ -44,35 +53,38 @@ class stageModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量创建阶段。
|
||||
* Batch create stages.
|
||||
*
|
||||
* @param string $type waterfall|waterfallplus
|
||||
* @param array $stages
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function batchCreate($type = 'waterfall')
|
||||
public function batchCreate($type = 'waterfall', array $stages = array()): bool
|
||||
{
|
||||
$data = fixer::input('post')->get();
|
||||
|
||||
$setPercent = (isset($this->config->setPercent) and $this->config->setPercent == 1) ? true : false;
|
||||
$setPercent = (isset($this->config->setPercent) && $this->config->setPercent == 1) ? true : false;
|
||||
if($setPercent)
|
||||
{
|
||||
$totalPercent = $this->getTotalPercent($type);
|
||||
if(round($totalPercent + array_sum($data->percent)) > 100) return dao::$errors['message'] = $this->lang->stage->error->percentOver;
|
||||
$oldTotalPercent = $this->getTotalPercent($type);
|
||||
$totalPercent = 0;
|
||||
foreach($stages as $stage)
|
||||
{
|
||||
if($totalPercent > 100) break;
|
||||
$totalPercent += (int)$stage->percent;
|
||||
}
|
||||
|
||||
if(round($oldTotalPercent + $totalPercent) > 100)
|
||||
{
|
||||
dao::$errors['message'] = $this->lang->stage->error->percentOver;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$this->loadModel('action');
|
||||
foreach($data->name as $i => $name)
|
||||
foreach($stages as $rowID => $stage)
|
||||
{
|
||||
if(!$name) continue;
|
||||
|
||||
$stage = new stdclass();
|
||||
$stage->name = $name;
|
||||
$stage->type = $data->type[$i];
|
||||
$stage->projectType = $type;
|
||||
$stage->createdBy = $this->app->user->account;
|
||||
$stage->createdDate = helper::today();
|
||||
if($setPercent) $stage->percent = $data->percent[$i];
|
||||
|
||||
$this->dao->insert(TABLE_STAGE)->data($stage)->autoCheck()
|
||||
->batchCheck($this->config->stage->create->requiredFields, 'notempty')
|
||||
->checkIF($stage->percent != '', 'percent', 'float')
|
||||
@@ -80,7 +92,7 @@ class stageModel extends model
|
||||
|
||||
if(dao::isError())
|
||||
{
|
||||
foreach(dao::getError() as $field => $error) dao::$errors["{$field}[{$i}]"] = $error;
|
||||
foreach(dao::getError() as $field => $error) dao::$errors["{$field}[{$rowID}]"] = $error;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user