Σχεδίαση βάσης δεδομένων,

Στήσιμο code igniter και
εκκίνηση υλοποίησης της περίπτωσης χρήσης 'Κράτηση Ραντεβού'
This commit is contained in:
alextselegidis@gmail.com 2013-04-14 19:42:40 +00:00
parent 4dbcdc289d
commit b715bfa19d
13 changed files with 472 additions and 29 deletions

184
db/easy_appointments.sql Normal file
View 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 */;

View file

@ -52,7 +52,7 @@ $autoload['packages'] = array();
| $autoload['libraries'] = array('database', 'session', 'xmlrpc'); | $autoload['libraries'] = array('database', 'session', 'xmlrpc');
*/ */
$autoload['libraries'] = array(); $autoload['libraries'] = array('database');
/* /*

View file

@ -1,24 +1,15 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Appointments extends CI_Controller { class Appointments extends CI_Controller {
/** /**
* Index Page for this controller. * This page displays the book appointment wizard
* * for the customers.
* 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
*/ */
public function index() 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);
} }
} }

View file

@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>

View file

@ -0,0 +1,10 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>

View file

@ -0,0 +1,7 @@
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
?>

View file

@ -0,0 +1,7 @@
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
?>

View file

@ -0,0 +1,7 @@
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
?>

View 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');
}
}
?>

View 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;
}
}
?>

View 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>

View file

@ -1,13 +0,0 @@
<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html>

View file

@ -5,3 +5,79 @@ root {
display: block; 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;
}