Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Controller;
- use \Norm\Controller\NormController;
- use Norm\Norm;
- use App\Library\Notification;
- class MomController extends AppController
- {
- public function mapRoute()
- {
- parent::mapRoute();
- $this->map('/null/by_ccd', 'mom_by_ccd')->via('GET', 'POST');
- $this->map('/null/by_date', 'mom_by_date')->via('GET', 'POST');
- $this->map('/null/dashboard', 'mom_dashboard')->via('GET', 'POST');
- $this->map('/null/dashboard_detail/:id', 'mom_dashboard_detail')->via('GET', 'POST');
- }
- public function create () {
- $entry = $this->collection->newInstance()->set($this->getCriteria());
- $participant = Norm::factory('MomParticipant')->newInstance();
- $sys = Norm::factory('Sysparam')->find(array('groups' => 'Project Status'));
- $worksheet = Norm::factory('Worksheet');
- $this->data['entry'] = $entry;
- $this->data['participant'] = $participant;
- $this->data['sys'] = $sys;
- if ($this->request->isPost()) {
- try {
- $post = $this->request->getBody();
- $dataParticipant = array();
- foreach ($post['participant'] as $key => $participant) {
- $dataParticipant[$participant['name']] = $participant;
- }
- foreach ($post['project'] as $key => $value) {
- $entrys = Norm::factory('Mom')->newInstance();
- $getId = $worksheet->findOne(array('change_control_number' => $value['project']));
- $dec = '';
- if (isset($value['decision'])) {
- $dec = $value['decision'];
- }
- $entrys->set('date', $post['date']);
- $entrys->set('factory', $post['factory']);
- $entrys->set('project', $value['project']);
- $entrys->set('id_worksheet', $getId['$id']);
- $entrys->set('notes', $value['notes']);
- $entrys->set('decision', $dec);
- $entrys->save();
- # code...
- foreach ($dataParticipant as $key => $value) {
- $dataSave = Norm::factory('MomParticipant')->newInstance();
- $position = Norm::factory('User')->findOne(array('id' => $value['name']));
- $dataSave->set('id_mom', $entrys->getId());
- $dataSave->set('role', $value['role']);
- $dataSave->set('name', $value['name']);
- $dataSave->set('position', $position['position']);
- $dataSave->save();
- }
- }
- h('notification.info', $this->clazz.' created.');
- h('controller.create.success', array(
- 'model' => $entrys
- ));
- } catch (Stop $e) {
- throw $e;
- } catch (Exception $e) {
- // no more set notification.error since notificationmiddleware will
- // write this later
- // h('notification.error', $e);
- h('controller.create.error', array(
- 'model' => $entry,
- 'error' => $e,
- ));
- // rethrow error to make sure notificationmiddleware know what todo
- throw $e;
- }
- }
- }
- public function update($id)
- {
- try {
- $entry = $this->collection->findOne($id);
- $participant = Norm::factory('MomParticipant')->find(array('id_mom' => $id));
- $sys = Norm::factory('Sysparam')->find(array('groups' => 'Project Status'));
- $role = Norm::factory('Role')->find();
- $user = Norm::factory('User');
- $ccm = Norm::factory('Worksheet');
- } catch (Exception $e) {
- // noop
- }
- if (is_null($entry)) {
- return $this->app->notFound();
- }
- if ($this->request->isPost() || $this->request->isPut()) {
- try {
- $merged = array_merge(
- isset($entry) ? $entry->dump() : array(),
- $this->request->getBody() ?: array()
- );
- $id_worksheet = $ccm->findOne(array('change_control_number' => $merged['project'][0]['project']));
- $is_decision = '';
- if (isset($merged['project'][0]['decision'])) {
- $is_decision = $merged['project'][0]['decision'];
- }
- $entry->set('date', $merged['date']);
- $entry->set('factory', $merged['factory']);
- $entry->set('project', $merged['project'][0]['project']);
- $entry->set('notes', $merged['project'][0]['notes']);
- $entry->set('decision', $is_decision);
- $entry->set('id_worksheet', $id_worksheet['$id']);
- $entry->save();
- foreach ($participant as $key => $value) {
- $value->remove();
- }
- foreach ($merged['participant'] as $key => $value) {
- $new_participant = Norm::factory('MomParticipant')->newInstance();
- $position = $user->findOne(array('id' => $value['name']));
- $new_participant->set('id_mom', $entry->getId());
- $new_participant->set('role', $value['role']);
- $new_participant->set('name', $value['name']);
- $new_participant->set('position', $position['position']);
- $new_participant->save();
- }
- h('notification.info', $this->clazz.' updated');
- $this->app->redirect('mom');
- h('controller.update.success', array(
- 'model' => $entry,
- ));
- } catch (Stop $e) {
- throw $e;
- } catch (Exception $e) {
- h('notification.error', $e);
- if (empty($entry)) {
- $model = null;
- }
- h('controller.update.error', array(
- 'error' => $e,
- 'model' => $entry,
- ));
- }
- }
- $this->data['entry'] = $entry;
- $this->data['participant'] = $participant;
- $this->data['sys'] = $sys;
- $this->data['role'] = $role;
- $this->data['user'] = $user;
- }
- public function delete($id)
- {
- $id = explode(',', $id);
- if ($this->request->isPost() || $this->request->isDelete()) {
- $single = false;
- if (count($id) === 1) {
- $single = true;
- }
- try {
- $this->data['entries'] = array();
- foreach ($id as $value) {
- $model = $this->collection->findOne($value);
- if (is_null($model)) {
- if ($single) {
- $this->app->notFound();
- }
- continue;
- }
- $model->remove();
- $data_participant = Norm::factory('MomParticipant')->find(array('id_mom' => $value));
- foreach ($data_participant as $key_rm => $value_rm) {
- $value_rm->remove();
- }
- $this->data['entries'][] = $model;
- }
- h('notification.info', $this->clazz.' deleted.');
- h('controller.delete.success', array(
- 'models' => $this->data['entries'],
- ));
- } catch (Stop $e) {
- throw $e;
- } catch (Exception $e) {
- h('notification.error', $e);
- if (empty($model)) {
- $model = null;
- }
- h('controller.delete.error', array(
- 'error' => $e,
- 'model' => $model,
- ));
- }
- }
- }
- public function mom_by_ccd () {
- $criteria = $this->app->request->get();
- $group = ' GROUP BY m.project';
- $limit = ' LIMIT 10';
- $sort = ' ORDER BY m.id_worksheet DESC';
- $db = 'SELECT m.project FROM mom m';
- if (isset($criteria['!search'])) {
- $data = $this->rowsArray($db . ' WHERE m.project LIKE ?' . $group . $sort .$limit, array('%'.$criteria['!search'].'%'));
- } else {
- $data = $this->rowsArray($db . $group . $sort . $limit);
- }
- $mom = Norm::factory('Mom');
- $mom_participant = Norm::factory('MomParticipant');
- $user = Norm::factory('User');
- $sysparam = Norm::factory('Sysparam');
- $worksheet = Norm::factory('Worksheet');
- $all_data = array();
- foreach ($data as $key => $value) {
- $dt_array = array();
- $stts = $worksheet->findOne(array('change_control_number' => $value['project']));
- $param = $sysparam->findOne(array('groups' => 'Approval Status', 'key' => $stts['approval_status']));
- foreach ($value as $key_a => $value_a) {
- $dt_mom = $mom->find();
- foreach ($dt_mom as $key_mo => $value_mom) {
- if ($value_mom['project'] == $value_a) {
- $dc = $sysparam->findOne(array('groups' => 'Project Status', 'key' => $value_mom['decision']));
- $dt_array[$key_mo]['date'] = date('d-M-Y', strtotime($value_mom['date']));
- $dt_array[$key_mo]['mom'] = $value_mom['notes'];
- $dt_array[$key_mo]['decission'] = $dc['value'];
- $dt_array[$key_mo]['status'] = $param['value'];
- $participant = $mom_participant->find(array('id_mom' => $value_mom['$id']));
- $dt_part = array();
- foreach ($participant as $key_part => $value_part) {
- $name = $user->findOne(array('id' => $value_part['name']));
- $dt_part[] = $name['first_name'].' '.$name['last_name'];
- $dt_array[$key_mo]['participant'] = $dt_part;
- }
- }
- }
- }
- $all_data[$value['project']] = $dt_array;
- }
- $display_not_found = 'none';
- $display_found = '';
- if (count($all_data) == 0) {
- $display_not_found = '';
- $display_found = 'none';
- }
- $this->data['id_worksheet'] = $worksheet;
- $this->data['display_not_found'] = $display_not_found;
- $this->data['display_found'] = $display_found;
- $this->data['data'] = $all_data;
- $this->data['is_admin'] = $this->app->auth_ccm->isAdmin();
- $this->data['is_owner'] = $this->app->auth_ccm->isChangeOwner();
- $this->data['is_approver'] = $this->app->auth_ccm->isApprover();
- }
- public function mom_by_date () {
- $criteria = $this->app->request->get();
- $group = ' GROUP BY m.date';
- $sort = ' ORDER BY m.date DESC';
- $limit = ' LIMIT 5';
- $db = 'SELECT m.date, m.factory FROM mom m';
- $cari = array();
- if (isset($criteria['factory']) || isset($criteria['date'])) {
- $search = ' WHERE m.factory LIKE ? AND m.date LIKE ?';
- $cr = array('%'.$criteria['factory'].'%', '%'.date('Y-m-d', strtotime($criteria['date'])).'%');
- if ($criteria['factory'] == '' && $criteria['date'] == '') {
- $data = $this->rowsArray($db . $group . $sort . $limit);
- } else if ($criteria['factory'] != '' && $criteria['date'] != ''){
- $cari = array('factory' => $criteria['factory'], 'date' => date('Y-m-d', strtotime($criteria['date'])));
- $data = $this->rowsArray($db . ' WHERE m.factory ='. $criteria['factory'] . $group . $sort . $limit);
- } else {
- $cr = array();
- if ($criteria['factory'] != '') {
- $search = ' WHERE m.factory LIKE ?';
- $cr[] = '%'.$criteria['factory'].'%';
- $cari = array('factory' => $criteria['factory']);
- }
- if ($criteria['date'] != '') {
- $search = ' WHERE m.date LIKE ?';
- $cr[] = '%'.date('Y-m-d', strtotime($criteria['date'])).'%';
- }
- $data = $this->rowsArray($db . $search . $group . $sort . $limit, $cr);
- }
- } else {
- $data = $this->rowsArray($db . $group. $sort . $limit);
- }
- $mom = Norm::factory('Mom');
- $mom_participant = Norm::factory('MomParticipant');
- $user = Norm::factory('User');
- $sysparam = Norm::factory('Sysparam');
- $factory = Norm::factory('Site')->find();
- $worksheet = Norm::factory('Worksheet');
- $all_data = array();
- foreach ($data as $key => $value) {
- $dt_array = array();
- foreach ($value as $key_a => $value_a) {
- $dt_mom = $mom->find($cari);
- foreach ($dt_mom as $key_mo => $value_mom) {
- if (date('Y-m-d', strtotime($value_mom['date'])) == date('Y-m-d', strtotime($value_a))) {
- $stts = $worksheet->findOne(array('change_control_number' => $value_mom['project']));
- $param = $sysparam->findOne(array('groups' => 'Approval Status', 'key' => $stts['approval_status']));
- $dc = $sysparam->findOne(array('groups' => 'Project Status', 'key' => $value_mom['decision']));
- $dt_array[$key_mo]['id'] = $value_mom['id_worksheet'];
- $dt_array[$key_mo]['ccd'] = $value_mom['project'];
- $dt_array[$key_mo]['date'] = date('d-M-Y', strtotime($value_mom['date']));
- $dt_array[$key_mo]['mom'] = $value_mom['notes'];
- $dt_array[$key_mo]['decission'] = $dc['value'];
- $dt_array[$key_mo]['status'] = $param['value'];
- $participant = $mom_participant->find(array('id_mom' => $value_mom['$id']));
- $dt_part = array();
- foreach ($participant as $key_part => $value_part) {
- $name = $user->findOne(array('id' => $value_part['name']));
- $dt_part[] = $name['first_name'].' '.$name['last_name'];
- $dt_array[$key_mo]['participant'] = $dt_part;
- }
- }
- }
- }
- $all_data[date('Y-m-d', strtotime($value['date']))] = $dt_array;
- }
- $display_not_found = 'none';
- $display_found = '';
- foreach ($all_data as $key => $value) {
- if (count($value) == 0) {
- $display_not_found = '';
- $display_found = 'none';
- }
- }
- if (count($all_data) == 0) {
- $display_not_found = '';
- $display_found = 'none';
- }
- $this->data['display_not_found'] = $display_not_found;
- $this->data['display_found'] = $display_found;
- $this->data['all_data'] = $all_data;
- $this->data['factory'] = $factory;
- }
- public function mom_dashboard () {
- $mom = Norm::factory('Mom');
- $user = Norm::factory('User');
- $participant = Norm::factory('MomParticipant');
- $site = Norm::factory('Site')->find();
- $siteId = Norm::factory('Site');
- $dataMom = $mom->find()->limit(5)->sort(array('id_worksheet' => -1));
- $allData = array();
- foreach ($site as $key => $value) {
- $get = $this->app->request->get();
- $criteria = array_filter($get);
- if (empty($criteria)) {
- $criteria = array(
- 'factory' => $value['$id'],
- 'date!like' => date('Y')
- );
- } else {
- if (isset($criteria['start'])) {
- unset($criteria['start']);
- $criteria = array_merge($criteria, array('factory' => $value['$id'], 'date!gte' => date('Y-m-d', strtotime($get['start']))));
- }
- if (isset($criteria['end'])) {
- $criteria = array_merge($criteria, array('factory' => $value['$id'], 'date!lte' => date('Y-m-d', strtotime($get['end']))));
- unset($criteria['end']);
- }
- }
- $data = $mom->find($criteria);
- $arr = array();
- foreach ($data as $k => $val) {
- $part = $participant->find(array('id_mom' => $val['$id'], 'role' => 3));
- foreach ($part as $key_part => $value_part) {
- $usr = $user->findOne(array('id' => $value_part['name']));
- if ($usr) {
- $arr[$usr['$id']][] = $value_part['name'];
- }
- }
- }
- $allData[$value['name']] = $arr;
- }
- $all = array();
- foreach ($allData as $key => $value) {
- $hasil = array();
- foreach ($value as $k => $val) {
- $hasil[$k] = count($val);
- }
- $all[$key] = $hasil;
- }
- $allDataChart = array();
- foreach ($all as $key => $value) {
- $tes = array();
- foreach ($value as $k => $val) {
- $name = $user->findOne(array('id' => $k));
- $tes[$k]['name'] = '<b>' . $name['position'].'</b><br>'. $name['first_name'].' '.$name['last_name'];
- $tes[$k]['jml'] = $val;
- }
- $allDataChart[$key] = $tes;
- }
- $this->data['mom'] = $dataMom;
- $this->data['site'] = $site;
- $this->data['siteId'] = $siteId;
- $this->data['dataChart'] = $allDataChart;
- $this->data['is_admin'] = $this->app->auth_ccm->isAdmin();
- $this->data['is_pcm'] = $this->app->auth_ccm->isPCM();
- $this->data['is_owner'] = $this->app->auth_ccm->isChangeOwner();
- $this->data['is_approver'] = $this->app->auth_ccm->isApprover();
- }
- public function mom_dashboard_detail ($id) {
- $mom = Norm::factory('Mom');
- $user = Norm::factory('User');
- $participant = Norm::factory('MomParticipant');
- $site = Norm::factory('Site')->findOne($id);
- $colors = array(
- '1' => array('#54CDF2'),
- '2' => array('#F2A354'),
- '3' => array('#F254CD'),
- '4' => array('#54F254'),
- );
- $criteria = array(
- 'factory' => $site['$id'],
- 'date!like' => date('Y')
- );
- if (isset($_GET['start']) || isset($_GET['end'])) {
- $criteria = array(
- 'factory' => $site['$id'],
- 'date!gte' => date('Y-m-d', strtotime($_GET['start'])),
- 'date!lte' => date('Y-m-d', strtotime($_GET['end']))
- );
- }
- $allData = array();
- $data = $mom->find($criteria);
- $arr = array();
- foreach ($data as $k => $val) {
- $part = $participant->find(array('id_mom' => $val['$id'], 'role' => 3));
- foreach ($part as $key_part => $value_part) {
- $usr = $user->findOne(array('id' => $value_part['name']));
- if ($usr) {
- $arr[$usr['$id']][] = $value_part['name'];
- }
- }
- }
- $allData[$site['name']] = $arr;
- $all = array();
- foreach ($allData as $key => $value) {
- $hasil = array();
- foreach ($value as $k => $val) {
- $hasil[$k] = count($val);
- }
- $all[$key] = $hasil;
- }
- $allDataChart = array();
- foreach ($all as $key => $value) {
- $tes = array();
- foreach ($value as $k => $val) {
- $name = $user->findOne(array('id' => $k));
- $tes[$k]['name'] = $name['position'].'<br>'. $name['first_name'].' '.$name['last_name'];
- $tes[$k]['jml'] = $val;
- }
- $allDataChart[$key] = $tes;
- }
- $this->data['site'] = $site;
- $this->data['colors'] = $colors[$id];
- $this->data['dataChart'] = $allDataChart;
- }
- private function rowsArray($sql, $params = array())
- {
- $connection = \Norm::getConnection('mysql')->getRaw();
- $statement = $connection->prepare($sql);
- if (empty($params)) {
- $statement->execute();
- } else {
- $statement->execute($params);
- }
- $results = $statement->fetchAll(\PDO::FETCH_ASSOC);
- return $results;
- }
- private function rowArray($sql, $params = array())
- {
- $connection = \Norm::getConnection('mysql')->getRaw();
- $statement = $connection->prepare($sql);
- if (empty($params)) {
- $statement->execute();
- } else {
- $statement->execute($params);
- }
- $result = $statement->fetch(\PDO::FETCH_ASSOC);
- return $result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement