forked from mirrors/easyappointments
Σχεδίαση βάσης δεδομένων,
Στήσιμο code igniter και εκκίνηση υλοποίησης της περίπτωσης χρήσης 'Κράτηση Ραντεβού'
This commit is contained in:
parent
4dbcdc289d
commit
b715bfa19d
13 changed files with 472 additions and 29 deletions
184
db/easy_appointments.sql
Normal file
184
db/easy_appointments.sql
Normal file
|
@ -0,0 +1,184 @@
|
|||
-- phpMyAdmin SQL Dump
|
||||
-- version 3.5.1
|
||||
-- http://www.phpmyadmin.net
|
||||
--
|
||||
-- Φιλοξενητής: localhost
|
||||
-- Χρόνος δημιουργίας: 14 Απρ 2013 στις 19:41:00
|
||||
-- Έκδοση διακομιστή: 5.5.24-log
|
||||
-- Έκδοση PHP: 5.4.3
|
||||
|
||||
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
|
||||
SET time_zone = "+00:00";
|
||||
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
|
||||
--
|
||||
-- Βάση: `easy_appointments`
|
||||
--
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Δομή πίνακα για τον πίνακα `ea_appointments`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `ea_appointments` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`start_datetime` datetime DEFAULT NULL,
|
||||
`end_datetime` datetime DEFAULT NULL,
|
||||
`comments` text,
|
||||
`id_users_provider` bigint(20) unsigned NOT NULL,
|
||||
`id_users_customer` bigint(20) unsigned NOT NULL,
|
||||
`id_services` bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `id_users_customer` (`id_users_customer`),
|
||||
KEY `id_services` (`id_services`),
|
||||
KEY `id_users_provider` (`id_users_provider`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Δομή πίνακα για τον πίνακα `ea_roles`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `ea_roles` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(256) DEFAULT NULL,
|
||||
`is_admin` tinyint(4) DEFAULT NULL COMMENT '0',
|
||||
`services` int(4) DEFAULT NULL COMMENT '0',
|
||||
`providers` int(4) DEFAULT NULL COMMENT '0',
|
||||
`customers` int(4) DEFAULT NULL COMMENT '0',
|
||||
`notifications` int(4) DEFAULT NULL COMMENT '0',
|
||||
`appointments` int(4) DEFAULT NULL COMMENT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
|
||||
|
||||
--
|
||||
-- Άδειασμα δεδομένων του πίνακα `ea_roles`
|
||||
--
|
||||
|
||||
INSERT INTO `ea_roles` (`id`, `name`, `is_admin`, `services`, `providers`, `customers`, `notifications`, `appointments`) VALUES
|
||||
(1, 'Administrator', 1, 15, 15, 15, 15, 15);
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Δομή πίνακα για τον πίνακα `ea_services`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `ea_services` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(256) DEFAULT NULL,
|
||||
`duration` int(11) DEFAULT NULL,
|
||||
`price` decimal(10,2) DEFAULT NULL,
|
||||
`currency` varchar(32) DEFAULT NULL,
|
||||
`description` text,
|
||||
`id_service_categories` bigint(20) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `id_service_categories` (`id_service_categories`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
|
||||
|
||||
--
|
||||
-- Άδειασμα δεδομένων του πίνακα `ea_services`
|
||||
--
|
||||
|
||||
INSERT INTO `ea_services` (`id`, `name`, `duration`, `price`, `currency`, `description`, `id_service_categories`) VALUES
|
||||
(1, 'General Examination', 20, '50.00', 'euro', 'Sample Description ...', NULL);
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Δομή πίνακα για τον πίνακα `ea_service_categories`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `ea_service_categories` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(256) DEFAULT NULL,
|
||||
`description` text,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Δομή πίνακα για τον πίνακα `ea_settings`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `ea_settings` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(512) DEFAULT NULL,
|
||||
`value` longtext,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
|
||||
|
||||
--
|
||||
-- Άδειασμα δεδομένων του πίνακα `ea_settings`
|
||||
--
|
||||
|
||||
INSERT INTO `ea_settings` (`id`, `name`, `value`) VALUES
|
||||
(1, 'business_name', 'Javation & Co');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Δομή πίνακα για τον πίνακα `ea_users`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `ea_users` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(256) DEFAULT NULL,
|
||||
`password` varchar(512) DEFAULT NULL,
|
||||
`first_name` varchar(256) DEFAULT NULL,
|
||||
`last_name` varchar(512) DEFAULT NULL,
|
||||
`email` varchar(512) DEFAULT NULL,
|
||||
`mobile_number` varchar(128) DEFAULT NULL,
|
||||
`phone_number` varchar(128) DEFAULT NULL,
|
||||
`address` varchar(256) DEFAULT NULL,
|
||||
`city` varchar(256) DEFAULT NULL,
|
||||
`state` varchar(128) DEFAULT NULL,
|
||||
`zip_code` varchar(64) DEFAULT NULL,
|
||||
`notes` text,
|
||||
`id_roles` bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `id_roles` (`id_roles`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
|
||||
|
||||
--
|
||||
-- Άδειασμα δεδομένων του πίνακα `ea_users`
|
||||
--
|
||||
|
||||
INSERT INTO `ea_users` (`id`, `username`, `password`, `first_name`, `last_name`, `email`, `mobile_number`, `phone_number`, `address`, `city`, `state`, `zip_code`, `notes`, `id_roles`) VALUES
|
||||
(1, 'admin', 'admin', 'Alex', 'Tselegidis', 'alextselegidis@gmail.com', '123456789', '987654321', 'Pantazopoulou 11', 'Thessaloniki', NULL, '56121', 'This is me making Easy!Appointments', 1);
|
||||
|
||||
--
|
||||
-- Περιορισμοί για άχρηστους πίνακες
|
||||
--
|
||||
|
||||
--
|
||||
-- Περιορισμοί για πίνακα `ea_appointments`
|
||||
--
|
||||
ALTER TABLE `ea_appointments`
|
||||
ADD CONSTRAINT `ea_appointments_ibfk_2` FOREIGN KEY (`id_users_customer`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
ADD CONSTRAINT `ea_appointments_ibfk_3` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
ADD CONSTRAINT `ea_appointments_ibfk_4` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
--
|
||||
-- Περιορισμοί για πίνακα `ea_services`
|
||||
--
|
||||
ALTER TABLE `ea_services`
|
||||
ADD CONSTRAINT `ea_services_ibfk_1` FOREIGN KEY (`id_service_categories`) REFERENCES `ea_service_categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
--
|
||||
-- Περιορισμοί για πίνακα `ea_users`
|
||||
--
|
||||
ALTER TABLE `ea_users`
|
||||
ADD CONSTRAINT `ea_users_ibfk_1` FOREIGN KEY (`id_roles`) REFERENCES `ea_roles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
|
@ -52,7 +52,7 @@ $autoload['packages'] = array();
|
|||
| $autoload['libraries'] = array('database', 'session', 'xmlrpc');
|
||||
*/
|
||||
|
||||
$autoload['libraries'] = array();
|
||||
$autoload['libraries'] = array('database');
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,24 +1,15 @@
|
|||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class Appointments extends CI_Controller {
|
||||
|
||||
/**
|
||||
* Index Page for this controller.
|
||||
*
|
||||
* Maps to the following URL
|
||||
* http://example.com/index.php/welcome
|
||||
* - or -
|
||||
* http://example.com/index.php/welcome/index
|
||||
* - or -
|
||||
* Since this controller is set as the default controller in
|
||||
* config/routes.php, it's displayed at http://example.com/
|
||||
*
|
||||
* So any other public methods not prefixed with an underscore will
|
||||
* map to /index.php/welcome/<method_name>
|
||||
* @see http://codeigniter.com/user_guide/general/urls.html
|
||||
* This page displays the book appointment wizard
|
||||
* for the customers.
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('appointments/register');
|
||||
$this->load->model('Settings');
|
||||
$viewData['businessName'] = $this->Settings->getSetting('business_name');
|
||||
|
||||
$this->load->view('appointments/book', $viewData);
|
||||
}
|
||||
}
|
||||
|
|
10
src/application/language/german/index.html
Normal file
10
src/application/language/german/index.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
10
src/application/language/greek/index.html
Normal file
10
src/application/language/greek/index.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
7
src/application/models/appointments.php
Normal file
7
src/application/models/appointments.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* To change this template, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
?>
|
7
src/application/models/customers.php
Normal file
7
src/application/models/customers.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* To change this template, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
?>
|
7
src/application/models/providers.php
Normal file
7
src/application/models/providers.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* To change this template, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
?>
|
19
src/application/models/services.php
Normal file
19
src/application/models/services.php
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
class Services extends CI_Model {
|
||||
function __construct() {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns all the services from the database.
|
||||
*
|
||||
* @return array Returns an object array with all the
|
||||
* database services.
|
||||
*/
|
||||
function getAllServices() {
|
||||
$query = $this->db->query('SELECT *');
|
||||
|
||||
return $this->db->get('ea_services');
|
||||
}
|
||||
}
|
||||
?>
|
54
src/application/models/settings.php
Normal file
54
src/application/models/settings.php
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
class Settings extends CI_Model {
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns a system setting from the
|
||||
* database.
|
||||
*
|
||||
* @param string $name The database setting name.
|
||||
* @return string Returns the database value for
|
||||
* the selected setting.
|
||||
*/
|
||||
function getSetting($name)
|
||||
{
|
||||
$query = $this->db->get_where('ea_settings', array('name' => $name));
|
||||
$setting = ($query->num_rows() > 0) ? $query->row() : '';
|
||||
return $setting->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the value for a specific setting
|
||||
* on the database. If the setting doesn't exist, it
|
||||
* is going to be created, otherwise updated.
|
||||
*
|
||||
* @param string $name The setting name.
|
||||
* @param type $value The setting value.
|
||||
*
|
||||
* @return bool Returns the operation success - failure
|
||||
* result.
|
||||
*/
|
||||
function setSetting($name, $value)
|
||||
{
|
||||
$query = $this->db->get_where('ea_settings', array('name' => $name));
|
||||
if ($query->num_rows() > 0) {
|
||||
// Update setting
|
||||
$updateData = array('value' => $value);
|
||||
$this->db->where('name', $name);
|
||||
$result = $this->db->update('ea_settings', $updateData);
|
||||
} else {
|
||||
// Insert setting
|
||||
$insertData = array(
|
||||
'name' => $name,
|
||||
'value' => $value
|
||||
);
|
||||
$result = $this->db->insert('ea_settings', $insertData);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
?>
|
91
src/application/views/appointments/book.php
Normal file
91
src/application/views/appointments/book.php
Normal file
|
@ -0,0 +1,91 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<?php // INCLUDE CSS FILES ?>
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo $this->config->base_url(); ?>assets/css/libs/bootstrap/bootstrap.css">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo $this->config->base_url(); ?>assets/css/libs/bootstrap/bootstrap-responsive.css">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo $this->config->base_url(); ?>assets/css/libs/jquery/jquery-ui.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo $this->config->base_url(); ?>assets/css/libs/jquery/jquery.qtip.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="<?php echo $this->config->base_url(); ?>assets/css/style.css">
|
||||
|
||||
<?php // INCLUDE JS FILES ?>
|
||||
<script type="text/javascript" src="<?php echo $this->config->base_url(); ?>assets/js/libs/jquery/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="<?php echo $this->config->base_url(); ?>assets/js/libs/jquery/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="<?php echo $this->config->base_url(); ?>assets/js/libs/jquery/jquery.qtip.min.js"></script>
|
||||
<script type="text/javascript" src="<?php echo $this->config->base_url(); ?>assets/js/libs/bootstrap/bootstrap.min.js"></script>
|
||||
|
||||
<?php // SET FAVICON FOR PAGE ?>
|
||||
<link rel="icon" type="image/x-icon" href="<?php echo $this->config->base_url(); ?>assets/images/favicon.ico">
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="main" class="container">
|
||||
<div id="book-appointment">
|
||||
<div id="top-bar">
|
||||
<span id="business-name"><?php echo $businessName; ?></span>
|
||||
<div id="book-steps">
|
||||
<div id="step-1" class="book-step active-step" title="Select Service & Provider">
|
||||
<strong>1</strong>
|
||||
</div>
|
||||
|
||||
<div id="step-2" class="book-step" title="Select Appointment Date">
|
||||
<strong>2</strong>
|
||||
</div>
|
||||
<div id="step-3" class="book-step" title="Your Information">
|
||||
<strong>3</strong>
|
||||
</div>
|
||||
<div id="step-4" class="book-step" title="Confirm Appointment">
|
||||
<strong>4</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php // SELECT SERVICE AND PROVIDER ?>
|
||||
<div id="book-appointment-1" class="book-appoinment-step">
|
||||
<h2>Select Service & Provider</h2>
|
||||
<label for="select-service">Select Service</label>
|
||||
<select id="select-service">
|
||||
<option value="1">General Examination</option>
|
||||
<option value="2">Check Blood Pressure</option>
|
||||
</select>
|
||||
|
||||
<label for="select-provider">Select Provider</label>
|
||||
<select id="select-provider">
|
||||
<option value="1">Dr. Andy Smith</option>
|
||||
<option value="2">Dr. Peter Grol</option>
|
||||
<option value="3">Dr. Kurt Benstein</option>
|
||||
</select>
|
||||
|
||||
<button type="button" id="button-next-1" class="btn">Next</button>
|
||||
</div>
|
||||
|
||||
<?php // APPOINTMENT DATE ?>
|
||||
<div id="book-appointment-2" class="book-appoinment-step">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<?php // CUSTOMER'S INFO ?>
|
||||
<div id="book-appointment-3" class="book-appoinment-step">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<?php // CONFIRMATION STEP ?>
|
||||
<div id="book-appointment-4" class="book-appoinment-step">
|
||||
|
||||
</div>
|
||||
|
||||
<div id="frame-footer">
|
||||
<em>Powered By <a href="https://code.google.com/p/easy-appointments/">Easy!Appointments</a></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,13 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -5,3 +5,79 @@ root {
|
|||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #CAEDF3;
|
||||
}
|
||||
|
||||
|
||||
/* REGISTER APPOINTMENT
|
||||
------------------------------------------------------------------------------ */
|
||||
#book-appointment {
|
||||
width: 660px;
|
||||
margin: 150px auto;
|
||||
background: #FFF;
|
||||
box-shadow: 0px 1px 1px #B6B6B6;
|
||||
}
|
||||
|
||||
#book-appointment #top-bar {
|
||||
padding: 5px;
|
||||
height: 70px;
|
||||
background: #3DD481;
|
||||
border-bottom: 2px solid #1A865F;
|
||||
}
|
||||
|
||||
#book-appointment #business-name {
|
||||
font-weight: bold;
|
||||
color: #FFF;
|
||||
font-size: 27px;
|
||||
margin: 27px 10px 0 14px;
|
||||
display: inline-block;
|
||||
text-shadow: 0px 1px 1px #8F8888;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#book-appointment #book-steps {
|
||||
width: 252px;
|
||||
display: inline-block;
|
||||
float: right;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
#book-appointment .book-appoinment-step {
|
||||
padding: 10px 20px;
|
||||
}
|
||||
|
||||
#book-appointment .book-step {
|
||||
display: inline-block;
|
||||
height: 28px;
|
||||
width: 28px;
|
||||
float: left;
|
||||
background: #E1FFCF;
|
||||
padding: 10px;
|
||||
margin-right: 15px;
|
||||
border-radius: 50px;
|
||||
box-shadow: inset 1px 1px 3px #2B2B2B;
|
||||
}
|
||||
|
||||
#book-appointment .book-step strong {
|
||||
font-size: 29px;
|
||||
display: block;
|
||||
text-align: center;
|
||||
margin-top: 4px;
|
||||
color: #B6DFC6;
|
||||
}
|
||||
|
||||
#book-appointment .active-step {
|
||||
background: #FAFA99;
|
||||
}
|
||||
|
||||
#book-appointment .active-step strong {
|
||||
color: #696439;
|
||||
}
|
||||
|
||||
#book-appointment #frame-footer {
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #EEE;
|
||||
background: #FAFAFA;
|
||||
}
|
Loading…
Reference in a new issue