Spaces:
Running
Running
| /** | |
| * Copyright (c) 2017~2020, OBCon Inc. | |
| * All rights reserved. | |
| */ | |
| /** | |
| * @file | |
| * @copyright 2017~2020, OBCon Inc. | |
| * @author gye hyun james kim [pnuskgh@gmail.com] | |
| */ | |
| let View = utils.getClass('include', 'view.js'); | |
| class GroupsView extends View { | |
| constructor() { | |
| super(); | |
| this._name = 'groups'; | |
| this._title = '그룹'; | |
| this._model = modules.groups.model; | |
| } | |
| _promiseParent(req) { | |
| let myPromise = new Promise(function(resolve, reject) { | |
| let query = { where: { site: req.session.site.id, deleted: false } }; | |
| modules.roles.model.table.findAll(query) | |
| .then(function(roles) { | |
| resolve({ roles: roles }); | |
| }.bind(this)).catch(reject); | |
| }.bind(this)); | |
| return myPromise; | |
| } | |
| list(req, res, next) { | |
| let myPromise = this._promiseParent(req); | |
| myPromise = myPromise.then(function(params) { | |
| return new Promise(function(resolve, reject) { | |
| let theme = this.getTheme('list', req, 'list', 'list.ejs'); | |
| theme.javascriptFiles.push('/js/datatables.min.js'); //--- dataTables | |
| theme.cssFiles.push('/css/datatables.min.css'); //--- dataTables | |
| let search = this.getSearchData(req, res, next, 'list'); | |
| let query = { where: { site: req.session.site.id, deleted: false } }; | |
| query = this.getSearchQuery(search, query, 'list'); | |
| this.model.table.findAll(query) | |
| .then(function(results) { | |
| let data = { | |
| search: search, | |
| data: results, | |
| roleEnum: modules.roles.view.toEnum(params.roles) | |
| }; | |
| res.render(utils.getTemplateFullPath(theme.serviceInfo.site.id, theme.layout), { theme: theme, baseUrl: req.baseUrl, session: req.session, data: data }); | |
| }).catch(reject); | |
| }.bind(this)); | |
| }.bind(this)); | |
| myPromise = myPromise.catch(function(err) { //--- reject() 함수에서 에러 처리를 위해 호출 한다. | |
| utils.obj.loggerError(err); | |
| }.bind(this)); | |
| } | |
| detail(req, res, next) { | |
| let myPromise = this._promiseParent(req); | |
| myPromise = myPromise.then(function(params) { | |
| return new Promise(function(resolve, reject) { | |
| let record = req.query.record; | |
| let query = { where: { site: req.session.site.id, group: record, deleted: false } }; | |
| modules.users.model.table.findAll(query) | |
| .then(function(users) { | |
| params.users = users; | |
| resolve(params); | |
| }.bind(this)).catch(reject); | |
| }.bind(this)); | |
| }.bind(this)); | |
| myPromise = myPromise.then(function(params) { | |
| return new Promise(function(resolve, reject) { | |
| let theme = this.getTheme('detail', req, 'detail', 'detail.ejs'); | |
| theme.javascriptFiles.push('/js/datatables.min.js'); //--- dataTables | |
| theme.cssFiles.push('/css/datatables.min.css'); //--- dataTables | |
| let record = req.query.record; | |
| let query = { where: { site: req.session.site.id, id: record, deleted: false } }; | |
| this.model.table.findOne(query) | |
| .then(function(results) { | |
| let data = { | |
| item: results, | |
| users: params.users, | |
| roleEnum: modules.roles.view.toEnum(params.roles) | |
| }; | |
| res.render(utils.getTemplateFullPath(theme.serviceInfo.site.id, theme.layout), { theme: theme, baseUrl: req.baseUrl, session: req.session, data: data }); | |
| }).catch(reject); | |
| }.bind(this)); | |
| }.bind(this)); | |
| myPromise = myPromise.catch(function(err) { //--- reject() 함수에서 에러 처리를 위해 호출 한다. | |
| utils.obj.loggerError(err); | |
| }.bind(this)); | |
| } | |
| createView(req, res, next) { | |
| let myPromise = this._promiseParent(req); | |
| myPromise = myPromise.then(function(params) { | |
| return new Promise(function(resolve, reject) { | |
| let theme = this.getTheme('createView', req, 'create', 'createView.ejs'); | |
| let data = { | |
| roleEnum: modules.roles.view.toEnum(params.roles, ['-1', '--선택 않음--']) | |
| }; | |
| res.render(utils.getTemplateFullPath(theme.serviceInfo.site.id, theme.layout), { theme: theme, baseUrl: req.baseUrl, session: req.session, data: data }); | |
| }.bind(this)); | |
| }.bind(this)); | |
| myPromise = myPromise.catch(function(err) { //--- reject() 함수에서 에러 처리를 위해 호출 한다. | |
| utils.obj.loggerError(err); | |
| }.bind(this)); | |
| } | |
| updateView(req, res, next) { | |
| let myPromise = this._promiseParent(req); | |
| myPromise = myPromise.then(function(params) { | |
| return new Promise(function(resolve, reject) { | |
| let theme = this.getTheme('updateView', req, 'updateView', 'updateView.ejs'); | |
| let record = req.query.record; | |
| let query = { where: { site: req.session.site.id, id: record, deleted: false } }; | |
| this.model.table.findOne(query) | |
| .then(function(results) { | |
| //--- To-Do : 읽은 데이터가 없는 경우 (results == null), 오류 페이지를 표시 한다. | |
| let data = { | |
| item: results, | |
| roleEnum: modules.roles.view.toEnum(params.roles, ['-1', '--선택 않음--']) | |
| }; | |
| res.render(utils.getTemplateFullPath(theme.serviceInfo.site.id, theme.layout), { theme: theme, baseUrl: req.baseUrl, session: req.session, data: data }); | |
| }).catch(reject); | |
| }.bind(this)); | |
| }.bind(this)); | |
| myPromise = myPromise.catch(function(err) { //--- reject() 함수에서 에러 처리를 위해 호출 한다. | |
| utils.obj.loggerError(err); | |
| }.bind(this)); | |
| } | |
| } | |
| module.exports = GroupsView; | |