* Refactor stage::batchCreate method.

This commit is contained in:
tianshujie
2023-12-18 13:36:56 +08:00
parent bcebe83867
commit 0585b7355a
3 changed files with 46 additions and 33 deletions
+7
View File
@@ -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);
+8 -14
View File
@@ -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
View File
@@ -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;
}