diff --git a/Controller.php b/Controller.php index 7219366..bf546f3 100644 --- a/Controller.php +++ b/Controller.php @@ -22,6 +22,8 @@ use phpOMS\Views\View; use Modules\Kanban\Models\KanbanBoard; use Modules\Kanban\Models\KanbanBoardMapper; +use Modules\Kanban\Models\KanbanLabel; +use Modules\Kanban\Models\KanbanLabelMapper; use Modules\Kanban\Models\KanbanColumn; use Modules\Kanban\Models\KanbanColumnMapper; use Modules\Kanban\Models\KanbanCard; @@ -150,4 +152,183 @@ class Controller extends ModuleAbstract implements WebInterface return $view; } + public function apiKanbanCardCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + if (!empty($val = $this->validateKanbanCardCreate($request))) { + $response->set('kanban_card_create', new FormValidation($val)); + + return; + } + + $card = $this->createKanbanCardFromRquest($request); + KanbanCardMapper::create($card); + $response->set('card', $card->jsonSerialize()); + } + + public function createKanbanCardFromRquest(RequestAbstract $request) : KanbanCard + { + $mardkownParser = new Markdown(); + + $card = new KanbanCard(); + $card->setName($request->getData('title')); + $card->setDescription($request->getData('plain')); + $card->setColumn((int) $request->getData('column')); + $card->setOrder((int) $request->getData('order')); + $card->setRef((int) $request->getData('ref')); + $card->setLabels((array) $request->getData('labels')); + $card->setStatus((int) $request->getData('status')); + $card->setType((int) $request->getData('type')); + + return $card; + } + + private function validateKanbanCardCreate(RequestAbstract $request) : array + { + $val = []; + if ( + ($val['title'] = empty($request->getData('title'))) + || ($val['plain'] = empty($request->getData('plain'))) + || ($val['column'] = empty($request->getData('column'))) + || ($val['order'] = empty($request->getData('order'))) + || ($val['ref'] = empty($request->getData('ref'))) + || ($val['labels'] = empty($request->getData('labels'))) + || ($val['status'] = ( + $request->getData('status') !== null + && !CardStatus::isValidValue(strtolower($request->getData('status'))) + )) + || ($val['type'] = ( + $request->getData('type') === null + || !CardType::isValidValue((int) $request->getData('type')) + )) + ) { + return $val; + } + + return []; + } + + public function apiKanbanBoardCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + if (!empty($val = $this->validateKanbanBoardCreate($request))) { + $response->set('kanban_board_create', new FormValidation($val)); + + return; + } + + $board = $this->createKanbanBoardFromRquest($request); + KanbanBoardMapper::create($board); + $response->set('board', $board->jsonSerialize()); + } + + public function createKanbanBoardFromRquest(RequestAbstract $request) : KanbanBoard + { + $mardkownParser = new Markdown(); + + $board = new KanbanBoard(); + $board->setName($request->getData('title')); + $board->setDescription($request->getData('plain')); + $board->setOrder((int) $request->getData('order')); + $board->setStatus((int) $request->getData('status')); + + return $board; + } + + private function validateKanbanBoardCreate(RequestAbstract $request) : array + { + $val = []; + if ( + ($val['title'] = empty($request->getData('title'))) + || ($val['plain'] = empty($request->getData('plain'))) + || ($val['order'] = empty($request->getData('order'))) + || ($val['status'] = ( + $request->getData('status') !== null + && !CardStatus::isValidValue(strtolower($request->getData('status'))) + )) + ) { + return $val; + } + + return []; + } + + public function apiKanbanColumnCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + if (!empty($val = $this->validateKanbanColumnCreate($request))) { + $response->set('kanban_column_create', new FormValidation($val)); + + return; + } + + $column = $this->createKanbanColumnFromRquest($request); + KanbanColumnMapper::create($column); + $response->set('column', $column->jsonSerialize()); + } + + public function createKanbanColumnFromRquest(RequestAbstract $request) : KanbanColumn + { + $mardkownParser = new Markdown(); + + $column = new KanbanColumn(); + $column->setName($request->getData('title')); + $column->setDescription($request->getData('plain')); + $column->setOrder((int) $request->getData('order')); + $column->setStatus((int) $request->getData('status')); + + return $column; + } + + private function validateKanbanColumnCreate(RequestAbstract $request) : array + { + $val = []; + if ( + ($val['title'] = empty($request->getData('title'))) + || ($val['plain'] = empty($request->getData('plain'))) + || ($val['order'] = empty($request->getData('order'))) + || ($val['status'] = ( + $request->getData('status') !== null + && !CardStatus::isValidValue(strtolower($request->getData('status'))) + )) + ) { + return $val; + } + + return []; + } + + public function apiKanbanLabelCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + if (!empty($val = $this->validateKanbanLabelCreate($request))) { + $response->set('kanban_label_create', new FormValidation($val)); + + return; + } + + $label = $this->createKanbanLabelFromRquest($request); + KanbanLabelMapper::create($label); + $response->set('label', $label->jsonSerialize()); + } + + public function createKanbanLabelFromRquest(RequestAbstract $request) : KanbanLabel + { + $label = new KanbanLabel(); + $label->setName($request->getData('title')); + $label->setBoard((int) $request->getData('board')); + $label->setcolor((int) $request->getData('color')); + + return $label; + } + + private function validateKanbanLabelCreate(RequestAbstract $request) : array + { + $val = []; + if ( + ($val['title'] = empty($request->getData('title'))) + || ($val['board'] = empty($request->getData('board'))) + || ($val['color'] = empty($request->getData('color'))) + ) { + return $val; + } + + return []; + } }