diff --git a/.gitignore b/.gitignore
index 6c63bf6..a6c603e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,5 +4,4 @@
!cmod.7z
!.gitignore
!env
-!cmod.sql
!cmod.bak
\ No newline at end of file
diff --git a/app/Config/Filters.php b/app/Config/Filters.php
index e3cea33..3ce8a21 100644
--- a/app/Config/Filters.php
+++ b/app/Config/Filters.php
@@ -34,7 +34,7 @@ class Filters extends BaseFilters
'forcehttps' => ForceHTTPS::class,
'pagecache' => PageCache::class,
'performance' => PerformanceMetrics::class,
- 'auth' => \App\Filters\Auth::class,
+ 'role' => \App\Filters\RoleFilter::class,
];
/**
@@ -70,7 +70,7 @@ class Filters extends BaseFilters
*/
public array $globals = [
'before' => [
- 'auth' => [ 'except' => [
+ 'role' => [ 'except' => [
'auth/*', 'setup', 'api/*'
]]
// 'honeypot',
diff --git a/app/Config/Routes.php b/app/Config/Routes.php
index f1a43d1..c8b23a6 100644
--- a/app/Config/Routes.php
+++ b/app/Config/Routes.php
@@ -5,47 +5,69 @@ use CodeIgniter\Router\RouteCollection;
/**
* @var RouteCollection $routes
*/
-
+/*
// Pages
$routes->get('/', 'Pages::dashboard_index');
$routes->get('/userroles/', 'Pages::userroles_index');
$routes->get('/users/', 'Pages::users_index');
$routes->get('/changePass/', 'Pages::changePass');
$routes->get('/dictTests/', 'Pages::dictTests_index');
-
-// Tubes
-$routes->get('/tubes/collect/(:any)/(:any)', 'Tubes::collect/$1/$2');
-$routes->get('/tubes/collectAll/(:any)', 'Tubes::collectAll/$1');
-$routes->get('/tubes/uncollect/(:any)/(:any)', 'Tubes::uncollect/$1/$2');
-$routes->get('/tubes/uncollectAll/(:any)', 'Tubes::uncollectAll/$1');
-$routes->get('/tubes/unreceive/(:any)/(:any)', 'Tubes::unreceive/$1/$2');
-$routes->get('/tubes/unreceiveAll/(:any)', 'Tubes::unreceiveAll/$1');
-$routes->post('/tubes/comment/(:any)/(:any)', 'Tubes::comment/$1/$2');
-
-$routes->get('/dashboard/viewAccess/(:any)', 'Dashboard::viewAccess/$1');
+*/
// Auth
$routes->get('/auth/logout', 'Auth::logout');
$routes->get('/auth/loginTD', 'Auth::loginTD');
$routes->match(['get','post'], '/auth/login', 'Auth::login');
$routes->match(['get','post'], '/auth/setpass/(:any)', 'Auth::setpass/$1');
+$routes->get('/', 'Auth::redirects');
+$routes->get('changePass/', 'Auth::changePass');
// API - Dashboard
-$routes->get('/api/dashboard/index', 'Dashboard::index');
+$routes->get('/api/dashboard/index', 'API_Dashboard::index');
+
+// API - Tubes
+$routes->get('/tubes/collect/(:any)/(:any)', 'API_Tubes::collect/$1/$2');
+$routes->get('/tubes/collectAll/(:any)', 'API_Tubes::collectAll/$1');
+$routes->get('/tubes/uncollect/(:any)/(:any)', 'API_Tubes::uncollect/$1/$2');
+$routes->get('/tubes/uncollectAll/(:any)', 'API_Tubes::uncollectAll/$1');
+$routes->get('/tubes/unreceive/(:any)/(:any)', 'API_Tubes::unreceive/$1/$2');
+$routes->get('/tubes/unreceiveAll/(:any)', 'API_Tubes::unreceiveAll/$1');
+$routes->post('/tubes/comment/(:any)/(:any)', 'API_Tubes::comment/$1/$2');
// API - Userroles
-$routes->get('/api/userroles/index', 'Userroles::index');
-$routes->get('/api/userroles/detail/(:any)', 'Userroles::detail/$1');
-$routes->post('/api/userroles/save/(:any)', 'Userroles::save/$1');
+$routes->get('/api/userroles/index', 'API_Userroles::index');
+$routes->get('/api/userroles/detail/(:any)', 'API_Userroles::detail/$1');
+$routes->post('/api/userroles/save/(:any)', 'API_Userroles::save/$1');
// API - Users
-$routes->get('/api/users/index', 'Users::index');
-$routes->get('/api/users/detail/(:any)', 'Users::detail/$1');
-$routes->post('/api/users/savePass/(:any)', 'Users::savePass/$1');
-$routes->post('/api/users/saveRole/(:any)', 'Users::saveRole/$1');
+$routes->get('/api/users/index', 'API_Users::index');
+$routes->get('/api/users/detail/(:any)', 'API_Users::detail/$1');
+$routes->post('/api/users/savePass/(:any)', 'API_Users::savePass/$1');
+$routes->post('/api/users/saveRole/(:any)', 'API_Users::saveRole/$1');
// API - DictTests
-$routes->POST('/api/dictTests/search', 'DictTests::search');
-$routes->POST('/api/dictTests/save', 'DictTests::save');
-$routes->get('/api/dictTests/index', 'DictTests::index');
-$routes->get('/api/dictTests/detail/(:any)', 'DictTests::detail/$1');
+$routes->POST('api/dictTests/search', 'API_DictTests::search');
+$routes->POST('api/dictTests/save', 'API_DictTests::save');
+$routes->get('api/dictTests/index', 'API_DictTests::index');
+$routes->get('api/dictTests/detail/(:any)', 'API_DictTests::detail/$1');
+
+// admin
+$routes->group('admin', ['filter' => 'role:admin'], static function ($routes) {
+ $routes->get('', 'AdminController::index');
+ $routes->get('dashboard/viewAccess/(:any)', 'AdminController::viewAccess/$1');
+ $routes->get('userroles/', 'AdminController::userroles_index');
+ $routes->get('users/', 'AdminController::users_index');
+ $routes->get('dictTests/', 'AdminController::dictTests_index');
+});
+
+// user
+$routes->group('user', ['filter' => 'role:user'], static function ($routes) {
+ $routes->get('', 'UserController::index');
+ $routes->get('dashboard/viewAccess/(:any)', 'UserController::viewAccess/$1');
+});
+
+// fo
+$routes->group('fo', ['filter' => 'role:fo'], static function ($routes) {
+ $routes->get('', 'FoController::index');
+ $routes->get('dashboard/viewAccess/(:any)', 'FoController::viewAccess/$1');
+});
\ No newline at end of file
diff --git a/app/Controllers/Dashboard.php b/app/Controllers/API_Dashboard.php
similarity index 76%
rename from app/Controllers/Dashboard.php
rename to app/Controllers/API_Dashboard.php
index b9c499b..e382770 100644
--- a/app/Controllers/Dashboard.php
+++ b/app/Controllers/API_Dashboard.php
@@ -3,7 +3,7 @@ namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
-class Dashboard extends ResourceController {
+class API_Dashboard extends ResourceController {
protected $format = 'json';
public function index() {
@@ -57,19 +57,4 @@ end STATS
$data['count'] = array_count_values(array_column($results, 'STATS'));
return $this->respond($data,200);
}
-
- public function viewAccess($accessnumber): string {
- $db = \Config\Database::connect();
- $sql = "select p.PATNUMBER, p.NAME, sr.HOSTORDERNUMBER, tu.SAMPLETYPE, ds.SHORTTEXT, tu.TUBESTATUS, ct.COLLSTATUS, ct.TUBECOMMENT from SP_TUBES tu
- left join SP_REQUESTS sr on tu.SP_ACCESSNUMBER=sr.SP_ACCESSNUMBER
- left join PATIENTS p on p.PATID=sr.PATID
- left join DICT_SAMPLES_TYPES ds on ds.SAMPCODE= tu.SAMPLETYPE
- left join cmod.dbo.CM_TUBES ct on ct.SAMPLETYPE=tu.SAMPLETYPE and ct.ACCESSNUMBER=tu.SP_ACCESSNUMBER
- where tu.SP_ACCESSNUMBER='$accessnumber'";
- $query = $db->query($sql);
- $results = $query->getResultArray();
- $data['data'] = $results;
- $data['accessnumber'] = $accessnumber;
- return view('dashboard_viewAccess', $data);
- }
}
diff --git a/app/Controllers/DictTests.php b/app/Controllers/API_DictTests.php
similarity index 98%
rename from app/Controllers/DictTests.php
rename to app/Controllers/API_DictTests.php
index 484cc31..c75206e 100644
--- a/app/Controllers/DictTests.php
+++ b/app/Controllers/API_DictTests.php
@@ -3,7 +3,7 @@ namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
-class DictTests extends ResourceController {
+class API_DictTests extends ResourceController {
protected $format = 'json';
public function index() {
diff --git a/app/Controllers/Tubes.php b/app/Controllers/API_Tubes.php
similarity index 98%
rename from app/Controllers/Tubes.php
rename to app/Controllers/API_Tubes.php
index 4b81fc9..e1b3b63 100644
--- a/app/Controllers/Tubes.php
+++ b/app/Controllers/API_Tubes.php
@@ -2,7 +2,7 @@
namespace App\Controllers;
-class Tubes extends BaseController {
+class API_Tubes extends BaseController {
public function collect($access, $sample) {
$userid = session()->userid;
diff --git a/app/Controllers/Userroles.php b/app/Controllers/API_Userroles.php
similarity index 78%
rename from app/Controllers/Userroles.php
rename to app/Controllers/API_Userroles.php
index 93bc2a2..eb1ed8a 100644
--- a/app/Controllers/Userroles.php
+++ b/app/Controllers/API_Userroles.php
@@ -3,7 +3,7 @@ namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
-class Userroles extends ResourceController {
+class API_Userroles extends ResourceController {
protected $format = 'json';
public function index() {
@@ -26,14 +26,13 @@ class Userroles extends ResourceController {
}
public function save($userroleid) {
- $userrolecode = $this->request->getPost('userrolecode');
$userrolename = $this->request->getPost('userrolename');
$db = \Config\Database::connect();
if($userroleid == 0) { // new
- $sql = "INSERT INTO cmod.dbo.CM_USERROLES(USERROLECODE, USERROLENAME, CREATEDATE) VALUES ('$userrolecode', '$userrolename', GETDATE())";
+ $sql = "INSERT INTO cmod.dbo.CM_USERROLES(USERROLENAME, CREATEDATE) VALUES ('$userrolename', GETDATE())";
} else { //update
- $sql = "UPDATE cmod.dbo.CM_USERROLES set USERROLENAME='$userrolename', USERROLECODE='$userrolecode' where USERROLEID='$userroleid'";
+ $sql = "UPDATE cmod.dbo.CM_USERROLES set USERROLENAME='$userrolename' where USERROLEID='$userroleid'";
}
if( $db->query($sql) ) {
diff --git a/app/Controllers/Users.php b/app/Controllers/API_Users.php
similarity index 97%
rename from app/Controllers/Users.php
rename to app/Controllers/API_Users.php
index ee2aef6..a25e20b 100644
--- a/app/Controllers/Users.php
+++ b/app/Controllers/API_Users.php
@@ -3,7 +3,7 @@ namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
-class Users extends ResourceController {
+class API_Users extends ResourceController {
protected $format = 'json';
public function index() {
diff --git a/app/Controllers/AdminController.php b/app/Controllers/AdminController.php
new file mode 100644
index 0000000..4ab9d14
--- /dev/null
+++ b/app/Controllers/AdminController.php
@@ -0,0 +1,61 @@
+query($sql);
+ $results = $query->getResultArray();
+ $data['data'] = $results;
+ $data['accessnumber'] = $accessnumber;
+ return view('admin/dashboard_viewAccess', $data);
+ }
+
+ public function userroles_index(): string {
+ return view('admin/userroles_index');
+ }
+
+ public function users_index(): string {
+ $db = \Config\Database::connect();
+ $sql = "select * from cmod.dbo.CM_USERROLES";
+ $query = $db->query($sql);
+ $results = $query->getResultArray();
+ $data['userroles'] = $results;
+ return view('admin/users_index', $data);
+ }
+
+ public function changePass() {
+ if ($this->request->getMethod() === 'POST') {
+ $password1 = $this->request->getVar('password1');
+ $password2 = $this->request->getVar('password2');
+ $data['password1'] = $password1;
+ $data['password2'] = $password2;
+ if($password1 == $password2) {
+ $password = password_hash($password1,PASSWORD_DEFAULT);
+ $db = \Config\Database::connect();
+ $sql = "update cmod.dbo.CM_USERS set PASSWORD='$password' where USERID='$userid'";
+ $db->query($sql);
+ return redirect()->to("/");
+ } else {
+ return redirect()->to("/auth/setpass/$userid")->with('flash_error', 'password is not the same.');
+ }
+ }
+ return view('changePass');
+ }
+
+ public function dictTests_index() {
+ return view('admin/dictTests_index');
+ }
+}
diff --git a/app/Controllers/Auth.php b/app/Controllers/Auth.php
index 73e3c25..3237e71 100644
--- a/app/Controllers/Auth.php
+++ b/app/Controllers/Auth.php
@@ -18,7 +18,7 @@ class Auth extends BaseController {
$data['password'] = $password;
$db = \Config\Database::connect();
- $sql = "SELECT u.USERID, u.USERNAME, u1.PASSWORD, ur.USERROLECODE
+ $sql = "SELECT u.USERID, u.USERNAME, u1.PASSWORD, ur.USERROLENAME
FROM USERS u
left join cmod.dbo.CM_USERS u1 on u.USERID=u1.USERID
left join cmod.dbo.CM_USERROLES ur on u1.USERROLEID=ur.USERROLEID
@@ -30,7 +30,7 @@ WHERE u.USERID='$userid'";
$qpassword = $row['PASSWORD'];
$userid = $row['USERID'];
$username = $row['USERNAME'];
- $userrole = $row['USERROLECODE'];
+ $userrole = $row['USERROLENAME'];
// if pass empty then first login / reset password
$data['password']=$password;
$data['qpassword']=$qpassword;
@@ -65,7 +65,12 @@ WHERE u.USERID='$userid'";
public function logout() {
session()->destroy();
- return redirect()->to('/auth/login');;
+ return redirect()->to('/auth/login');
+ }
+
+ public function redirects() {
+ $role = session()->get('userrole');
+ return redirect()->to("/$role/");;
}
public function setpass($userid) {
@@ -93,4 +98,8 @@ WHERE u.USERID='$userid'";
return redirect()->to('/');
}
+
+ public function noAccess() {
+ return view('noAccess');
+ }
}
diff --git a/app/Controllers/Pages.php b/app/Controllers/FoController.php
similarity index 52%
rename from app/Controllers/Pages.php
rename to app/Controllers/FoController.php
index 927e778..f05c0da 100644
--- a/app/Controllers/Pages.php
+++ b/app/Controllers/FoController.php
@@ -2,23 +2,25 @@
namespace App\Controllers;
-class Pages extends BaseController {
+class FoController extends BaseController {
- public function dashboard_index() {
- return view('dashboard');
+ public function index() {
+ return view('fo/dashboard');
}
- public function userroles_index(): string {
- return view('userroles_index');
- }
-
- public function users_index(): string {
+ public function viewAccess($accessnumber): string {
$db = \Config\Database::connect();
- $sql = "select * from cmod.dbo.CM_USERROLES";
+ $sql = "select p.PATNUMBER, p.NAME, sr.HOSTORDERNUMBER, tu.SAMPLETYPE, ds.SHORTTEXT, tu.TUBESTATUS, ct.COLLSTATUS, ct.TUBECOMMENT from SP_TUBES tu
+ left join SP_REQUESTS sr on tu.SP_ACCESSNUMBER=sr.SP_ACCESSNUMBER
+ left join PATIENTS p on p.PATID=sr.PATID
+ left join DICT_SAMPLES_TYPES ds on ds.SAMPCODE= tu.SAMPLETYPE
+ left join cmod.dbo.CM_TUBES ct on ct.SAMPLETYPE=tu.SAMPLETYPE and ct.ACCESSNUMBER=tu.SP_ACCESSNUMBER
+ where tu.SP_ACCESSNUMBER='$accessnumber'";
$query = $db->query($sql);
$results = $query->getResultArray();
- $data['userroles'] = $results;
- return view('users_index', $data);
+ $data['data'] = $results;
+ $data['accessnumber'] = $accessnumber;
+ return view('fo/dashboard_viewAccess', $data);
}
public function changePass() {
@@ -39,8 +41,4 @@ class Pages extends BaseController {
}
return view('changePass');
}
-
- public function dictTests_index() {
- return view('dictTests_index');
- }
}
diff --git a/app/Controllers/UserController.php b/app/Controllers/UserController.php
new file mode 100644
index 0000000..bceb8c9
--- /dev/null
+++ b/app/Controllers/UserController.php
@@ -0,0 +1,44 @@
+query($sql);
+ $results = $query->getResultArray();
+ $data['data'] = $results;
+ $data['accessnumber'] = $accessnumber;
+ return view('user/dashboard_viewAccess', $data);
+ }
+
+ public function changePass() {
+ if ($this->request->getMethod() === 'POST') {
+ $password1 = $this->request->getVar('password1');
+ $password2 = $this->request->getVar('password2');
+ $data['password1'] = $password1;
+ $data['password2'] = $password2;
+ if($password1 == $password2) {
+ $password = password_hash($password1,PASSWORD_DEFAULT);
+ $db = \Config\Database::connect();
+ $sql = "update cmod.dbo.CM_USERS set PASSWORD='$password' where USERID='$userid'";
+ $db->query($sql);
+ return redirect()->to("/");
+ } else {
+ return redirect()->to("/auth/setpass/$userid")->with('flash_error', 'password is not the same.');
+ }
+ }
+ return view('changePass');
+ }
+}
diff --git a/app/Filters/Auth.php b/app/Filters/RoleFilter.php
similarity index 68%
rename from app/Filters/Auth.php
rename to app/Filters/RoleFilter.php
index 664bd27..ae0a494 100644
--- a/app/Filters/Auth.php
+++ b/app/Filters/RoleFilter.php
@@ -5,12 +5,17 @@ use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;
-class Auth implements FilterInterface {
+class RoleFilter implements FilterInterface {
public function before(RequestInterface $request, $arguments = null) {
if (!session()->get('username')) {
return redirect()->to('/auth/login');
}
+
+ $userRole = session()->get('userrole');
+ if ($arguments && !in_array($userRole, $arguments)) {
+ return redirect()->to('/no-access');
+ }
}
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) {
diff --git a/app/Views/admin/dashboard.php b/app/Views/admin/dashboard.php
new file mode 100644
index 0000000..705765e
--- /dev/null
+++ b/app/Views/admin/dashboard.php
@@ -0,0 +1,173 @@
+= $this->extend('layouts/main.php') ?>
+
+= $this->section('content') ?>
+
+
+
+
+
+
+
+
+
+
Order
+
MR
+
Patient
+
Request
+
Hosp
+
Test
+
Status
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= $this->endSection() ?>
+
+= $this->section('script') ?>
+
+= $this->endSection() ?>
\ No newline at end of file
diff --git a/app/Views/dashboard_viewAccess.php b/app/Views/admin/dashboard_viewAccess.php
similarity index 100%
rename from app/Views/dashboard_viewAccess.php
rename to app/Views/admin/dashboard_viewAccess.php
diff --git a/app/Views/dictTests_index.php b/app/Views/admin/dictTests_index.php
similarity index 100%
rename from app/Views/dictTests_index.php
rename to app/Views/admin/dictTests_index.php
diff --git a/app/Views/userroles_index.php b/app/Views/admin/userroles_index.php
similarity index 85%
rename from app/Views/userroles_index.php
rename to app/Views/admin/userroles_index.php
index 951b706..99d9352 100644
--- a/app/Views/userroles_index.php
+++ b/app/Views/admin/userroles_index.php
@@ -9,7 +9,6 @@
#
-
Code
Name
Action
@@ -33,7 +32,6 @@
-
User Role Code
:
User Role Name
:
@@ -61,7 +59,7 @@ function index() {
let editBtn = ' ';
//let deleteBtn = '';
let datarow = '
' +
- '
' + data[i].USERROLEID + '
' + '
' + data[i].USERROLECODE+ '
' + '
' + data[i].USERROLENAME+ '
' + '
' + editBtn + '
' +
+ '
' + data[i].USERROLEID + '
' + '
' + data[i].USERROLENAME+ '
' + '
' + editBtn + '
' +
'
';
$("#table-body").append(datarow);
}
@@ -74,7 +72,6 @@ function create() {
$("#alert-div").html("");
$("#error-div").html("");
$("#userroleid").val("0");
- $("#userrolecode").val("");
$("#userrolename").val("");
$("#modal_crud").modal('show');
}
@@ -89,7 +86,6 @@ function edit(userroleid) {
$("#alert-div").html("");
$("#error-div").html("");
$("#userroleid").val(userroleid);
- $("#userrolecode").val(data.USERROLECODE);
$("#userrolename").val(data.USERROLENAME);
$("#modal_crud").modal('show');
},
@@ -101,11 +97,9 @@ function edit(userroleid) {
function save() {
var userroleid = $("#userroleid").val();
- var userrolecode = $("#userrolecode").val();
var userrolename = $("#userrolename").val();
- //console.log(userroleid+' '+userrolecode+' '+userrolename);
let url = '=base_url('');?>api/userroles/save/'+userroleid ;
- let data = { userroleid: userroleid, userrolecode: userrolecode, userrolename: userrolename };
+ let data = { userroleid: userroleid, userrolename: userrolename };
$.ajax({
url: url,
method: "POST",
@@ -115,7 +109,6 @@ function save() {
$("#alert-div").html("");
$("#error-div").html("");
$("#userroleid").val("");
- $("#userrolecode").val("");
$("#userrolename").val("");
index();
$("#modal_crud").modal('hide');
diff --git a/app/Views/users_index.php b/app/Views/admin/users_index.php
similarity index 96%
rename from app/Views/users_index.php
rename to app/Views/admin/users_index.php
index acd4fee..0c699e9 100644
--- a/app/Views/users_index.php
+++ b/app/Views/admin/users_index.php
@@ -32,13 +32,12 @@
Role
:
@@ -92,6 +91,7 @@ function index() {
let userid = data[i].USERID;
let username = data[i].USERNAME;
let userroleid = data[i].USERROLEID;
+ if(userroleid === null) {userroleid = '';}
let userrolename = '';
if(data[i].USERROLENAME != null) { userrolename = data[i].USERROLENAME; }
let editBtn = ' ';
diff --git a/app/Views/fo/dashboard.php b/app/Views/fo/dashboard.php
new file mode 100644
index 0000000..953bdfb
--- /dev/null
+++ b/app/Views/fo/dashboard.php
@@ -0,0 +1,173 @@
+= $this->extend('user/layout/main.php') ?>
+
+= $this->section('content') ?>
+
+
+
+
+
+
+
+
+
+
Order
+
MR
+
Patient
+
Request
+
Hosp
+
Test
+
Status
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= $this->endSection() ?>
+
+= $this->section('script') ?>
+
+= $this->endSection() ?>
\ No newline at end of file
diff --git a/app/Views/fo/dashboard_viewAccess.php b/app/Views/fo/dashboard_viewAccess.php
new file mode 100644
index 0000000..59d06c1
--- /dev/null
+++ b/app/Views/fo/dashboard_viewAccess.php
@@ -0,0 +1,178 @@
+
+
+
Detail Request
+
+
+
+
+
+
+
Access#
:
=$accessnumber;?>
+
Patient
:
=$patnumber;?> - =$name;?>
+
+
+
+
+
+
+
+
Sample List
+
+
Coll.
Recv.
Sample Name
Action
Comment
+ ";
+ if($collstatus==1) {
+ echo "
";
+ } else {
+ echo "
";
+ }
+ if($tubestatus==4) {
+ echo "
";
+ } else {
+ echo "
";
+ }
+ echo "
$sampletext
";
+ echo "
+
+
+
";
+ echo "
$comment
";
+ echo " ";
+ }
+ ?>
+
+
Collection
+
+
+
+
All
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Detail Request
+
+
+
+
Data not found
+
+
\ No newline at end of file
diff --git a/app/Views/fo/layout/form.php b/app/Views/fo/layout/form.php
new file mode 100644
index 0000000..dd62f2d
--- /dev/null
+++ b/app/Views/fo/layout/form.php
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+ Summit CRM
+
+
+
+
+
+
+ = $this->renderSection('head'); ?>
+
+
+
+
+
+
+
Summit-CRM
+
+
+
+
+
+
+
+
+
+
+ = $this->renderSection('content'); ?>
+
+
+
+
+
+
+
+
+
+
+
+ = $this->renderSection('script'); ?>
+
+
+
\ No newline at end of file
diff --git a/app/Views/fo/layout/main.php b/app/Views/fo/layout/main.php
new file mode 100644
index 0000000..7d2bd58
--- /dev/null
+++ b/app/Views/fo/layout/main.php
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+ Analis Dashboard
+
+
+
+
+
+
+
+ = $this->include('fo/layout/topbar'); ?>
+
+