mirror of
https://github.com/alextselegidis/easyappointments.git
synced 2024-12-22 14:42:23 +03:00
Ολοκλήρωση της διαδικασίας επεξεργασίας και ακύρωσης ενός ραντεβού για τον πελάτη, μέσω του link που έρχεται μαζί με το book success email.
This commit is contained in:
parent
f9a6b20052
commit
e8725a9b1d
28 changed files with 2162 additions and 1090 deletions
|
@ -1,9 +1,9 @@
|
|||
VERSION 0.2
|
||||
===========
|
||||
- Use the PHPMailer class for sending HTML emails.
|
||||
- Display error message to users.
|
||||
- Includes complete Google Sync protocol document.
|
||||
- Customers can book appointments only for the available hours.
|
||||
- Generation of code documentation.
|
||||
- Unit test the controller classes.
|
||||
- Generation of code documentation.
|
||||
- Customers can edit the application through unique links (from their emails).
|
||||
- Minor Fixes
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
-- http://www.phpmyadmin.net
|
||||
--
|
||||
-- Φιλοξενητής: localhost
|
||||
-- Χρόνος δημιουργίας: 08 Μάη 2013 στις 17:29:41
|
||||
-- Χρόνος δημιουργίας: 08 Ιουν 2013 στις 12:49:21
|
||||
-- Έκδοση διακομιστή: 5.5.24-log
|
||||
-- Έκδοση PHP: 5.4.3
|
||||
|
||||
|
@ -28,9 +28,11 @@ SET time_zone = "+00:00";
|
|||
|
||||
CREATE TABLE IF NOT EXISTS `ea_appointments` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`book_datetime` datetime DEFAULT NULL,
|
||||
`start_datetime` datetime DEFAULT NULL,
|
||||
`end_datetime` datetime DEFAULT NULL,
|
||||
`notes` text,
|
||||
`hash` text,
|
||||
`id_users_provider` bigint(20) unsigned NOT NULL,
|
||||
`id_users_customer` bigint(20) unsigned NOT NULL,
|
||||
`id_services` bigint(20) unsigned NOT NULL,
|
||||
|
@ -38,48 +40,14 @@ CREATE TABLE IF NOT EXISTS `ea_appointments` (
|
|||
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=50 ;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=43 ;
|
||||
|
||||
--
|
||||
-- Άδειασμα δεδομένων του πίνακα `ea_appointments`
|
||||
--
|
||||
|
||||
INSERT INTO `ea_appointments` (`id`, `start_datetime`, `end_datetime`, `notes`, `id_users_provider`, `id_users_customer`, `id_services`) VALUES
|
||||
(14, '2013-04-26 12:40:00', '2013-04-26 12:40:00', '', 2, 1, 1),
|
||||
(15, '2013-04-26 16:00:00', '2013-04-26 16:00:00', '', 2, 1, 1),
|
||||
(16, '2013-04-26 13:00:00', '2013-04-26 13:00:00', 'Something else here ...', 2, 19, 1),
|
||||
(17, '2013-04-26 14:00:00', '2013-04-26 14:00:00', '', 2, 20, 1),
|
||||
(18, '2013-04-26 14:20:00', '2013-04-26 14:20:00', '', 2, 19, 1),
|
||||
(19, '2013-04-26 14:20:00', '2013-04-26 14:20:00', 'Some notes ...', 2, 20, 1),
|
||||
(20, '2013-04-26 14:30:00', '2013-04-26 14:30:00', 'ooo', 3, 20, 2),
|
||||
(21, '2013-04-26 15:40:00', '2013-04-26 15:40:00', '', 2, 21, 1),
|
||||
(22, '2013-04-26 16:40:00', '2013-04-26 16:40:00', '', 2, 21, 1),
|
||||
(23, '2013-04-26 14:40:00', '2013-04-26 14:40:00', '', 2, 21, 1),
|
||||
(24, '2013-05-01 18:00:00', '2013-05-01 18:00:00', '', 2, 19, 1),
|
||||
(25, '2013-05-01 18:20:00', '2013-05-01 18:20:00', '', 2, 19, 1),
|
||||
(26, '2013-05-01 18:40:00', '2013-05-01 18:40:00', '', 2, 19, 1),
|
||||
(27, '2013-05-02 00:00:00', '2013-05-02 19:01:00', '', 2, 19, 1),
|
||||
(28, '2013-05-03 13:00:00', '2013-05-03 13:00:00', '', 2, 19, 1),
|
||||
(29, '2013-05-03 13:40:00', '2013-05-03 13:40:00', '', 2, 19, 1),
|
||||
(30, '2013-05-03 14:20:00', '2013-05-03 14:20:00', '', 2, 19, 1),
|
||||
(31, '2013-05-04 08:00:00', '2013-05-04 08:00:00', '', 3, 19, 3),
|
||||
(32, '2013-05-03 00:00:00', '2013-05-03 20:45:00', '', 3, 19, 2),
|
||||
(33, '2013-05-04 08:20:00', '2013-05-04 08:20:00', '', 2, 19, 1),
|
||||
(34, '2013-05-04 09:20:00', '2013-05-04 09:20:00', '', 2, 19, 1),
|
||||
(35, '2013-05-04 12:40:00', '2013-05-04 12:40:00', '', 2, 19, 1),
|
||||
(36, '2013-05-04 13:20:00', '2013-05-04 13:20:00', '', 2, 19, 1),
|
||||
(37, '2013-05-04 08:00:00', '2013-05-04 08:00:00', '', 2, 19, 1),
|
||||
(38, '2013-05-03 00:00:00', '2013-05-03 23:18:00', '', 2, 19, 1),
|
||||
(40, '2013-05-04 11:20:00', '2013-05-04 11:20:00', '', 2, 19, 1),
|
||||
(41, '2013-05-04 12:00:00', '2013-05-04 12:00:00', '', 2, 19, 1),
|
||||
(42, '2013-05-04 17:30:00', '2013-05-04 17:30:00', '', 3, 19, 2),
|
||||
(43, '2013-05-04 19:00:00', '2013-05-04 19:00:00', '', 3, 19, 3),
|
||||
(44, '2013-05-04 18:30:00', '2013-05-04 18:30:00', '', 4, 20, 2),
|
||||
(45, '2013-05-07 11:00:00', '2013-05-07 11:00:00', 'Some notes ...', 2, 19, 1),
|
||||
(46, '2013-05-07 11:20:00', '2013-05-07 11:20:00', '', 2, 19, 1),
|
||||
(47, '2013-05-07 14:40:00', '2013-05-07 14:40:00', '', 2, 19, 1),
|
||||
(48, '2013-05-07 15:00:00', '2013-05-07 15:00:00', '', 2, 20, 1),
|
||||
(49, '2013-05-07 11:40:00', '2013-05-07 11:40:00', '', 2, 19, 1);
|
||||
INSERT INTO `ea_appointments` (`id`, `book_datetime`, `start_datetime`, `end_datetime`, `notes`, `hash`, `id_users_provider`, `id_users_customer`, `id_services`) VALUES
|
||||
(10, NULL, '2013-06-07 15:30:00', '2013-06-07 15:50:00', '', 'c4baf9ea27dcd0fdc5449eb91b0ee2c5', 2, 20, 1);
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
|
@ -125,7 +93,7 @@ CREATE TABLE IF NOT EXISTS `ea_services` (
|
|||
`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=4 ;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;
|
||||
|
||||
--
|
||||
-- Άδειασμα δεδομένων του πίνακα `ea_services`
|
||||
|
@ -134,7 +102,8 @@ CREATE TABLE IF NOT EXISTS `ea_services` (
|
|||
INSERT INTO `ea_services` (`id`, `name`, `duration`, `price`, `currency`, `description`, `id_service_categories`) VALUES
|
||||
(1, 'Γενική Εξέταση', 20, '50.00', 'euro', 'Γενική εξέταση του ασθενή.', NULL),
|
||||
(2, 'Εξέταση Καρδιάς', 30, '40.00', 'euro', 'Εξέταση του ασθενή για νοσήματα καρδιάς.', NULL),
|
||||
(3, 'Νευρολογική Εξέταση', 20, '35.00', 'euro', 'Νευρολογική εξέταση του ασθενή.', NULL);
|
||||
(3, 'Νευρολογική Εξέταση', 20, '35.00', 'euro', 'Νευρολογική εξέταση του ασθενή.', NULL),
|
||||
(9, 'General Examination', 30, '50.00', 'euro', 'This is some service description.', NULL);
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
|
@ -187,16 +156,18 @@ CREATE TABLE IF NOT EXISTS `ea_settings` (
|
|||
`name` varchar(512) DEFAULT NULL,
|
||||
`value` longtext,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;
|
||||
|
||||
--
|
||||
-- Άδειασμα δεδομένων του πίνακα `ea_settings`
|
||||
--
|
||||
|
||||
INSERT INTO `ea_settings` (`id`, `name`, `value`) VALUES
|
||||
(1, 'business_name', 'Javation & Co'),
|
||||
(2, 'business_working_hours', '{}'),
|
||||
(3, 'business_email', 'alextselegidis@gmail.com');
|
||||
(1, 'company_name', 'Javation & Co'),
|
||||
(2, 'company_working_plan', '{"monday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"tuesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"wednesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"thursday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"friday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"saturday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"sunday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]}}'),
|
||||
(3, 'company_email', 'alextselegidis@gmail.com'),
|
||||
(8, 'company_link', 'http://google.gr'),
|
||||
(9, 'book_advance_timeout', '30');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
|
@ -206,8 +177,6 @@ INSERT INTO `ea_settings` (`id`, `name`, `value`) VALUES
|
|||
|
||||
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,
|
||||
|
@ -221,20 +190,44 @@ CREATE TABLE IF NOT EXISTS `ea_users` (
|
|||
`id_roles` bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `id_roles` (`id_roles`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=116 ;
|
||||
|
||||
--
|
||||
-- Άδειασμα δεδομένων του πίνακα `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', '', '1', 'alextselegidis@gmail.com', '123456789', '1', '', '', NULL, '', 'This is me making Easy!Appointments', 1),
|
||||
(2, 'provider_1', 'provider_1', 'Γεώργιος', 'Παπαδόπουλος', 'alextselegidis@gmail.com', '1212121212', '1', '', '', NULL, '', 'This is a test provider', 2),
|
||||
(3, 'provider_2', 'provider_2', 'Νίκος', 'Αναστασίου', 'prov2@test.gr', '1313133113131', '32132165146', 'Some Street 3', NULL, NULL, NULL, NULL, 2),
|
||||
(4, 'provider_3', 'provider_3', 'Ηρώ', 'Καριοφύλη', 'prov3@test.gr', '239203490', '029340923', 'John Doe 3 ', NULL, NULL, NULL, NULL, 2),
|
||||
(19, NULL, NULL, '', 'a', 'alextselegidis@gmail.com', NULL, 'a', '', '', NULL, '', NULL, 3),
|
||||
(20, NULL, NULL, 'Alex', 'Tselegidis', 'alextselegidis@yahoo.gr', NULL, '6988589365', '', '', NULL, '', NULL, 3),
|
||||
(21, NULL, NULL, '', '1', 'black-sabbath1967@hotmail.com', NULL, '1', '', '', NULL, '', NULL, 3);
|
||||
INSERT INTO `ea_users` (`id`, `first_name`, `last_name`, `email`, `mobile_number`, `phone_number`, `address`, `city`, `state`, `zip_code`, `notes`, `id_roles`) VALUES
|
||||
(1, '', '1', 'alextselegidis@gmail.com', '123456789', '1', '', '', NULL, '', 'This is me making Easy!Appointments', 1),
|
||||
(2, 'Γεώργιος', 'Παπαδόπουλος', 'alextselegidis@gmail.com', '1212121212', '1', '', '', NULL, '', 'This is a test provider', 2),
|
||||
(3, 'Νίκος', 'Αναστασίου', 'prov2@test.gr', '1313133113131', '32132165146', 'Some Street 3', NULL, NULL, NULL, NULL, 2),
|
||||
(4, 'Ηρώ', 'Καριοφύλη', 'prov3@test.gr', '239203490', '029340923', 'John Doe 3 ', NULL, NULL, NULL, NULL, 2),
|
||||
(20, 'Alex', 'Tselegidis', 'alextselegidis@yahoo.gr', NULL, '123456789', 'Some Str', 'Some City', NULL, '12345', NULL, 3),
|
||||
(76, '', 'a', 'alextselegidis@yahoo.gr', NULL, 'a', '', '', NULL, '', NULL, 3);
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Δομή πίνακα για τον πίνακα `ea_user_settings`
|
||||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `ea_user_settings` (
|
||||
`id_users` bigint(20) unsigned NOT NULL,
|
||||
`username` varchar(256) DEFAULT NULL,
|
||||
`password` varchar(512) DEFAULT NULL,
|
||||
`working_plan` text,
|
||||
`notifications` text,
|
||||
`google_sync` tinyint(4) DEFAULT NULL,
|
||||
PRIMARY KEY (`id_users`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
--
|
||||
-- Άδειασμα δεδομένων του πίνακα `ea_user_settings`
|
||||
--
|
||||
|
||||
INSERT INTO `ea_user_settings` (`id_users`, `username`, `password`, `working_plan`, `notifications`, `google_sync`) VALUES
|
||||
(2, 'provider_1', 'provider_1', '{"monday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"tuesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"wednesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"thursday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"friday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"saturday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"sunday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]}}', NULL, 0),
|
||||
(3, 'provider_2', 'provider_2', '{"monday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"tuesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"wednesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"thursday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"friday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"saturday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"sunday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]}}', NULL, 0),
|
||||
(4, 'provider_3', 'provider_3', '{"monday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"tuesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"wednesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"thursday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"friday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"saturday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"sunday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]}}', NULL, 0);
|
||||
|
||||
--
|
||||
-- Περιορισμοί για άχρηστους πίνακες
|
||||
|
@ -267,6 +260,12 @@ ALTER TABLE `ea_services_providers`
|
|||
ALTER TABLE `ea_users`
|
||||
ADD CONSTRAINT `ea_users_ibfk_1` FOREIGN KEY (`id_roles`) REFERENCES `ea_roles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
--
|
||||
-- Περιορισμοί για πίνακα `ea_user_settings`
|
||||
--
|
||||
ALTER TABLE `ea_user_settings`
|
||||
ADD CONSTRAINT `ea_user_settings_ibfk_1` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`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 */;
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
bookAppointment
|
||||
</h2>
|
||||
|
||||
<div class="class-description">Implelements the js part of the appointment booking page.</div>
|
||||
<div class="class-description">Implements the js part of the appointment booking page.</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
@ -49,9 +49,9 @@
|
|||
|
||||
|
||||
<div class="description">
|
||||
This class implements the book appointment page functionality.
|
||||
Once the initialize() method is called the page is fully functional
|
||||
and can serve the appointment booking process.
|
||||
This class implements the book appointment page functionality. Once
|
||||
the initialize() method is called the page is fully functional and
|
||||
can serve the appointment booking process.
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -123,12 +123,266 @@ and can serve the appointment booking process.
|
|||
|
||||
|
||||
|
||||
<h3 class="subsection-title">Members</h3>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="manageMode"><span class="type-signature"><static> </span>manageMode<span class="type-signature"> :Boolean</span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<div class="description">
|
||||
Determines the functionality of the page.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<h5>Type:</h5>
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
<span class="param-type">Boolean</span>
|
||||
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line14">line 14</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<h3 class="subsection-title">Methods</h3>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="applyAppointmentData"><span class="type-signature"><static> </span>applyAppointmentData<span class="signature">(appointmentData, providerData, customerData)</span><span class="type-signature"> → {bool}</span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<div class="description">
|
||||
This method applies the appointment's data to the wizard so
|
||||
that the user can start making changes on an existing record.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h5>Parameters:</h5>
|
||||
|
||||
|
||||
<table class="params">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
<th>Name</th>
|
||||
|
||||
|
||||
<th>Type</th>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<th class="last">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>appointmentData</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">object</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">Selected appointment's data.</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>providerData</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">object</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">Selected provider's data.</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>customerData</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">object</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">Selected customer's data.</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<dl class="details">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line398">line 398</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h5>Returns:</h5>
|
||||
|
||||
|
||||
<div class="param-desc">
|
||||
Returns the operation result.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
Type
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
<span class="param-type">bool</span>
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="bindEventHandlers"><span class="type-signature"><static> </span>bindEventHandlers<span class="signature">()</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
@ -138,8 +392,8 @@ and can serve the appointment booking process.
|
|||
|
||||
|
||||
<div class="description">
|
||||
This method binds the necessary event handlers
|
||||
for the book appointments page.
|
||||
This method binds the necessary event handlers for the book
|
||||
appointments page.
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -172,7 +426,7 @@ for the book appointments page.
|
|||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line55">line 55</a>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line77">line 77</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
@ -242,7 +496,7 @@ End datetime is depending on the service and start datetime fieldss.
|
|||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line288">line 288</a>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line363">line 363</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
@ -383,7 +637,7 @@ hours we need to receive.</td>
|
|||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line155">line 155</a>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line194">line 194</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
@ -411,7 +665,7 @@ hours we need to receive.</td>
|
|||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="initialize"><span class="type-signature"><static> </span>initialize<span class="signature">(bindEventHandlers)</span><span class="type-signature"></span></h4>
|
||||
<h4 class="name" id="initialize"><span class="type-signature"><static> </span>initialize<span class="signature">(bindEventHandlers, manageMode)</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
|
@ -469,11 +723,36 @@ hours we need to receive.</td>
|
|||
|
||||
|
||||
|
||||
<td class="description last">(OPTIONAL) Determines wether
|
||||
<td class="description last">(OPTIONAL) Determines whether
|
||||
the default event handlers will be binded to the dom elements.</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
|
||||
<td class="name"><code>manageMode</code></td>
|
||||
|
||||
|
||||
<td class="type">
|
||||
|
||||
|
||||
<span class="param-type">bool</span>
|
||||
|
||||
|
||||
|
||||
</td>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<td class="description last">(OPTIONAL) Determines whether the customer
|
||||
is going to make changes to an existing appointment rather than
|
||||
booking a new one.</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@ -501,7 +780,7 @@ the default event handlers will be binded to the dom elements.</td>
|
|||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line15">line 15</a>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line25">line 25</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
@ -529,7 +808,7 @@ the default event handlers will be binded to the dom elements.</td>
|
|||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="updateConfirmData"><span class="type-signature"><static> </span>updateConfirmData<span class="signature">()</span><span class="type-signature"></span></h4>
|
||||
<h4 class="name" id="updateConfirmFrame"><span class="type-signature"><static> </span>updateConfirmFrame<span class="signature">()</span><span class="type-signature"></span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
|
@ -572,7 +851,7 @@ booking.
|
|||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line233">line 233</a>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line301">line 301</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
@ -600,7 +879,7 @@ booking.
|
|||
|
||||
|
||||
<dt>
|
||||
<h4 class="name" id="validateCustomerDataForm"><span class="type-signature"><static> </span>validateCustomerDataForm<span class="signature">()</span><span class="type-signature"> → {bool}</span></h4>
|
||||
<h4 class="name" id="validateCustomerForm"><span class="type-signature"><static> </span>validateCustomerForm<span class="signature">()</span><span class="type-signature"> → {bool}</span></h4>
|
||||
|
||||
|
||||
</dt>
|
||||
|
@ -642,7 +921,7 @@ It only checks for empty fields by the time.
|
|||
|
||||
<dt class="tag-source">Source:</dt>
|
||||
<dd class="tag-source"><ul class="dummy"><li>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line214">line 214</a>
|
||||
<a href="book_appointment.js.html">frontend/book_appointment.js</a>, <a href="book_appointment.js.html#line282">line 282</a>
|
||||
</li></ul></dd>
|
||||
|
||||
|
||||
|
@ -711,7 +990,7 @@ It only checks for empty fields by the time.
|
|||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0-dev</a> on Mon May 20 2013 18:38:06 GMT+0300 (EEST)
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0-dev</a> on Sat Jun 08 2013 12:49:54 GMT+0300 (EEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
|
|
@ -26,24 +26,40 @@
|
|||
<section>
|
||||
<article>
|
||||
<pre class="prettyprint source"><code>/**
|
||||
* This class implements the book appointment page functionality.
|
||||
* Once the initialize() method is called the page is fully functional
|
||||
* and can serve the appointment booking process.
|
||||
* This class implements the book appointment page functionality. Once
|
||||
* the initialize() method is called the page is fully functional and
|
||||
* can serve the appointment booking process.
|
||||
*
|
||||
* @class Implelements the js part of the appointment booking page.
|
||||
* @class Implements the js part of the appointment booking page.
|
||||
*/
|
||||
var bookAppointment = {
|
||||
/**
|
||||
* Determines the functionality of the page.
|
||||
*
|
||||
* @type Boolean
|
||||
*/
|
||||
manageMode : false,
|
||||
|
||||
/**
|
||||
* This method initializes the book appointment page.
|
||||
*
|
||||
* @param {bool} bindEventHandlers (OPTIONAL) Determines wether
|
||||
* @param {bool} bindEventHandlers (OPTIONAL) Determines whether
|
||||
* the default event handlers will be binded to the dom elements.
|
||||
* @param {bool} manageMode (OPTIONAL) Determines whether the customer
|
||||
* is going to make changes to an existing appointment rather than
|
||||
* booking a new one.
|
||||
*/
|
||||
initialize : function(bindEventHandlers) {
|
||||
if (bindEventHandlers == undefined) {
|
||||
bindEventHandlers = true; // Default value
|
||||
initialize : function(bindEventHandlers, manageMode) {
|
||||
if (bindEventHandlers === undefined) {
|
||||
bindEventHandlers = true; // Default Value
|
||||
}
|
||||
|
||||
if (manageMode === undefined) {
|
||||
manageMode = false; // Default Value
|
||||
}
|
||||
|
||||
bookAppointment.manageMode = manageMode;
|
||||
|
||||
// Initialize page's components (tooltips, datepickers etc).
|
||||
$('.book-step').qtip({
|
||||
position: {
|
||||
|
@ -61,7 +77,7 @@ var bookAppointment = {
|
|||
defaultDate : Date.today(),
|
||||
onSelect : function(dateText, instance) {
|
||||
bookAppointment.getAvailableHours(dateText);
|
||||
bookAppointment.updateConfirmData();
|
||||
bookAppointment.updateConfirmFrame();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -70,22 +86,31 @@ var bookAppointment = {
|
|||
if (bindEventHandlers) {
|
||||
bookAppointment.bindEventHandlers();
|
||||
}
|
||||
|
||||
// Execute other necessary operations on startup.
|
||||
$('#select-service').trigger('change');
|
||||
|
||||
// If the manage mode is true, the appointments data should be
|
||||
// loaded by default.
|
||||
if (bookAppointment.manageMode) {
|
||||
bookAppointment.applyAppointmentData(GlobalVariables.appointmentData,
|
||||
GlobalVariables.providerData, GlobalVariables.customerData);
|
||||
} else {
|
||||
$('#select-service').trigger('change'); // Load the available hours.
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* This method binds the necessary event handlers
|
||||
* for the book appointments page.
|
||||
* This method binds the necessary event handlers for the book
|
||||
* appointments page.
|
||||
*/
|
||||
bindEventHandlers : function() {
|
||||
/**
|
||||
* Event : Selected Provider "Changed"
|
||||
*
|
||||
* Whenever the provider changes the available appointment
|
||||
* date - time periods must be updated.
|
||||
*/
|
||||
$('#select-provider').change(function() {
|
||||
bookAppointment.getAvailableHours(Date.today().toString('dd-MM-yyyy'));
|
||||
bookAppointment.updateConfirmData();
|
||||
bookAppointment.updateConfirmFrame();
|
||||
});
|
||||
|
||||
/**
|
||||
|
@ -98,21 +123,21 @@ var bookAppointment = {
|
|||
var currServiceId = $('#select-service').val();
|
||||
$('#select-provider').empty();
|
||||
|
||||
$.each(GlobalVariables.providers, function(indexProvider, provider) {
|
||||
$.each(GlobalVariables.availableProviders, function(indexProvider, provider) {
|
||||
$.each(provider['services'], function(indexService, serviceId) {
|
||||
// If the current provider is able to provide the selected
|
||||
// service, add him to the listbox.
|
||||
// If the current provider is able to provide the selected service,
|
||||
// add him to the listbox.
|
||||
if (serviceId == currServiceId) {
|
||||
var optionHtml = '<option value="' + provider['id'] + '">'
|
||||
+ provider['last_name'] + ' ' + provider['first_name']
|
||||
+ '</option>';
|
||||
+ provider['last_name'] + ' ' + provider['first_name']
|
||||
+ '</option>';
|
||||
$('#select-provider').append(optionHtml);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
bookAppointment.getAvailableHours(Date.today().toString('dd-MM-yyyy'));
|
||||
bookAppointment.updateConfirmData();
|
||||
bookAppointment.updateConfirmFrame();
|
||||
});
|
||||
|
||||
/**
|
||||
|
@ -123,13 +148,27 @@ var bookAppointment = {
|
|||
* be perfomed, depending the current wizard step.
|
||||
*/
|
||||
$('.button-next').click(function() {
|
||||
// If we are on the 2nd tab then the user should have
|
||||
// an appointment hour selected.
|
||||
if ($(this).attr('data-step_index') === '2') {
|
||||
if ($('.selected-hour').length == 0) {
|
||||
if ($('#select-hour-prompt').length == 0) {
|
||||
$('#available-hours').append('<br><br>'
|
||||
+ '<strong id="select-hour-prompt" class="text-error">'
|
||||
+ 'Please select an appointment hour before continuing!'
|
||||
+ '</strong>');
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// If we are on the 3rd tab then we will need to validate the user's
|
||||
// input before proceeding to the next step.
|
||||
if ($(this).attr('data-step_index') == '3') {
|
||||
if (!bookAppointment.validateCustomerDataForm()) {
|
||||
if ($(this).attr('data-step_index') === '3') {
|
||||
if (!bookAppointment.validateCustomerForm()) {
|
||||
return; // Validation failed, do not continue.
|
||||
} else {
|
||||
bookAppointment.updateConfirmData();
|
||||
bookAppointment.updateConfirmFrame();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -139,7 +178,7 @@ var bookAppointment = {
|
|||
$(this).parents().eq(1).hide('fade', function() {
|
||||
$('.active-step').removeClass('active-step');
|
||||
$('#step-' + nextTabIndex).addClass('active-step');
|
||||
$('#book-appointment-' + nextTabIndex).show('fade');
|
||||
$('#wizard-frame-' + nextTabIndex).show('fade');
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -155,7 +194,7 @@ var bookAppointment = {
|
|||
$(this).parents().eq(1).hide('fade', function() {
|
||||
$('.active-step').removeClass('active-step');
|
||||
$('#step-' + prevTabIndex).addClass('active-step');
|
||||
$('#book-appointment-' + prevTabIndex).show('fade');
|
||||
$('#wizard-frame-' + prevTabIndex).show('fade');
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -168,7 +207,7 @@ var bookAppointment = {
|
|||
$('#available-hours').on('click', '.available-hour', function() {
|
||||
$('.selected-hour').removeClass('selected-hour');
|
||||
$(this).addClass('selected-hour');
|
||||
bookAppointment.updateConfirmData();
|
||||
bookAppointment.updateConfirmFrame();
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -183,24 +222,31 @@ var bookAppointment = {
|
|||
// Find the selected service duration (it is going to
|
||||
// be send within the "postData" object.
|
||||
var selServiceDuration = 15; // Default value of duration (in minutes).
|
||||
$.each(GlobalVariables.services, function(index, service) {
|
||||
$.each(GlobalVariables.availableServices, function(index, service) {
|
||||
if (service['id'] == $('#select-service').val()) {
|
||||
selServiceDuration = service['duration'];
|
||||
}
|
||||
});
|
||||
|
||||
// If the manage mode is true then the appointment's start
|
||||
// date should return as available too.
|
||||
var appointmentId = (bookAppointment.manageMode)
|
||||
? GlobalVariables.appointmentData['id'] : undefined;
|
||||
|
||||
var postData = {
|
||||
'service_id' : $('#select-service').val(),
|
||||
'provider_id' : $('#select-provider').val(),
|
||||
'selected_date' : selDate,
|
||||
'service_duration' : selServiceDuration
|
||||
'service_id' : $('#select-service').val(),
|
||||
'provider_id' : $('#select-provider').val(),
|
||||
'selected_date' : selDate,
|
||||
'service_duration' : selServiceDuration,
|
||||
'manage_mode' : bookAppointment.manageMode,
|
||||
'appointment_id' : appointmentId
|
||||
};
|
||||
|
||||
// Make ajax post request and get the available hours.
|
||||
var ajaxurl = GlobalVariables.baseUrl + 'appointments/ajax_get_available_hours';
|
||||
jQuery.post(ajaxurl, postData, function(postResponse) {
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
console.log('\n\n Get Available Hours Post Response :', postResponse, '\n\n');
|
||||
//console.log('\n\n Get Available Hours Post Response :', postResponse, '\n\n');
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
try {
|
||||
|
@ -209,25 +255,47 @@ var bookAppointment = {
|
|||
//console.log('\n\n Get Available Hours JSON Response :', jsonResponse, '\n\n');
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Fill the available time div
|
||||
var currColumn = 1;
|
||||
$('#available-hours').html('<div style="width:50px; float:left;"></div>');
|
||||
$.each(jsonResponse, function(index, availableHour) {
|
||||
if ((currColumn * 10) < (index + 1)) {
|
||||
currColumn++;
|
||||
$('#available-hours').append('<div style="width:50px; float:left;"></div>');
|
||||
if (jsonResponse.length > 0) {
|
||||
// Fill the available time div
|
||||
var currColumn = 1;
|
||||
$('#available-hours').html('<div style="width:50px; float:left;"></div>');
|
||||
|
||||
$.each(jsonResponse, function(index, availableHour) {
|
||||
if ((currColumn * 10) < (index + 1)) {
|
||||
currColumn++;
|
||||
$('#available-hours')
|
||||
.append('<div style="width:50px; float:left;"></div>');
|
||||
}
|
||||
|
||||
$('#available-hours div:eq(' + (currColumn - 1) + ')')
|
||||
.append('<span class="available-hour">' + availableHour
|
||||
+ '</span><br/>');
|
||||
});
|
||||
|
||||
if (bookAppointment.manageMode) {
|
||||
// Set the appointment start time as selected.
|
||||
$('.available-hour').removeClass('selected-hour');
|
||||
$('.available-hour').filter(function() {
|
||||
return $(this).text() === Date.parseExact(
|
||||
GlobalVariables.appointmentData['start_datetime'],
|
||||
'yyyy-MM-dd HH:mm:ss').toString('HH:mm');
|
||||
}).addClass('selected-hour');
|
||||
} else {
|
||||
// Set the first item as selected.
|
||||
$('.available-hour:eq(0)').addClass('selected-hour');
|
||||
}
|
||||
|
||||
$('#available-hours div:eq(' + (currColumn - 1) + ')')
|
||||
.append('<span class="available-hour">' + availableHour + '</span><br/>');
|
||||
});
|
||||
|
||||
// Set the first item as selected.
|
||||
$('.available-hour:eq(0)').addClass('selected-hour');
|
||||
bookAppointment.updateConfirmData();
|
||||
|
||||
bookAppointment.updateConfirmFrame();
|
||||
} else {
|
||||
$('#available-hours').text('There are no available appointment'
|
||||
+ 'hours for the selected date. Please choose another '
|
||||
+ 'date.');
|
||||
}
|
||||
|
||||
} catch(exception) {
|
||||
GeneralFunctions.displayMessageBox('Unexpected Error', 'An unexpected error occured '
|
||||
+ 'during the available hours calculation. Please refresh the page and try again.');
|
||||
GeneralFunctions.displayMessageBox('Unexpected Error', 'An unexpected '
|
||||
+ 'error occured during the available hours calculation. Please '
|
||||
+ 'refresh the page and try again.');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
@ -238,7 +306,7 @@ var bookAppointment = {
|
|||
*
|
||||
* @return {bool} Returns the validation result.
|
||||
*/
|
||||
validateCustomerDataForm : function() {
|
||||
validateCustomerForm : function() {
|
||||
var validationResult = true;
|
||||
$('.required').css('border', '');
|
||||
|
||||
|
@ -257,7 +325,7 @@ var bookAppointment = {
|
|||
* page with the latest customer settigns and input for the appointment
|
||||
* booking.
|
||||
*/
|
||||
updateConfirmData : function() {
|
||||
updateConfirmFrame : function() {
|
||||
/*** SET APPOINTMENT INFO ***/
|
||||
var selectedDate = $('#select-date').datepicker('getDate');
|
||||
if (selectedDate !== null) {
|
||||
|
@ -303,6 +371,13 @@ var bookAppointment = {
|
|||
'id_services' : $('#select-service').val()
|
||||
};
|
||||
|
||||
postData['manage_mode'] = bookAppointment.manageMode;
|
||||
|
||||
if (bookAppointment.manageMode) {
|
||||
postData['appointment']['id'] = GlobalVariables.appointmentData['id'];
|
||||
postData['customer']['id'] = GlobalVariables.customerData['id'];
|
||||
}
|
||||
|
||||
$('input[name="post_data"]').val(JSON.stringify(postData));
|
||||
},
|
||||
|
||||
|
@ -316,7 +391,7 @@ var bookAppointment = {
|
|||
// Find selected service duration.
|
||||
var selServiceDuration = undefined;
|
||||
|
||||
$.each(GlobalVariables.services, function(index, service) {
|
||||
$.each(GlobalVariables.availableServices, function(index, service) {
|
||||
if (service.id == $('#select-service').val()) {
|
||||
selServiceDuration = service.duration;
|
||||
return; // Stop searching ...
|
||||
|
@ -336,6 +411,47 @@ var bookAppointment = {
|
|||
}
|
||||
|
||||
return endDatetime.toString('yyyy-MM-dd HH:mm:ss');
|
||||
},
|
||||
|
||||
/**
|
||||
* This method applies the appointment's data to the wizard so
|
||||
* that the user can start making changes on an existing record.
|
||||
*
|
||||
* @param {object} appointmentData Selected appointment's data.
|
||||
* @param {object} providerData Selected provider's data.
|
||||
* @param {object} customerData Selected customer's data.
|
||||
* @returns {bool} Returns the operation result.
|
||||
*/
|
||||
applyAppointmentData : function(appointmentData, providerData, customerData) {
|
||||
try {
|
||||
// Select Service & Provider
|
||||
$('#select-service').val(appointmentData['id_services']).trigger('change');
|
||||
$('#select-provider').val(appointmentData['id_users_provider']);
|
||||
|
||||
// Set Appointment Date
|
||||
$('#select-date').datepicker('setDate', Date.parseExact(
|
||||
appointmentData['start_datetime'], 'yyyy-MM-dd HH:mm:ss'));
|
||||
bookAppointment.getAvailableHours($('#select-date').val());
|
||||
|
||||
// Apply Customer's Data
|
||||
$('#last-name').val(customerData['last_name']);
|
||||
$('#first-name').val(customerData['first_name']);
|
||||
$('#email').val(customerData['email']);
|
||||
$('#phone-number').val(customerData['phone_number']);
|
||||
|
||||
$('#address').val(customerData['address']);
|
||||
$('#city').val(customerData['city']);
|
||||
$('#zip-code').val(customerData['zip_code']);
|
||||
var appointmentNotes = (appointmentData['notes'] !== null) ? appointmentData['notes'] : '';
|
||||
$('#notes').val(appointmentNotes);
|
||||
|
||||
bookAppointment.updateConfirmFrame();
|
||||
|
||||
return true;
|
||||
} catch(exc) {
|
||||
console.log(exc);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}</code></pre>
|
||||
</article>
|
||||
|
@ -353,7 +469,7 @@ var bookAppointment = {
|
|||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0-dev</a> on Mon May 20 2013 18:38:05 GMT+0300 (EEST)
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0-dev</a> on Sat Jun 08 2013 12:49:54 GMT+0300 (EEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
|
|
@ -115,7 +115,7 @@ end of the application.</div>
|
|||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0-dev</a> on Mon May 20 2013 18:38:06 GMT+0300 (EEST)
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0-dev</a> on Sat Jun 08 2013 12:49:55 GMT+0300 (EEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
|
|
@ -109,6 +109,26 @@ GeneralFunctions.centerElementOnPage = function(elementHandle) {
|
|||
});
|
||||
});
|
||||
$(window).resize();
|
||||
}
|
||||
|
||||
/**
|
||||
* This function retrieves a parameter from a "GET" formed url.
|
||||
*
|
||||
* @link http://www.netlobo.com/url_query_string_javascript.html
|
||||
*
|
||||
* @param {string} url The selected url.
|
||||
* @param {string} name The parameter name.
|
||||
* @returns {String} Returns the parameter value.
|
||||
*/
|
||||
GeneralFunctions.getUrlParameter = function(url, parameterName) {
|
||||
parameterName = parameterName.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
|
||||
var regexS = "[\\#&]"+parameterName+"=([^&#]*)";
|
||||
var regex = new RegExp( regexS );
|
||||
var results = regex.exec( url );
|
||||
if( results == null )
|
||||
return "";
|
||||
else
|
||||
return results[1];
|
||||
}</code></pre>
|
||||
</article>
|
||||
</section>
|
||||
|
@ -125,7 +145,7 @@ GeneralFunctions.centerElementOnPage = function(elementHandle) {
|
|||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0-dev</a> on Mon May 20 2013 18:38:05 GMT+0300 (EEST)
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0-dev</a> on Sat Jun 08 2013 12:49:54 GMT+0300 (EEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
<br clear="both">
|
||||
|
||||
<footer>
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0-dev</a> on Mon May 20 2013 18:38:05 GMT+0300 (EEST)
|
||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0-dev</a> on Sat Jun 08 2013 12:49:54 GMT+0300 (EEST)
|
||||
</footer>
|
||||
|
||||
<script> prettyPrint(); </script>
|
||||
|
|
|
@ -105,7 +105,7 @@ CI_Controller
|
|||
|
||||
|
||||
|
||||
<b>Located at</b> <a href="source-class-Appointments.html#3-217" title="Go to source code">appointments.php</a><br />
|
||||
<b>Located at</b> <a href="source-class-Appointments.html#3-369" title="Go to source code">appointments.php</a><br />
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -123,20 +123,71 @@ CI_Controller
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_index">#</a>
|
||||
<code><a href="source-class-Appointments.html#4-50" title="Go to source code">index</a>( )</code>
|
||||
<code><a href="source-class-Appointments.html#4-104" title="Go to source code">index</a>( <span>string <var>$appointment_hash</var> = <span class="php-quote">''</span></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
<p>This page displays the book appointment wizard for the customers.</p>
|
||||
<p>Default callback method of the application.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="description detailed hidden">
|
||||
|
||||
<p>This page displays the book appointment wizard for the customers.</p>
|
||||
<p>Default callback method of the application.</p>
|
||||
|
||||
<p>This method creates the appointment book wizard. If an appointment hash is
|
||||
provided then it means that the customer followed the appointment manage link
|
||||
that was send with the book success email.</p>
|
||||
|
||||
|
||||
|
||||
<h4>Parameters</h4>
|
||||
<div class="list"><dl>
|
||||
<dt><var>$appointment_hash</var></dt>
|
||||
<dd><code>string</code><br>$appointment_hash The db appointment hash of an existing record.</dd>
|
||||
</dl></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div></td>
|
||||
</tr>
|
||||
<tr data-order="cancel" id="_cancel">
|
||||
|
||||
<td class="attributes"><code>
|
||||
public
|
||||
|
||||
|
||||
</code>
|
||||
</td>
|
||||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_cancel">#</a>
|
||||
<code><a href="source-class-Appointments.html#106-152" title="Go to source code">cancel</a>( <span>string <var>$appointment_hash</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
<p>Cancel an existing appointment.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="description detailed hidden">
|
||||
|
||||
<p>Cancel an existing appointment.</p>
|
||||
|
||||
<p>This method removes an appointment from the company's schedule. In order for
|
||||
the appointment to be deleted, the hash string must be provided. The customer
|
||||
can only cancel the appointment if the edit time period is not over yet.</p>
|
||||
|
||||
|
||||
|
||||
<h4>Parameters</h4>
|
||||
<div class="list"><dl>
|
||||
<dt><var>$appointment_hash</var></dt>
|
||||
<dd><code>string</code><br>$appointment_hash This is used to distinguish the appointment record.</dd>
|
||||
</dl></div>
|
||||
|
||||
|
||||
|
||||
|
@ -156,7 +207,7 @@ CI_Controller
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_ajax_get_available_hours">#</a>
|
||||
<code><a href="source-class-Appointments.html#52-190" title="Go to source code">ajax_get_available_hours</a>( )</code>
|
||||
<code><a href="source-class-Appointments.html#154-341" title="Go to source code">ajax_get_available_hours</a>( )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -196,7 +247,7 @@ the given service, provider and date.</p>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_google_sync">#</a>
|
||||
<code><a href="source-class-Appointments.html#192-216" title="Go to source code">google_sync</a>( <span>mixed <var>$appointment_id</var></span> )</code>
|
||||
<code><a href="source-class-Appointments.html#343-368" title="Go to source code">google_sync</a>( <span>mixed <var>$appointment_id</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ CI_Model
|
|||
|
||||
|
||||
|
||||
<b>Located at</b> <a href="source-class-Appointments_Model.html#3-290" title="Go to source code">appointments_model.php</a><br />
|
||||
<b>Located at</b> <a href="source-class-Appointments_Model.html#3-332" title="Go to source code">appointments_model.php</a><br />
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -156,7 +156,7 @@ CI_Model
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_add">#</a>
|
||||
<code><a href="source-class-Appointments_Model.html#11-39" title="Go to source code">add</a>( <span>array <var>$appointment_data</var></span> )</code>
|
||||
<code><a href="source-class-Appointments_Model.html#11-41" title="Go to source code">add</a>( <span>array <var>$appointment_data</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -177,7 +177,7 @@ updated.</p>
|
|||
<h4>Parameters</h4>
|
||||
<div class="list"><dl>
|
||||
<dt><var>$appointment_data</var></dt>
|
||||
<dd><code>array</code><br>$appointment_data Associative array with the appointmet's data. Each key has the
|
||||
<dd><code>array</code><br>$appointment_data Associative array with the appointment data. Each key has the
|
||||
same name with the database fields.</dd>
|
||||
</dl></div>
|
||||
|
||||
|
@ -189,8 +189,9 @@ same name with the database fields.</dd>
|
|||
|
||||
<h4>ExpectedException</h4>
|
||||
<div class="list">
|
||||
ValidationException<br />
|
||||
DatabaseException<br />
|
||||
ValidationException Raises when the appointment data are invalid.<br />
|
||||
DatabaseException Raises when the insert or update operation fail to complete
|
||||
successfully.<br />
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -208,7 +209,7 @@ same name with the database fields.</dd>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_exists">#</a>
|
||||
<code><a href="source-class-Appointments_Model.html#41-74" title="Go to source code">exists</a>( <span>array <var>$appointment_data</var></span> )</code>
|
||||
<code><a href="source-class-Appointments_Model.html#43-77" title="Go to source code">exists</a>( <span>array <var>$appointment_data</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -261,7 +262,7 @@ necessary field.<br />
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_find_record_id">#</a>
|
||||
<code><a href="source-class-Appointments_Model.html#115-147" title="Go to source code">find_record_id</a>( <span>array <var>$appointment_data</var></span> )</code>
|
||||
<code><a href="source-class-Appointments_Model.html#119-153" title="Go to source code">find_record_id</a>( <span>array <var>$appointment_data</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -274,8 +275,8 @@ necessary field.<br />
|
|||
<p>Find the database id of an appointment record.</p>
|
||||
|
||||
<p>The appointment data should include the following fields in order to get the
|
||||
unique id from the database: start_datetime, end_datetime, id_users_provider,
|
||||
id_users_customer, id_services.</p>
|
||||
unique id from the database: "start_datetime", "end_datetime",
|
||||
"id_users_provider", "id_users_customer", "id_services".</p>
|
||||
|
||||
<p><strong>IMPORTANT!</strong> The record must already exists in the
|
||||
database, otherwise an exception is raised.</p>
|
||||
|
@ -291,13 +292,14 @@ have the same names as the db fields.</dd>
|
|||
|
||||
<h4>Returns</h4>
|
||||
<div class="list">
|
||||
<code>integer</code><br>Returns the id.<br />
|
||||
<code>integer</code><br>Returns the db id of the record that matches the apppointment data.<br />
|
||||
</div>
|
||||
|
||||
|
||||
<h4>ExpectedException</h4>
|
||||
<div class="list">
|
||||
DatabaseException<br />
|
||||
DatabaseException Raises when this method cannot find any record that matches
|
||||
the given data.<br />
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -315,18 +317,18 @@ have the same names as the db fields.</dd>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_validate_data">#</a>
|
||||
<code><a href="source-class-Appointments_Model.html#149-203" title="Go to source code">validate_data</a>( <span>array <var>$appointment_data</var></span> )</code>
|
||||
<code><a href="source-class-Appointments_Model.html#155-221" title="Go to source code">validate_data</a>( <span>array <var>$appointment_data</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
<p>Validate appointment data before the insert or update operation is
|
||||
<p>Validate appointment data before the insert or update operations are
|
||||
executed.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="description detailed hidden">
|
||||
|
||||
<p>Validate appointment data before the insert or update operation is
|
||||
<p>Validate appointment data before the insert or update operations are
|
||||
executed.</p>
|
||||
|
||||
|
||||
|
@ -359,7 +361,7 @@ executed.</p>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_delete">#</a>
|
||||
<code><a href="source-class-Appointments_Model.html#205-227" title="Go to source code">delete</a>( <span>integer <var>$appointment_id</var></span> )</code>
|
||||
<code><a href="source-class-Appointments_Model.html#223-247" title="Go to source code">delete</a>( <span>integer <var>$appointment_id</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -405,7 +407,7 @@ executed.</p>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_row">#</a>
|
||||
<code><a href="source-class-Appointments_Model.html#229-242" title="Go to source code">get_row</a>( <span>integer <var>$appointment_id</var></span> )</code>
|
||||
<code><a href="source-class-Appointments_Model.html#249-264" title="Go to source code">get_row</a>( <span>integer <var>$appointment_id</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -448,7 +450,7 @@ same name as the database field names.<br />
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_value">#</a>
|
||||
<code><a href="source-class-Appointments_Model.html#244-272" title="Go to source code">get_value</a>( <span>string <var>$field_name</var></span>, <span>integer <var>$appointment_id</var></span> )</code>
|
||||
<code><a href="source-class-Appointments_Model.html#266-299" title="Go to source code">get_value</a>( <span>string <var>$field_name</var></span>, <span>integer <var>$appointment_id</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -492,7 +494,7 @@ same name as the database field names.<br />
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_batch">#</a>
|
||||
<code><a href="source-class-Appointments_Model.html#274-289" title="Go to source code">get_batch</a>( <span>string <var>$where_clause</var> = <span class="php-quote">''</span></span> )</code>
|
||||
<code><a href="source-class-Appointments_Model.html#301-316" title="Go to source code">get_batch</a>( <span>string <var>$where_clause</var> = <span class="php-quote">''</span></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -525,6 +527,47 @@ INCLUDE 'WHERE' KEYWORD.</dd>
|
|||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div></td>
|
||||
</tr>
|
||||
<tr data-order="generate_hash" id="_generate_hash">
|
||||
|
||||
<td class="attributes"><code>
|
||||
public
|
||||
string
|
||||
|
||||
</code>
|
||||
</td>
|
||||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_generate_hash">#</a>
|
||||
<code><a href="source-class-Appointments_Model.html#318-331" title="Go to source code">generate_hash</a>( )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
<p>Generate a unique hash for the given appointment data.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="description detailed hidden">
|
||||
|
||||
<p>Generate a unique hash for the given appointment data.</p>
|
||||
|
||||
<p>This method uses the current date-time to generate a unique hash string that
|
||||
is later used to identify this appointment. Hash is needed when the email is
|
||||
send to the user with an edit link.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<h4>Returns</h4>
|
||||
<div class="list">
|
||||
<code>string</code><br>Returns the unique appointment hash.<br />
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
|
|
@ -105,7 +105,7 @@ CI_Model
|
|||
|
||||
|
||||
|
||||
<b>Located at</b> <a href="source-class-Customers_Model.html#3-283" title="Go to source code">customers_model.php</a><br />
|
||||
<b>Located at</b> <a href="source-class-Customers_Model.html#3-297" title="Go to source code">customers_model.php</a><br />
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -258,7 +258,7 @@ necessary fields.<br />
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_find_record_id">#</a>
|
||||
<code><a href="source-class-Customers_Model.html#119-154" title="Go to source code">find_record_id</a>( <span>array <var>$customer_data</var></span> )</code>
|
||||
<code><a href="source-class-Customers_Model.html#115-150" title="Go to source code">find_record_id</a>( <span>array <var>$customer_data</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -311,7 +311,7 @@ the same names as the db fields.</dd>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_validate_data">#</a>
|
||||
<code><a href="source-class-Customers_Model.html#156-185" title="Go to source code">validate_data</a>( <span>array <var>$customer_data</var></span> )</code>
|
||||
<code><a href="source-class-Customers_Model.html#152-191" title="Go to source code">validate_data</a>( <span>array <var>$customer_data</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -353,7 +353,7 @@ the same names as the db fields.</dd>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_delete">#</a>
|
||||
<code><a href="source-class-Customers_Model.html#187-208" title="Go to source code">delete</a>( <span>integer <var>$customer_id</var></span> )</code>
|
||||
<code><a href="source-class-Customers_Model.html#193-215" title="Go to source code">delete</a>( <span>integer <var>$customer_id</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -399,7 +399,7 @@ the same names as the db fields.</dd>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_row">#</a>
|
||||
<code><a href="source-class-Customers_Model.html#210-223" title="Go to source code">get_row</a>( <span>integer <var>$customer_id</var></span> )</code>
|
||||
<code><a href="source-class-Customers_Model.html#217-231" title="Go to source code">get_row</a>( <span>integer <var>$customer_id</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -442,7 +442,7 @@ same name as the database field names.<br />
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_value">#</a>
|
||||
<code><a href="source-class-Customers_Model.html#225-252" title="Go to source code">get_value</a>( <span>string <var>$field_name</var></span>, <span>integer <var>$customer_id</var></span> )</code>
|
||||
<code><a href="source-class-Customers_Model.html#233-266" title="Go to source code">get_value</a>( <span>string <var>$field_name</var></span>, <span>integer <var>$customer_id</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -486,7 +486,7 @@ same name as the database field names.<br />
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_batch">#</a>
|
||||
<code><a href="source-class-Customers_Model.html#254-273" title="Go to source code">get_batch</a>( <span>string <var>$where_clause</var> = <span class="php-quote">''</span></span> )</code>
|
||||
<code><a href="source-class-Customers_Model.html#268-287" title="Go to source code">get_batch</a>( <span>string <var>$where_clause</var> = <span class="php-quote">''</span></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -533,7 +533,7 @@ INCLUDE 'WHERE' KEYWORD.</dd>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_customers_role_id">#</a>
|
||||
<code><a href="source-class-Customers_Model.html#275-282" title="Go to source code">get_customers_role_id</a>( )</code>
|
||||
<code><a href="source-class-Customers_Model.html#289-296" title="Go to source code">get_customers_role_id</a>( )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ CI_Model
|
|||
|
||||
|
||||
|
||||
<b>Located at</b> <a href="source-class-Providers_Model.html#3-120" title="Go to source code">providers_model.php</a><br />
|
||||
<b>Located at</b> <a href="source-class-Providers_Model.html#3-138" title="Go to source code">providers_model.php</a><br />
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -199,7 +199,7 @@ same name as the database field names.<br />
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_value">#</a>
|
||||
<code><a href="source-class-Providers_Model.html#26-53" title="Go to source code">get_value</a>( <span>string <var>$field_name</var></span>, <span>integer <var>$provider_id</var></span> )</code>
|
||||
<code><a href="source-class-Providers_Model.html#26-58" title="Go to source code">get_value</a>( <span>string <var>$field_name</var></span>, <span>integer <var>$provider_id</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -243,7 +243,7 @@ same name as the database field names.<br />
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_batch">#</a>
|
||||
<code><a href="source-class-Providers_Model.html#55-74" title="Go to source code">get_batch</a>( <span>string <var>$where_clause</var> = <span class="php-quote">''</span></span> )</code>
|
||||
<code><a href="source-class-Providers_Model.html#60-79" title="Go to source code">get_batch</a>( <span>string <var>$where_clause</var> = <span class="php-quote">''</span></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -290,7 +290,7 @@ INCLUDE 'WHERE' KEYWORD.</dd>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_available_providers">#</a>
|
||||
<code><a href="source-class-Providers_Model.html#76-110" title="Go to source code">get_available_providers</a>( )</code>
|
||||
<code><a href="source-class-Providers_Model.html#81-115" title="Go to source code">get_available_providers</a>( )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -329,7 +329,7 @@ provide.</p>
|
|||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_providers_role_id">#</a>
|
||||
<code><a href="source-class-Providers_Model.html#112-119" title="Go to source code">get_providers_role_id</a>( )</code>
|
||||
<code><a href="source-class-Providers_Model.html#117-124" title="Go to source code">get_providers_role_id</a>( )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
|
@ -352,6 +352,50 @@ provide.</p>
|
|||
|
||||
|
||||
|
||||
</div>
|
||||
</div></td>
|
||||
</tr>
|
||||
<tr data-order="get_setting" id="_get_setting">
|
||||
|
||||
<td class="attributes"><code>
|
||||
public
|
||||
string
|
||||
|
||||
</code>
|
||||
</td>
|
||||
|
||||
<td class="name"><div>
|
||||
<a class="anchor" href="#_get_setting">#</a>
|
||||
<code><a href="source-class-Providers_Model.html#126-137" title="Go to source code">get_setting</a>( <span>string <var>$setting_name</var></span>, <span>integer <var>$provider_id</var></span> )</code>
|
||||
|
||||
<div class="description short">
|
||||
|
||||
<p>Get a providers setting from the database.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="description detailed hidden">
|
||||
|
||||
<p>Get a providers setting from the database.</p>
|
||||
|
||||
|
||||
|
||||
<h4>Parameters</h4>
|
||||
<div class="list"><dl>
|
||||
<dt><var>$setting_name</var></dt>
|
||||
<dd><code>string</code><br>$setting_name The setting name that is going to be returned.</dd>
|
||||
<dt><var>$provider_id</var></dt>
|
||||
<dd><code>integer</code><br>$provider_id The selected provider id.</dd>
|
||||
</dl></div>
|
||||
|
||||
<h4>Returns</h4>
|
||||
<div class="list">
|
||||
<code>string</code><br>Returs the value of the selected user setting.<br />
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
|
|
@ -79,222 +79,374 @@
|
|||
</span><span id="2" class="l"><a class="l" href="#2"> 2: </a>
|
||||
</span><span id="3" class="l"><a class="l" href="#3"> 3: </a><span class="php-keyword1">class</span> <a id="Appointments" href="#Appointments">Appointments</a> <span class="php-keyword1">extends</span> CI_Controller {
|
||||
</span><span id="4" class="l"><a class="l" href="#4"> 4: </a> <span class="php-comment">/**
|
||||
</span></span><span id="5" class="l"><a class="l" href="#5"> 5: </a><span class="php-comment"> * This page displays the book appointment wizard
|
||||
</span></span><span id="6" class="l"><a class="l" href="#6"> 6: </a><span class="php-comment"> * for the customers.
|
||||
</span></span><span id="7" class="l"><a class="l" href="#7"> 7: </a><span class="php-comment"> */</span>
|
||||
</span><span id="8" class="l"><a class="l" href="#8"> 8: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_index" href="#_index">index</a>() {
|
||||
</span><span id="9" class="l"><a class="l" href="#9"> 9: </a> <span class="php-keyword1">if</span> (<span class="php-keyword2">strtoupper</span>(<span class="php-var">$_SERVER</span>[<span class="php-quote">'REQUEST_METHOD'</span>]) != <span class="php-quote">'POST'</span>) {
|
||||
</span><span id="10" class="l"><a class="l" href="#10"> 10: </a> <span class="php-comment">// Display the appointment booking page to the customer.</span>
|
||||
</span><span id="11" class="l"><a class="l" href="#11"> 11: </a> <span class="php-comment">// Get business name.</span>
|
||||
</span><span id="12" class="l"><a class="l" href="#12"> 12: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Settings_Model'</span>);
|
||||
</span><span id="13" class="l"><a class="l" href="#13"> 13: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'company_name'</span>] = <span class="php-var">$this</span>->Settings_Model->get_setting(<span class="php-quote">'company_name'</span>);
|
||||
</span><span id="14" class="l"><a class="l" href="#14"> 14: </a>
|
||||
</span><span id="15" class="l"><a class="l" href="#15"> 15: </a> <span class="php-comment">// Get the available services and providers.</span>
|
||||
</span><span id="16" class="l"><a class="l" href="#16"> 16: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Services_Model'</span>);
|
||||
</span><span id="17" class="l"><a class="l" href="#17"> 17: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'available_services'</span>] = <span class="php-var">$this</span>->Services_Model->get_available_services();
|
||||
</span><span id="18" class="l"><a class="l" href="#18"> 18: </a>
|
||||
</span><span id="19" class="l"><a class="l" href="#19"> 19: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Providers_Model'</span>);
|
||||
</span><span id="20" class="l"><a class="l" href="#20"> 20: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'available_providers'</span>] = <span class="php-var">$this</span>->Providers_Model->get_available_providers();
|
||||
</span><span id="21" class="l"><a class="l" href="#21"> 21: </a>
|
||||
</span><span id="22" class="l"><a class="l" href="#22"> 22: </a> <span class="php-comment">// Load the book appointment view.</span>
|
||||
</span><span id="23" class="l"><a class="l" href="#23"> 23: </a> <span class="php-var">$this</span>->load->view(<span class="php-quote">'appointments/book'</span>, <span class="php-var">$view_data</span>);
|
||||
</span><span id="24" class="l"><a class="l" href="#24"> 24: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="25" class="l"><a class="l" href="#25"> 25: </a> <span class="php-var">$post_data</span> = <span class="php-keyword2">json_decode</span>(<span class="php-var">$_POST</span>[<span class="php-quote">'post_data'</span>], <span class="php-keyword1">true</span>);
|
||||
</span><span id="26" class="l"><a class="l" href="#26"> 26: </a>
|
||||
</span><span id="27" class="l"><a class="l" href="#27"> 27: </a> <span class="php-comment">// Add customer </span>
|
||||
</span><span id="28" class="l"><a class="l" href="#28"> 28: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Customers_Model'</span>);
|
||||
</span><span id="29" class="l"><a class="l" href="#29"> 29: </a> <span class="php-var">$customer_id</span> = <span class="php-var">$this</span>->Customers_Model->add(<span class="php-var">$post_data</span>[<span class="php-quote">'customer'</span>]);
|
||||
</span><span id="30" class="l"><a class="l" href="#30"> 30: </a>
|
||||
</span><span id="31" class="l"><a class="l" href="#31"> 31: </a> <span class="php-comment">// Add appointment</span>
|
||||
</span><span id="32" class="l"><a class="l" href="#32"> 32: </a> <span class="php-var">$post_data</span>[<span class="php-quote">'appointment'</span>][<span class="php-quote">'id_users_customer'</span>] = <span class="php-var">$customer_id</span>;
|
||||
</span><span id="33" class="l"><a class="l" href="#33"> 33: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Appointments_Model'</span>);
|
||||
</span><span id="34" class="l"><a class="l" href="#34"> 34: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'appointment_id'</span>] = <span class="php-var">$this</span>->Appointments_Model->add(<span class="php-var">$post_data</span>[<span class="php-quote">'appointment'</span>]);
|
||||
</span><span id="35" class="l"><a class="l" href="#35"> 35: </a>
|
||||
</span><span id="36" class="l"><a class="l" href="#36"> 36: </a> <span class="php-comment">// Send an email to the customer with the appointment info.</span>
|
||||
</span><span id="37" class="l"><a class="l" href="#37"> 37: </a> <span class="php-var">$this</span>->load->library(<span class="php-quote">'Notifications'</span>);
|
||||
</span><span id="38" class="l"><a class="l" href="#38"> 38: </a> <span class="php-keyword1">try</span> {
|
||||
</span><span id="39" class="l"><a class="l" href="#39"> 39: </a> <span class="php-var">$this</span>->notifications->send_book_success(<span class="php-var">$post_data</span>[<span class="php-quote">'customer'</span>], <span class="php-var">$post_data</span>[<span class="php-quote">'appointment'</span>]);
|
||||
</span><span id="40" class="l"><a class="l" href="#40"> 40: </a> <span class="php-var">$this</span>->notifications->send_new_appointment(<span class="php-var">$post_data</span>[<span class="php-quote">'customer'</span>], <span class="php-var">$post_data</span>[<span class="php-quote">'appointment'</span>]);
|
||||
</span><span id="41" class="l"><a class="l" href="#41"> 41: </a> } <span class="php-keyword1">catch</span> (NotificationException <span class="php-var">$not_exc</span>) {
|
||||
</span><span id="42" class="l"><a class="l" href="#42"> 42: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'notification_error'</span>] = <span class="php-quote">'<br><br><pre>An unexpected error occured while sending '</span>
|
||||
</span><span id="43" class="l"><a class="l" href="#43"> 43: </a> . <span class="php-quote">'you an email. Please backup the appointment details so that you can restore them '</span>
|
||||
</span><span id="44" class="l"><a class="l" href="#44"> 44: </a> . <span class="php-quote">'later. <br><br>Error:<br>'</span> . <span class="php-var">$not_exc</span>->getMessage() . <span class="php-quote">'</pre>'</span>;
|
||||
</span><span id="45" class="l"><a class="l" href="#45"> 45: </a> }
|
||||
</span><span id="46" class="l"><a class="l" href="#46"> 46: </a>
|
||||
</span><span id="47" class="l"><a class="l" href="#47"> 47: </a> <span class="php-comment">// Load the book appointment view.</span>
|
||||
</span><span id="48" class="l"><a class="l" href="#48"> 48: </a> <span class="php-var">$this</span>->load->view(<span class="php-quote">'appointments/book_success'</span>, <span class="php-var">$view_data</span>);
|
||||
</span><span id="49" class="l"><a class="l" href="#49"> 49: </a> }
|
||||
</span><span id="50" class="l"><a class="l" href="#50"> 50: </a> }
|
||||
</span><span id="51" class="l"><a class="l" href="#51"> 51: </a>
|
||||
</span><span id="52" class="l"><a class="l" href="#52"> 52: </a> <span class="php-comment">/**
|
||||
</span></span><span id="53" class="l"><a class="l" href="#53"> 53: </a><span class="php-comment"> * [AJAX] Get the available appointment hours for the given date.
|
||||
</span></span><span id="54" class="l"><a class="l" href="#54"> 54: </a><span class="php-comment"> *
|
||||
</span></span><span id="55" class="l"><a class="l" href="#55"> 55: </a><span class="php-comment"> * This method answers to an AJAX request. It calculates the
|
||||
</span></span><span id="56" class="l"><a class="l" href="#56"> 56: </a><span class="php-comment"> * available hours for the given service, provider and date.
|
||||
</span></span><span id="57" class="l"><a class="l" href="#57"> 57: </a><span class="php-comment"> *
|
||||
</span></span><span id="58" class="l"><a class="l" href="#58"> 58: </a><span class="php-comment"> * @param array $_POST['post_data'] An associative array that
|
||||
</span></span><span id="59" class="l"><a class="l" href="#59"> 59: </a><span class="php-comment"> * contains the user selected 'service_id', 'provider_id',
|
||||
</span></span><span id="60" class="l"><a class="l" href="#60"> 60: </a><span class="php-comment"> * 'selected_date' and 'service_duration' in minutes.
|
||||
</span></span><span id="61" class="l"><a class="l" href="#61"> 61: </a><span class="php-comment"> * @return Returns a json object with the available hours.
|
||||
</span></span><span id="62" class="l"><a class="l" href="#62"> 62: </a><span class="php-comment"> */</span>
|
||||
</span><span id="63" class="l"><a class="l" href="#63"> 63: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_ajax_get_available_hours" href="#_ajax_get_available_hours">ajax_get_available_hours</a>() {
|
||||
</span><span id="64" class="l"><a class="l" href="#64"> 64: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Providers_Model'</span>);
|
||||
</span><span id="65" class="l"><a class="l" href="#65"> 65: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Appointments_Model'</span>);
|
||||
</span><span id="66" class="l"><a class="l" href="#66"> 66: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Settings_Model'</span>);
|
||||
</span><span id="67" class="l"><a class="l" href="#67"> 67: </a>
|
||||
</span><span id="68" class="l"><a class="l" href="#68"> 68: </a> <span class="php-comment">// Get the provider's working plan and reserved appointments. </span>
|
||||
</span><span id="69" class="l"><a class="l" href="#69"> 69: </a> <span class="php-var">$working_plan</span> = <span class="php-keyword2">json_decode</span>(<span class="php-var">$this</span>->Providers_Model
|
||||
</span><span id="70" class="l"><a class="l" href="#70"> 70: </a> ->get_value(<span class="php-quote">'working_plan'</span>, <span class="php-var">$_POST</span>[<span class="php-quote">'provider_id'</span>]), <span class="php-keyword1">true</span>);
|
||||
</span><span id="71" class="l"><a class="l" href="#71"> 71: </a>
|
||||
</span><span id="72" class="l"><a class="l" href="#72"> 72: </a> <span class="php-var">$reserved_appointments</span> = <span class="php-var">$this</span>->Appointments_Model->get_batch(
|
||||
</span><span id="73" class="l"><a class="l" href="#73"> 73: </a> <span class="php-keyword1">array</span>(
|
||||
</span><span id="74" class="l"><a class="l" href="#74"> 74: </a> <span class="php-quote">'DATE(start_datetime)'</span> => <span class="php-keyword2">date</span>(<span class="php-quote">'Y-m-d'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$_POST</span>[<span class="php-quote">'selected_date'</span>])),
|
||||
</span><span id="75" class="l"><a class="l" href="#75"> 75: </a> <span class="php-quote">'id_users_provider'</span> => <span class="php-var">$_POST</span>[<span class="php-quote">'provider_id'</span>],
|
||||
</span><span id="76" class="l"><a class="l" href="#76"> 76: </a> <span class="php-quote">'id_services'</span> => <span class="php-var">$_POST</span>[<span class="php-quote">'service_id'</span>]
|
||||
</span><span id="77" class="l"><a class="l" href="#77"> 77: </a> ));
|
||||
</span><span id="78" class="l"><a class="l" href="#78"> 78: </a>
|
||||
</span><span id="79" class="l"><a class="l" href="#79"> 79: </a> <span class="php-comment">// Find the empty spaces on the plan. The first split between </span>
|
||||
</span><span id="80" class="l"><a class="l" href="#80"> 80: </a> <span class="php-comment">// the plan is due to a break (if exist). After that every reserved </span>
|
||||
</span><span id="81" class="l"><a class="l" href="#81"> 81: </a> <span class="php-comment">// appointment is considered to be a taken space in the plan.</span>
|
||||
</span><span id="82" class="l"><a class="l" href="#82"> 82: </a> <span class="php-var">$sel_date_working_plan</span> = <span class="php-var">$working_plan</span>[<span class="php-keyword2">strtolower</span>(<span class="php-keyword2">date</span>(<span class="php-quote">'l'</span>,
|
||||
</span><span id="83" class="l"><a class="l" href="#83"> 83: </a> <span class="php-keyword2">strtotime</span>(<span class="php-var">$_POST</span>[<span class="php-quote">'selected_date'</span>])))];
|
||||
</span><span id="84" class="l"><a class="l" href="#84"> 84: </a> <span class="php-var">$empty_spaces_with_breaks</span> = <span class="php-keyword1">array</span>();
|
||||
</span><span id="85" class="l"><a class="l" href="#85"> 85: </a>
|
||||
</span><span id="86" class="l"><a class="l" href="#86"> 86: </a> <span class="php-keyword1">if</span> (<span class="php-keyword1">isset</span>(<span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'breaks'</span>])) {
|
||||
</span><span id="87" class="l"><a class="l" href="#87"> 87: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'breaks'</span>] <span class="php-keyword1">as</span> <span class="php-var">$index</span>=><span class="php-var">$break</span>) {
|
||||
</span><span id="88" class="l"><a class="l" href="#88"> 88: </a> <span class="php-comment">// Split the working plan to available time periods that do not</span>
|
||||
</span><span id="89" class="l"><a class="l" href="#89"> 89: </a> <span class="php-comment">// contain the breaks in them.</span>
|
||||
</span><span id="90" class="l"><a class="l" href="#90"> 90: </a> <span class="php-var">$last_break_index</span> = <span class="php-var">$index</span> - <span class="php-num">1</span>;
|
||||
</span></span><span id="5" class="l"><a class="l" href="#5"> 5: </a><span class="php-comment"> * Default callback method of the application.
|
||||
</span></span><span id="6" class="l"><a class="l" href="#6"> 6: </a><span class="php-comment"> *
|
||||
</span></span><span id="7" class="l"><a class="l" href="#7"> 7: </a><span class="php-comment"> * This method creates the appointment book wizard. If an appointment hash
|
||||
</span></span><span id="8" class="l"><a class="l" href="#8"> 8: </a><span class="php-comment"> * is provided then it means that the customer followed the appointment
|
||||
</span></span><span id="9" class="l"><a class="l" href="#9"> 9: </a><span class="php-comment"> * manage link that was send with the book success email.
|
||||
</span></span><span id="10" class="l"><a class="l" href="#10"> 10: </a><span class="php-comment"> *
|
||||
</span></span><span id="11" class="l"><a class="l" href="#11"> 11: </a><span class="php-comment"> * @param string $appointment_hash The db appointment hash of an existing
|
||||
</span></span><span id="12" class="l"><a class="l" href="#12"> 12: </a><span class="php-comment"> * record.
|
||||
</span></span><span id="13" class="l"><a class="l" href="#13"> 13: </a><span class="php-comment"> */</span>
|
||||
</span><span id="14" class="l"><a class="l" href="#14"> 14: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_index" href="#_index">index</a>(<span class="php-var">$appointment_hash</span> = <span class="php-quote">''</span>) {
|
||||
</span><span id="15" class="l"><a class="l" href="#15"> 15: </a> <span class="php-keyword1">if</span> (<span class="php-keyword2">strtoupper</span>(<span class="php-var">$_SERVER</span>[<span class="php-quote">'REQUEST_METHOD'</span>]) !== <span class="php-quote">'POST'</span>) {
|
||||
</span><span id="16" class="l"><a class="l" href="#16"> 16: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Settings_Model'</span>);
|
||||
</span><span id="17" class="l"><a class="l" href="#17"> 17: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Services_Model'</span>);
|
||||
</span><span id="18" class="l"><a class="l" href="#18"> 18: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Providers_Model'</span>);
|
||||
</span><span id="19" class="l"><a class="l" href="#19"> 19: </a>
|
||||
</span><span id="20" class="l"><a class="l" href="#20"> 20: </a> <span class="php-var">$company_name</span> = <span class="php-var">$this</span>->Settings_Model->get_setting(<span class="php-quote">'company_name'</span>);
|
||||
</span><span id="21" class="l"><a class="l" href="#21"> 21: </a> <span class="php-var">$available_services</span> = <span class="php-var">$this</span>->Services_Model->get_available_services();
|
||||
</span><span id="22" class="l"><a class="l" href="#22"> 22: </a> <span class="php-var">$available_providers</span> = <span class="php-var">$this</span>->Providers_Model->get_available_providers();
|
||||
</span><span id="23" class="l"><a class="l" href="#23"> 23: </a>
|
||||
</span><span id="24" class="l"><a class="l" href="#24"> 24: </a> <span class="php-comment">// If an appointment hash is provided then it means that the customer </span>
|
||||
</span><span id="25" class="l"><a class="l" href="#25"> 25: </a> <span class="php-comment">// is trying to edit a registered record.</span>
|
||||
</span><span id="26" class="l"><a class="l" href="#26"> 26: </a> <span class="php-keyword1">if</span> (<span class="php-var">$appointment_hash</span> !== <span class="php-quote">''</span>){
|
||||
</span><span id="27" class="l"><a class="l" href="#27"> 27: </a> <span class="php-comment">// Load the appointments data and set the manage mode of the page.</span>
|
||||
</span><span id="28" class="l"><a class="l" href="#28"> 28: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Appointments_Model'</span>);
|
||||
</span><span id="29" class="l"><a class="l" href="#29"> 29: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Customers_Model'</span>);
|
||||
</span><span id="30" class="l"><a class="l" href="#30"> 30: </a>
|
||||
</span><span id="31" class="l"><a class="l" href="#31"> 31: </a> <span class="php-var">$manage_mode</span> = <span class="php-keyword1">TRUE</span>;
|
||||
</span><span id="32" class="l"><a class="l" href="#32"> 32: </a>
|
||||
</span><span id="33" class="l"><a class="l" href="#33"> 33: </a> <span class="php-var">$appointment_data</span> = <span class="php-var">$this</span>->Appointments_Model
|
||||
</span><span id="34" class="l"><a class="l" href="#34"> 34: </a> ->get_batch(<span class="php-keyword1">array</span>(<span class="php-quote">'hash'</span> => <span class="php-var">$appointment_hash</span>))[<span class="php-num">0</span>];
|
||||
</span><span id="35" class="l"><a class="l" href="#35"> 35: </a> <span class="php-var">$provider_data</span> = <span class="php-var">$this</span>->Providers_Model
|
||||
</span><span id="36" class="l"><a class="l" href="#36"> 36: </a> ->get_row(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_provider'</span>]);
|
||||
</span><span id="37" class="l"><a class="l" href="#37"> 37: </a> <span class="php-var">$customer_data</span> = <span class="php-var">$this</span>->Customers_Model
|
||||
</span><span id="38" class="l"><a class="l" href="#38"> 38: </a> ->get_row(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>]);
|
||||
</span><span id="39" class="l"><a class="l" href="#39"> 39: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="40" class="l"><a class="l" href="#40"> 40: </a> <span class="php-comment">// The customer is going to book an appointment so there is no </span>
|
||||
</span><span id="41" class="l"><a class="l" href="#41"> 41: </a> <span class="php-comment">// need for the manage functionality to be initialized.</span>
|
||||
</span><span id="42" class="l"><a class="l" href="#42"> 42: </a> <span class="php-var">$manage_mode</span> = <span class="php-keyword1">FALSE</span>;
|
||||
</span><span id="43" class="l"><a class="l" href="#43"> 43: </a> <span class="php-var">$appointment_data</span> = <span class="php-keyword1">array</span>();
|
||||
</span><span id="44" class="l"><a class="l" href="#44"> 44: </a> <span class="php-var">$provider_data</span> = <span class="php-keyword1">array</span>();
|
||||
</span><span id="45" class="l"><a class="l" href="#45"> 45: </a> <span class="php-var">$customer_data</span> = <span class="php-keyword1">array</span>();
|
||||
</span><span id="46" class="l"><a class="l" href="#46"> 46: </a> }
|
||||
</span><span id="47" class="l"><a class="l" href="#47"> 47: </a>
|
||||
</span><span id="48" class="l"><a class="l" href="#48"> 48: </a> <span class="php-comment">// Load the book appointment view.</span>
|
||||
</span><span id="49" class="l"><a class="l" href="#49"> 49: </a> <span class="php-var">$view_data</span> = <span class="php-keyword1">array</span> (
|
||||
</span><span id="50" class="l"><a class="l" href="#50"> 50: </a> <span class="php-quote">'available_services'</span> => <span class="php-var">$available_services</span>,
|
||||
</span><span id="51" class="l"><a class="l" href="#51"> 51: </a> <span class="php-quote">'available_providers'</span> => <span class="php-var">$available_providers</span>,
|
||||
</span><span id="52" class="l"><a class="l" href="#52"> 52: </a> <span class="php-quote">'company_name'</span> => <span class="php-var">$company_name</span>,
|
||||
</span><span id="53" class="l"><a class="l" href="#53"> 53: </a> <span class="php-quote">'manage_mode'</span> => <span class="php-var">$manage_mode</span>,
|
||||
</span><span id="54" class="l"><a class="l" href="#54"> 54: </a> <span class="php-quote">'appointment_data'</span> => <span class="php-var">$appointment_data</span>,
|
||||
</span><span id="55" class="l"><a class="l" href="#55"> 55: </a> <span class="php-quote">'provider_data'</span> => <span class="php-var">$provider_data</span>,
|
||||
</span><span id="56" class="l"><a class="l" href="#56"> 56: </a> <span class="php-quote">'customer_data'</span> => <span class="php-var">$customer_data</span>
|
||||
</span><span id="57" class="l"><a class="l" href="#57"> 57: </a> );
|
||||
</span><span id="58" class="l"><a class="l" href="#58"> 58: </a> <span class="php-var">$this</span>->load->view(<span class="php-quote">'appointments/book'</span>, <span class="php-var">$view_data</span>);
|
||||
</span><span id="59" class="l"><a class="l" href="#59"> 59: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="60" class="l"><a class="l" href="#60"> 60: </a> <span class="php-comment">// The page is a post-back. Register the appointment and send</span>
|
||||
</span><span id="61" class="l"><a class="l" href="#61"> 61: </a> <span class="php-comment">// notification emails to the provider and the customer that are</span>
|
||||
</span><span id="62" class="l"><a class="l" href="#62"> 62: </a> <span class="php-comment">// related to the appointment.</span>
|
||||
</span><span id="63" class="l"><a class="l" href="#63"> 63: </a> <span class="php-var">$post_data</span> = <span class="php-keyword2">json_decode</span>(<span class="php-var">$_POST</span>[<span class="php-quote">'post_data'</span>], <span class="php-keyword1">true</span>);
|
||||
</span><span id="64" class="l"><a class="l" href="#64"> 64: </a> <span class="php-var">$appointment_data</span> = <span class="php-var">$post_data</span>[<span class="php-quote">'appointment'</span>];
|
||||
</span><span id="65" class="l"><a class="l" href="#65"> 65: </a> <span class="php-var">$customer_data</span> = <span class="php-var">$post_data</span>[<span class="php-quote">'customer'</span>];
|
||||
</span><span id="66" class="l"><a class="l" href="#66"> 66: </a>
|
||||
</span><span id="67" class="l"><a class="l" href="#67"> 67: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Customers_Model'</span>);
|
||||
</span><span id="68" class="l"><a class="l" href="#68"> 68: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Appointments_Model'</span>);
|
||||
</span><span id="69" class="l"><a class="l" href="#69"> 69: </a>
|
||||
</span><span id="70" class="l"><a class="l" href="#70"> 70: </a> <span class="php-var">$customer_id</span> = <span class="php-var">$this</span>->Customers_Model->add(<span class="php-var">$customer_data</span>);
|
||||
</span><span id="71" class="l"><a class="l" href="#71"> 71: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>] = <span class="php-var">$customer_id</span>;
|
||||
</span><span id="72" class="l"><a class="l" href="#72"> 72: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>] = <span class="php-var">$this</span>->Appointments_Model->add(<span class="php-var">$appointment_data</span>);
|
||||
</span><span id="73" class="l"><a class="l" href="#73"> 73: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'hash'</span>] = <span class="php-var">$this</span>->Appointments_Model
|
||||
</span><span id="74" class="l"><a class="l" href="#74"> 74: </a> ->get_value(<span class="php-quote">'hash'</span>, <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>]);
|
||||
</span><span id="75" class="l"><a class="l" href="#75"> 75: </a>
|
||||
</span><span id="76" class="l"><a class="l" href="#76"> 76: </a> <span class="php-comment">// Send an email to the customer with the appointment info.</span>
|
||||
</span><span id="77" class="l"><a class="l" href="#77"> 77: </a> <span class="php-var">$this</span>->load->library(<span class="php-quote">'Notifications'</span>);
|
||||
</span><span id="78" class="l"><a class="l" href="#78"> 78: </a> <span class="php-keyword1">try</span> {
|
||||
</span><span id="79" class="l"><a class="l" href="#79"> 79: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$post_data</span>[<span class="php-quote">'manage_mode'</span>]) {
|
||||
</span><span id="80" class="l"><a class="l" href="#80"> 80: </a> <span class="php-var">$customer_title</span> = <span class="php-quote">'Your appointment has been successfully booked!'</span>;
|
||||
</span><span id="81" class="l"><a class="l" href="#81"> 81: </a> <span class="php-var">$provider_title</span> = <span class="php-quote">'A new appointment has been added to your plan.'</span>;
|
||||
</span><span id="82" class="l"><a class="l" href="#82"> 82: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="83" class="l"><a class="l" href="#83"> 83: </a> <span class="php-var">$customer_title</span> = <span class="php-quote">'Appointment changes saved successfully!'</span>;
|
||||
</span><span id="84" class="l"><a class="l" href="#84"> 84: </a> <span class="php-var">$provider_title</span> = <span class="php-quote">'Appointment details have changed.'</span>;
|
||||
</span><span id="85" class="l"><a class="l" href="#85"> 85: </a> }
|
||||
</span><span id="86" class="l"><a class="l" href="#86"> 86: </a>
|
||||
</span><span id="87" class="l"><a class="l" href="#87"> 87: </a> <span class="php-var">$this</span>->notifications->send_book_success(
|
||||
</span><span id="88" class="l"><a class="l" href="#88"> 88: </a> <span class="php-var">$customer_data</span>, <span class="php-var">$appointment_data</span>, <span class="php-var">$customer_title</span>);
|
||||
</span><span id="89" class="l"><a class="l" href="#89"> 89: </a> <span class="php-var">$this</span>->notifications->send_new_appointment(
|
||||
</span><span id="90" class="l"><a class="l" href="#90"> 90: </a> <span class="php-var">$customer_data</span>, <span class="php-var">$appointment_data</span>, <span class="php-var">$provider_title</span>);
|
||||
</span><span id="91" class="l"><a class="l" href="#91"> 91: </a>
|
||||
</span><span id="92" class="l"><a class="l" href="#92"> 92: </a> <span class="php-keyword1">if</span> (<span class="php-keyword2">count</span>(<span class="php-var">$empty_spaces_with_breaks</span>) === <span class="php-num">0</span>) {
|
||||
</span><span id="93" class="l"><a class="l" href="#93"> 93: </a> <span class="php-var">$start_hour</span> = <span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'start'</span>];
|
||||
</span><span id="94" class="l"><a class="l" href="#94"> 94: </a> <span class="php-var">$end_hour</span> = <span class="php-var">$break</span>[<span class="php-quote">'start'</span>];
|
||||
</span><span id="95" class="l"><a class="l" href="#95"> 95: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="96" class="l"><a class="l" href="#96"> 96: </a> <span class="php-var">$start_hour</span> = <span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'breaks'</span>][<span class="php-var">$last_break_index</span>][<span class="php-quote">'end'</span>];
|
||||
</span><span id="97" class="l"><a class="l" href="#97"> 97: </a> <span class="php-var">$end_hour</span> = <span class="php-var">$break</span>[<span class="php-quote">'start'</span>];
|
||||
</span><span id="98" class="l"><a class="l" href="#98"> 98: </a> }
|
||||
</span><span id="99" class="l"><a class="l" href="#99"> 99: </a>
|
||||
</span><span id="100" class="l"><a class="l" href="#100">100: </a> <span class="php-var">$empty_spaces_with_breaks</span>[] = <span class="php-keyword1">array</span>(
|
||||
</span><span id="101" class="l"><a class="l" href="#101">101: </a> <span class="php-quote">'start'</span> => <span class="php-var">$start_hour</span>,
|
||||
</span><span id="102" class="l"><a class="l" href="#102">102: </a> <span class="php-quote">'end'</span> => <span class="php-var">$end_hour</span>
|
||||
</span><span id="103" class="l"><a class="l" href="#103">103: </a> );
|
||||
</span><span id="104" class="l"><a class="l" href="#104">104: </a> }
|
||||
</span><span id="105" class="l"><a class="l" href="#105">105: </a>
|
||||
</span><span id="106" class="l"><a class="l" href="#106">106: </a> <span class="php-comment">// Add the space from the last break to the end of the day.</span>
|
||||
</span><span id="107" class="l"><a class="l" href="#107">107: </a> <span class="php-var">$empty_spaces_with_breaks</span>[] = <span class="php-keyword1">array</span>(
|
||||
</span><span id="108" class="l"><a class="l" href="#108">108: </a> <span class="php-quote">'start'</span> => <span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'breaks'</span>][<span class="php-var">$index</span>][<span class="php-quote">'end'</span>],
|
||||
</span><span id="109" class="l"><a class="l" href="#109">109: </a> <span class="php-quote">'end'</span> => <span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'end'</span>]
|
||||
</span><span id="110" class="l"><a class="l" href="#110">110: </a> );
|
||||
</span><span id="111" class="l"><a class="l" href="#111">111: </a> }
|
||||
</span><span id="112" class="l"><a class="l" href="#112">112: </a>
|
||||
</span><span id="113" class="l"><a class="l" href="#113">113: </a> <span class="php-comment">// Break the empty spaces with the reserved appointments.</span>
|
||||
</span><span id="114" class="l"><a class="l" href="#114">114: </a> <span class="php-var">$empty_spaces_with_appointments</span> = <span class="php-keyword1">array</span>();
|
||||
</span><span id="115" class="l"><a class="l" href="#115">115: </a> <span class="php-keyword1">if</span> (<span class="php-keyword2">count</span>(<span class="php-var">$reserved_appointments</span>) > <span class="php-num">0</span>) {
|
||||
</span><span id="116" class="l"><a class="l" href="#116">116: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$empty_spaces_with_breaks</span> <span class="php-keyword1">as</span> <span class="php-var">$space</span>) {
|
||||
</span><span id="117" class="l"><a class="l" href="#117">117: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$reserved_appointments</span> <span class="php-keyword1">as</span> <span class="php-var">$index</span>=><span class="php-var">$appointment</span>) {
|
||||
</span><span id="118" class="l"><a class="l" href="#118">118: </a> <span class="php-var">$appointment_start</span> = <span class="php-keyword2">date</span>(<span class="php-quote">'H:i'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$appointment</span>[<span class="php-quote">'start_datetime'</span>]));
|
||||
</span><span id="119" class="l"><a class="l" href="#119">119: </a> <span class="php-var">$appointment_end</span> = <span class="php-keyword2">date</span>(<span class="php-quote">'H:i'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$appointment</span>[<span class="php-quote">'end_datetime'</span>]));
|
||||
</span><span id="120" class="l"><a class="l" href="#120">120: </a> <span class="php-var">$space_start</span> = <span class="php-keyword2">date</span>(<span class="php-quote">'H:i'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$space</span>[<span class="php-quote">'start'</span>]));
|
||||
</span><span id="121" class="l"><a class="l" href="#121">121: </a> <span class="php-var">$space_end</span> = <span class="php-keyword2">date</span>(<span class="php-quote">'H:i'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$space</span>[<span class="php-quote">'end'</span>]));
|
||||
</span><span id="122" class="l"><a class="l" href="#122">122: </a>
|
||||
</span><span id="123" class="l"><a class="l" href="#123">123: </a> <span class="php-keyword1">if</span> (<span class="php-var">$space_start</span> < <span class="php-var">$appointment_start</span> && <span class="php-var">$space_end</span> > <span class="php-var">$appointment_end</span>) {
|
||||
</span><span id="124" class="l"><a class="l" href="#124">124: </a> <span class="php-comment">// Current appointment is within the current empty space. So </span>
|
||||
</span><span id="125" class="l"><a class="l" href="#125">125: </a> <span class="php-comment">// we need to break the empty space into two other spaces that </span>
|
||||
</span><span id="126" class="l"><a class="l" href="#126">126: </a> <span class="php-comment">// don't include the appointment.</span>
|
||||
</span><span id="127" class="l"><a class="l" href="#127">127: </a> <span class="php-var">$empty_spaces_with_appointments</span>[] = <span class="php-keyword1">array</span>(
|
||||
</span><span id="128" class="l"><a class="l" href="#128">128: </a> <span class="php-quote">'start'</span> => <span class="php-var">$space_start</span>,
|
||||
</span><span id="129" class="l"><a class="l" href="#129">129: </a> <span class="php-quote">'end'</span> => <span class="php-var">$appointment_start</span>
|
||||
</span><span id="130" class="l"><a class="l" href="#130">130: </a> );
|
||||
</span><span id="131" class="l"><a class="l" href="#131">131: </a> <span class="php-var">$empty_spaces_with_appointments</span>[] = <span class="php-keyword1">array</span>(
|
||||
</span><span id="132" class="l"><a class="l" href="#132">132: </a> <span class="php-quote">'start'</span> => <span class="php-var">$appointment_end</span>,
|
||||
</span><span id="133" class="l"><a class="l" href="#133">133: </a> <span class="php-quote">'end'</span> => <span class="php-var">$space_end</span>
|
||||
</span><span id="134" class="l"><a class="l" href="#134">134: </a> );
|
||||
</span><span id="135" class="l"><a class="l" href="#135">135: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="136" class="l"><a class="l" href="#136">136: </a> <span class="php-var">$empty_spaces_with_appointments</span>[] = <span class="php-keyword1">array</span>(
|
||||
</span><span id="137" class="l"><a class="l" href="#137">137: </a> <span class="php-quote">'start'</span> => <span class="php-var">$space_start</span>,
|
||||
</span><span id="138" class="l"><a class="l" href="#138">138: </a> <span class="php-quote">'end'</span> => <span class="php-var">$space_end</span>
|
||||
</span><span id="139" class="l"><a class="l" href="#139">139: </a> );
|
||||
</span><span id="140" class="l"><a class="l" href="#140">140: </a> }
|
||||
</span><span id="141" class="l"><a class="l" href="#141">141: </a> }
|
||||
</span><span id="142" class="l"><a class="l" href="#142">142: </a> }
|
||||
</span><span id="143" class="l"><a class="l" href="#143">143: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="144" class="l"><a class="l" href="#144">144: </a> <span class="php-var">$empty_spaces_with_appointments</span> = <span class="php-var">$empty_spaces_with_breaks</span>;
|
||||
</span><span id="145" class="l"><a class="l" href="#145">145: </a> }
|
||||
</span><span id="146" class="l"><a class="l" href="#146">146: </a>
|
||||
</span><span id="147" class="l"><a class="l" href="#147">147: </a> <span class="php-var">$empty_spaces</span> = <span class="php-var">$empty_spaces_with_appointments</span>;
|
||||
</span><span id="148" class="l"><a class="l" href="#148">148: </a>
|
||||
</span><span id="149" class="l"><a class="l" href="#149">149: </a> <span class="php-comment">// Calculate the available appointment hours for the given date. </span>
|
||||
</span><span id="150" class="l"><a class="l" href="#150">150: </a> <span class="php-comment">// The empty spaces are broken down to 15 min and if the service</span>
|
||||
</span><span id="151" class="l"><a class="l" href="#151">151: </a> <span class="php-comment">// fit in each quarter then a new available hour is added to the</span>
|
||||
</span><span id="152" class="l"><a class="l" href="#152">152: </a> <span class="php-comment">// $available hours array.</span>
|
||||
</span><span id="153" class="l"><a class="l" href="#153">153: </a> <span class="php-var">$available_hours</span> = <span class="php-keyword1">array</span>();
|
||||
</span><span id="154" class="l"><a class="l" href="#154">154: </a>
|
||||
</span><span id="155" class="l"><a class="l" href="#155">155: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$empty_spaces</span> <span class="php-keyword1">as</span> <span class="php-var">$space</span>) {
|
||||
</span><span id="156" class="l"><a class="l" href="#156">156: </a> <span class="php-var">$start_hour</span> = <span class="php-keyword1">new</span> DateTime(<span class="php-var">$_POST</span>[<span class="php-quote">'selected_date'</span>] . <span class="php-quote">' '</span> . <span class="php-var">$space</span>[<span class="php-quote">'start'</span>]);
|
||||
</span><span id="157" class="l"><a class="l" href="#157">157: </a> <span class="php-var">$end_hour</span> = <span class="php-keyword1">new</span> DateTime(<span class="php-var">$_POST</span>[<span class="php-quote">'selected_date'</span>] . <span class="php-quote">' '</span> . <span class="php-var">$space</span>[<span class="php-quote">'end'</span>]);
|
||||
</span><span id="158" class="l"><a class="l" href="#158">158: </a> <span class="php-var">$curr_hour</span> = <span class="php-var">$start_hour</span>;
|
||||
</span><span id="159" class="l"><a class="l" href="#159">159: </a>
|
||||
</span><span id="160" class="l"><a class="l" href="#160">160: </a> <span class="php-var">$diff</span> = <span class="php-var">$curr_hour</span>->diff(<span class="php-var">$end_hour</span>);
|
||||
</span><span id="161" class="l"><a class="l" href="#161">161: </a> <span class="php-keyword1">while</span>((<span class="php-var">$diff</span>->h * <span class="php-num">60</span> + <span class="php-var">$diff</span>->i) > <span class="php-keyword2">intval</span>(<span class="php-var">$_POST</span>[<span class="php-quote">'service_duration'</span>])) {
|
||||
</span><span id="162" class="l"><a class="l" href="#162">162: </a> <span class="php-var">$available_hours</span>[] = <span class="php-var">$curr_hour</span>->format(<span class="php-quote">'H:i'</span>);
|
||||
</span><span id="163" class="l"><a class="l" href="#163">163: </a> <span class="php-var">$curr_hour</span>->add(<span class="php-keyword1">new</span> DateInterval(<span class="php-quote">"PT15M"</span>));
|
||||
</span><span id="164" class="l"><a class="l" href="#164">164: </a> <span class="php-var">$diff</span> = <span class="php-var">$curr_hour</span>->diff(<span class="php-var">$end_hour</span>);
|
||||
</span><span id="165" class="l"><a class="l" href="#165">165: </a> }
|
||||
</span><span id="166" class="l"><a class="l" href="#166">166: </a> }
|
||||
</span><span id="167" class="l"><a class="l" href="#167">167: </a>
|
||||
</span><span id="168" class="l"><a class="l" href="#168">168: </a> <span class="php-comment">// If the selected date is today, remove past hours. It is important </span>
|
||||
</span><span id="169" class="l"><a class="l" href="#169">169: </a> <span class="php-comment">// include the timeout before booking that is set in the backoffice</span>
|
||||
</span><span id="170" class="l"><a class="l" href="#170">170: </a> <span class="php-comment">// the system. Normally we might want the customer to book an appointment</span>
|
||||
</span><span id="171" class="l"><a class="l" href="#171">171: </a> <span class="php-comment">// that is at least half or one hour from now. The setting is stored in </span>
|
||||
</span><span id="172" class="l"><a class="l" href="#172">172: </a> <span class="php-comment">// minutes.</span>
|
||||
</span><span id="173" class="l"><a class="l" href="#173">173: </a> <span class="php-keyword1">if</span> (<span class="php-keyword2">date</span>(<span class="php-quote">'m/d/Y'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$_POST</span>[<span class="php-quote">'selected_date'</span>])) == <span class="php-keyword2">date</span>(<span class="php-quote">'m/d/Y'</span>)) {
|
||||
</span><span id="174" class="l"><a class="l" href="#174">174: </a> <span class="php-var">$book_advance_timeout</span> = <span class="php-var">$this</span>->Settings_Model->get_setting(<span class="php-quote">'book_advance_timeout'</span>);
|
||||
</span><span id="175" class="l"><a class="l" href="#175">175: </a>
|
||||
</span><span id="176" class="l"><a class="l" href="#176">176: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$available_hours</span> <span class="php-keyword1">as</span> <span class="php-var">$index</span>=><span class="php-var">$value</span>) {
|
||||
</span><span id="177" class="l"><a class="l" href="#177">177: </a> <span class="php-var">$available_hour</span> = <span class="php-keyword2">strtotime</span>(<span class="php-var">$value</span>);
|
||||
</span><span id="178" class="l"><a class="l" href="#178">178: </a> <span class="php-var">$current_hour</span> = <span class="php-keyword2">strtotime</span>(<span class="php-quote">'+'</span> . <span class="php-var">$book_advance_timeout</span>
|
||||
</span><span id="179" class="l"><a class="l" href="#179">179: </a> . <span class="php-quote">' minutes'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-quote">'now'</span>));
|
||||
</span><span id="92" class="l"><a class="l" href="#92"> 92: </a> } <span class="php-keyword1">catch</span> (NotificationException <span class="php-var">$not_exc</span>) {
|
||||
</span><span id="93" class="l"><a class="l" href="#93"> 93: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'notification_error'</span>] = <span class="php-quote">'<br><br>'</span>
|
||||
</span><span id="94" class="l"><a class="l" href="#94"> 94: </a> . <span class="php-quote">'<pre>An unexpected error occured while sending you an '</span>
|
||||
</span><span id="95" class="l"><a class="l" href="#95"> 95: </a> . <span class="php-quote">'email. Please backup the appointment details so that '</span>
|
||||
</span><span id="96" class="l"><a class="l" href="#96"> 96: </a> . <span class="php-quote">'you can restore them later. <br><br>Error: <br>'</span>
|
||||
</span><span id="97" class="l"><a class="l" href="#97"> 97: </a> . <span class="php-var">$not_exc</span>->getMessage() . <span class="php-quote">'</pre>'</span>;
|
||||
</span><span id="98" class="l"><a class="l" href="#98"> 98: </a> }
|
||||
</span><span id="99" class="l"><a class="l" href="#99"> 99: </a>
|
||||
</span><span id="100" class="l"><a class="l" href="#100">100: </a> <span class="php-comment">// Load the book appointment view.</span>
|
||||
</span><span id="101" class="l"><a class="l" href="#101">101: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'appointment_id'</span>] = <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>];
|
||||
</span><span id="102" class="l"><a class="l" href="#102">102: </a> <span class="php-var">$this</span>->load->view(<span class="php-quote">'appointments/book_success'</span>, <span class="php-var">$view_data</span>);
|
||||
</span><span id="103" class="l"><a class="l" href="#103">103: </a> }
|
||||
</span><span id="104" class="l"><a class="l" href="#104">104: </a> }
|
||||
</span><span id="105" class="l"><a class="l" href="#105">105: </a>
|
||||
</span><span id="106" class="l"><a class="l" href="#106">106: </a> <span class="php-comment">/**
|
||||
</span></span><span id="107" class="l"><a class="l" href="#107">107: </a><span class="php-comment"> * Cancel an existing appointment.
|
||||
</span></span><span id="108" class="l"><a class="l" href="#108">108: </a><span class="php-comment"> *
|
||||
</span></span><span id="109" class="l"><a class="l" href="#109">109: </a><span class="php-comment"> * This method removes an appointment from the company's schedule.
|
||||
</span></span><span id="110" class="l"><a class="l" href="#110">110: </a><span class="php-comment"> * In order for the appointment to be deleted, the hash string must
|
||||
</span></span><span id="111" class="l"><a class="l" href="#111">111: </a><span class="php-comment"> * be provided. The customer can only cancel the appointment if the
|
||||
</span></span><span id="112" class="l"><a class="l" href="#112">112: </a><span class="php-comment"> * edit time period is not over yet.
|
||||
</span></span><span id="113" class="l"><a class="l" href="#113">113: </a><span class="php-comment"> *
|
||||
</span></span><span id="114" class="l"><a class="l" href="#114">114: </a><span class="php-comment"> * @param string $appointment_hash This is used to distinguish the
|
||||
</span></span><span id="115" class="l"><a class="l" href="#115">115: </a><span class="php-comment"> * appointment record.
|
||||
</span></span><span id="116" class="l"><a class="l" href="#116">116: </a><span class="php-comment"> */</span>
|
||||
</span><span id="117" class="l"><a class="l" href="#117">117: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_cancel" href="#_cancel">cancel</a>(<span class="php-var">$appointment_hash</span>) {
|
||||
</span><span id="118" class="l"><a class="l" href="#118">118: </a> <span class="php-keyword1">try</span> {
|
||||
</span><span id="119" class="l"><a class="l" href="#119">119: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Appointments_Model'</span>);
|
||||
</span><span id="120" class="l"><a class="l" href="#120">120: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Providers_Model'</span>);
|
||||
</span><span id="121" class="l"><a class="l" href="#121">121: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Customers_Model'</span>);
|
||||
</span><span id="122" class="l"><a class="l" href="#122">122: </a>
|
||||
</span><span id="123" class="l"><a class="l" href="#123">123: </a> <span class="php-comment">// Check whether the appointment hash exists in the database.</span>
|
||||
</span><span id="124" class="l"><a class="l" href="#124">124: </a> <span class="php-var">$records</span> = <span class="php-var">$this</span>->Appointments_Model->get_batch(<span class="php-keyword1">array</span>(<span class="php-quote">'hash'</span> => <span class="php-var">$appointment_hash</span>));
|
||||
</span><span id="125" class="l"><a class="l" href="#125">125: </a> <span class="php-keyword1">if</span> (<span class="php-keyword2">count</span>(<span class="php-var">$records</span>) == <span class="php-num">0</span>) {
|
||||
</span><span id="126" class="l"><a class="l" href="#126">126: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'No record matches the provided hash.'</span>);
|
||||
</span><span id="127" class="l"><a class="l" href="#127">127: </a> }
|
||||
</span><span id="128" class="l"><a class="l" href="#128">128: </a>
|
||||
</span><span id="129" class="l"><a class="l" href="#129">129: </a> <span class="php-var">$appointment_data</span> = <span class="php-var">$records</span>[<span class="php-num">0</span>];
|
||||
</span><span id="130" class="l"><a class="l" href="#130">130: </a>
|
||||
</span><span id="131" class="l"><a class="l" href="#131">131: </a> <span class="php-comment">// Delete the appointment from the database.</span>
|
||||
</span><span id="132" class="l"><a class="l" href="#132">132: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->Appointments_Model-><span class="php-keyword2">delete</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>])) {
|
||||
</span><span id="133" class="l"><a class="l" href="#133">133: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment could not be deleted from the database.'</span>);
|
||||
</span><span id="134" class="l"><a class="l" href="#134">134: </a> }
|
||||
</span><span id="135" class="l"><a class="l" href="#135">135: </a>
|
||||
</span><span id="136" class="l"><a class="l" href="#136">136: </a> <span class="php-comment">// Send notification emails to the customer and provider.</span>
|
||||
</span><span id="137" class="l"><a class="l" href="#137">137: </a> <span class="php-var">$provider_email</span> = <span class="php-var">$this</span>->Providers_Model->get_value(<span class="php-quote">'email'</span>,
|
||||
</span><span id="138" class="l"><a class="l" href="#138">138: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_provider'</span>]);
|
||||
</span><span id="139" class="l"><a class="l" href="#139">139: </a> <span class="php-var">$customer_email</span> = <span class="php-var">$this</span>->Customers_Model->get_value(<span class="php-quote">'email'</span>,
|
||||
</span><span id="140" class="l"><a class="l" href="#140">140: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>]);
|
||||
</span><span id="141" class="l"><a class="l" href="#141">141: </a>
|
||||
</span><span id="142" class="l"><a class="l" href="#142">142: </a> <span class="php-var">$this</span>->load->library(<span class="php-quote">'Notifications'</span>);
|
||||
</span><span id="143" class="l"><a class="l" href="#143">143: </a> <span class="php-var">$this</span>->notifications->send_cancel_appointment(<span class="php-var">$appointment_data</span>, <span class="php-var">$provider_email</span>);
|
||||
</span><span id="144" class="l"><a class="l" href="#144">144: </a> <span class="php-var">$this</span>->notifications->send_cancel_appointment(<span class="php-var">$appointment_data</span>, <span class="php-var">$customer_email</span>);
|
||||
</span><span id="145" class="l"><a class="l" href="#145">145: </a>
|
||||
</span><span id="146" class="l"><a class="l" href="#146">146: </a> } <span class="php-keyword1">catch</span>(Exception <span class="php-var">$exc</span>) {
|
||||
</span><span id="147" class="l"><a class="l" href="#147">147: </a> <span class="php-comment">// Display the error message to the customer.</span>
|
||||
</span><span id="148" class="l"><a class="l" href="#148">148: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'error_message'</span>] = <span class="php-var">$exc</span>->getMessage();
|
||||
</span><span id="149" class="l"><a class="l" href="#149">149: </a> }
|
||||
</span><span id="150" class="l"><a class="l" href="#150">150: </a>
|
||||
</span><span id="151" class="l"><a class="l" href="#151">151: </a> <span class="php-var">$this</span>->load->view(<span class="php-quote">'appointments/cancel'</span>);
|
||||
</span><span id="152" class="l"><a class="l" href="#152">152: </a> }
|
||||
</span><span id="153" class="l"><a class="l" href="#153">153: </a>
|
||||
</span><span id="154" class="l"><a class="l" href="#154">154: </a> <span class="php-comment">/**
|
||||
</span></span><span id="155" class="l"><a class="l" href="#155">155: </a><span class="php-comment"> * [AJAX] Get the available appointment hours for the given date.
|
||||
</span></span><span id="156" class="l"><a class="l" href="#156">156: </a><span class="php-comment"> *
|
||||
</span></span><span id="157" class="l"><a class="l" href="#157">157: </a><span class="php-comment"> * This method answers to an AJAX request. It calculates the
|
||||
</span></span><span id="158" class="l"><a class="l" href="#158">158: </a><span class="php-comment"> * available hours for the given service, provider and date.
|
||||
</span></span><span id="159" class="l"><a class="l" href="#159">159: </a><span class="php-comment"> *
|
||||
</span></span><span id="160" class="l"><a class="l" href="#160">160: </a><span class="php-comment"> * @param array $_POST['post_data'] An associative array that
|
||||
</span></span><span id="161" class="l"><a class="l" href="#161">161: </a><span class="php-comment"> * contains the user selected 'service_id', 'provider_id',
|
||||
</span></span><span id="162" class="l"><a class="l" href="#162">162: </a><span class="php-comment"> * 'selected_date' and 'service_duration' in minutes.
|
||||
</span></span><span id="163" class="l"><a class="l" href="#163">163: </a><span class="php-comment"> * @return Returns a json object with the available hours.
|
||||
</span></span><span id="164" class="l"><a class="l" href="#164">164: </a><span class="php-comment"> */</span>
|
||||
</span><span id="165" class="l"><a class="l" href="#165">165: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_ajax_get_available_hours" href="#_ajax_get_available_hours">ajax_get_available_hours</a>() {
|
||||
</span><span id="166" class="l"><a class="l" href="#166">166: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Providers_Model'</span>);
|
||||
</span><span id="167" class="l"><a class="l" href="#167">167: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Appointments_Model'</span>);
|
||||
</span><span id="168" class="l"><a class="l" href="#168">168: </a> <span class="php-var">$this</span>->load->model(<span class="php-quote">'Settings_Model'</span>);
|
||||
</span><span id="169" class="l"><a class="l" href="#169">169: </a>
|
||||
</span><span id="170" class="l"><a class="l" href="#170">170: </a> <span class="php-comment">// Get the provider's working plan and reserved appointments. </span>
|
||||
</span><span id="171" class="l"><a class="l" href="#171">171: </a> <span class="php-var">$working_plan</span> = <span class="php-keyword2">json_decode</span>(<span class="php-var">$this</span>->Providers_Model
|
||||
</span><span id="172" class="l"><a class="l" href="#172">172: </a> ->get_setting(<span class="php-quote">'working_plan'</span>, <span class="php-var">$_POST</span>[<span class="php-quote">'provider_id'</span>]), <span class="php-keyword1">true</span>);
|
||||
</span><span id="173" class="l"><a class="l" href="#173">173: </a>
|
||||
</span><span id="174" class="l"><a class="l" href="#174">174: </a> <span class="php-var">$where_clause</span> = <span class="php-keyword1">array</span>(
|
||||
</span><span id="175" class="l"><a class="l" href="#175">175: </a> <span class="php-quote">'DATE(start_datetime)'</span> => <span class="php-keyword2">date</span>(<span class="php-quote">'Y-m-d'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$_POST</span>[<span class="php-quote">'selected_date'</span>])),
|
||||
</span><span id="176" class="l"><a class="l" href="#176">176: </a> <span class="php-quote">'id_users_provider'</span> => <span class="php-var">$_POST</span>[<span class="php-quote">'provider_id'</span>]
|
||||
</span><span id="177" class="l"><a class="l" href="#177">177: </a> );
|
||||
</span><span id="178" class="l"><a class="l" href="#178">178: </a>
|
||||
</span><span id="179" class="l"><a class="l" href="#179">179: </a> <span class="php-var">$reserved_appointments</span> = <span class="php-var">$this</span>->Appointments_Model->get_batch(<span class="php-var">$where_clause</span>);
|
||||
</span><span id="180" class="l"><a class="l" href="#180">180: </a>
|
||||
</span><span id="181" class="l"><a class="l" href="#181">181: </a> <span class="php-keyword1">if</span> (<span class="php-var">$available_hour</span> <= <span class="php-var">$current_hour</span>) {
|
||||
</span><span id="182" class="l"><a class="l" href="#182">182: </a> <span class="php-keyword1">unset</span>(<span class="php-var">$available_hours</span>[<span class="php-var">$index</span>]);
|
||||
</span><span id="183" class="l"><a class="l" href="#183">183: </a> }
|
||||
</span><span id="184" class="l"><a class="l" href="#184">184: </a> }
|
||||
</span><span id="185" class="l"><a class="l" href="#185">185: </a> }
|
||||
</span><span id="186" class="l"><a class="l" href="#186">186: </a>
|
||||
</span><span id="187" class="l"><a class="l" href="#187">187: </a> <span class="php-var">$available_hours</span> = <span class="php-keyword2">array_values</span>(<span class="php-var">$available_hours</span>);
|
||||
</span><span id="188" class="l"><a class="l" href="#188">188: </a>
|
||||
</span><span id="189" class="l"><a class="l" href="#189">189: </a> <span class="php-keyword1">echo</span> <span class="php-keyword2">json_encode</span>(<span class="php-var">$available_hours</span>);
|
||||
</span><span id="190" class="l"><a class="l" href="#190">190: </a> }
|
||||
</span><span id="191" class="l"><a class="l" href="#191">191: </a>
|
||||
</span><span id="192" class="l"><a class="l" href="#192">192: </a> <span class="php-comment">/**
|
||||
</span></span><span id="193" class="l"><a class="l" href="#193">193: </a><span class="php-comment"> * Synchronize appointment with its' providers google calendar.
|
||||
</span></span><span id="194" class="l"><a class="l" href="#194">194: </a><span class="php-comment"> *
|
||||
</span></span><span id="195" class="l"><a class="l" href="#195">195: </a><span class="php-comment"> * This method syncs the registered appointment with the
|
||||
</span></span><span id="196" class="l"><a class="l" href="#196">196: </a><span class="php-comment"> * google calendar of the user.
|
||||
</span></span><span id="197" class="l"><a class="l" href="#197">197: </a><span class="php-comment"> *
|
||||
</span></span><span id="198" class="l"><a class="l" href="#198">198: </a><span class="php-comment"> * @task This method needs to be changed. Everytime a customer
|
||||
</span></span><span id="199" class="l"><a class="l" href="#199">199: </a><span class="php-comment"> * books a new appointment the synchronization process must be
|
||||
</span></span><span id="200" class="l"><a class="l" href="#200">200: </a><span class="php-comment"> * executed.
|
||||
</span></span><span id="201" class="l"><a class="l" href="#201">201: </a><span class="php-comment"> */</span>
|
||||
</span><span id="202" class="l"><a class="l" href="#202">202: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_google_sync" href="#_google_sync">google_sync</a>(<span class="php-var">$appointment_id</span>) {
|
||||
</span><span id="203" class="l"><a class="l" href="#203">203: </a> <span class="php-keyword1">try</span> {
|
||||
</span><span id="204" class="l"><a class="l" href="#204">204: </a> <span class="php-var">$this</span>->load->library(<span class="php-quote">'Google_Sync'</span>);
|
||||
</span><span id="205" class="l"><a class="l" href="#205">205: </a> <span class="php-var">$this</span>->google_sync->sync_appointment(<span class="php-var">$appointment_id</span>);
|
||||
</span><span id="206" class="l"><a class="l" href="#206">206: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'message'</span>] = <span class="php-quote">'Your appointment has been successfully added to Google Calendar!'</span>;
|
||||
</span><span id="207" class="l"><a class="l" href="#207">207: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'image'</span>] = <span class="php-quote">'success.png'</span>;
|
||||
</span><span id="208" class="l"><a class="l" href="#208">208: </a> } <span class="php-keyword1">catch</span> (Exception <span class="php-var">$exc</span>) {
|
||||
</span><span id="209" class="l"><a class="l" href="#209">209: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'message'</span>] = <span class="php-quote">'An unexpected error occured during the sync '</span>
|
||||
</span><span id="210" class="l"><a class="l" href="#210">210: </a> . <span class="php-quote">'operation: <br/><pre>'</span> . <span class="php-var">$exc</span>->getMessage() . <span class="php-quote">'<br/>'</span>
|
||||
</span><span id="211" class="l"><a class="l" href="#211">211: </a> . <span class="php-var">$exc</span>->getTraceAsString() . <span class="php-quote">'</pre>'</span>;
|
||||
</span><span id="212" class="l"><a class="l" href="#212">212: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'image'</span>] = <span class="php-quote">'error.png'</span>;
|
||||
</span><span id="213" class="l"><a class="l" href="#213">213: </a> }
|
||||
</span><span id="214" class="l"><a class="l" href="#214">214: </a>
|
||||
</span><span id="215" class="l"><a class="l" href="#215">215: </a> <span class="php-var">$this</span>->load->view(<span class="php-quote">'appointments/google_sync'</span>, <span class="php-var">$view_data</span>);
|
||||
</span><span id="216" class="l"><a class="l" href="#216">216: </a> }
|
||||
</span><span id="217" class="l"><a class="l" href="#217">217: </a>}
|
||||
</span><span id="218" class="l"><a class="l" href="#218">218: </a>
|
||||
</span><span id="219" class="l"><a class="l" href="#219">219: </a><span class="php-comment">/* End of file appointments.php */</span>
|
||||
</span><span id="220" class="l"><a class="l" href="#220">220: </a></span><span class="php-comment">/* Location: ./application/controllers/appointments.php */</span></code></pre>
|
||||
</span><span id="181" class="l"><a class="l" href="#181">181: </a> <span class="php-keyword1">if</span> (<span class="php-var">$_POST</span>[<span class="php-quote">'manage_mode'</span>] === <span class="php-quote">'true'</span>) {
|
||||
</span><span id="182" class="l"><a class="l" href="#182">182: </a> <span class="php-comment">// Current record id shouldn't be included as reserved time,</span>
|
||||
</span><span id="183" class="l"><a class="l" href="#183">183: </a> <span class="php-comment">// whent the manage mode is true.</span>
|
||||
</span><span id="184" class="l"><a class="l" href="#184">184: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$reserved_appointments</span> <span class="php-keyword1">as</span> <span class="php-var">$index</span>=><span class="php-var">$appointment</span>) {
|
||||
</span><span id="185" class="l"><a class="l" href="#185">185: </a> <span class="php-keyword1">if</span> (<span class="php-var">$appointment</span>[<span class="php-quote">'id'</span>] == <span class="php-var">$_POST</span>[<span class="php-quote">'appointment_id'</span>]) {
|
||||
</span><span id="186" class="l"><a class="l" href="#186">186: </a> <span class="php-keyword1">unset</span>(<span class="php-var">$reserved_appointments</span>[<span class="php-var">$index</span>]);
|
||||
</span><span id="187" class="l"><a class="l" href="#187">187: </a> }
|
||||
</span><span id="188" class="l"><a class="l" href="#188">188: </a> }
|
||||
</span><span id="189" class="l"><a class="l" href="#189">189: </a> }
|
||||
</span><span id="190" class="l"><a class="l" href="#190">190: </a>
|
||||
</span><span id="191" class="l"><a class="l" href="#191">191: </a> <span class="php-comment">// Find the empty spaces on the plan. The first split between </span>
|
||||
</span><span id="192" class="l"><a class="l" href="#192">192: </a> <span class="php-comment">// the plan is due to a break (if exist). After that every reserved </span>
|
||||
</span><span id="193" class="l"><a class="l" href="#193">193: </a> <span class="php-comment">// appointment is considered to be a taken space in the plan.</span>
|
||||
</span><span id="194" class="l"><a class="l" href="#194">194: </a> <span class="php-var">$sel_date_working_plan</span> = <span class="php-var">$working_plan</span>[<span class="php-keyword2">strtolower</span>(<span class="php-keyword2">date</span>(<span class="php-quote">'l'</span>,
|
||||
</span><span id="195" class="l"><a class="l" href="#195">195: </a> <span class="php-keyword2">strtotime</span>(<span class="php-var">$_POST</span>[<span class="php-quote">'selected_date'</span>])))];
|
||||
</span><span id="196" class="l"><a class="l" href="#196">196: </a> <span class="php-var">$empty_spaces_with_breaks</span> = <span class="php-keyword1">array</span>();
|
||||
</span><span id="197" class="l"><a class="l" href="#197">197: </a>
|
||||
</span><span id="198" class="l"><a class="l" href="#198">198: </a> <span class="php-keyword1">if</span> (<span class="php-keyword1">isset</span>(<span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'breaks'</span>])) {
|
||||
</span><span id="199" class="l"><a class="l" href="#199">199: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'breaks'</span>] <span class="php-keyword1">as</span> <span class="php-var">$index</span>=><span class="php-var">$break</span>) {
|
||||
</span><span id="200" class="l"><a class="l" href="#200">200: </a> <span class="php-comment">// Split the working plan to available time periods that do not</span>
|
||||
</span><span id="201" class="l"><a class="l" href="#201">201: </a> <span class="php-comment">// contain the breaks in them.</span>
|
||||
</span><span id="202" class="l"><a class="l" href="#202">202: </a> <span class="php-var">$last_break_index</span> = <span class="php-var">$index</span> - <span class="php-num">1</span>;
|
||||
</span><span id="203" class="l"><a class="l" href="#203">203: </a>
|
||||
</span><span id="204" class="l"><a class="l" href="#204">204: </a> <span class="php-keyword1">if</span> (<span class="php-keyword2">count</span>(<span class="php-var">$empty_spaces_with_breaks</span>) === <span class="php-num">0</span>) {
|
||||
</span><span id="205" class="l"><a class="l" href="#205">205: </a> <span class="php-var">$start_hour</span> = <span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'start'</span>];
|
||||
</span><span id="206" class="l"><a class="l" href="#206">206: </a> <span class="php-var">$end_hour</span> = <span class="php-var">$break</span>[<span class="php-quote">'start'</span>];
|
||||
</span><span id="207" class="l"><a class="l" href="#207">207: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="208" class="l"><a class="l" href="#208">208: </a> <span class="php-var">$start_hour</span> = <span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'breaks'</span>][<span class="php-var">$last_break_index</span>][<span class="php-quote">'end'</span>];
|
||||
</span><span id="209" class="l"><a class="l" href="#209">209: </a> <span class="php-var">$end_hour</span> = <span class="php-var">$break</span>[<span class="php-quote">'start'</span>];
|
||||
</span><span id="210" class="l"><a class="l" href="#210">210: </a> }
|
||||
</span><span id="211" class="l"><a class="l" href="#211">211: </a>
|
||||
</span><span id="212" class="l"><a class="l" href="#212">212: </a> <span class="php-var">$empty_spaces_with_breaks</span>[] = <span class="php-keyword1">array</span>(
|
||||
</span><span id="213" class="l"><a class="l" href="#213">213: </a> <span class="php-quote">'start'</span> => <span class="php-var">$start_hour</span>,
|
||||
</span><span id="214" class="l"><a class="l" href="#214">214: </a> <span class="php-quote">'end'</span> => <span class="php-var">$end_hour</span>
|
||||
</span><span id="215" class="l"><a class="l" href="#215">215: </a> );
|
||||
</span><span id="216" class="l"><a class="l" href="#216">216: </a> }
|
||||
</span><span id="217" class="l"><a class="l" href="#217">217: </a>
|
||||
</span><span id="218" class="l"><a class="l" href="#218">218: </a> <span class="php-comment">// Add the space from the last break to the end of the day.</span>
|
||||
</span><span id="219" class="l"><a class="l" href="#219">219: </a> <span class="php-var">$empty_spaces_with_breaks</span>[] = <span class="php-keyword1">array</span>(
|
||||
</span><span id="220" class="l"><a class="l" href="#220">220: </a> <span class="php-quote">'start'</span> => <span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'breaks'</span>][<span class="php-var">$index</span>][<span class="php-quote">'end'</span>],
|
||||
</span><span id="221" class="l"><a class="l" href="#221">221: </a> <span class="php-quote">'end'</span> => <span class="php-var">$sel_date_working_plan</span>[<span class="php-quote">'end'</span>]
|
||||
</span><span id="222" class="l"><a class="l" href="#222">222: </a> );
|
||||
</span><span id="223" class="l"><a class="l" href="#223">223: </a> }
|
||||
</span><span id="224" class="l"><a class="l" href="#224">224: </a> <span class="php-comment">// PROBLEM</span>
|
||||
</span><span id="225" class="l"><a class="l" href="#225">225: </a> <span class="php-comment">// Break the empty spaces with the reserved appointments.</span>
|
||||
</span><span id="226" class="l"><a class="l" href="#226">226: </a> <span class="php-var">$empty_spaces_with_appointments</span> = <span class="php-keyword1">array</span>();
|
||||
</span><span id="227" class="l"><a class="l" href="#227">227: </a> <span class="php-keyword1">if</span> (<span class="php-keyword2">count</span>(<span class="php-var">$reserved_appointments</span>) > <span class="php-num">0</span>) {
|
||||
</span><span id="228" class="l"><a class="l" href="#228">228: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$empty_spaces_with_breaks</span> <span class="php-keyword1">as</span> <span class="php-var">$space</span>) {
|
||||
</span><span id="229" class="l"><a class="l" href="#229">229: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$reserved_appointments</span> <span class="php-keyword1">as</span> <span class="php-var">$index</span>=><span class="php-var">$appointment</span>) {
|
||||
</span><span id="230" class="l"><a class="l" href="#230">230: </a> <span class="php-var">$appointment_start</span> = <span class="php-keyword2">date</span>(<span class="php-quote">'H:i'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$appointment</span>[<span class="php-quote">'start_datetime'</span>]));
|
||||
</span><span id="231" class="l"><a class="l" href="#231">231: </a> <span class="php-var">$appointment_end</span> = <span class="php-keyword2">date</span>(<span class="php-quote">'H:i'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$appointment</span>[<span class="php-quote">'end_datetime'</span>]));
|
||||
</span><span id="232" class="l"><a class="l" href="#232">232: </a> <span class="php-var">$space_start</span> = <span class="php-keyword2">date</span>(<span class="php-quote">'H:i'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$space</span>[<span class="php-quote">'start'</span>]));
|
||||
</span><span id="233" class="l"><a class="l" href="#233">233: </a> <span class="php-var">$space_end</span> = <span class="php-keyword2">date</span>(<span class="php-quote">'H:i'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$space</span>[<span class="php-quote">'end'</span>]));
|
||||
</span><span id="234" class="l"><a class="l" href="#234">234: </a>
|
||||
</span><span id="235" class="l"><a class="l" href="#235">235: </a> <span class="php-keyword1">if</span> (<span class="php-var">$space_start</span> < <span class="php-var">$appointment_start</span> && <span class="php-var">$space_end</span> > <span class="php-var">$appointment_end</span>) {
|
||||
</span><span id="236" class="l"><a class="l" href="#236">236: </a> <span class="php-comment">// Current appointment is within the current empty space. So </span>
|
||||
</span><span id="237" class="l"><a class="l" href="#237">237: </a> <span class="php-comment">// we need to break the empty space into two other spaces that </span>
|
||||
</span><span id="238" class="l"><a class="l" href="#238">238: </a> <span class="php-comment">// don't include the appointment.</span>
|
||||
</span><span id="239" class="l"><a class="l" href="#239">239: </a> <span class="php-var">$empty_spaces_with_appointments</span>[] = <span class="php-keyword1">array</span>(
|
||||
</span><span id="240" class="l"><a class="l" href="#240">240: </a> <span class="php-quote">'start'</span> => <span class="php-var">$space_start</span>,
|
||||
</span><span id="241" class="l"><a class="l" href="#241">241: </a> <span class="php-quote">'end'</span> => <span class="php-var">$appointment_start</span>
|
||||
</span><span id="242" class="l"><a class="l" href="#242">242: </a> );
|
||||
</span><span id="243" class="l"><a class="l" href="#243">243: </a> <span class="php-var">$empty_spaces_with_appointments</span>[] = <span class="php-keyword1">array</span>(
|
||||
</span><span id="244" class="l"><a class="l" href="#244">244: </a> <span class="php-quote">'start'</span> => <span class="php-var">$appointment_end</span>,
|
||||
</span><span id="245" class="l"><a class="l" href="#245">245: </a> <span class="php-quote">'end'</span> => <span class="php-var">$space_end</span>
|
||||
</span><span id="246" class="l"><a class="l" href="#246">246: </a> );
|
||||
</span><span id="247" class="l"><a class="l" href="#247">247: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="248" class="l"><a class="l" href="#248">248: </a> <span class="php-comment">// Check if there are any other appointments between this </span>
|
||||
</span><span id="249" class="l"><a class="l" href="#249">249: </a> <span class="php-comment">// time space. If not, it is going to be added as it is.</span>
|
||||
</span><span id="250" class="l"><a class="l" href="#250">250: </a> <span class="php-var">$found</span> = <span class="php-keyword1">FALSE</span>;
|
||||
</span><span id="251" class="l"><a class="l" href="#251">251: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$reserved_appointments</span> <span class="php-keyword1">as</span> <span class="php-var">$appt</span>) {
|
||||
</span><span id="252" class="l"><a class="l" href="#252">252: </a> <span class="php-var">$appt_start</span> = <span class="php-keyword2">date</span>(<span class="php-quote">'H:i'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$appt</span>[<span class="php-quote">'start_datetime'</span>]));
|
||||
</span><span id="253" class="l"><a class="l" href="#253">253: </a> <span class="php-var">$appt_end</span> = <span class="php-keyword2">date</span>(<span class="php-quote">'H:i'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$appt</span>[<span class="php-quote">'end_datetime'</span>]));
|
||||
</span><span id="254" class="l"><a class="l" href="#254">254: </a> <span class="php-keyword1">if</span> (<span class="php-var">$space_start</span> < <span class="php-var">$appt_start</span> && <span class="php-var">$space_end</span> > <span class="php-var">$appt_end</span>) {
|
||||
</span><span id="255" class="l"><a class="l" href="#255">255: </a> <span class="php-var">$found</span> = <span class="php-keyword1">TRUE</span>;
|
||||
</span><span id="256" class="l"><a class="l" href="#256">256: </a> }
|
||||
</span><span id="257" class="l"><a class="l" href="#257">257: </a> }
|
||||
</span><span id="258" class="l"><a class="l" href="#258">258: </a>
|
||||
</span><span id="259" class="l"><a class="l" href="#259">259: </a> <span class="php-comment">// It is also necessary to check that this time period doesn't</span>
|
||||
</span><span id="260" class="l"><a class="l" href="#260">260: </a> <span class="php-comment">// already exist in the "$empty_spaces_with_appointments" array.</span>
|
||||
</span><span id="261" class="l"><a class="l" href="#261">261: </a> <span class="php-var">$empty_space</span> = <span class="php-keyword1">array</span>(
|
||||
</span><span id="262" class="l"><a class="l" href="#262">262: </a> <span class="php-quote">'start'</span> => <span class="php-var">$space_start</span>,
|
||||
</span><span id="263" class="l"><a class="l" href="#263">263: </a> <span class="php-quote">'end'</span> => <span class="php-var">$space_end</span>
|
||||
</span><span id="264" class="l"><a class="l" href="#264">264: </a> );
|
||||
</span><span id="265" class="l"><a class="l" href="#265">265: </a> <span class="php-var">$already_exist</span> = <span class="php-keyword2">in_array</span>(<span class="php-var">$empty_space</span>, <span class="php-var">$empty_spaces_with_appointments</span>);
|
||||
</span><span id="266" class="l"><a class="l" href="#266">266: </a> <span class="php-keyword1">if</span> (<span class="php-var">$found</span> === <span class="php-keyword1">FALSE</span> && <span class="php-var">$already_exist</span> === <span class="php-keyword1">FALSE</span>) {
|
||||
</span><span id="267" class="l"><a class="l" href="#267">267: </a> <span class="php-var">$empty_spaces_with_appointments</span>[] = <span class="php-var">$empty_space</span>;
|
||||
</span><span id="268" class="l"><a class="l" href="#268">268: </a> }
|
||||
</span><span id="269" class="l"><a class="l" href="#269">269: </a> }
|
||||
</span><span id="270" class="l"><a class="l" href="#270">270: </a> }
|
||||
</span><span id="271" class="l"><a class="l" href="#271">271: </a> }
|
||||
</span><span id="272" class="l"><a class="l" href="#272">272: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="273" class="l"><a class="l" href="#273">273: </a> <span class="php-var">$empty_spaces_with_appointments</span> = <span class="php-var">$empty_spaces_with_breaks</span>;
|
||||
</span><span id="274" class="l"><a class="l" href="#274">274: </a> }
|
||||
</span><span id="275" class="l"><a class="l" href="#275">275: </a>
|
||||
</span><span id="276" class="l"><a class="l" href="#276">276: </a> <span class="php-var">$empty_spaces</span> = <span class="php-var">$empty_spaces_with_appointments</span>;
|
||||
</span><span id="277" class="l"><a class="l" href="#277">277: </a>
|
||||
</span><span id="278" class="l"><a class="l" href="#278">278: </a> <span class="php-comment">// Calculate the available appointment hours for the given date. </span>
|
||||
</span><span id="279" class="l"><a class="l" href="#279">279: </a> <span class="php-comment">// The empty spaces are broken down to 15 min and if the service</span>
|
||||
</span><span id="280" class="l"><a class="l" href="#280">280: </a> <span class="php-comment">// fit in each quarter then a new available hour is added to the</span>
|
||||
</span><span id="281" class="l"><a class="l" href="#281">281: </a> <span class="php-comment">// $available hours array.</span>
|
||||
</span><span id="282" class="l"><a class="l" href="#282">282: </a> <span class="php-var">$available_hours</span> = <span class="php-keyword1">array</span>();
|
||||
</span><span id="283" class="l"><a class="l" href="#283">283: </a>
|
||||
</span><span id="284" class="l"><a class="l" href="#284">284: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$empty_spaces</span> <span class="php-keyword1">as</span> <span class="php-var">$space</span>) {
|
||||
</span><span id="285" class="l"><a class="l" href="#285">285: </a> <span class="php-var">$start_hour</span> = <span class="php-keyword1">new</span> DateTime(<span class="php-var">$_POST</span>[<span class="php-quote">'selected_date'</span>] . <span class="php-quote">' '</span> . <span class="php-var">$space</span>[<span class="php-quote">'start'</span>]);
|
||||
</span><span id="286" class="l"><a class="l" href="#286">286: </a> <span class="php-var">$end_hour</span> = <span class="php-keyword1">new</span> DateTime(<span class="php-var">$_POST</span>[<span class="php-quote">'selected_date'</span>] . <span class="php-quote">' '</span> . <span class="php-var">$space</span>[<span class="php-quote">'end'</span>]);
|
||||
</span><span id="287" class="l"><a class="l" href="#287">287: </a>
|
||||
</span><span id="288" class="l"><a class="l" href="#288">288: </a> <span class="php-var">$minutes</span> = <span class="php-var">$start_hour</span>->format(<span class="php-quote">'i'</span>);
|
||||
</span><span id="289" class="l"><a class="l" href="#289">289: </a>
|
||||
</span><span id="290" class="l"><a class="l" href="#290">290: </a> <span class="php-keyword1">if</span> (<span class="php-var">$minutes</span> % <span class="php-num">15</span> != <span class="php-num">0</span>) {
|
||||
</span><span id="291" class="l"><a class="l" href="#291">291: </a> <span class="php-comment">// Change the start hour of the current space in order to be</span>
|
||||
</span><span id="292" class="l"><a class="l" href="#292">292: </a> <span class="php-comment">// on of the following: 00, 15, 30, 45.</span>
|
||||
</span><span id="293" class="l"><a class="l" href="#293">293: </a> <span class="php-keyword1">if</span> (<span class="php-var">$minutes</span> < <span class="php-num">15</span>) {
|
||||
</span><span id="294" class="l"><a class="l" href="#294">294: </a> <span class="php-var">$start_hour</span>->setTime(<span class="php-var">$start_hour</span>->format(<span class="php-quote">'H'</span>), <span class="php-num">15</span>);
|
||||
</span><span id="295" class="l"><a class="l" href="#295">295: </a> } <span class="php-keyword1">else</span> <span class="php-keyword1">if</span> (<span class="php-var">$minutes</span> < <span class="php-num">30</span>) {
|
||||
</span><span id="296" class="l"><a class="l" href="#296">296: </a> <span class="php-var">$start_hour</span>->setTime(<span class="php-var">$start_hour</span>->format(<span class="php-quote">'H'</span>), <span class="php-num">30</span>);
|
||||
</span><span id="297" class="l"><a class="l" href="#297">297: </a> } <span class="php-keyword1">else</span> <span class="php-keyword1">if</span> (<span class="php-var">$minutes</span> < <span class="php-num">45</span>) {
|
||||
</span><span id="298" class="l"><a class="l" href="#298">298: </a> <span class="php-var">$start_hour</span>->setTime(<span class="php-var">$start_hour</span>->format(<span class="php-quote">'H'</span>), <span class="php-num">45</span>);
|
||||
</span><span id="299" class="l"><a class="l" href="#299">299: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="300" class="l"><a class="l" href="#300">300: </a> <span class="php-var">$start_hour</span>->setTime(<span class="php-var">$start_hour</span>->format(<span class="php-quote">'H'</span>) + <span class="php-num">1</span>, <span class="php-num">00</span>);
|
||||
</span><span id="301" class="l"><a class="l" href="#301">301: </a> }
|
||||
</span><span id="302" class="l"><a class="l" href="#302">302: </a> }
|
||||
</span><span id="303" class="l"><a class="l" href="#303">303: </a>
|
||||
</span><span id="304" class="l"><a class="l" href="#304">304: </a> <span class="php-var">$curr_hour</span> = <span class="php-var">$start_hour</span>;
|
||||
</span><span id="305" class="l"><a class="l" href="#305">305: </a>
|
||||
</span><span id="306" class="l"><a class="l" href="#306">306: </a> <span class="php-var">$diff</span> = <span class="php-var">$curr_hour</span>->diff(<span class="php-var">$end_hour</span>);
|
||||
</span><span id="307" class="l"><a class="l" href="#307">307: </a> <span class="php-keyword1">while</span>((<span class="php-var">$diff</span>->h * <span class="php-num">60</span> + <span class="php-var">$diff</span>->i) > <span class="php-keyword2">intval</span>(<span class="php-var">$_POST</span>[<span class="php-quote">'service_duration'</span>])) {
|
||||
</span><span id="308" class="l"><a class="l" href="#308">308: </a> <span class="php-var">$available_hours</span>[] = <span class="php-var">$curr_hour</span>->format(<span class="php-quote">'H:i'</span>);
|
||||
</span><span id="309" class="l"><a class="l" href="#309">309: </a> <span class="php-var">$curr_hour</span>->add(<span class="php-keyword1">new</span> DateInterval(<span class="php-quote">"PT15M"</span>));
|
||||
</span><span id="310" class="l"><a class="l" href="#310">310: </a> <span class="php-var">$diff</span> = <span class="php-var">$curr_hour</span>->diff(<span class="php-var">$end_hour</span>);
|
||||
</span><span id="311" class="l"><a class="l" href="#311">311: </a> }
|
||||
</span><span id="312" class="l"><a class="l" href="#312">312: </a> }
|
||||
</span><span id="313" class="l"><a class="l" href="#313">313: </a>
|
||||
</span><span id="314" class="l"><a class="l" href="#314">314: </a> <span class="php-comment">// If the selected date is today, remove past hours. It is important </span>
|
||||
</span><span id="315" class="l"><a class="l" href="#315">315: </a> <span class="php-comment">// include the timeout before booking that is set in the backoffice</span>
|
||||
</span><span id="316" class="l"><a class="l" href="#316">316: </a> <span class="php-comment">// the system. Normally we might want the customer to book an appointment</span>
|
||||
</span><span id="317" class="l"><a class="l" href="#317">317: </a> <span class="php-comment">// that is at least half or one hour from now. The setting is stored in </span>
|
||||
</span><span id="318" class="l"><a class="l" href="#318">318: </a> <span class="php-comment">// minutes.</span>
|
||||
</span><span id="319" class="l"><a class="l" href="#319">319: </a> <span class="php-keyword1">if</span> (<span class="php-keyword2">date</span>(<span class="php-quote">'m/d/Y'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-var">$_POST</span>[<span class="php-quote">'selected_date'</span>])) == <span class="php-keyword2">date</span>(<span class="php-quote">'m/d/Y'</span>)) {
|
||||
</span><span id="320" class="l"><a class="l" href="#320">320: </a> <span class="php-keyword1">if</span> (<span class="php-var">$_POST</span>[<span class="php-quote">'manage_mode'</span>] === <span class="php-quote">'true'</span>) {
|
||||
</span><span id="321" class="l"><a class="l" href="#321">321: </a> <span class="php-var">$book_advance_timeout</span> = <span class="php-num">0</span>;
|
||||
</span><span id="322" class="l"><a class="l" href="#322">322: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="323" class="l"><a class="l" href="#323">323: </a> <span class="php-var">$book_advance_timeout</span> = <span class="php-var">$this</span>->Settings_Model
|
||||
</span><span id="324" class="l"><a class="l" href="#324">324: </a> ->get_setting(<span class="php-quote">'book_advance_timeout'</span>);
|
||||
</span><span id="325" class="l"><a class="l" href="#325">325: </a> }
|
||||
</span><span id="326" class="l"><a class="l" href="#326">326: </a>
|
||||
</span><span id="327" class="l"><a class="l" href="#327">327: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$available_hours</span> <span class="php-keyword1">as</span> <span class="php-var">$index</span>=><span class="php-var">$value</span>) {
|
||||
</span><span id="328" class="l"><a class="l" href="#328">328: </a> <span class="php-var">$available_hour</span> = <span class="php-keyword2">strtotime</span>(<span class="php-var">$value</span>);
|
||||
</span><span id="329" class="l"><a class="l" href="#329">329: </a> <span class="php-var">$current_hour</span> = <span class="php-keyword2">strtotime</span>(<span class="php-quote">'+'</span> . <span class="php-var">$book_advance_timeout</span>
|
||||
</span><span id="330" class="l"><a class="l" href="#330">330: </a> . <span class="php-quote">' minutes'</span>, <span class="php-keyword2">strtotime</span>(<span class="php-quote">'now'</span>));
|
||||
</span><span id="331" class="l"><a class="l" href="#331">331: </a>
|
||||
</span><span id="332" class="l"><a class="l" href="#332">332: </a> <span class="php-keyword1">if</span> (<span class="php-var">$available_hour</span> <= <span class="php-var">$current_hour</span>) {
|
||||
</span><span id="333" class="l"><a class="l" href="#333">333: </a> <span class="php-keyword1">unset</span>(<span class="php-var">$available_hours</span>[<span class="php-var">$index</span>]);
|
||||
</span><span id="334" class="l"><a class="l" href="#334">334: </a> }
|
||||
</span><span id="335" class="l"><a class="l" href="#335">335: </a> }
|
||||
</span><span id="336" class="l"><a class="l" href="#336">336: </a> }
|
||||
</span><span id="337" class="l"><a class="l" href="#337">337: </a>
|
||||
</span><span id="338" class="l"><a class="l" href="#338">338: </a> <span class="php-var">$available_hours</span> = <span class="php-keyword2">array_values</span>(<span class="php-var">$available_hours</span>);
|
||||
</span><span id="339" class="l"><a class="l" href="#339">339: </a>
|
||||
</span><span id="340" class="l"><a class="l" href="#340">340: </a> <span class="php-keyword1">echo</span> <span class="php-keyword2">json_encode</span>(<span class="php-var">$available_hours</span>);
|
||||
</span><span id="341" class="l"><a class="l" href="#341">341: </a> }
|
||||
</span><span id="342" class="l"><a class="l" href="#342">342: </a>
|
||||
</span><span id="343" class="l"><a class="l" href="#343">343: </a> <span class="php-comment">/**
|
||||
</span></span><span id="344" class="l"><a class="l" href="#344">344: </a><span class="php-comment"> * Synchronize appointment with its' providers google calendar.
|
||||
</span></span><span id="345" class="l"><a class="l" href="#345">345: </a><span class="php-comment"> *
|
||||
</span></span><span id="346" class="l"><a class="l" href="#346">346: </a><span class="php-comment"> * This method syncs the registered appointment with the
|
||||
</span></span><span id="347" class="l"><a class="l" href="#347">347: </a><span class="php-comment"> * google calendar of the user.
|
||||
</span></span><span id="348" class="l"><a class="l" href="#348">348: </a><span class="php-comment"> *
|
||||
</span></span><span id="349" class="l"><a class="l" href="#349">349: </a><span class="php-comment"> * @task This method needs to be changed. Everytime a customer
|
||||
</span></span><span id="350" class="l"><a class="l" href="#350">350: </a><span class="php-comment"> * books a new appointment the synchronization process must be
|
||||
</span></span><span id="351" class="l"><a class="l" href="#351">351: </a><span class="php-comment"> * executed.
|
||||
</span></span><span id="352" class="l"><a class="l" href="#352">352: </a><span class="php-comment"> */</span>
|
||||
</span><span id="353" class="l"><a class="l" href="#353">353: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_google_sync" href="#_google_sync">google_sync</a>(<span class="php-var">$appointment_id</span>) {
|
||||
</span><span id="354" class="l"><a class="l" href="#354">354: </a> <span class="php-keyword1">try</span> {
|
||||
</span><span id="355" class="l"><a class="l" href="#355">355: </a> <span class="php-var">$this</span>->load->library(<span class="php-quote">'Google_Sync'</span>);
|
||||
</span><span id="356" class="l"><a class="l" href="#356">356: </a> <span class="php-var">$this</span>->google_sync->sync_appointment(<span class="php-var">$appointment_id</span>);
|
||||
</span><span id="357" class="l"><a class="l" href="#357">357: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'message'</span>] = <span class="php-quote">'Your appointment has been successfully added'</span>
|
||||
</span><span id="358" class="l"><a class="l" href="#358">358: </a> . <span class="php-quote">'to Google Calendar!'</span>;
|
||||
</span><span id="359" class="l"><a class="l" href="#359">359: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'image'</span>] = <span class="php-quote">'success.png'</span>;
|
||||
</span><span id="360" class="l"><a class="l" href="#360">360: </a> } <span class="php-keyword1">catch</span> (Exception <span class="php-var">$exc</span>) {
|
||||
</span><span id="361" class="l"><a class="l" href="#361">361: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'message'</span>] = <span class="php-quote">'An unexpected error occured during the sync '</span>
|
||||
</span><span id="362" class="l"><a class="l" href="#362">362: </a> . <span class="php-quote">'operation: <br/><pre>'</span> . <span class="php-var">$exc</span>->getMessage() . <span class="php-quote">'<br/>'</span>
|
||||
</span><span id="363" class="l"><a class="l" href="#363">363: </a> . <span class="php-var">$exc</span>->getTraceAsString() . <span class="php-quote">'</pre>'</span>;
|
||||
</span><span id="364" class="l"><a class="l" href="#364">364: </a> <span class="php-var">$view_data</span>[<span class="php-quote">'image'</span>] = <span class="php-quote">'error.png'</span>;
|
||||
</span><span id="365" class="l"><a class="l" href="#365">365: </a> }
|
||||
</span><span id="366" class="l"><a class="l" href="#366">366: </a>
|
||||
</span><span id="367" class="l"><a class="l" href="#367">367: </a> <span class="php-var">$this</span>->load->view(<span class="php-quote">'appointments/google_sync'</span>, <span class="php-var">$view_data</span>);
|
||||
</span><span id="368" class="l"><a class="l" href="#368">368: </a> }
|
||||
</span><span id="369" class="l"><a class="l" href="#369">369: </a>}
|
||||
</span><span id="370" class="l"><a class="l" href="#370">370: </a>
|
||||
</span><span id="371" class="l"><a class="l" href="#371">371: </a><span class="php-comment">/* End of file appointments.php */</span>
|
||||
</span><span id="372" class="l"><a class="l" href="#372">372: </a></span><span class="php-comment">/* Location: ./application/controllers/appointments.php */</span></code></pre>
|
||||
|
||||
<div id="footer">
|
||||
API documentation generated by <a href="http://apigen.org">ApiGen 2.8.0</a>
|
||||
|
|
|
@ -92,282 +92,324 @@
|
|||
</span></span><span id="15" class="l"><a class="l" href="#15"> 15: </a><span class="php-comment"> * appointment doesn't exists it is going to be inserted, otherwise
|
||||
</span></span><span id="16" class="l"><a class="l" href="#16"> 16: </a><span class="php-comment"> * the record is going to be updated.
|
||||
</span></span><span id="17" class="l"><a class="l" href="#17"> 17: </a><span class="php-comment"> *
|
||||
</span></span><span id="18" class="l"><a class="l" href="#18"> 18: </a><span class="php-comment"> * @expectedException ValidationException
|
||||
</span></span><span id="19" class="l"><a class="l" href="#19"> 19: </a><span class="php-comment"> * @expectedException DatabaseException
|
||||
</span></span><span id="20" class="l"><a class="l" href="#20"> 20: </a><span class="php-comment"> *
|
||||
</span></span><span id="21" class="l"><a class="l" href="#21"> 21: </a><span class="php-comment"> * @param array $appointment_data Associative array with the appointmet's
|
||||
</span></span><span id="22" class="l"><a class="l" href="#22"> 22: </a><span class="php-comment"> * data. Each key has the same name with the database fields.
|
||||
</span></span><span id="23" class="l"><a class="l" href="#23"> 23: </a><span class="php-comment"> * @return int Returns the appointments id.
|
||||
</span></span><span id="24" class="l"><a class="l" href="#24"> 24: </a><span class="php-comment"> */</span>
|
||||
</span><span id="25" class="l"><a class="l" href="#25"> 25: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_add" href="#_add">add</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="26" class="l"><a class="l" href="#26"> 26: </a> <span class="php-comment">// Validate the appointment data before doing anything.</span>
|
||||
</span><span id="27" class="l"><a class="l" href="#27"> 27: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->validate_data(<span class="php-var">$appointment_data</span>)) {
|
||||
</span><span id="28" class="l"><a class="l" href="#28"> 28: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> ValidationException(<span class="php-quote">'Appointment data are not valid'</span>);
|
||||
</span><span id="29" class="l"><a class="l" href="#29"> 29: </a> }
|
||||
</span><span id="30" class="l"><a class="l" href="#30"> 30: </a>
|
||||
</span><span id="31" class="l"><a class="l" href="#31"> 31: </a> <span class="php-comment">// Insert or update the appointment data.</span>
|
||||
</span><span id="32" class="l"><a class="l" href="#32"> 32: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->exists(<span class="php-var">$appointment_data</span>)) {
|
||||
</span><span id="33" class="l"><a class="l" href="#33"> 33: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>] = <span class="php-var">$this</span>->insert(<span class="php-var">$appointment_data</span>);
|
||||
</span><span id="34" class="l"><a class="l" href="#34"> 34: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="35" class="l"><a class="l" href="#35"> 35: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>] = <span class="php-var">$this</span>->update(<span class="php-var">$appointment_data</span>);
|
||||
</span><span id="36" class="l"><a class="l" href="#36"> 36: </a> }
|
||||
</span><span id="37" class="l"><a class="l" href="#37"> 37: </a>
|
||||
</span><span id="38" class="l"><a class="l" href="#38"> 38: </a> <span class="php-keyword1">return</span> <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>];
|
||||
</span><span id="39" class="l"><a class="l" href="#39"> 39: </a> }
|
||||
</span><span id="40" class="l"><a class="l" href="#40"> 40: </a>
|
||||
</span><span id="41" class="l"><a class="l" href="#41"> 41: </a> <span class="php-comment">/**
|
||||
</span></span><span id="42" class="l"><a class="l" href="#42"> 42: </a><span class="php-comment"> * Check if a particular appointment record already exists.
|
||||
</span></span><span id="43" class="l"><a class="l" href="#43"> 43: </a><span class="php-comment"> *
|
||||
</span></span><span id="44" class="l"><a class="l" href="#44"> 44: </a><span class="php-comment"> * This method checks wether the given appointment already exists
|
||||
</span></span><span id="45" class="l"><a class="l" href="#45"> 45: </a><span class="php-comment"> * in the database. It doesn't search with the id, but by using the
|
||||
</span></span><span id="46" class="l"><a class="l" href="#46"> 46: </a><span class="php-comment"> * following fields: "start_datetime", "end_datetime", "id_users_provider",
|
||||
</span></span><span id="47" class="l"><a class="l" href="#47"> 47: </a><span class="php-comment"> * "id_users_customer", "id_services".
|
||||
</span></span><span id="48" class="l"><a class="l" href="#48"> 48: </a><span class="php-comment"> *
|
||||
</span></span><span id="49" class="l"><a class="l" href="#49"> 49: </a><span class="php-comment"> * @expectedException InvalidArgumentException When the $appointment_data
|
||||
</span></span><span id="50" class="l"><a class="l" href="#50"> 50: </a><span class="php-comment"> * array does not contain the necessary field.
|
||||
</span></span><span id="51" class="l"><a class="l" href="#51"> 51: </a><span class="php-comment"> *
|
||||
</span></span><span id="52" class="l"><a class="l" href="#52"> 52: </a><span class="php-comment"> * @param array $appointment_data Associative array with the appointment's
|
||||
</span></span><span id="53" class="l"><a class="l" href="#53"> 53: </a><span class="php-comment"> * data. Each key has the same name with the database fields.
|
||||
</span></span><span id="54" class="l"><a class="l" href="#54"> 54: </a><span class="php-comment"> * @return bool Returns wether the record exists or not.
|
||||
</span></span><span id="55" class="l"><a class="l" href="#55"> 55: </a><span class="php-comment"> */</span>
|
||||
</span><span id="56" class="l"><a class="l" href="#56"> 56: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_exists" href="#_exists">exists</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="57" class="l"><a class="l" href="#57"> 57: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'start_datetime'</span>])
|
||||
</span><span id="58" class="l"><a class="l" href="#58"> 58: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'end_datetime'</span>])
|
||||
</span><span id="59" class="l"><a class="l" href="#59"> 59: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_provider'</span>])
|
||||
</span><span id="60" class="l"><a class="l" href="#60"> 60: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>])
|
||||
</span><span id="61" class="l"><a class="l" href="#61"> 61: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id_services'</span>])) {
|
||||
</span><span id="62" class="l"><a class="l" href="#62"> 62: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Not all appointment field values are provided : '</span> . <span class="php-keyword2">print_r</span>(<span class="php-var">$appointment_data</span>, <span class="php-keyword1">TRUE</span>));
|
||||
</span><span id="63" class="l"><a class="l" href="#63"> 63: </a> }
|
||||
</span><span id="64" class="l"><a class="l" href="#64"> 64: </a>
|
||||
</span><span id="65" class="l"><a class="l" href="#65"> 65: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>, <span class="php-keyword1">array</span>(
|
||||
</span><span id="66" class="l"><a class="l" href="#66"> 66: </a> <span class="php-quote">'start_datetime'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'start_datetime'</span>],
|
||||
</span><span id="67" class="l"><a class="l" href="#67"> 67: </a> <span class="php-quote">'end_datetime'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'end_datetime'</span>],
|
||||
</span><span id="68" class="l"><a class="l" href="#68"> 68: </a> <span class="php-quote">'id_users_provider'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_provider'</span>],
|
||||
</span><span id="69" class="l"><a class="l" href="#69"> 69: </a> <span class="php-quote">'id_users_customer'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>],
|
||||
</span><span id="70" class="l"><a class="l" href="#70"> 70: </a> <span class="php-quote">'id_services'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_services'</span>],
|
||||
</span><span id="71" class="l"><a class="l" href="#71"> 71: </a> ))->num_rows();
|
||||
</span><span id="72" class="l"><a class="l" href="#72"> 72: </a>
|
||||
</span><span id="73" class="l"><a class="l" href="#73"> 73: </a> <span class="php-keyword1">return</span> (<span class="php-var">$num_rows</span> > <span class="php-num">0</span>) ? <span class="php-keyword1">TRUE</span> : <span class="php-keyword1">FALSE</span>;
|
||||
</span><span id="74" class="l"><a class="l" href="#74"> 74: </a> }
|
||||
</span><span id="75" class="l"><a class="l" href="#75"> 75: </a>
|
||||
</span><span id="76" class="l"><a class="l" href="#76"> 76: </a> <span class="php-comment">/**
|
||||
</span></span><span id="77" class="l"><a class="l" href="#77"> 77: </a><span class="php-comment"> * Insert a new appointment record to the database.
|
||||
</span></span><span id="78" class="l"><a class="l" href="#78"> 78: </a><span class="php-comment"> *
|
||||
</span></span><span id="79" class="l"><a class="l" href="#79"> 79: </a><span class="php-comment"> * @expectedException DatabaseException
|
||||
</span></span><span id="80" class="l"><a class="l" href="#80"> 80: </a><span class="php-comment"> *
|
||||
</span></span><span id="81" class="l"><a class="l" href="#81"> 81: </a><span class="php-comment"> * @param array $appointment_data Associative array with the appointment's
|
||||
</span></span><span id="82" class="l"><a class="l" href="#82"> 82: </a><span class="php-comment"> * data. Each key has the same name with the database fields.
|
||||
</span></span><span id="83" class="l"><a class="l" href="#83"> 83: </a><span class="php-comment"> * @return int Returns the id of the new record.
|
||||
</span></span><span id="84" class="l"><a class="l" href="#84"> 84: </a><span class="php-comment"> */</span>
|
||||
</span><span id="85" class="l"><a class="l" href="#85"> 85: </a> <span class="php-keyword1">private</span> <span class="php-keyword1">function</span> <a id="_insert" href="#_insert">insert</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="86" class="l"><a class="l" href="#86"> 86: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->db->insert(<span class="php-quote">'ea_appointments'</span>, <span class="php-var">$appointment_data</span>)) {
|
||||
</span><span id="87" class="l"><a class="l" href="#87"> 87: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> DatabaseException(<span class="php-quote">'Could not insert appointment record.'</span>);
|
||||
</span><span id="88" class="l"><a class="l" href="#88"> 88: </a> }
|
||||
</span><span id="89" class="l"><a class="l" href="#89"> 89: </a> <span class="php-keyword1">return</span> <span class="php-keyword2">intval</span>(<span class="php-var">$this</span>->db->insert_id());
|
||||
</span><span id="90" class="l"><a class="l" href="#90"> 90: </a> }
|
||||
</span><span id="91" class="l"><a class="l" href="#91"> 91: </a>
|
||||
</span><span id="92" class="l"><a class="l" href="#92"> 92: </a> <span class="php-comment">/**
|
||||
</span></span><span id="93" class="l"><a class="l" href="#93"> 93: </a><span class="php-comment"> * Update an existing appointment record in the database.
|
||||
</span></span><span id="94" class="l"><a class="l" href="#94"> 94: </a><span class="php-comment"> *
|
||||
</span></span><span id="95" class="l"><a class="l" href="#95"> 95: </a><span class="php-comment"> * The appointment data argument should already include the record
|
||||
</span></span><span id="96" class="l"><a class="l" href="#96"> 96: </a><span class="php-comment"> * id in order to process the update operation.
|
||||
</span></span><span id="97" class="l"><a class="l" href="#97"> 97: </a><span class="php-comment"> *
|
||||
</span></span><span id="98" class="l"><a class="l" href="#98"> 98: </a><span class="php-comment"> * @param array $appointment_data Associative array with the appointment's
|
||||
</span></span><span id="99" class="l"><a class="l" href="#99"> 99: </a><span class="php-comment"> * data. Each key has the same name with the database fields.
|
||||
</span></span><span id="100" class="l"><a class="l" href="#100">100: </a><span class="php-comment"> * @return int Returns the id of the updated record.
|
||||
</span></span><span id="101" class="l"><a class="l" href="#101">101: </a><span class="php-comment"> */</span>
|
||||
</span><span id="102" class="l"><a class="l" href="#102">102: </a> <span class="php-keyword1">private</span> <span class="php-keyword1">function</span> <a id="_update" href="#_update">update</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="103" class="l"><a class="l" href="#103">103: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>])) {
|
||||
</span><span id="104" class="l"><a class="l" href="#104">104: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>] = <span class="php-var">$this</span>->find_record_id(<span class="php-var">$appointment_data</span>);
|
||||
</span><span id="105" class="l"><a class="l" href="#105">105: </a> }
|
||||
</span><span id="106" class="l"><a class="l" href="#106">106: </a>
|
||||
</span><span id="107" class="l"><a class="l" href="#107">107: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id'</span>, <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>]);
|
||||
</span><span id="108" class="l"><a class="l" href="#108">108: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->db->update(<span class="php-quote">'ea_appointments'</span>, <span class="php-var">$appointment_data</span>)) {
|
||||
</span><span id="109" class="l"><a class="l" href="#109">109: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> DatabaseException(<span class="php-quote">'Could not update appointment record.'</span>);
|
||||
</span><span id="110" class="l"><a class="l" href="#110">110: </a> }
|
||||
</span><span id="111" class="l"><a class="l" href="#111">111: </a>
|
||||
</span><span id="112" class="l"><a class="l" href="#112">112: </a> <span class="php-keyword1">return</span> <span class="php-keyword2">intval</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>]);
|
||||
</span><span id="113" class="l"><a class="l" href="#113">113: </a> }
|
||||
</span><span id="114" class="l"><a class="l" href="#114">114: </a>
|
||||
</span><span id="115" class="l"><a class="l" href="#115">115: </a> <span class="php-comment">/**
|
||||
</span></span><span id="116" class="l"><a class="l" href="#116">116: </a><span class="php-comment"> * Find the database id of an appointment record.
|
||||
</span></span><span id="117" class="l"><a class="l" href="#117">117: </a><span class="php-comment"> *
|
||||
</span></span><span id="118" class="l"><a class="l" href="#118">118: </a><span class="php-comment"> * The appointment data should include the following fields in order to
|
||||
</span></span><span id="119" class="l"><a class="l" href="#119">119: </a><span class="php-comment"> * get the unique id from the database: start_datetime, end_datetime,
|
||||
</span></span><span id="120" class="l"><a class="l" href="#120">120: </a><span class="php-comment"> * id_users_provider, id_users_customer, id_services.
|
||||
</span></span><span id="18" class="l"><a class="l" href="#18"> 18: </a><span class="php-comment"> * @expectedException ValidationException Raises when the appointment data
|
||||
</span></span><span id="19" class="l"><a class="l" href="#19"> 19: </a><span class="php-comment"> * are invalid.
|
||||
</span></span><span id="20" class="l"><a class="l" href="#20"> 20: </a><span class="php-comment"> * @expectedException DatabaseException Raises when the insert or update
|
||||
</span></span><span id="21" class="l"><a class="l" href="#21"> 21: </a><span class="php-comment"> * operation fail to complete successfully.
|
||||
</span></span><span id="22" class="l"><a class="l" href="#22"> 22: </a><span class="php-comment"> *
|
||||
</span></span><span id="23" class="l"><a class="l" href="#23"> 23: </a><span class="php-comment"> * @param array $appointment_data Associative array with the appointment
|
||||
</span></span><span id="24" class="l"><a class="l" href="#24"> 24: </a><span class="php-comment"> * data. Each key has the same name with the database fields.
|
||||
</span></span><span id="25" class="l"><a class="l" href="#25"> 25: </a><span class="php-comment"> * @return int Returns the appointments id.
|
||||
</span></span><span id="26" class="l"><a class="l" href="#26"> 26: </a><span class="php-comment"> */</span>
|
||||
</span><span id="27" class="l"><a class="l" href="#27"> 27: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_add" href="#_add">add</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="28" class="l"><a class="l" href="#28"> 28: </a> <span class="php-comment">// Validate the appointment data before doing anything.</span>
|
||||
</span><span id="29" class="l"><a class="l" href="#29"> 29: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->validate_data(<span class="php-var">$appointment_data</span>)) {
|
||||
</span><span id="30" class="l"><a class="l" href="#30"> 30: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> ValidationException(<span class="php-quote">'Appointment data are invalid.'</span>);
|
||||
</span><span id="31" class="l"><a class="l" href="#31"> 31: </a> }
|
||||
</span><span id="32" class="l"><a class="l" href="#32"> 32: </a>
|
||||
</span><span id="33" class="l"><a class="l" href="#33"> 33: </a> <span class="php-comment">// Perform insert() or update() operation.</span>
|
||||
</span><span id="34" class="l"><a class="l" href="#34"> 34: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>])) {
|
||||
</span><span id="35" class="l"><a class="l" href="#35"> 35: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>] = <span class="php-var">$this</span>->insert(<span class="php-var">$appointment_data</span>);
|
||||
</span><span id="36" class="l"><a class="l" href="#36"> 36: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="37" class="l"><a class="l" href="#37"> 37: </a> <span class="php-var">$this</span>->update(<span class="php-var">$appointment_data</span>);
|
||||
</span><span id="38" class="l"><a class="l" href="#38"> 38: </a> }
|
||||
</span><span id="39" class="l"><a class="l" href="#39"> 39: </a>
|
||||
</span><span id="40" class="l"><a class="l" href="#40"> 40: </a> <span class="php-keyword1">return</span> <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>];
|
||||
</span><span id="41" class="l"><a class="l" href="#41"> 41: </a> }
|
||||
</span><span id="42" class="l"><a class="l" href="#42"> 42: </a>
|
||||
</span><span id="43" class="l"><a class="l" href="#43"> 43: </a> <span class="php-comment">/**
|
||||
</span></span><span id="44" class="l"><a class="l" href="#44"> 44: </a><span class="php-comment"> * Check if a particular appointment record already exists.
|
||||
</span></span><span id="45" class="l"><a class="l" href="#45"> 45: </a><span class="php-comment"> *
|
||||
</span></span><span id="46" class="l"><a class="l" href="#46"> 46: </a><span class="php-comment"> * This method checks wether the given appointment already exists
|
||||
</span></span><span id="47" class="l"><a class="l" href="#47"> 47: </a><span class="php-comment"> * in the database. It doesn't search with the id, but by using the
|
||||
</span></span><span id="48" class="l"><a class="l" href="#48"> 48: </a><span class="php-comment"> * following fields: "start_datetime", "end_datetime", "id_users_provider",
|
||||
</span></span><span id="49" class="l"><a class="l" href="#49"> 49: </a><span class="php-comment"> * "id_users_customer", "id_services".
|
||||
</span></span><span id="50" class="l"><a class="l" href="#50"> 50: </a><span class="php-comment"> *
|
||||
</span></span><span id="51" class="l"><a class="l" href="#51"> 51: </a><span class="php-comment"> * @expectedException InvalidArgumentException When the $appointment_data
|
||||
</span></span><span id="52" class="l"><a class="l" href="#52"> 52: </a><span class="php-comment"> * array does not contain the necessary field.
|
||||
</span></span><span id="53" class="l"><a class="l" href="#53"> 53: </a><span class="php-comment"> *
|
||||
</span></span><span id="54" class="l"><a class="l" href="#54"> 54: </a><span class="php-comment"> * @param array $appointment_data Associative array with the appointment's
|
||||
</span></span><span id="55" class="l"><a class="l" href="#55"> 55: </a><span class="php-comment"> * data. Each key has the same name with the database fields.
|
||||
</span></span><span id="56" class="l"><a class="l" href="#56"> 56: </a><span class="php-comment"> * @return bool Returns wether the record exists or not.
|
||||
</span></span><span id="57" class="l"><a class="l" href="#57"> 57: </a><span class="php-comment"> */</span>
|
||||
</span><span id="58" class="l"><a class="l" href="#58"> 58: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_exists" href="#_exists">exists</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="59" class="l"><a class="l" href="#59"> 59: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'start_datetime'</span>])
|
||||
</span><span id="60" class="l"><a class="l" href="#60"> 60: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'end_datetime'</span>])
|
||||
</span><span id="61" class="l"><a class="l" href="#61"> 61: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_provider'</span>])
|
||||
</span><span id="62" class="l"><a class="l" href="#62"> 62: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>])
|
||||
</span><span id="63" class="l"><a class="l" href="#63"> 63: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id_services'</span>])) {
|
||||
</span><span id="64" class="l"><a class="l" href="#64"> 64: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Not all appointment field values '</span>
|
||||
</span><span id="65" class="l"><a class="l" href="#65"> 65: </a> . <span class="php-quote">'are provided : '</span> . <span class="php-keyword2">print_r</span>(<span class="php-var">$appointment_data</span>, <span class="php-keyword1">TRUE</span>));
|
||||
</span><span id="66" class="l"><a class="l" href="#66"> 66: </a> }
|
||||
</span><span id="67" class="l"><a class="l" href="#67"> 67: </a>
|
||||
</span><span id="68" class="l"><a class="l" href="#68"> 68: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>, <span class="php-keyword1">array</span>(
|
||||
</span><span id="69" class="l"><a class="l" href="#69"> 69: </a> <span class="php-quote">'start_datetime'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'start_datetime'</span>],
|
||||
</span><span id="70" class="l"><a class="l" href="#70"> 70: </a> <span class="php-quote">'end_datetime'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'end_datetime'</span>],
|
||||
</span><span id="71" class="l"><a class="l" href="#71"> 71: </a> <span class="php-quote">'id_users_provider'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_provider'</span>],
|
||||
</span><span id="72" class="l"><a class="l" href="#72"> 72: </a> <span class="php-quote">'id_users_customer'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>],
|
||||
</span><span id="73" class="l"><a class="l" href="#73"> 73: </a> <span class="php-quote">'id_services'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_services'</span>],))
|
||||
</span><span id="74" class="l"><a class="l" href="#74"> 74: </a> ->num_rows();
|
||||
</span><span id="75" class="l"><a class="l" href="#75"> 75: </a>
|
||||
</span><span id="76" class="l"><a class="l" href="#76"> 76: </a> <span class="php-keyword1">return</span> (<span class="php-var">$num_rows</span> > <span class="php-num">0</span>) ? <span class="php-keyword1">TRUE</span> : <span class="php-keyword1">FALSE</span>;
|
||||
</span><span id="77" class="l"><a class="l" href="#77"> 77: </a> }
|
||||
</span><span id="78" class="l"><a class="l" href="#78"> 78: </a>
|
||||
</span><span id="79" class="l"><a class="l" href="#79"> 79: </a> <span class="php-comment">/**
|
||||
</span></span><span id="80" class="l"><a class="l" href="#80"> 80: </a><span class="php-comment"> * Insert a new appointment record to the database.
|
||||
</span></span><span id="81" class="l"><a class="l" href="#81"> 81: </a><span class="php-comment"> *
|
||||
</span></span><span id="82" class="l"><a class="l" href="#82"> 82: </a><span class="php-comment"> * @expectedException DatabaseException Raises when the insert operation
|
||||
</span></span><span id="83" class="l"><a class="l" href="#83"> 83: </a><span class="php-comment"> * failes to complete successfully.
|
||||
</span></span><span id="84" class="l"><a class="l" href="#84"> 84: </a><span class="php-comment"> *
|
||||
</span></span><span id="85" class="l"><a class="l" href="#85"> 85: </a><span class="php-comment"> * @param array $appointment_data Associative array with the appointment's
|
||||
</span></span><span id="86" class="l"><a class="l" href="#86"> 86: </a><span class="php-comment"> * data. Each key has the same name with the database fields.
|
||||
</span></span><span id="87" class="l"><a class="l" href="#87"> 87: </a><span class="php-comment"> * @return int Returns the id of the new record.
|
||||
</span></span><span id="88" class="l"><a class="l" href="#88"> 88: </a><span class="php-comment"> */</span>
|
||||
</span><span id="89" class="l"><a class="l" href="#89"> 89: </a> <span class="php-keyword1">private</span> <span class="php-keyword1">function</span> <a id="_insert" href="#_insert">insert</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="90" class="l"><a class="l" href="#90"> 90: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'book_datetime'</span>] = <span class="php-keyword2">date</span>(<span class="php-quote">'Y-m-d H:i:s'</span>);
|
||||
</span><span id="91" class="l"><a class="l" href="#91"> 91: </a> <span class="php-var">$appointment_data</span>[<span class="php-quote">'hash'</span>] = <span class="php-var">$this</span>->generate_hash();
|
||||
</span><span id="92" class="l"><a class="l" href="#92"> 92: </a>
|
||||
</span><span id="93" class="l"><a class="l" href="#93"> 93: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->db->insert(<span class="php-quote">'ea_appointments'</span>, <span class="php-var">$appointment_data</span>)) {
|
||||
</span><span id="94" class="l"><a class="l" href="#94"> 94: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> DatabaseException(<span class="php-quote">'Could not insert appointment record.'</span>);
|
||||
</span><span id="95" class="l"><a class="l" href="#95"> 95: </a> }
|
||||
</span><span id="96" class="l"><a class="l" href="#96"> 96: </a>
|
||||
</span><span id="97" class="l"><a class="l" href="#97"> 97: </a> <span class="php-keyword1">return</span> <span class="php-keyword2">intval</span>(<span class="php-var">$this</span>->db->insert_id());
|
||||
</span><span id="98" class="l"><a class="l" href="#98"> 98: </a> }
|
||||
</span><span id="99" class="l"><a class="l" href="#99"> 99: </a>
|
||||
</span><span id="100" class="l"><a class="l" href="#100">100: </a> <span class="php-comment">/**
|
||||
</span></span><span id="101" class="l"><a class="l" href="#101">101: </a><span class="php-comment"> * Update an existing appointment record in the database.
|
||||
</span></span><span id="102" class="l"><a class="l" href="#102">102: </a><span class="php-comment"> *
|
||||
</span></span><span id="103" class="l"><a class="l" href="#103">103: </a><span class="php-comment"> * The appointment data argument should already include the record
|
||||
</span></span><span id="104" class="l"><a class="l" href="#104">104: </a><span class="php-comment"> * id in order to process the update operation.
|
||||
</span></span><span id="105" class="l"><a class="l" href="#105">105: </a><span class="php-comment"> *
|
||||
</span></span><span id="106" class="l"><a class="l" href="#106">106: </a><span class="php-comment"> * @expectedException DatabaseException Raises when the update operation
|
||||
</span></span><span id="107" class="l"><a class="l" href="#107">107: </a><span class="php-comment"> * failes to complete successfully.
|
||||
</span></span><span id="108" class="l"><a class="l" href="#108">108: </a><span class="php-comment"> *
|
||||
</span></span><span id="109" class="l"><a class="l" href="#109">109: </a><span class="php-comment"> * @param array $appointment_data Associative array with the appointment's
|
||||
</span></span><span id="110" class="l"><a class="l" href="#110">110: </a><span class="php-comment"> * data. Each key has the same name with the database fields.
|
||||
</span></span><span id="111" class="l"><a class="l" href="#111">111: </a><span class="php-comment"> */</span>
|
||||
</span><span id="112" class="l"><a class="l" href="#112">112: </a> <span class="php-keyword1">private</span> <span class="php-keyword1">function</span> <a id="_update" href="#_update">update</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="113" class="l"><a class="l" href="#113">113: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id'</span>, <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>]);
|
||||
</span><span id="114" class="l"><a class="l" href="#114">114: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->db->update(<span class="php-quote">'ea_appointments'</span>, <span class="php-var">$appointment_data</span>)) {
|
||||
</span><span id="115" class="l"><a class="l" href="#115">115: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> DatabaseException(<span class="php-quote">'Could not update appointment record.'</span>);
|
||||
</span><span id="116" class="l"><a class="l" href="#116">116: </a> }
|
||||
</span><span id="117" class="l"><a class="l" href="#117">117: </a> }
|
||||
</span><span id="118" class="l"><a class="l" href="#118">118: </a>
|
||||
</span><span id="119" class="l"><a class="l" href="#119">119: </a> <span class="php-comment">/**
|
||||
</span></span><span id="120" class="l"><a class="l" href="#120">120: </a><span class="php-comment"> * Find the database id of an appointment record.
|
||||
</span></span><span id="121" class="l"><a class="l" href="#121">121: </a><span class="php-comment"> *
|
||||
</span></span><span id="122" class="l"><a class="l" href="#122">122: </a><span class="php-comment"> * <strong>IMPORTANT!</strong> The record must already exists in the
|
||||
</span></span><span id="123" class="l"><a class="l" href="#123">123: </a><span class="php-comment"> * database, otherwise an exception is raised.
|
||||
</span></span><span id="124" class="l"><a class="l" href="#124">124: </a><span class="php-comment"> *
|
||||
</span></span><span id="125" class="l"><a class="l" href="#125">125: </a><span class="php-comment"> * @expectedException DatabaseException
|
||||
</span></span><span id="126" class="l"><a class="l" href="#126">126: </a><span class="php-comment"> *
|
||||
</span></span><span id="127" class="l"><a class="l" href="#127">127: </a><span class="php-comment"> * @param array $appointment_data Array with the appointment data. The
|
||||
</span></span><span id="128" class="l"><a class="l" href="#128">128: </a><span class="php-comment"> * keys of the array should have the same names as the db fields.
|
||||
</span></span><span id="129" class="l"><a class="l" href="#129">129: </a><span class="php-comment"> * @return int Returns the id.
|
||||
</span></span><span id="130" class="l"><a class="l" href="#130">130: </a><span class="php-comment"> */</span>
|
||||
</span><span id="131" class="l"><a class="l" href="#131">131: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_find_record_id" href="#_find_record_id">find_record_id</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="132" class="l"><a class="l" href="#132">132: </a> <span class="php-var">$this</span>->db->where(<span class="php-keyword1">array</span>(
|
||||
</span><span id="133" class="l"><a class="l" href="#133">133: </a> <span class="php-quote">'start_datetime'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'start_datetime'</span>],
|
||||
</span><span id="134" class="l"><a class="l" href="#134">134: </a> <span class="php-quote">'end_datetime'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'end_datetime'</span>],
|
||||
</span><span id="135" class="l"><a class="l" href="#135">135: </a> <span class="php-quote">'id_users_provider'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_provider'</span>],
|
||||
</span><span id="136" class="l"><a class="l" href="#136">136: </a> <span class="php-quote">'id_users_customer'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>],
|
||||
</span><span id="137" class="l"><a class="l" href="#137">137: </a> <span class="php-quote">'id_services'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_services'</span>]
|
||||
</span><span id="138" class="l"><a class="l" href="#138">138: </a> ));
|
||||
</span><span id="139" class="l"><a class="l" href="#139">139: </a>
|
||||
</span><span id="140" class="l"><a class="l" href="#140">140: </a> <span class="php-var">$result</span> = <span class="php-var">$this</span>->db->get(<span class="php-quote">'ea_appointments'</span>);
|
||||
</span><span id="141" class="l"><a class="l" href="#141">141: </a>
|
||||
</span><span id="142" class="l"><a class="l" href="#142">142: </a> <span class="php-keyword1">if</span> (<span class="php-var">$result</span>->num_rows() == <span class="php-num">0</span>) {
|
||||
</span><span id="143" class="l"><a class="l" href="#143">143: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> DatabaseException(<span class="php-quote">'Could not find appointment record id.'</span>);
|
||||
</span><span id="144" class="l"><a class="l" href="#144">144: </a> }
|
||||
</span></span><span id="122" class="l"><a class="l" href="#122">122: </a><span class="php-comment"> * The appointment data should include the following fields in order
|
||||
</span></span><span id="123" class="l"><a class="l" href="#123">123: </a><span class="php-comment"> * to get the unique id from the database: "start_datetime", "end_datetime",
|
||||
</span></span><span id="124" class="l"><a class="l" href="#124">124: </a><span class="php-comment"> * "id_users_provider", "id_users_customer", "id_services".
|
||||
</span></span><span id="125" class="l"><a class="l" href="#125">125: </a><span class="php-comment"> *
|
||||
</span></span><span id="126" class="l"><a class="l" href="#126">126: </a><span class="php-comment"> * <strong>IMPORTANT!</strong> The record must already exists in the
|
||||
</span></span><span id="127" class="l"><a class="l" href="#127">127: </a><span class="php-comment"> * database, otherwise an exception is raised.
|
||||
</span></span><span id="128" class="l"><a class="l" href="#128">128: </a><span class="php-comment"> *
|
||||
</span></span><span id="129" class="l"><a class="l" href="#129">129: </a><span class="php-comment"> * @expectedException DatabaseException Raises when this method cannot
|
||||
</span></span><span id="130" class="l"><a class="l" href="#130">130: </a><span class="php-comment"> * find any record that matches the given data.
|
||||
</span></span><span id="131" class="l"><a class="l" href="#131">131: </a><span class="php-comment"> *
|
||||
</span></span><span id="132" class="l"><a class="l" href="#132">132: </a><span class="php-comment"> * @param array $appointment_data Array with the appointment data. The
|
||||
</span></span><span id="133" class="l"><a class="l" href="#133">133: </a><span class="php-comment"> * keys of the array should have the same names as the db fields.
|
||||
</span></span><span id="134" class="l"><a class="l" href="#134">134: </a><span class="php-comment"> * @return int Returns the db id of the record that matches the apppointment
|
||||
</span></span><span id="135" class="l"><a class="l" href="#135">135: </a><span class="php-comment"> * data.
|
||||
</span></span><span id="136" class="l"><a class="l" href="#136">136: </a><span class="php-comment"> */</span>
|
||||
</span><span id="137" class="l"><a class="l" href="#137">137: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_find_record_id" href="#_find_record_id">find_record_id</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="138" class="l"><a class="l" href="#138">138: </a> <span class="php-var">$this</span>->db->where(<span class="php-keyword1">array</span>(
|
||||
</span><span id="139" class="l"><a class="l" href="#139">139: </a> <span class="php-quote">'start_datetime'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'start_datetime'</span>],
|
||||
</span><span id="140" class="l"><a class="l" href="#140">140: </a> <span class="php-quote">'end_datetime'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'end_datetime'</span>],
|
||||
</span><span id="141" class="l"><a class="l" href="#141">141: </a> <span class="php-quote">'id_users_provider'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_provider'</span>],
|
||||
</span><span id="142" class="l"><a class="l" href="#142">142: </a> <span class="php-quote">'id_users_customer'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>],
|
||||
</span><span id="143" class="l"><a class="l" href="#143">143: </a> <span class="php-quote">'id_services'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_services'</span>]
|
||||
</span><span id="144" class="l"><a class="l" href="#144">144: </a> ));
|
||||
</span><span id="145" class="l"><a class="l" href="#145">145: </a>
|
||||
</span><span id="146" class="l"><a class="l" href="#146">146: </a> <span class="php-keyword1">return</span> <span class="php-var">$result</span>->row()->id;
|
||||
</span><span id="147" class="l"><a class="l" href="#147">147: </a> }
|
||||
</span><span id="148" class="l"><a class="l" href="#148">148: </a>
|
||||
</span><span id="149" class="l"><a class="l" href="#149">149: </a> <span class="php-comment">/**
|
||||
</span></span><span id="150" class="l"><a class="l" href="#150">150: </a><span class="php-comment"> * Validate appointment data before the insert or
|
||||
</span></span><span id="151" class="l"><a class="l" href="#151">151: </a><span class="php-comment"> * update operation is executed.
|
||||
</span></span><span id="152" class="l"><a class="l" href="#152">152: </a><span class="php-comment"> *
|
||||
</span></span><span id="153" class="l"><a class="l" href="#153">153: </a><span class="php-comment"> * @param array $appointment_data Contains the appointment data.
|
||||
</span></span><span id="154" class="l"><a class="l" href="#154">154: </a><span class="php-comment"> * @return bool Returns the validation result.
|
||||
</span></span><span id="155" class="l"><a class="l" href="#155">155: </a><span class="php-comment"> */</span>
|
||||
</span><span id="156" class="l"><a class="l" href="#156">156: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_validate_data" href="#_validate_data">validate_data</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="157" class="l"><a class="l" href="#157">157: </a> <span class="php-var">$this</span>->load->helper(<span class="php-quote">'data_validation'</span>);
|
||||
</span><span id="158" class="l"><a class="l" href="#158">158: </a>
|
||||
</span><span id="159" class="l"><a class="l" href="#159">159: </a> <span class="php-keyword1">try</span> {
|
||||
</span><span id="160" class="l"><a class="l" href="#160">160: </a> <span class="php-comment">// Check if appointment dates are valid.</span>
|
||||
</span><span id="161" class="l"><a class="l" href="#161">161: </a> <span class="php-keyword1">if</span> (!validate_mysql_datetime(<span class="php-var">$appointment_data</span>[<span class="php-quote">'start_datetime'</span>])) {
|
||||
</span><span id="162" class="l"><a class="l" href="#162">162: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment start datetime is invalid.'</span>);
|
||||
</span><span id="163" class="l"><a class="l" href="#163">163: </a> }
|
||||
</span><span id="164" class="l"><a class="l" href="#164">164: </a>
|
||||
</span><span id="165" class="l"><a class="l" href="#165">165: </a> <span class="php-keyword1">if</span> (!validate_mysql_datetime(<span class="php-var">$appointment_data</span>[<span class="php-quote">'end_datetime'</span>])) {
|
||||
</span><span id="166" class="l"><a class="l" href="#166">166: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment end datetime is invalid.'</span>);
|
||||
</span><span id="167" class="l"><a class="l" href="#167">167: </a> }
|
||||
</span><span id="168" class="l"><a class="l" href="#168">168: </a>
|
||||
</span><span id="169" class="l"><a class="l" href="#169">169: </a> <span class="php-comment">// Check if the provider's id is valid. </span>
|
||||
</span><span id="170" class="l"><a class="l" href="#170">170: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db
|
||||
</span><span id="171" class="l"><a class="l" href="#171">171: </a> ->select(<span class="php-quote">'*'</span>)
|
||||
</span><span id="172" class="l"><a class="l" href="#172">172: </a> ->from(<span class="php-quote">'ea_users'</span>)
|
||||
</span><span id="173" class="l"><a class="l" href="#173">173: </a> -><span class="php-keyword2">join</span>(<span class="php-quote">'ea_roles'</span>, <span class="php-quote">'ea_roles.id = ea_users.id_roles'</span>, <span class="php-quote">'inner'</span>)
|
||||
</span><span id="174" class="l"><a class="l" href="#174">174: </a> ->where(<span class="php-quote">'ea_users.id'</span>, <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_provider'</span>])
|
||||
</span><span id="175" class="l"><a class="l" href="#175">175: </a> ->where(<span class="php-quote">'ea_roles.slug'</span>, DB_SLUG_PROVIDER)
|
||||
</span><span id="176" class="l"><a class="l" href="#176">176: </a> ->get()->num_rows();
|
||||
</span><span id="177" class="l"><a class="l" href="#177">177: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="178" class="l"><a class="l" href="#178">178: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment provider id is invalid.'</span>);
|
||||
</span><span id="179" class="l"><a class="l" href="#179">179: </a> }
|
||||
</span><span id="180" class="l"><a class="l" href="#180">180: </a>
|
||||
</span><span id="181" class="l"><a class="l" href="#181">181: </a> <span class="php-comment">// Check if the customer's id is valid.</span>
|
||||
</span><span id="182" class="l"><a class="l" href="#182">182: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db
|
||||
</span><span id="183" class="l"><a class="l" href="#183">183: </a> ->select(<span class="php-quote">'*'</span>)
|
||||
</span><span id="184" class="l"><a class="l" href="#184">184: </a> ->from(<span class="php-quote">'ea_users'</span>)
|
||||
</span><span id="185" class="l"><a class="l" href="#185">185: </a> -><span class="php-keyword2">join</span>(<span class="php-quote">'ea_roles'</span>, <span class="php-quote">'ea_roles.id = ea_users.id_roles'</span>, <span class="php-quote">'inner'</span>)
|
||||
</span><span id="186" class="l"><a class="l" href="#186">186: </a> ->where(<span class="php-quote">'ea_users.id'</span>, <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>])
|
||||
</span><span id="187" class="l"><a class="l" href="#187">187: </a> ->where(<span class="php-quote">'ea_roles.slug'</span>, DB_SLUG_CUSTOMER)
|
||||
</span><span id="188" class="l"><a class="l" href="#188">188: </a> ->get()->num_rows();
|
||||
</span><span id="189" class="l"><a class="l" href="#189">189: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="190" class="l"><a class="l" href="#190">190: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment customer id is invalid.'</span>);
|
||||
</span><span id="191" class="l"><a class="l" href="#191">191: </a> }
|
||||
</span><span id="192" class="l"><a class="l" href="#192">192: </a>
|
||||
</span><span id="193" class="l"><a class="l" href="#193">193: </a> <span class="php-comment">// Check if the service id is valid.</span>
|
||||
</span><span id="194" class="l"><a class="l" href="#194">194: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_services'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_services'</span>]))->num_rows();
|
||||
</span><span id="195" class="l"><a class="l" href="#195">195: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="196" class="l"><a class="l" href="#196">196: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment customer id is invalid.'</span>);
|
||||
</span><span id="197" class="l"><a class="l" href="#197">197: </a> }
|
||||
</span><span id="198" class="l"><a class="l" href="#198">198: </a>
|
||||
</span><span id="199" class="l"><a class="l" href="#199">199: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">TRUE</span>;
|
||||
</span><span id="200" class="l"><a class="l" href="#200">200: </a> } <span class="php-keyword1">catch</span> (Exception <span class="php-var">$exc</span>) {
|
||||
</span><span id="201" class="l"><a class="l" href="#201">201: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">FALSE</span>;
|
||||
</span><span id="202" class="l"><a class="l" href="#202">202: </a> }
|
||||
</span><span id="203" class="l"><a class="l" href="#203">203: </a> }
|
||||
</span><span id="204" class="l"><a class="l" href="#204">204: </a>
|
||||
</span><span id="205" class="l"><a class="l" href="#205">205: </a> <span class="php-comment">/**
|
||||
</span></span><span id="206" class="l"><a class="l" href="#206">206: </a><span class="php-comment"> * Delete an existing appointment record from the database.
|
||||
</span></span><span id="207" class="l"><a class="l" href="#207">207: </a><span class="php-comment"> *
|
||||
</span></span><span id="208" class="l"><a class="l" href="#208">208: </a><span class="php-comment"> * @expectedException InvalidArgumentException Raises when the $appointment_id
|
||||
</span></span><span id="209" class="l"><a class="l" href="#209">209: </a><span class="php-comment"> * is not an integer.
|
||||
</span></span><span id="210" class="l"><a class="l" href="#210">210: </a><span class="php-comment"> *
|
||||
</span></span><span id="211" class="l"><a class="l" href="#211">211: </a><span class="php-comment"> * @param int $appointment_id The record id to be deleted.
|
||||
</span></span><span id="212" class="l"><a class="l" href="#212">212: </a><span class="php-comment"> * @return bool Returns the delete operation result.
|
||||
</span></span><span id="213" class="l"><a class="l" href="#213">213: </a><span class="php-comment"> */</span>
|
||||
</span><span id="214" class="l"><a class="l" href="#214">214: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">delete</span>(<span class="php-var">$appointment_id</span>) {
|
||||
</span><span id="215" class="l"><a class="l" href="#215">215: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$appointment_id</span>)) {
|
||||
</span><span id="216" class="l"><a class="l" href="#216">216: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument type $appointment_id : '</span> . <span class="php-var">$appointment_id</span>);
|
||||
</span><span id="217" class="l"><a class="l" href="#217">217: </a> }
|
||||
</span><span id="218" class="l"><a class="l" href="#218">218: </a>
|
||||
</span><span id="219" class="l"><a class="l" href="#219">219: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_id</span>))->num_rows();
|
||||
</span><span id="220" class="l"><a class="l" href="#220">220: </a>
|
||||
</span><span id="221" class="l"><a class="l" href="#221">221: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="222" class="l"><a class="l" href="#222">222: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">FALSE</span>; <span class="php-comment">// Record does not exist.</span>
|
||||
</span><span id="223" class="l"><a class="l" href="#223">223: </a> }
|
||||
</span><span id="224" class="l"><a class="l" href="#224">224: </a>
|
||||
</span><span id="225" class="l"><a class="l" href="#225">225: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id'</span>, <span class="php-var">$appointment_id</span>);
|
||||
</span><span id="226" class="l"><a class="l" href="#226">226: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db-><span class="php-keyword2">delete</span>(<span class="php-quote">'ea_appointments'</span>);
|
||||
</span><span id="227" class="l"><a class="l" href="#227">227: </a> }
|
||||
</span><span id="228" class="l"><a class="l" href="#228">228: </a>
|
||||
</span><span id="229" class="l"><a class="l" href="#229">229: </a> <span class="php-comment">/**
|
||||
</span></span><span id="230" class="l"><a class="l" href="#230">230: </a><span class="php-comment"> * Get a specific row from the appointments table.
|
||||
</span></span><span id="231" class="l"><a class="l" href="#231">231: </a><span class="php-comment"> *
|
||||
</span></span><span id="232" class="l"><a class="l" href="#232">232: </a><span class="php-comment"> * @param int $appointment_id The record's id to be returned.
|
||||
</span></span><span id="233" class="l"><a class="l" href="#233">233: </a><span class="php-comment"> * @return array Returns an associative array with the selected
|
||||
</span></span><span id="234" class="l"><a class="l" href="#234">234: </a><span class="php-comment"> * record's data. Each key has the same name as the database
|
||||
</span></span><span id="235" class="l"><a class="l" href="#235">235: </a><span class="php-comment"> * field names.
|
||||
</span></span><span id="236" class="l"><a class="l" href="#236">236: </a><span class="php-comment"> */</span>
|
||||
</span><span id="237" class="l"><a class="l" href="#237">237: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_row" href="#_get_row">get_row</a>(<span class="php-var">$appointment_id</span>) {
|
||||
</span><span id="238" class="l"><a class="l" href="#238">238: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$appointment_id</span>)) {
|
||||
</span><span id="239" class="l"><a class="l" href="#239">239: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument given. Expected integer for the $appointment_id : '</span> . <span class="php-var">$appointment_id</span>);
|
||||
</span><span id="240" class="l"><a class="l" href="#240">240: </a> }
|
||||
</span><span id="241" class="l"><a class="l" href="#241">241: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_id</span>))->row_array();
|
||||
</span><span id="242" class="l"><a class="l" href="#242">242: </a> }
|
||||
</span><span id="243" class="l"><a class="l" href="#243">243: </a>
|
||||
</span><span id="244" class="l"><a class="l" href="#244">244: </a> <span class="php-comment">/**
|
||||
</span></span><span id="245" class="l"><a class="l" href="#245">245: </a><span class="php-comment"> * Get a specific field value from the database.
|
||||
</span></span><span id="246" class="l"><a class="l" href="#246">246: </a><span class="php-comment"> *
|
||||
</span></span><span id="247" class="l"><a class="l" href="#247">247: </a><span class="php-comment"> * @param string $field_name The field name of the value to be
|
||||
</span></span><span id="248" class="l"><a class="l" href="#248">248: </a><span class="php-comment"> * returned.
|
||||
</span></span><span id="249" class="l"><a class="l" href="#249">249: </a><span class="php-comment"> * @param int $appointment_id The selected record's id.
|
||||
</span></span><span id="250" class="l"><a class="l" href="#250">250: </a><span class="php-comment"> * @return string Returns the records value from the database.
|
||||
</span></span><span id="251" class="l"><a class="l" href="#251">251: </a><span class="php-comment"> */</span>
|
||||
</span><span id="252" class="l"><a class="l" href="#252">252: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_value" href="#_get_value">get_value</a>(<span class="php-var">$field_name</span>, <span class="php-var">$appointment_id</span>) {
|
||||
</span><span id="253" class="l"><a class="l" href="#253">253: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$appointment_id</span>)) {
|
||||
</span><span id="254" class="l"><a class="l" href="#254">254: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument given, expected integer for the $appointment_id : '</span> . <span class="php-var">$appointment_id</span>);
|
||||
</span><span id="255" class="l"><a class="l" href="#255">255: </a> }
|
||||
</span><span id="256" class="l"><a class="l" href="#256">256: </a>
|
||||
</span><span id="257" class="l"><a class="l" href="#257">257: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_string</span>(<span class="php-var">$field_name</span>)) {
|
||||
</span><span id="258" class="l"><a class="l" href="#258">258: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument given, expected string for the $field_name : '</span> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="259" class="l"><a class="l" href="#259">259: </a> }
|
||||
</span><span id="260" class="l"><a class="l" href="#260">260: </a>
|
||||
</span><span id="261" class="l"><a class="l" href="#261">261: </a> <span class="php-keyword1">if</span> (<span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_id</span>))->num_rows() == <span class="php-num">0</span>) {
|
||||
</span><span id="262" class="l"><a class="l" href="#262">262: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The record with the provided id does not exist in the database : '</span> . <span class="php-var">$appointment_id</span>);
|
||||
</span><span id="263" class="l"><a class="l" href="#263">263: </a> }
|
||||
</span><span id="264" class="l"><a class="l" href="#264">264: </a>
|
||||
</span><span id="265" class="l"><a class="l" href="#265">265: </a> <span class="php-var">$row_data</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_id</span>))->row_array();
|
||||
</span><span id="266" class="l"><a class="l" href="#266">266: </a>
|
||||
</span><span id="267" class="l"><a class="l" href="#267">267: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$row_data</span>[<span class="php-var">$field_name</span>])) {
|
||||
</span><span id="268" class="l"><a class="l" href="#268">268: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The given field name does not exist in the database : '</span> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="269" class="l"><a class="l" href="#269">269: </a> }
|
||||
</span><span id="270" class="l"><a class="l" href="#270">270: </a>
|
||||
</span><span id="271" class="l"><a class="l" href="#271">271: </a> <span class="php-keyword1">return</span> <span class="php-var">$row_data</span>[<span class="php-var">$field_name</span>];
|
||||
</span><span id="272" class="l"><a class="l" href="#272">272: </a> }
|
||||
</span><span id="273" class="l"><a class="l" href="#273">273: </a>
|
||||
</span><span id="274" class="l"><a class="l" href="#274">274: </a> <span class="php-comment">/**
|
||||
</span></span><span id="275" class="l"><a class="l" href="#275">275: </a><span class="php-comment"> * Get all, or specific records from appointment's table.
|
||||
</span></span><span id="276" class="l"><a class="l" href="#276">276: </a><span class="php-comment"> *
|
||||
</span></span><span id="277" class="l"><a class="l" href="#277">277: </a><span class="php-comment"> * @example $this->Model->getBatch('id = ' . $recordId);
|
||||
</span></span><span id="278" class="l"><a class="l" href="#278">278: </a><span class="php-comment"> *
|
||||
</span></span><span id="279" class="l"><a class="l" href="#279">279: </a><span class="php-comment"> * @param string $where_clause (OPTIONAL) The WHERE clause of
|
||||
</span></span><span id="280" class="l"><a class="l" href="#280">280: </a><span class="php-comment"> * the query to be executed. DO NOT INCLUDE 'WHERE' KEYWORD.
|
||||
</span></span><span id="281" class="l"><a class="l" href="#281">281: </a><span class="php-comment"> * @return array Returns the rows from the database.
|
||||
</span></span><span id="282" class="l"><a class="l" href="#282">282: </a><span class="php-comment"> */</span>
|
||||
</span><span id="283" class="l"><a class="l" href="#283">283: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_batch" href="#_get_batch">get_batch</a>(<span class="php-var">$where_clause</span> = <span class="php-quote">''</span>) {
|
||||
</span><span id="284" class="l"><a class="l" href="#284">284: </a> <span class="php-keyword1">if</span> (<span class="php-var">$where_clause</span> != <span class="php-quote">''</span>) {
|
||||
</span><span id="285" class="l"><a class="l" href="#285">285: </a> <span class="php-var">$this</span>->db->where(<span class="php-var">$where_clause</span>);
|
||||
</span><span id="286" class="l"><a class="l" href="#286">286: </a> }
|
||||
</span><span id="287" class="l"><a class="l" href="#287">287: </a>
|
||||
</span><span id="288" class="l"><a class="l" href="#288">288: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get(<span class="php-quote">'ea_appointments'</span>)->result_array();
|
||||
</span><span id="289" class="l"><a class="l" href="#289">289: </a> }
|
||||
</span><span id="290" class="l"><a class="l" href="#290">290: </a>}
|
||||
</span><span id="291" class="l"><a class="l" href="#291">291: </a>
|
||||
</span><span id="292" class="l"><a class="l" href="#292">292: </a><span class="php-comment">/* End of file appointments_model.php */</span>
|
||||
</span><span id="293" class="l"><a class="l" href="#293">293: </a></span><span class="php-comment">/* Location: ./application/models/appointments_model.php */</span></code></pre>
|
||||
</span><span id="146" class="l"><a class="l" href="#146">146: </a> <span class="php-var">$result</span> = <span class="php-var">$this</span>->db->get(<span class="php-quote">'ea_appointments'</span>);
|
||||
</span><span id="147" class="l"><a class="l" href="#147">147: </a>
|
||||
</span><span id="148" class="l"><a class="l" href="#148">148: </a> <span class="php-keyword1">if</span> (<span class="php-var">$result</span>->num_rows() == <span class="php-num">0</span>) {
|
||||
</span><span id="149" class="l"><a class="l" href="#149">149: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> DatabaseException(<span class="php-quote">'Could not find appointment record id.'</span>);
|
||||
</span><span id="150" class="l"><a class="l" href="#150">150: </a> }
|
||||
</span><span id="151" class="l"><a class="l" href="#151">151: </a>
|
||||
</span><span id="152" class="l"><a class="l" href="#152">152: </a> <span class="php-keyword1">return</span> <span class="php-var">$result</span>->row()->id;
|
||||
</span><span id="153" class="l"><a class="l" href="#153">153: </a> }
|
||||
</span><span id="154" class="l"><a class="l" href="#154">154: </a>
|
||||
</span><span id="155" class="l"><a class="l" href="#155">155: </a> <span class="php-comment">/**
|
||||
</span></span><span id="156" class="l"><a class="l" href="#156">156: </a><span class="php-comment"> * Validate appointment data before the insert or update operations
|
||||
</span></span><span id="157" class="l"><a class="l" href="#157">157: </a><span class="php-comment"> * are executed.
|
||||
</span></span><span id="158" class="l"><a class="l" href="#158">158: </a><span class="php-comment"> *
|
||||
</span></span><span id="159" class="l"><a class="l" href="#159">159: </a><span class="php-comment"> * @param array $appointment_data Contains the appointment data.
|
||||
</span></span><span id="160" class="l"><a class="l" href="#160">160: </a><span class="php-comment"> * @return bool Returns the validation result.
|
||||
</span></span><span id="161" class="l"><a class="l" href="#161">161: </a><span class="php-comment"> */</span>
|
||||
</span><span id="162" class="l"><a class="l" href="#162">162: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_validate_data" href="#_validate_data">validate_data</a>(<span class="php-var">$appointment_data</span>) {
|
||||
</span><span id="163" class="l"><a class="l" href="#163">163: </a> <span class="php-var">$this</span>->load->helper(<span class="php-quote">'data_validation'</span>);
|
||||
</span><span id="164" class="l"><a class="l" href="#164">164: </a>
|
||||
</span><span id="165" class="l"><a class="l" href="#165">165: </a> <span class="php-keyword1">try</span> {
|
||||
</span><span id="166" class="l"><a class="l" href="#166">166: </a> <span class="php-comment">// If a appointment id is given, check wether the record exists</span>
|
||||
</span><span id="167" class="l"><a class="l" href="#167">167: </a> <span class="php-comment">// in the database.</span>
|
||||
</span><span id="168" class="l"><a class="l" href="#168">168: </a> <span class="php-keyword1">if</span> (<span class="php-keyword1">isset</span>(<span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>])) {
|
||||
</span><span id="169" class="l"><a class="l" href="#169">169: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>,
|
||||
</span><span id="170" class="l"><a class="l" href="#170">170: </a> <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id'</span>]))->num_rows();
|
||||
</span><span id="171" class="l"><a class="l" href="#171">171: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="172" class="l"><a class="l" href="#172">172: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Provided appointment id does not '</span>
|
||||
</span><span id="173" class="l"><a class="l" href="#173">173: </a> . <span class="php-quote">'exist in the database.'</span>);
|
||||
</span><span id="174" class="l"><a class="l" href="#174">174: </a> }
|
||||
</span><span id="175" class="l"><a class="l" href="#175">175: </a> }
|
||||
</span><span id="176" class="l"><a class="l" href="#176">176: </a>
|
||||
</span><span id="177" class="l"><a class="l" href="#177">177: </a> <span class="php-comment">// Check if appointment dates are valid.</span>
|
||||
</span><span id="178" class="l"><a class="l" href="#178">178: </a> <span class="php-keyword1">if</span> (!validate_mysql_datetime(<span class="php-var">$appointment_data</span>[<span class="php-quote">'start_datetime'</span>])) {
|
||||
</span><span id="179" class="l"><a class="l" href="#179">179: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment start datetime is invalid.'</span>);
|
||||
</span><span id="180" class="l"><a class="l" href="#180">180: </a> }
|
||||
</span><span id="181" class="l"><a class="l" href="#181">181: </a>
|
||||
</span><span id="182" class="l"><a class="l" href="#182">182: </a> <span class="php-keyword1">if</span> (!validate_mysql_datetime(<span class="php-var">$appointment_data</span>[<span class="php-quote">'end_datetime'</span>])) {
|
||||
</span><span id="183" class="l"><a class="l" href="#183">183: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment end datetime is invalid.'</span>);
|
||||
</span><span id="184" class="l"><a class="l" href="#184">184: </a> }
|
||||
</span><span id="185" class="l"><a class="l" href="#185">185: </a>
|
||||
</span><span id="186" class="l"><a class="l" href="#186">186: </a> <span class="php-comment">// Check if the provider's id is valid. </span>
|
||||
</span><span id="187" class="l"><a class="l" href="#187">187: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db
|
||||
</span><span id="188" class="l"><a class="l" href="#188">188: </a> ->select(<span class="php-quote">'*'</span>)
|
||||
</span><span id="189" class="l"><a class="l" href="#189">189: </a> ->from(<span class="php-quote">'ea_users'</span>)
|
||||
</span><span id="190" class="l"><a class="l" href="#190">190: </a> -><span class="php-keyword2">join</span>(<span class="php-quote">'ea_roles'</span>, <span class="php-quote">'ea_roles.id = ea_users.id_roles'</span>, <span class="php-quote">'inner'</span>)
|
||||
</span><span id="191" class="l"><a class="l" href="#191">191: </a> ->where(<span class="php-quote">'ea_users.id'</span>, <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_provider'</span>])
|
||||
</span><span id="192" class="l"><a class="l" href="#192">192: </a> ->where(<span class="php-quote">'ea_roles.slug'</span>, DB_SLUG_PROVIDER)
|
||||
</span><span id="193" class="l"><a class="l" href="#193">193: </a> ->get()->num_rows();
|
||||
</span><span id="194" class="l"><a class="l" href="#194">194: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="195" class="l"><a class="l" href="#195">195: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment provider id is invalid.'</span>);
|
||||
</span><span id="196" class="l"><a class="l" href="#196">196: </a> }
|
||||
</span><span id="197" class="l"><a class="l" href="#197">197: </a>
|
||||
</span><span id="198" class="l"><a class="l" href="#198">198: </a> <span class="php-comment">// Check if the customer's id is valid.</span>
|
||||
</span><span id="199" class="l"><a class="l" href="#199">199: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db
|
||||
</span><span id="200" class="l"><a class="l" href="#200">200: </a> ->select(<span class="php-quote">'*'</span>)
|
||||
</span><span id="201" class="l"><a class="l" href="#201">201: </a> ->from(<span class="php-quote">'ea_users'</span>)
|
||||
</span><span id="202" class="l"><a class="l" href="#202">202: </a> -><span class="php-keyword2">join</span>(<span class="php-quote">'ea_roles'</span>, <span class="php-quote">'ea_roles.id = ea_users.id_roles'</span>, <span class="php-quote">'inner'</span>)
|
||||
</span><span id="203" class="l"><a class="l" href="#203">203: </a> ->where(<span class="php-quote">'ea_users.id'</span>, <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_users_customer'</span>])
|
||||
</span><span id="204" class="l"><a class="l" href="#204">204: </a> ->where(<span class="php-quote">'ea_roles.slug'</span>, DB_SLUG_CUSTOMER)
|
||||
</span><span id="205" class="l"><a class="l" href="#205">205: </a> ->get()->num_rows();
|
||||
</span><span id="206" class="l"><a class="l" href="#206">206: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="207" class="l"><a class="l" href="#207">207: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment customer id is invalid.'</span>);
|
||||
</span><span id="208" class="l"><a class="l" href="#208">208: </a> }
|
||||
</span><span id="209" class="l"><a class="l" href="#209">209: </a>
|
||||
</span><span id="210" class="l"><a class="l" href="#210">210: </a> <span class="php-comment">// Check if the service id is valid.</span>
|
||||
</span><span id="211" class="l"><a class="l" href="#211">211: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_services'</span>,
|
||||
</span><span id="212" class="l"><a class="l" href="#212">212: </a> <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_data</span>[<span class="php-quote">'id_services'</span>]))->num_rows();
|
||||
</span><span id="213" class="l"><a class="l" href="#213">213: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="214" class="l"><a class="l" href="#214">214: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Appointment customer id is invalid.'</span>);
|
||||
</span><span id="215" class="l"><a class="l" href="#215">215: </a> }
|
||||
</span><span id="216" class="l"><a class="l" href="#216">216: </a>
|
||||
</span><span id="217" class="l"><a class="l" href="#217">217: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">TRUE</span>;
|
||||
</span><span id="218" class="l"><a class="l" href="#218">218: </a> } <span class="php-keyword1">catch</span> (Exception <span class="php-var">$exc</span>) {
|
||||
</span><span id="219" class="l"><a class="l" href="#219">219: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">FALSE</span>;
|
||||
</span><span id="220" class="l"><a class="l" href="#220">220: </a> }
|
||||
</span><span id="221" class="l"><a class="l" href="#221">221: </a> }
|
||||
</span><span id="222" class="l"><a class="l" href="#222">222: </a>
|
||||
</span><span id="223" class="l"><a class="l" href="#223">223: </a> <span class="php-comment">/**
|
||||
</span></span><span id="224" class="l"><a class="l" href="#224">224: </a><span class="php-comment"> * Delete an existing appointment record from the database.
|
||||
</span></span><span id="225" class="l"><a class="l" href="#225">225: </a><span class="php-comment"> *
|
||||
</span></span><span id="226" class="l"><a class="l" href="#226">226: </a><span class="php-comment"> * @expectedException InvalidArgumentException Raises when the $appointment_id
|
||||
</span></span><span id="227" class="l"><a class="l" href="#227">227: </a><span class="php-comment"> * is not an integer.
|
||||
</span></span><span id="228" class="l"><a class="l" href="#228">228: </a><span class="php-comment"> *
|
||||
</span></span><span id="229" class="l"><a class="l" href="#229">229: </a><span class="php-comment"> * @param int $appointment_id The record id to be deleted.
|
||||
</span></span><span id="230" class="l"><a class="l" href="#230">230: </a><span class="php-comment"> * @return bool Returns the delete operation result.
|
||||
</span></span><span id="231" class="l"><a class="l" href="#231">231: </a><span class="php-comment"> */</span>
|
||||
</span><span id="232" class="l"><a class="l" href="#232">232: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">delete</span>(<span class="php-var">$appointment_id</span>) {
|
||||
</span><span id="233" class="l"><a class="l" href="#233">233: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$appointment_id</span>)) {
|
||||
</span><span id="234" class="l"><a class="l" href="#234">234: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument type $appointment_id : '</span>
|
||||
</span><span id="235" class="l"><a class="l" href="#235">235: </a> . <span class="php-var">$appointment_id</span>);
|
||||
</span><span id="236" class="l"><a class="l" href="#236">236: </a> }
|
||||
</span><span id="237" class="l"><a class="l" href="#237">237: </a>
|
||||
</span><span id="238" class="l"><a class="l" href="#238">238: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>,
|
||||
</span><span id="239" class="l"><a class="l" href="#239">239: </a> <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_id</span>))->num_rows();
|
||||
</span><span id="240" class="l"><a class="l" href="#240">240: </a>
|
||||
</span><span id="241" class="l"><a class="l" href="#241">241: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="242" class="l"><a class="l" href="#242">242: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">FALSE</span>; <span class="php-comment">// Record does not exist.</span>
|
||||
</span><span id="243" class="l"><a class="l" href="#243">243: </a> }
|
||||
</span><span id="244" class="l"><a class="l" href="#244">244: </a>
|
||||
</span><span id="245" class="l"><a class="l" href="#245">245: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id'</span>, <span class="php-var">$appointment_id</span>);
|
||||
</span><span id="246" class="l"><a class="l" href="#246">246: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db-><span class="php-keyword2">delete</span>(<span class="php-quote">'ea_appointments'</span>);
|
||||
</span><span id="247" class="l"><a class="l" href="#247">247: </a> }
|
||||
</span><span id="248" class="l"><a class="l" href="#248">248: </a>
|
||||
</span><span id="249" class="l"><a class="l" href="#249">249: </a> <span class="php-comment">/**
|
||||
</span></span><span id="250" class="l"><a class="l" href="#250">250: </a><span class="php-comment"> * Get a specific row from the appointments table.
|
||||
</span></span><span id="251" class="l"><a class="l" href="#251">251: </a><span class="php-comment"> *
|
||||
</span></span><span id="252" class="l"><a class="l" href="#252">252: </a><span class="php-comment"> * @param int $appointment_id The record's id to be returned.
|
||||
</span></span><span id="253" class="l"><a class="l" href="#253">253: </a><span class="php-comment"> * @return array Returns an associative array with the selected
|
||||
</span></span><span id="254" class="l"><a class="l" href="#254">254: </a><span class="php-comment"> * record's data. Each key has the same name as the database
|
||||
</span></span><span id="255" class="l"><a class="l" href="#255">255: </a><span class="php-comment"> * field names.
|
||||
</span></span><span id="256" class="l"><a class="l" href="#256">256: </a><span class="php-comment"> */</span>
|
||||
</span><span id="257" class="l"><a class="l" href="#257">257: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_row" href="#_get_row">get_row</a>(<span class="php-var">$appointment_id</span>) {
|
||||
</span><span id="258" class="l"><a class="l" href="#258">258: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$appointment_id</span>)) {
|
||||
</span><span id="259" class="l"><a class="l" href="#259">259: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument given. Expected '</span>
|
||||
</span><span id="260" class="l"><a class="l" href="#260">260: </a> . <span class="php-quote">'integer for the $appointment_id : '</span> . <span class="php-var">$appointment_id</span>);
|
||||
</span><span id="261" class="l"><a class="l" href="#261">261: </a> }
|
||||
</span><span id="262" class="l"><a class="l" href="#262">262: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>,
|
||||
</span><span id="263" class="l"><a class="l" href="#263">263: </a> <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_id</span>))->row_array();
|
||||
</span><span id="264" class="l"><a class="l" href="#264">264: </a> }
|
||||
</span><span id="265" class="l"><a class="l" href="#265">265: </a>
|
||||
</span><span id="266" class="l"><a class="l" href="#266">266: </a> <span class="php-comment">/**
|
||||
</span></span><span id="267" class="l"><a class="l" href="#267">267: </a><span class="php-comment"> * Get a specific field value from the database.
|
||||
</span></span><span id="268" class="l"><a class="l" href="#268">268: </a><span class="php-comment"> *
|
||||
</span></span><span id="269" class="l"><a class="l" href="#269">269: </a><span class="php-comment"> * @param string $field_name The field name of the value to be returned.
|
||||
</span></span><span id="270" class="l"><a class="l" href="#270">270: </a><span class="php-comment"> * @param int $appointment_id The selected record's id.
|
||||
</span></span><span id="271" class="l"><a class="l" href="#271">271: </a><span class="php-comment"> * @return string Returns the records value from the database.
|
||||
</span></span><span id="272" class="l"><a class="l" href="#272">272: </a><span class="php-comment"> */</span>
|
||||
</span><span id="273" class="l"><a class="l" href="#273">273: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_value" href="#_get_value">get_value</a>(<span class="php-var">$field_name</span>, <span class="php-var">$appointment_id</span>) {
|
||||
</span><span id="274" class="l"><a class="l" href="#274">274: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$appointment_id</span>)) {
|
||||
</span><span id="275" class="l"><a class="l" href="#275">275: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument given, expected '</span>
|
||||
</span><span id="276" class="l"><a class="l" href="#276">276: </a> . <span class="php-quote">'integer for the $appointment_id : '</span> . <span class="php-var">$appointment_id</span>);
|
||||
</span><span id="277" class="l"><a class="l" href="#277">277: </a> }
|
||||
</span><span id="278" class="l"><a class="l" href="#278">278: </a>
|
||||
</span><span id="279" class="l"><a class="l" href="#279">279: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_string</span>(<span class="php-var">$field_name</span>)) {
|
||||
</span><span id="280" class="l"><a class="l" href="#280">280: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument given, expected '</span>
|
||||
</span><span id="281" class="l"><a class="l" href="#281">281: </a> . <span class="php-quote">'string for the $field_name : '</span> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="282" class="l"><a class="l" href="#282">282: </a> }
|
||||
</span><span id="283" class="l"><a class="l" href="#283">283: </a>
|
||||
</span><span id="284" class="l"><a class="l" href="#284">284: </a> <span class="php-keyword1">if</span> (<span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>,
|
||||
</span><span id="285" class="l"><a class="l" href="#285">285: </a> <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_id</span>))->num_rows() == <span class="php-num">0</span>) {
|
||||
</span><span id="286" class="l"><a class="l" href="#286">286: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The record with the provided id '</span>
|
||||
</span><span id="287" class="l"><a class="l" href="#287">287: </a> . <span class="php-quote">'does not exist in the database : '</span> . <span class="php-var">$appointment_id</span>);
|
||||
</span><span id="288" class="l"><a class="l" href="#288">288: </a> }
|
||||
</span><span id="289" class="l"><a class="l" href="#289">289: </a>
|
||||
</span><span id="290" class="l"><a class="l" href="#290">290: </a> <span class="php-var">$row_data</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_appointments'</span>,
|
||||
</span><span id="291" class="l"><a class="l" href="#291">291: </a> <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$appointment_id</span>))->row_array();
|
||||
</span><span id="292" class="l"><a class="l" href="#292">292: </a>
|
||||
</span><span id="293" class="l"><a class="l" href="#293">293: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$row_data</span>[<span class="php-var">$field_name</span>])) {
|
||||
</span><span id="294" class="l"><a class="l" href="#294">294: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The given field name does not '</span>
|
||||
</span><span id="295" class="l"><a class="l" href="#295">295: </a> . <span class="php-quote">'exist in the database : '</span> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="296" class="l"><a class="l" href="#296">296: </a> }
|
||||
</span><span id="297" class="l"><a class="l" href="#297">297: </a>
|
||||
</span><span id="298" class="l"><a class="l" href="#298">298: </a> <span class="php-keyword1">return</span> <span class="php-var">$row_data</span>[<span class="php-var">$field_name</span>];
|
||||
</span><span id="299" class="l"><a class="l" href="#299">299: </a> }
|
||||
</span><span id="300" class="l"><a class="l" href="#300">300: </a>
|
||||
</span><span id="301" class="l"><a class="l" href="#301">301: </a> <span class="php-comment">/**
|
||||
</span></span><span id="302" class="l"><a class="l" href="#302">302: </a><span class="php-comment"> * Get all, or specific records from appointment's table.
|
||||
</span></span><span id="303" class="l"><a class="l" href="#303">303: </a><span class="php-comment"> *
|
||||
</span></span><span id="304" class="l"><a class="l" href="#304">304: </a><span class="php-comment"> * @example $this->Model->getBatch('id = ' . $recordId);
|
||||
</span></span><span id="305" class="l"><a class="l" href="#305">305: </a><span class="php-comment"> *
|
||||
</span></span><span id="306" class="l"><a class="l" href="#306">306: </a><span class="php-comment"> * @param string $where_clause (OPTIONAL) The WHERE clause of
|
||||
</span></span><span id="307" class="l"><a class="l" href="#307">307: </a><span class="php-comment"> * the query to be executed. DO NOT INCLUDE 'WHERE' KEYWORD.
|
||||
</span></span><span id="308" class="l"><a class="l" href="#308">308: </a><span class="php-comment"> * @return array Returns the rows from the database.
|
||||
</span></span><span id="309" class="l"><a class="l" href="#309">309: </a><span class="php-comment"> */</span>
|
||||
</span><span id="310" class="l"><a class="l" href="#310">310: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_batch" href="#_get_batch">get_batch</a>(<span class="php-var">$where_clause</span> = <span class="php-quote">''</span>) {
|
||||
</span><span id="311" class="l"><a class="l" href="#311">311: </a> <span class="php-keyword1">if</span> (<span class="php-var">$where_clause</span> != <span class="php-quote">''</span>) {
|
||||
</span><span id="312" class="l"><a class="l" href="#312">312: </a> <span class="php-var">$this</span>->db->where(<span class="php-var">$where_clause</span>);
|
||||
</span><span id="313" class="l"><a class="l" href="#313">313: </a> }
|
||||
</span><span id="314" class="l"><a class="l" href="#314">314: </a>
|
||||
</span><span id="315" class="l"><a class="l" href="#315">315: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get(<span class="php-quote">'ea_appointments'</span>)->result_array();
|
||||
</span><span id="316" class="l"><a class="l" href="#316">316: </a> }
|
||||
</span><span id="317" class="l"><a class="l" href="#317">317: </a>
|
||||
</span><span id="318" class="l"><a class="l" href="#318">318: </a> <span class="php-comment">/**
|
||||
</span></span><span id="319" class="l"><a class="l" href="#319">319: </a><span class="php-comment"> * Generate a unique hash for the given appointment data.
|
||||
</span></span><span id="320" class="l"><a class="l" href="#320">320: </a><span class="php-comment"> *
|
||||
</span></span><span id="321" class="l"><a class="l" href="#321">321: </a><span class="php-comment"> * This method uses the current date-time to generate a unique
|
||||
</span></span><span id="322" class="l"><a class="l" href="#322">322: </a><span class="php-comment"> * hash string that is later used to identify this appointment.
|
||||
</span></span><span id="323" class="l"><a class="l" href="#323">323: </a><span class="php-comment"> * Hash is needed when the email is send to the user with an
|
||||
</span></span><span id="324" class="l"><a class="l" href="#324">324: </a><span class="php-comment"> * edit link.
|
||||
</span></span><span id="325" class="l"><a class="l" href="#325">325: </a><span class="php-comment"> *
|
||||
</span></span><span id="326" class="l"><a class="l" href="#326">326: </a><span class="php-comment"> * @return string Returns the unique appointment hash.
|
||||
</span></span><span id="327" class="l"><a class="l" href="#327">327: </a><span class="php-comment"> */</span>
|
||||
</span><span id="328" class="l"><a class="l" href="#328">328: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_generate_hash" href="#_generate_hash">generate_hash</a>() {
|
||||
</span><span id="329" class="l"><a class="l" href="#329">329: </a> <span class="php-var">$current_date</span> = <span class="php-keyword1">new</span> DateTime();
|
||||
</span><span id="330" class="l"><a class="l" href="#330">330: </a> <span class="php-keyword1">return</span> <span class="php-keyword2">md5</span>(<span class="php-var">$current_date</span>->getTimestamp());
|
||||
</span><span id="331" class="l"><a class="l" href="#331">331: </a> }
|
||||
</span><span id="332" class="l"><a class="l" href="#332">332: </a>}
|
||||
</span><span id="333" class="l"><a class="l" href="#333">333: </a>
|
||||
</span><span id="334" class="l"><a class="l" href="#334">334: </a><span class="php-comment">/* End of file appointments_model.php */</span>
|
||||
</span><span id="335" class="l"><a class="l" href="#335">335: </a></span><span class="php-comment">/* Location: ./application/models/appointments_model.php */</span></code></pre>
|
||||
|
||||
<div id="footer">
|
||||
API documentation generated by <a href="http://apigen.org">ApiGen 2.8.0</a>
|
||||
|
|
|
@ -100,15 +100,15 @@
|
|||
</span></span><span id="23" class="l"><a class="l" href="#23"> 23: </a><span class="php-comment"> * @return int Returns the customer id.
|
||||
</span></span><span id="24" class="l"><a class="l" href="#24"> 24: </a><span class="php-comment"> */</span>
|
||||
</span><span id="25" class="l"><a class="l" href="#25"> 25: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_add" href="#_add">add</a>(<span class="php-var">$customer_data</span>) {
|
||||
</span><span id="26" class="l"><a class="l" href="#26"> 26: </a> <span class="php-comment">// Validate the appointment data before doing anything.</span>
|
||||
</span><span id="26" class="l"><a class="l" href="#26"> 26: </a> <span class="php-comment">// Validate the customer data before doing anything.</span>
|
||||
</span><span id="27" class="l"><a class="l" href="#27"> 27: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->validate_data(<span class="php-var">$customer_data</span>)) {
|
||||
</span><span id="28" class="l"><a class="l" href="#28"> 28: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> ValidationException(<span class="php-quote">'Customer data are not valid.'</span>);
|
||||
</span><span id="29" class="l"><a class="l" href="#29"> 29: </a> }
|
||||
</span><span id="30" class="l"><a class="l" href="#30"> 30: </a>
|
||||
</span><span id="31" class="l"><a class="l" href="#31"> 31: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->exists(<span class="php-var">$customer_data</span>)) {
|
||||
</span><span id="31" class="l"><a class="l" href="#31"> 31: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>])) {
|
||||
</span><span id="32" class="l"><a class="l" href="#32"> 32: </a> <span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>] = <span class="php-var">$this</span>->insert(<span class="php-var">$customer_data</span>);
|
||||
</span><span id="33" class="l"><a class="l" href="#33"> 33: </a> } <span class="php-keyword1">else</span> {
|
||||
</span><span id="34" class="l"><a class="l" href="#34"> 34: </a> <span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>] = <span class="php-var">$this</span>->update(<span class="php-var">$customer_data</span>);
|
||||
</span><span id="34" class="l"><a class="l" href="#34"> 34: </a> <span class="php-var">$this</span>->update(<span class="php-var">$customer_data</span>);
|
||||
</span><span id="35" class="l"><a class="l" href="#35"> 35: </a> }
|
||||
</span><span id="36" class="l"><a class="l" href="#36"> 36: </a>
|
||||
</span><span id="37" class="l"><a class="l" href="#37"> 37: </a> <span class="php-keyword1">return</span> <span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>];
|
||||
|
@ -180,187 +180,201 @@
|
|||
</span></span><span id="103" class="l"><a class="l" href="#103">103: </a><span class="php-comment"> * data. Each key has the same name with the database fields.
|
||||
</span></span><span id="104" class="l"><a class="l" href="#104">104: </a><span class="php-comment"> * @return int Returns the updated record id.
|
||||
</span></span><span id="105" class="l"><a class="l" href="#105">105: </a><span class="php-comment"> */</span>
|
||||
</span><span id="106" class="l"><a class="l" href="#106">106: </a> <span class="php-keyword1">private</span> <span class="php-keyword1">function</span> <a id="_update" href="#_update">update</a>(<span class="php-var">$customer_data</span>) {
|
||||
</span><span id="107" class="l"><a class="l" href="#107">107: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>])) {
|
||||
</span><span id="108" class="l"><a class="l" href="#108">108: </a> <span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>] = <span class="php-var">$this</span>->find_record_id(<span class="php-var">$customer_data</span>);
|
||||
</span><span id="109" class="l"><a class="l" href="#109">109: </a> }
|
||||
</span><span id="110" class="l"><a class="l" href="#110">110: </a>
|
||||
</span><span id="111" class="l"><a class="l" href="#111">111: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id'</span>, <span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>]);
|
||||
</span><span id="112" class="l"><a class="l" href="#112">112: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->db->update(<span class="php-quote">'ea_users'</span>, <span class="php-var">$customer_data</span>)) {
|
||||
</span><span id="113" class="l"><a class="l" href="#113">113: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> DatabaseException(<span class="php-quote">'Could not update customer to the database.'</span>);
|
||||
</span><span id="114" class="l"><a class="l" href="#114">114: </a> }
|
||||
</span><span id="115" class="l"><a class="l" href="#115">115: </a>
|
||||
</span><span id="116" class="l"><a class="l" href="#116">116: </a> <span class="php-keyword1">return</span> <span class="php-keyword2">intval</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>]);
|
||||
</span><span id="117" class="l"><a class="l" href="#117">117: </a> }
|
||||
</span><span id="118" class="l"><a class="l" href="#118">118: </a>
|
||||
</span><span id="119" class="l"><a class="l" href="#119">119: </a> <span class="php-comment">/**
|
||||
</span></span><span id="120" class="l"><a class="l" href="#120">120: </a><span class="php-comment"> * Find the database id of a customer record.
|
||||
</span></span><span id="121" class="l"><a class="l" href="#121">121: </a><span class="php-comment"> *
|
||||
</span></span><span id="122" class="l"><a class="l" href="#122">122: </a><span class="php-comment"> * The customer data should include the following fields in order to
|
||||
</span></span><span id="123" class="l"><a class="l" href="#123">123: </a><span class="php-comment"> * get the unique id from the database: "email"
|
||||
</span></span><span id="124" class="l"><a class="l" href="#124">124: </a><span class="php-comment"> *
|
||||
</span></span><span id="125" class="l"><a class="l" href="#125">125: </a><span class="php-comment"> * <strong>IMPORTANT!</strong> The record must already exists in the
|
||||
</span></span><span id="126" class="l"><a class="l" href="#126">126: </a><span class="php-comment"> * database, otherwise an exception is raised.
|
||||
</span></span><span id="127" class="l"><a class="l" href="#127">127: </a><span class="php-comment"> *
|
||||
</span></span><span id="128" class="l"><a class="l" href="#128">128: </a><span class="php-comment"> * @expectedException DatabaseException When the record is not found.
|
||||
</span></span><span id="129" class="l"><a class="l" href="#129">129: </a><span class="php-comment"> *
|
||||
</span></span><span id="130" class="l"><a class="l" href="#130">130: </a><span class="php-comment"> * @param array $customer_data Array with the customer data. The
|
||||
</span></span><span id="131" class="l"><a class="l" href="#131">131: </a><span class="php-comment"> * keys of the array should have the same names as the db fields.
|
||||
</span></span><span id="132" class="l"><a class="l" href="#132">132: </a><span class="php-comment"> * @return int Returns the id.
|
||||
</span></span><span id="133" class="l"><a class="l" href="#133">133: </a><span class="php-comment"> */</span>
|
||||
</span><span id="134" class="l"><a class="l" href="#134">134: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_find_record_id" href="#_find_record_id">find_record_id</a>(<span class="php-var">$customer_data</span>) {
|
||||
</span><span id="135" class="l"><a class="l" href="#135">135: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'email'</span>])) {
|
||||
</span><span id="136" class="l"><a class="l" href="#136">136: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Customer\'s email was not provided : '</span>
|
||||
</span><span id="137" class="l"><a class="l" href="#137">137: </a> . <span class="php-keyword2">print_r</span>(<span class="php-var">$customer_data</span>, <span class="php-keyword1">TRUE</span>));
|
||||
</span><span id="138" class="l"><a class="l" href="#138">138: </a> }
|
||||
</span><span id="139" class="l"><a class="l" href="#139">139: </a>
|
||||
</span><span id="140" class="l"><a class="l" href="#140">140: </a> <span class="php-comment">// Get customer's role id</span>
|
||||
</span><span id="141" class="l"><a class="l" href="#141">141: </a> <span class="php-var">$result</span> = <span class="php-var">$this</span>->db
|
||||
</span><span id="142" class="l"><a class="l" href="#142">142: </a> ->select(<span class="php-quote">'ea_users.id'</span>)
|
||||
</span><span id="143" class="l"><a class="l" href="#143">143: </a> ->from(<span class="php-quote">'ea_users'</span>)
|
||||
</span><span id="144" class="l"><a class="l" href="#144">144: </a> -><span class="php-keyword2">join</span>(<span class="php-quote">'ea_roles'</span>, <span class="php-quote">'ea_roles.id = ea_users.id_roles'</span>, <span class="php-quote">'inner'</span>)
|
||||
</span><span id="145" class="l"><a class="l" href="#145">145: </a> ->where(<span class="php-quote">'ea_users.email'</span>, <span class="php-var">$customer_data</span>[<span class="php-quote">'email'</span>])
|
||||
</span><span id="146" class="l"><a class="l" href="#146">146: </a> ->where(<span class="php-quote">'ea_roles.slug'</span>, DB_SLUG_CUSTOMER)
|
||||
</span><span id="147" class="l"><a class="l" href="#147">147: </a> ->get();
|
||||
</span><span id="106" class="l"><a class="l" href="#106">106: </a> <span class="php-keyword1">private</span> <span class="php-keyword1">function</span> <a id="_update" href="#_update">update</a>(<span class="php-var">$customer_data</span>) {
|
||||
</span><span id="107" class="l"><a class="l" href="#107">107: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id'</span>, <span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>]);
|
||||
</span><span id="108" class="l"><a class="l" href="#108">108: </a> <span class="php-keyword1">if</span> (!<span class="php-var">$this</span>->db->update(<span class="php-quote">'ea_users'</span>, <span class="php-var">$customer_data</span>)) {
|
||||
</span><span id="109" class="l"><a class="l" href="#109">109: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> DatabaseException(<span class="php-quote">'Could not update customer to the database.'</span>);
|
||||
</span><span id="110" class="l"><a class="l" href="#110">110: </a> }
|
||||
</span><span id="111" class="l"><a class="l" href="#111">111: </a>
|
||||
</span><span id="112" class="l"><a class="l" href="#112">112: </a> <span class="php-keyword1">return</span> <span class="php-keyword2">intval</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>]);
|
||||
</span><span id="113" class="l"><a class="l" href="#113">113: </a> }
|
||||
</span><span id="114" class="l"><a class="l" href="#114">114: </a>
|
||||
</span><span id="115" class="l"><a class="l" href="#115">115: </a> <span class="php-comment">/**
|
||||
</span></span><span id="116" class="l"><a class="l" href="#116">116: </a><span class="php-comment"> * Find the database id of a customer record.
|
||||
</span></span><span id="117" class="l"><a class="l" href="#117">117: </a><span class="php-comment"> *
|
||||
</span></span><span id="118" class="l"><a class="l" href="#118">118: </a><span class="php-comment"> * The customer data should include the following fields in order to
|
||||
</span></span><span id="119" class="l"><a class="l" href="#119">119: </a><span class="php-comment"> * get the unique id from the database: "email"
|
||||
</span></span><span id="120" class="l"><a class="l" href="#120">120: </a><span class="php-comment"> *
|
||||
</span></span><span id="121" class="l"><a class="l" href="#121">121: </a><span class="php-comment"> * <strong>IMPORTANT!</strong> The record must already exists in the
|
||||
</span></span><span id="122" class="l"><a class="l" href="#122">122: </a><span class="php-comment"> * database, otherwise an exception is raised.
|
||||
</span></span><span id="123" class="l"><a class="l" href="#123">123: </a><span class="php-comment"> *
|
||||
</span></span><span id="124" class="l"><a class="l" href="#124">124: </a><span class="php-comment"> * @expectedException DatabaseException When the record is not found.
|
||||
</span></span><span id="125" class="l"><a class="l" href="#125">125: </a><span class="php-comment"> *
|
||||
</span></span><span id="126" class="l"><a class="l" href="#126">126: </a><span class="php-comment"> * @param array $customer_data Array with the customer data. The
|
||||
</span></span><span id="127" class="l"><a class="l" href="#127">127: </a><span class="php-comment"> * keys of the array should have the same names as the db fields.
|
||||
</span></span><span id="128" class="l"><a class="l" href="#128">128: </a><span class="php-comment"> * @return int Returns the id.
|
||||
</span></span><span id="129" class="l"><a class="l" href="#129">129: </a><span class="php-comment"> */</span>
|
||||
</span><span id="130" class="l"><a class="l" href="#130">130: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_find_record_id" href="#_find_record_id">find_record_id</a>(<span class="php-var">$customer_data</span>) {
|
||||
</span><span id="131" class="l"><a class="l" href="#131">131: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'email'</span>])) {
|
||||
</span><span id="132" class="l"><a class="l" href="#132">132: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Customer\'s email was not provided : '</span>
|
||||
</span><span id="133" class="l"><a class="l" href="#133">133: </a> . <span class="php-keyword2">print_r</span>(<span class="php-var">$customer_data</span>, <span class="php-keyword1">TRUE</span>));
|
||||
</span><span id="134" class="l"><a class="l" href="#134">134: </a> }
|
||||
</span><span id="135" class="l"><a class="l" href="#135">135: </a>
|
||||
</span><span id="136" class="l"><a class="l" href="#136">136: </a> <span class="php-comment">// Get customer's role id</span>
|
||||
</span><span id="137" class="l"><a class="l" href="#137">137: </a> <span class="php-var">$result</span> = <span class="php-var">$this</span>->db
|
||||
</span><span id="138" class="l"><a class="l" href="#138">138: </a> ->select(<span class="php-quote">'ea_users.id'</span>)
|
||||
</span><span id="139" class="l"><a class="l" href="#139">139: </a> ->from(<span class="php-quote">'ea_users'</span>)
|
||||
</span><span id="140" class="l"><a class="l" href="#140">140: </a> -><span class="php-keyword2">join</span>(<span class="php-quote">'ea_roles'</span>, <span class="php-quote">'ea_roles.id = ea_users.id_roles'</span>, <span class="php-quote">'inner'</span>)
|
||||
</span><span id="141" class="l"><a class="l" href="#141">141: </a> ->where(<span class="php-quote">'ea_users.email'</span>, <span class="php-var">$customer_data</span>[<span class="php-quote">'email'</span>])
|
||||
</span><span id="142" class="l"><a class="l" href="#142">142: </a> ->where(<span class="php-quote">'ea_roles.slug'</span>, DB_SLUG_CUSTOMER)
|
||||
</span><span id="143" class="l"><a class="l" href="#143">143: </a> ->get();
|
||||
</span><span id="144" class="l"><a class="l" href="#144">144: </a>
|
||||
</span><span id="145" class="l"><a class="l" href="#145">145: </a> <span class="php-keyword1">if</span> (<span class="php-var">$result</span>->num_rows() == <span class="php-num">0</span>) {
|
||||
</span><span id="146" class="l"><a class="l" href="#146">146: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> DatabaseException(<span class="php-quote">'Could not find appointment record id.'</span>);
|
||||
</span><span id="147" class="l"><a class="l" href="#147">147: </a> }
|
||||
</span><span id="148" class="l"><a class="l" href="#148">148: </a>
|
||||
</span><span id="149" class="l"><a class="l" href="#149">149: </a> <span class="php-keyword1">if</span> (<span class="php-var">$result</span>->num_rows() == <span class="php-num">0</span>) {
|
||||
</span><span id="150" class="l"><a class="l" href="#150">150: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> DatabaseException(<span class="php-quote">'Could not find appointment record id.'</span>);
|
||||
</span><span id="151" class="l"><a class="l" href="#151">151: </a> }
|
||||
</span><span id="152" class="l"><a class="l" href="#152">152: </a>
|
||||
</span><span id="153" class="l"><a class="l" href="#153">153: </a> <span class="php-keyword1">return</span> <span class="php-var">$result</span>->row()->id;
|
||||
</span><span id="154" class="l"><a class="l" href="#154">154: </a> }
|
||||
</span><span id="155" class="l"><a class="l" href="#155">155: </a>
|
||||
</span><span id="156" class="l"><a class="l" href="#156">156: </a> <span class="php-comment">/**
|
||||
</span></span><span id="157" class="l"><a class="l" href="#157">157: </a><span class="php-comment"> * Validate customer data before the insert or
|
||||
</span></span><span id="158" class="l"><a class="l" href="#158">158: </a><span class="php-comment"> * update operation is executed.
|
||||
</span></span><span id="159" class="l"><a class="l" href="#159">159: </a><span class="php-comment"> *
|
||||
</span></span><span id="160" class="l"><a class="l" href="#160">160: </a><span class="php-comment"> * @param array $customer_data Contains the customer data.
|
||||
</span></span><span id="161" class="l"><a class="l" href="#161">161: </a><span class="php-comment"> * @return bool Returns the validation result.
|
||||
</span></span><span id="162" class="l"><a class="l" href="#162">162: </a><span class="php-comment"> */</span>
|
||||
</span><span id="163" class="l"><a class="l" href="#163">163: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_validate_data" href="#_validate_data">validate_data</a>(<span class="php-var">$customer_data</span>) {
|
||||
</span><span id="164" class="l"><a class="l" href="#164">164: </a> <span class="php-var">$this</span>->load->helper(<span class="php-quote">'data_validation'</span>);
|
||||
</span><span id="165" class="l"><a class="l" href="#165">165: </a>
|
||||
</span><span id="166" class="l"><a class="l" href="#166">166: </a> <span class="php-keyword1">try</span> {
|
||||
</span><span id="167" class="l"><a class="l" href="#167">167: </a> <span class="php-comment">// Validate required fields</span>
|
||||
</span><span id="168" class="l"><a class="l" href="#168">168: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'last_name'</span>])
|
||||
</span><span id="169" class="l"><a class="l" href="#169">169: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'email'</span>])
|
||||
</span><span id="170" class="l"><a class="l" href="#170">170: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'phone_number'</span>])) {
|
||||
</span><span id="171" class="l"><a class="l" href="#171">171: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Not all required fields are provided : '</span>
|
||||
</span><span id="172" class="l"><a class="l" href="#172">172: </a> . <span class="php-keyword2">print_r</span>(<span class="php-var">$customer_data</span>, <span class="php-keyword1">TRUE</span>));
|
||||
</span><span id="173" class="l"><a class="l" href="#173">173: </a> }
|
||||
</span><span id="174" class="l"><a class="l" href="#174">174: </a>
|
||||
</span><span id="175" class="l"><a class="l" href="#175">175: </a> <span class="php-comment">// Validate email address</span>
|
||||
</span><span id="176" class="l"><a class="l" href="#176">176: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">filter_var</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'email'</span>], FILTER_VALIDATE_EMAIL)) {
|
||||
</span><span id="177" class="l"><a class="l" href="#177">177: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Invalid email address provided : '</span> . <span class="php-var">$customer_data</span>[<span class="php-quote">'email'</span>]);
|
||||
</span><span id="178" class="l"><a class="l" href="#178">178: </a> }
|
||||
</span><span id="179" class="l"><a class="l" href="#179">179: </a>
|
||||
</span><span id="180" class="l"><a class="l" href="#180">180: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">TRUE</span>;
|
||||
</span><span id="181" class="l"><a class="l" href="#181">181: </a> } <span class="php-keyword1">catch</span> (Exception <span class="php-var">$exc</span>) {
|
||||
</span><span id="182" class="l"><a class="l" href="#182">182: </a> <span class="php-keyword1">echo</span> <span class="php-var">$exc</span>->getMessage();
|
||||
</span><span id="183" class="l"><a class="l" href="#183">183: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">FALSE</span>;
|
||||
</span><span id="184" class="l"><a class="l" href="#184">184: </a> }
|
||||
</span><span id="185" class="l"><a class="l" href="#185">185: </a> }
|
||||
</span><span id="186" class="l"><a class="l" href="#186">186: </a>
|
||||
</span><span id="187" class="l"><a class="l" href="#187">187: </a> <span class="php-comment">/**
|
||||
</span></span><span id="188" class="l"><a class="l" href="#188">188: </a><span class="php-comment"> * Delete an existing customer record from the database.
|
||||
</span></span><span id="189" class="l"><a class="l" href="#189">189: </a><span class="php-comment"> *
|
||||
</span></span><span id="190" class="l"><a class="l" href="#190">190: </a><span class="php-comment"> * @expectedException InvalidArgumentException Raises when
|
||||
</span></span><span id="191" class="l"><a class="l" href="#191">191: </a><span class="php-comment"> * the $customer_id is not an integer.
|
||||
</span></span><span id="192" class="l"><a class="l" href="#192">192: </a><span class="php-comment"> *
|
||||
</span></span><span id="193" class="l"><a class="l" href="#193">193: </a><span class="php-comment"> * @param int $customer_id The record id to be deleted.
|
||||
</span></span><span id="194" class="l"><a class="l" href="#194">194: </a><span class="php-comment"> * @return bool Returns the delete operation result.
|
||||
</span></span><span id="195" class="l"><a class="l" href="#195">195: </a><span class="php-comment"> */</span>
|
||||
</span><span id="196" class="l"><a class="l" href="#196">196: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">delete</span>(<span class="php-var">$customer_id</span>) {
|
||||
</span><span id="197" class="l"><a class="l" href="#197">197: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$customer_id</span>)) {
|
||||
</span><span id="198" class="l"><a class="l" href="#198">198: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument type $customer_id : '</span> . <span class="php-var">$customer_id</span>);
|
||||
</span><span id="199" class="l"><a class="l" href="#199">199: </a> }
|
||||
</span><span id="200" class="l"><a class="l" href="#200">200: </a>
|
||||
</span><span id="201" class="l"><a class="l" href="#201">201: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_id</span>))->num_rows();
|
||||
</span><span id="202" class="l"><a class="l" href="#202">202: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="203" class="l"><a class="l" href="#203">203: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">FALSE</span>;
|
||||
</span><span id="204" class="l"><a class="l" href="#204">204: </a> }
|
||||
</span><span id="205" class="l"><a class="l" href="#205">205: </a>
|
||||
</span><span id="206" class="l"><a class="l" href="#206">206: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id'</span>, <span class="php-var">$customer_id</span>);
|
||||
</span><span id="207" class="l"><a class="l" href="#207">207: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db-><span class="php-keyword2">delete</span>(<span class="php-quote">'ea_users'</span>);
|
||||
</span><span id="208" class="l"><a class="l" href="#208">208: </a> }
|
||||
</span><span id="209" class="l"><a class="l" href="#209">209: </a>
|
||||
</span><span id="210" class="l"><a class="l" href="#210">210: </a> <span class="php-comment">/**
|
||||
</span></span><span id="211" class="l"><a class="l" href="#211">211: </a><span class="php-comment"> * Get a specific row from the appointments table.
|
||||
</span></span><span id="212" class="l"><a class="l" href="#212">212: </a><span class="php-comment"> *
|
||||
</span></span><span id="213" class="l"><a class="l" href="#213">213: </a><span class="php-comment"> * @param int $customer_id The record's id to be returned.
|
||||
</span></span><span id="214" class="l"><a class="l" href="#214">214: </a><span class="php-comment"> * @return array Returns an associative array with the selected
|
||||
</span></span><span id="215" class="l"><a class="l" href="#215">215: </a><span class="php-comment"> * record's data. Each key has the same name as the database
|
||||
</span></span><span id="216" class="l"><a class="l" href="#216">216: </a><span class="php-comment"> * field names.
|
||||
</span></span><span id="217" class="l"><a class="l" href="#217">217: </a><span class="php-comment"> */</span>
|
||||
</span><span id="218" class="l"><a class="l" href="#218">218: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_row" href="#_get_row">get_row</a>(<span class="php-var">$customer_id</span>) {
|
||||
</span><span id="219" class="l"><a class="l" href="#219">219: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$customer_id</span>)) {
|
||||
</span><span id="220" class="l"><a class="l" href="#220">220: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument provided as $customer_id : '</span> . <span class="php-var">$customer_id</span>);
|
||||
</span><span id="221" class="l"><a class="l" href="#221">221: </a> }
|
||||
</span><span id="222" class="l"><a class="l" href="#222">222: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_id</span>))->row_array();
|
||||
</span><span id="223" class="l"><a class="l" href="#223">223: </a> }
|
||||
</span><span id="224" class="l"><a class="l" href="#224">224: </a>
|
||||
</span><span id="225" class="l"><a class="l" href="#225">225: </a> <span class="php-comment">/**
|
||||
</span></span><span id="226" class="l"><a class="l" href="#226">226: </a><span class="php-comment"> * Get a specific field value from the database.
|
||||
</span></span><span id="227" class="l"><a class="l" href="#227">227: </a><span class="php-comment"> *
|
||||
</span></span><span id="228" class="l"><a class="l" href="#228">228: </a><span class="php-comment"> * @param string $field_name The field name of the value to be
|
||||
</span></span><span id="229" class="l"><a class="l" href="#229">229: </a><span class="php-comment"> * returned.
|
||||
</span></span><span id="230" class="l"><a class="l" href="#230">230: </a><span class="php-comment"> * @param int $customer_id The selected record's id.
|
||||
</span></span><span id="231" class="l"><a class="l" href="#231">231: </a><span class="php-comment"> * @return string Returns the records value from the database.
|
||||
</span></span><span id="232" class="l"><a class="l" href="#232">232: </a><span class="php-comment"> */</span>
|
||||
</span><span id="233" class="l"><a class="l" href="#233">233: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_value" href="#_get_value">get_value</a>(<span class="php-var">$field_name</span>, <span class="php-var">$customer_id</span>) {
|
||||
</span><span id="234" class="l"><a class="l" href="#234">234: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$customer_id</span>)) {
|
||||
</span><span id="235" class="l"><a class="l" href="#235">235: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument provided as $customer_id : '</span> . <span class="php-var">$customer_id</span>);
|
||||
</span><span id="236" class="l"><a class="l" href="#236">236: </a> }
|
||||
</span><span id="237" class="l"><a class="l" href="#237">237: </a>
|
||||
</span><span id="238" class="l"><a class="l" href="#238">238: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_string</span>(<span class="php-var">$field_name</span>)) {
|
||||
</span><span id="239" class="l"><a class="l" href="#239">239: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'$field_name argument is not a string : '</span> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="240" class="l"><a class="l" href="#240">240: </a> }
|
||||
</span><span id="241" class="l"><a class="l" href="#241">241: </a>
|
||||
</span><span id="242" class="l"><a class="l" href="#242">242: </a> <span class="php-keyword1">if</span> (<span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_id</span>))->num_rows() == <span class="php-num">0</span>) {
|
||||
</span><span id="243" class="l"><a class="l" href="#243">243: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The record with the $customer_id argument does not exist in the database : '</span> . <span class="php-var">$customer_id</span>);
|
||||
</span><span id="244" class="l"><a class="l" href="#244">244: </a> }
|
||||
</span><span id="245" class="l"><a class="l" href="#245">245: </a>
|
||||
</span><span id="246" class="l"><a class="l" href="#246">246: </a> <span class="php-var">$row_data</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_id</span>))->row_array();
|
||||
</span><span id="247" class="l"><a class="l" href="#247">247: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$row_data</span>[<span class="php-var">$field_name</span>])) {
|
||||
</span><span id="248" class="l"><a class="l" href="#248">248: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The given $field_name argument does not exist in the database : '</span> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="249" class="l"><a class="l" href="#249">249: </a> }
|
||||
</span><span id="250" class="l"><a class="l" href="#250">250: </a>
|
||||
</span><span id="251" class="l"><a class="l" href="#251">251: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_id</span>))->row_array()[<span class="php-var">$field_name</span>];
|
||||
</span><span id="252" class="l"><a class="l" href="#252">252: </a> }
|
||||
</span><span id="253" class="l"><a class="l" href="#253">253: </a>
|
||||
</span><span id="254" class="l"><a class="l" href="#254">254: </a> <span class="php-comment">/**
|
||||
</span></span><span id="255" class="l"><a class="l" href="#255">255: </a><span class="php-comment"> * Get all, or specific records from appointment's table.
|
||||
</span></span><span id="256" class="l"><a class="l" href="#256">256: </a><span class="php-comment"> *
|
||||
</span></span><span id="257" class="l"><a class="l" href="#257">257: </a><span class="php-comment"> * @example $this->Model->getBatch('id = ' . $recordId);
|
||||
</span></span><span id="258" class="l"><a class="l" href="#258">258: </a><span class="php-comment"> *
|
||||
</span></span><span id="259" class="l"><a class="l" href="#259">259: </a><span class="php-comment"> * @param string $whereClause (OPTIONAL) The WHERE clause of
|
||||
</span></span><span id="260" class="l"><a class="l" href="#260">260: </a><span class="php-comment"> * the query to be executed. DO NOT INCLUDE 'WHERE' KEYWORD.
|
||||
</span></span><span id="261" class="l"><a class="l" href="#261">261: </a><span class="php-comment"> * @return array Returns the rows from the database.
|
||||
</span></span><span id="262" class="l"><a class="l" href="#262">262: </a><span class="php-comment"> */</span>
|
||||
</span><span id="263" class="l"><a class="l" href="#263">263: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_batch" href="#_get_batch">get_batch</a>(<span class="php-var">$where_clause</span> = <span class="php-quote">''</span>) {
|
||||
</span><span id="264" class="l"><a class="l" href="#264">264: </a> <span class="php-var">$customers_role_id</span> = <span class="php-var">$this</span>->get_customers_role_id();
|
||||
</span><span id="265" class="l"><a class="l" href="#265">265: </a>
|
||||
</span><span id="266" class="l"><a class="l" href="#266">266: </a> <span class="php-keyword1">if</span> (<span class="php-var">$where_clause</span> != <span class="php-quote">''</span>) {
|
||||
</span><span id="267" class="l"><a class="l" href="#267">267: </a> <span class="php-var">$this</span>->db->where(<span class="php-var">$where_clause</span>);
|
||||
</span><span id="268" class="l"><a class="l" href="#268">268: </a> }
|
||||
</span><span id="269" class="l"><a class="l" href="#269">269: </a>
|
||||
</span><span id="270" class="l"><a class="l" href="#270">270: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id_roles'</span>, <span class="php-var">$customers_role_id</span>);
|
||||
</span><span id="271" class="l"><a class="l" href="#271">271: </a>
|
||||
</span><span id="272" class="l"><a class="l" href="#272">272: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get(<span class="php-quote">'ea_users'</span>)->result_array();
|
||||
</span><span id="273" class="l"><a class="l" href="#273">273: </a> }
|
||||
</span><span id="274" class="l"><a class="l" href="#274">274: </a>
|
||||
</span><span id="275" class="l"><a class="l" href="#275">275: </a> <span class="php-comment">/**
|
||||
</span></span><span id="276" class="l"><a class="l" href="#276">276: </a><span class="php-comment"> * Get the customers role id from the database.
|
||||
</span></span><span id="277" class="l"><a class="l" href="#277">277: </a><span class="php-comment"> *
|
||||
</span></span><span id="278" class="l"><a class="l" href="#278">278: </a><span class="php-comment"> * @return int Returns the role id for the customer records.
|
||||
</span></span><span id="279" class="l"><a class="l" href="#279">279: </a><span class="php-comment"> */</span>
|
||||
</span><span id="280" class="l"><a class="l" href="#280">280: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_customers_role_id" href="#_get_customers_role_id">get_customers_role_id</a>() {
|
||||
</span><span id="281" class="l"><a class="l" href="#281">281: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_roles'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'slug'</span> => DB_SLUG_CUSTOMER))->row()->id;
|
||||
</span><span id="282" class="l"><a class="l" href="#282">282: </a> }
|
||||
</span><span id="283" class="l"><a class="l" href="#283">283: </a>}
|
||||
</span><span id="284" class="l"><a class="l" href="#284">284: </a>
|
||||
</span><span id="285" class="l"><a class="l" href="#285">285: </a><span class="php-comment">/* End of file customers_model.php */</span>
|
||||
</span><span id="286" class="l"><a class="l" href="#286">286: </a></span><span class="php-comment">/* Location: ./application/models/customers_model.php */</span></code></pre>
|
||||
</span><span id="149" class="l"><a class="l" href="#149">149: </a> <span class="php-keyword1">return</span> <span class="php-var">$result</span>->row()->id;
|
||||
</span><span id="150" class="l"><a class="l" href="#150">150: </a> }
|
||||
</span><span id="151" class="l"><a class="l" href="#151">151: </a>
|
||||
</span><span id="152" class="l"><a class="l" href="#152">152: </a> <span class="php-comment">/**
|
||||
</span></span><span id="153" class="l"><a class="l" href="#153">153: </a><span class="php-comment"> * Validate customer data before the insert or
|
||||
</span></span><span id="154" class="l"><a class="l" href="#154">154: </a><span class="php-comment"> * update operation is executed.
|
||||
</span></span><span id="155" class="l"><a class="l" href="#155">155: </a><span class="php-comment"> *
|
||||
</span></span><span id="156" class="l"><a class="l" href="#156">156: </a><span class="php-comment"> * @param array $customer_data Contains the customer data.
|
||||
</span></span><span id="157" class="l"><a class="l" href="#157">157: </a><span class="php-comment"> * @return bool Returns the validation result.
|
||||
</span></span><span id="158" class="l"><a class="l" href="#158">158: </a><span class="php-comment"> */</span>
|
||||
</span><span id="159" class="l"><a class="l" href="#159">159: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_validate_data" href="#_validate_data">validate_data</a>(<span class="php-var">$customer_data</span>) {
|
||||
</span><span id="160" class="l"><a class="l" href="#160">160: </a> <span class="php-var">$this</span>->load->helper(<span class="php-quote">'data_validation'</span>);
|
||||
</span><span id="161" class="l"><a class="l" href="#161">161: </a>
|
||||
</span><span id="162" class="l"><a class="l" href="#162">162: </a> <span class="php-keyword1">try</span> {
|
||||
</span><span id="163" class="l"><a class="l" href="#163">163: </a> <span class="php-comment">// If a customer id is provided, check whether the record</span>
|
||||
</span><span id="164" class="l"><a class="l" href="#164">164: </a> <span class="php-comment">// exist in the database.</span>
|
||||
</span><span id="165" class="l"><a class="l" href="#165">165: </a> <span class="php-keyword1">if</span> (<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>])) {
|
||||
</span><span id="166" class="l"><a class="l" href="#166">166: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>,
|
||||
</span><span id="167" class="l"><a class="l" href="#167">167: </a> <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_data</span>[<span class="php-quote">'id'</span>]))->num_rows();
|
||||
</span><span id="168" class="l"><a class="l" href="#168">168: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="169" class="l"><a class="l" href="#169">169: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Provided customer id does not '</span>
|
||||
</span><span id="170" class="l"><a class="l" href="#170">170: </a> . <span class="php-quote">'exist in the database.'</span>);
|
||||
</span><span id="171" class="l"><a class="l" href="#171">171: </a> }
|
||||
</span><span id="172" class="l"><a class="l" href="#172">172: </a> }
|
||||
</span><span id="173" class="l"><a class="l" href="#173">173: </a> <span class="php-comment">// Validate required fields</span>
|
||||
</span><span id="174" class="l"><a class="l" href="#174">174: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'last_name'</span>])
|
||||
</span><span id="175" class="l"><a class="l" href="#175">175: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'email'</span>])
|
||||
</span><span id="176" class="l"><a class="l" href="#176">176: </a> || !<span class="php-keyword1">isset</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'phone_number'</span>])) {
|
||||
</span><span id="177" class="l"><a class="l" href="#177">177: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Not all required fields are provided : '</span>
|
||||
</span><span id="178" class="l"><a class="l" href="#178">178: </a> . <span class="php-keyword2">print_r</span>(<span class="php-var">$customer_data</span>, <span class="php-keyword1">TRUE</span>));
|
||||
</span><span id="179" class="l"><a class="l" href="#179">179: </a> }
|
||||
</span><span id="180" class="l"><a class="l" href="#180">180: </a>
|
||||
</span><span id="181" class="l"><a class="l" href="#181">181: </a> <span class="php-comment">// Validate email address</span>
|
||||
</span><span id="182" class="l"><a class="l" href="#182">182: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">filter_var</span>(<span class="php-var">$customer_data</span>[<span class="php-quote">'email'</span>], FILTER_VALIDATE_EMAIL)) {
|
||||
</span><span id="183" class="l"><a class="l" href="#183">183: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> Exception(<span class="php-quote">'Invalid email address provided : '</span>
|
||||
</span><span id="184" class="l"><a class="l" href="#184">184: </a> . <span class="php-var">$customer_data</span>[<span class="php-quote">'email'</span>]);
|
||||
</span><span id="185" class="l"><a class="l" href="#185">185: </a> }
|
||||
</span><span id="186" class="l"><a class="l" href="#186">186: </a>
|
||||
</span><span id="187" class="l"><a class="l" href="#187">187: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">TRUE</span>;
|
||||
</span><span id="188" class="l"><a class="l" href="#188">188: </a> } <span class="php-keyword1">catch</span> (Exception <span class="php-var">$exc</span>) {
|
||||
</span><span id="189" class="l"><a class="l" href="#189">189: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">FALSE</span>;
|
||||
</span><span id="190" class="l"><a class="l" href="#190">190: </a> }
|
||||
</span><span id="191" class="l"><a class="l" href="#191">191: </a> }
|
||||
</span><span id="192" class="l"><a class="l" href="#192">192: </a>
|
||||
</span><span id="193" class="l"><a class="l" href="#193">193: </a> <span class="php-comment">/**
|
||||
</span></span><span id="194" class="l"><a class="l" href="#194">194: </a><span class="php-comment"> * Delete an existing customer record from the database.
|
||||
</span></span><span id="195" class="l"><a class="l" href="#195">195: </a><span class="php-comment"> *
|
||||
</span></span><span id="196" class="l"><a class="l" href="#196">196: </a><span class="php-comment"> * @expectedException InvalidArgumentException Raises when
|
||||
</span></span><span id="197" class="l"><a class="l" href="#197">197: </a><span class="php-comment"> * the $customer_id is not an integer.
|
||||
</span></span><span id="198" class="l"><a class="l" href="#198">198: </a><span class="php-comment"> *
|
||||
</span></span><span id="199" class="l"><a class="l" href="#199">199: </a><span class="php-comment"> * @param int $customer_id The record id to be deleted.
|
||||
</span></span><span id="200" class="l"><a class="l" href="#200">200: </a><span class="php-comment"> * @return bool Returns the delete operation result.
|
||||
</span></span><span id="201" class="l"><a class="l" href="#201">201: </a><span class="php-comment"> */</span>
|
||||
</span><span id="202" class="l"><a class="l" href="#202">202: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <span class="php-keyword2">delete</span>(<span class="php-var">$customer_id</span>) {
|
||||
</span><span id="203" class="l"><a class="l" href="#203">203: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$customer_id</span>)) {
|
||||
</span><span id="204" class="l"><a class="l" href="#204">204: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument type $customer_id : '</span>
|
||||
</span><span id="205" class="l"><a class="l" href="#205">205: </a> . <span class="php-var">$customer_id</span>);
|
||||
</span><span id="206" class="l"><a class="l" href="#206">206: </a> }
|
||||
</span><span id="207" class="l"><a class="l" href="#207">207: </a>
|
||||
</span><span id="208" class="l"><a class="l" href="#208">208: </a> <span class="php-var">$num_rows</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_id</span>))->num_rows();
|
||||
</span><span id="209" class="l"><a class="l" href="#209">209: </a> <span class="php-keyword1">if</span> (<span class="php-var">$num_rows</span> == <span class="php-num">0</span>) {
|
||||
</span><span id="210" class="l"><a class="l" href="#210">210: </a> <span class="php-keyword1">return</span> <span class="php-keyword1">FALSE</span>;
|
||||
</span><span id="211" class="l"><a class="l" href="#211">211: </a> }
|
||||
</span><span id="212" class="l"><a class="l" href="#212">212: </a>
|
||||
</span><span id="213" class="l"><a class="l" href="#213">213: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id'</span>, <span class="php-var">$customer_id</span>);
|
||||
</span><span id="214" class="l"><a class="l" href="#214">214: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db-><span class="php-keyword2">delete</span>(<span class="php-quote">'ea_users'</span>);
|
||||
</span><span id="215" class="l"><a class="l" href="#215">215: </a> }
|
||||
</span><span id="216" class="l"><a class="l" href="#216">216: </a>
|
||||
</span><span id="217" class="l"><a class="l" href="#217">217: </a> <span class="php-comment">/**
|
||||
</span></span><span id="218" class="l"><a class="l" href="#218">218: </a><span class="php-comment"> * Get a specific row from the appointments table.
|
||||
</span></span><span id="219" class="l"><a class="l" href="#219">219: </a><span class="php-comment"> *
|
||||
</span></span><span id="220" class="l"><a class="l" href="#220">220: </a><span class="php-comment"> * @param int $customer_id The record's id to be returned.
|
||||
</span></span><span id="221" class="l"><a class="l" href="#221">221: </a><span class="php-comment"> * @return array Returns an associative array with the selected
|
||||
</span></span><span id="222" class="l"><a class="l" href="#222">222: </a><span class="php-comment"> * record's data. Each key has the same name as the database
|
||||
</span></span><span id="223" class="l"><a class="l" href="#223">223: </a><span class="php-comment"> * field names.
|
||||
</span></span><span id="224" class="l"><a class="l" href="#224">224: </a><span class="php-comment"> */</span>
|
||||
</span><span id="225" class="l"><a class="l" href="#225">225: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_row" href="#_get_row">get_row</a>(<span class="php-var">$customer_id</span>) {
|
||||
</span><span id="226" class="l"><a class="l" href="#226">226: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$customer_id</span>)) {
|
||||
</span><span id="227" class="l"><a class="l" href="#227">227: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument provided as $customer_id : '</span>
|
||||
</span><span id="228" class="l"><a class="l" href="#228">228: </a> . <span class="php-var">$customer_id</span>);
|
||||
</span><span id="229" class="l"><a class="l" href="#229">229: </a> }
|
||||
</span><span id="230" class="l"><a class="l" href="#230">230: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_id</span>))->row_array();
|
||||
</span><span id="231" class="l"><a class="l" href="#231">231: </a> }
|
||||
</span><span id="232" class="l"><a class="l" href="#232">232: </a>
|
||||
</span><span id="233" class="l"><a class="l" href="#233">233: </a> <span class="php-comment">/**
|
||||
</span></span><span id="234" class="l"><a class="l" href="#234">234: </a><span class="php-comment"> * Get a specific field value from the database.
|
||||
</span></span><span id="235" class="l"><a class="l" href="#235">235: </a><span class="php-comment"> *
|
||||
</span></span><span id="236" class="l"><a class="l" href="#236">236: </a><span class="php-comment"> * @param string $field_name The field name of the value to be
|
||||
</span></span><span id="237" class="l"><a class="l" href="#237">237: </a><span class="php-comment"> * returned.
|
||||
</span></span><span id="238" class="l"><a class="l" href="#238">238: </a><span class="php-comment"> * @param int $customer_id The selected record's id.
|
||||
</span></span><span id="239" class="l"><a class="l" href="#239">239: </a><span class="php-comment"> * @return string Returns the records value from the database.
|
||||
</span></span><span id="240" class="l"><a class="l" href="#240">240: </a><span class="php-comment"> */</span>
|
||||
</span><span id="241" class="l"><a class="l" href="#241">241: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_value" href="#_get_value">get_value</a>(<span class="php-var">$field_name</span>, <span class="php-var">$customer_id</span>) {
|
||||
</span><span id="242" class="l"><a class="l" href="#242">242: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$customer_id</span>)) {
|
||||
</span><span id="243" class="l"><a class="l" href="#243">243: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument provided as $customer_id : '</span>
|
||||
</span><span id="244" class="l"><a class="l" href="#244">244: </a> . <span class="php-var">$customer_id</span>);
|
||||
</span><span id="245" class="l"><a class="l" href="#245">245: </a> }
|
||||
</span><span id="246" class="l"><a class="l" href="#246">246: </a>
|
||||
</span><span id="247" class="l"><a class="l" href="#247">247: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_string</span>(<span class="php-var">$field_name</span>)) {
|
||||
</span><span id="248" class="l"><a class="l" href="#248">248: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'$field_name argument is not a string : '</span>
|
||||
</span><span id="249" class="l"><a class="l" href="#249">249: </a> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="250" class="l"><a class="l" href="#250">250: </a> }
|
||||
</span><span id="251" class="l"><a class="l" href="#251">251: </a>
|
||||
</span><span id="252" class="l"><a class="l" href="#252">252: </a> <span class="php-keyword1">if</span> (<span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_id</span>))->num_rows() == <span class="php-num">0</span>) {
|
||||
</span><span id="253" class="l"><a class="l" href="#253">253: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The record with the $customer_id argument '</span>
|
||||
</span><span id="254" class="l"><a class="l" href="#254">254: </a> . <span class="php-quote">'does not exist in the database : '</span> . <span class="php-var">$customer_id</span>);
|
||||
</span><span id="255" class="l"><a class="l" href="#255">255: </a> }
|
||||
</span><span id="256" class="l"><a class="l" href="#256">256: </a>
|
||||
</span><span id="257" class="l"><a class="l" href="#257">257: </a> <span class="php-var">$row_data</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_id</span>)
|
||||
</span><span id="258" class="l"><a class="l" href="#258">258: </a> )->row_array();
|
||||
</span><span id="259" class="l"><a class="l" href="#259">259: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$row_data</span>[<span class="php-var">$field_name</span>])) {
|
||||
</span><span id="260" class="l"><a class="l" href="#260">260: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The given $field_name argument does not'</span>
|
||||
</span><span id="261" class="l"><a class="l" href="#261">261: </a> . <span class="php-quote">'exist in the database : '</span> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="262" class="l"><a class="l" href="#262">262: </a> }
|
||||
</span><span id="263" class="l"><a class="l" href="#263">263: </a>
|
||||
</span><span id="264" class="l"><a class="l" href="#264">264: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$customer_id</span>))
|
||||
</span><span id="265" class="l"><a class="l" href="#265">265: </a> ->row_array()[<span class="php-var">$field_name</span>];
|
||||
</span><span id="266" class="l"><a class="l" href="#266">266: </a> }
|
||||
</span><span id="267" class="l"><a class="l" href="#267">267: </a>
|
||||
</span><span id="268" class="l"><a class="l" href="#268">268: </a> <span class="php-comment">/**
|
||||
</span></span><span id="269" class="l"><a class="l" href="#269">269: </a><span class="php-comment"> * Get all, or specific records from appointment's table.
|
||||
</span></span><span id="270" class="l"><a class="l" href="#270">270: </a><span class="php-comment"> *
|
||||
</span></span><span id="271" class="l"><a class="l" href="#271">271: </a><span class="php-comment"> * @example $this->Model->getBatch('id = ' . $recordId);
|
||||
</span></span><span id="272" class="l"><a class="l" href="#272">272: </a><span class="php-comment"> *
|
||||
</span></span><span id="273" class="l"><a class="l" href="#273">273: </a><span class="php-comment"> * @param string $whereClause (OPTIONAL) The WHERE clause of
|
||||
</span></span><span id="274" class="l"><a class="l" href="#274">274: </a><span class="php-comment"> * the query to be executed. DO NOT INCLUDE 'WHERE' KEYWORD.
|
||||
</span></span><span id="275" class="l"><a class="l" href="#275">275: </a><span class="php-comment"> * @return array Returns the rows from the database.
|
||||
</span></span><span id="276" class="l"><a class="l" href="#276">276: </a><span class="php-comment"> */</span>
|
||||
</span><span id="277" class="l"><a class="l" href="#277">277: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_batch" href="#_get_batch">get_batch</a>(<span class="php-var">$where_clause</span> = <span class="php-quote">''</span>) {
|
||||
</span><span id="278" class="l"><a class="l" href="#278">278: </a> <span class="php-var">$customers_role_id</span> = <span class="php-var">$this</span>->get_customers_role_id();
|
||||
</span><span id="279" class="l"><a class="l" href="#279">279: </a>
|
||||
</span><span id="280" class="l"><a class="l" href="#280">280: </a> <span class="php-keyword1">if</span> (<span class="php-var">$where_clause</span> != <span class="php-quote">''</span>) {
|
||||
</span><span id="281" class="l"><a class="l" href="#281">281: </a> <span class="php-var">$this</span>->db->where(<span class="php-var">$where_clause</span>);
|
||||
</span><span id="282" class="l"><a class="l" href="#282">282: </a> }
|
||||
</span><span id="283" class="l"><a class="l" href="#283">283: </a>
|
||||
</span><span id="284" class="l"><a class="l" href="#284">284: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id_roles'</span>, <span class="php-var">$customers_role_id</span>);
|
||||
</span><span id="285" class="l"><a class="l" href="#285">285: </a>
|
||||
</span><span id="286" class="l"><a class="l" href="#286">286: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get(<span class="php-quote">'ea_users'</span>)->result_array();
|
||||
</span><span id="287" class="l"><a class="l" href="#287">287: </a> }
|
||||
</span><span id="288" class="l"><a class="l" href="#288">288: </a>
|
||||
</span><span id="289" class="l"><a class="l" href="#289">289: </a> <span class="php-comment">/**
|
||||
</span></span><span id="290" class="l"><a class="l" href="#290">290: </a><span class="php-comment"> * Get the customers role id from the database.
|
||||
</span></span><span id="291" class="l"><a class="l" href="#291">291: </a><span class="php-comment"> *
|
||||
</span></span><span id="292" class="l"><a class="l" href="#292">292: </a><span class="php-comment"> * @return int Returns the role id for the customer records.
|
||||
</span></span><span id="293" class="l"><a class="l" href="#293">293: </a><span class="php-comment"> */</span>
|
||||
</span><span id="294" class="l"><a class="l" href="#294">294: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_customers_role_id" href="#_get_customers_role_id">get_customers_role_id</a>() {
|
||||
</span><span id="295" class="l"><a class="l" href="#295">295: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_roles'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'slug'</span> => DB_SLUG_CUSTOMER))->row()->id;
|
||||
</span><span id="296" class="l"><a class="l" href="#296">296: </a> }
|
||||
</span><span id="297" class="l"><a class="l" href="#297">297: </a>}
|
||||
</span><span id="298" class="l"><a class="l" href="#298">298: </a>
|
||||
</span><span id="299" class="l"><a class="l" href="#299">299: </a><span class="php-comment">/* End of file customers_model.php */</span>
|
||||
</span><span id="300" class="l"><a class="l" href="#300">300: </a></span><span class="php-comment">/* Location: ./application/models/customers_model.php */</span></code></pre>
|
||||
|
||||
<div id="footer">
|
||||
API documentation generated by <a href="http://apigen.org">ApiGen 2.8.0</a>
|
||||
|
|
|
@ -110,94 +110,112 @@
|
|||
</span></span><span id="33" class="l"><a class="l" href="#33"> 33: </a><span class="php-comment"> */</span>
|
||||
</span><span id="34" class="l"><a class="l" href="#34"> 34: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_value" href="#_get_value">get_value</a>(<span class="php-var">$field_name</span>, <span class="php-var">$provider_id</span>) {
|
||||
</span><span id="35" class="l"><a class="l" href="#35"> 35: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_numeric</span>(<span class="php-var">$provider_id</span>)) {
|
||||
</span><span id="36" class="l"><a class="l" href="#36"> 36: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument provided as $customer_id : '</span> . <span class="php-var">$provider_id</span>);
|
||||
</span><span id="37" class="l"><a class="l" href="#37"> 37: </a> }
|
||||
</span><span id="38" class="l"><a class="l" href="#38"> 38: </a>
|
||||
</span><span id="39" class="l"><a class="l" href="#39"> 39: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_string</span>(<span class="php-var">$field_name</span>)) {
|
||||
</span><span id="40" class="l"><a class="l" href="#40"> 40: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'$field_name argument is not a string : '</span> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="41" class="l"><a class="l" href="#41"> 41: </a> }
|
||||
</span><span id="42" class="l"><a class="l" href="#42"> 42: </a>
|
||||
</span><span id="43" class="l"><a class="l" href="#43"> 43: </a> <span class="php-keyword1">if</span> (<span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$provider_id</span>))->num_rows() == <span class="php-num">0</span>) {
|
||||
</span><span id="44" class="l"><a class="l" href="#44"> 44: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The record with the $provider_id argument does not exist in the database : '</span> . <span class="php-var">$provider_id</span>);
|
||||
</span><span id="45" class="l"><a class="l" href="#45"> 45: </a> }
|
||||
</span><span id="46" class="l"><a class="l" href="#46"> 46: </a>
|
||||
</span><span id="47" class="l"><a class="l" href="#47"> 47: </a> <span class="php-var">$row_data</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$provider_id</span>))->row_array();
|
||||
</span><span id="48" class="l"><a class="l" href="#48"> 48: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$row_data</span>[<span class="php-var">$field_name</span>])) {
|
||||
</span><span id="49" class="l"><a class="l" href="#49"> 49: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The given $field_name argument does not exist in the database : '</span> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="50" class="l"><a class="l" href="#50"> 50: </a> }
|
||||
</span><span id="51" class="l"><a class="l" href="#51"> 51: </a>
|
||||
</span><span id="52" class="l"><a class="l" href="#52"> 52: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$provider_id</span>))->row_array()[<span class="php-var">$field_name</span>];
|
||||
</span><span id="53" class="l"><a class="l" href="#53"> 53: </a> }
|
||||
</span><span id="54" class="l"><a class="l" href="#54"> 54: </a>
|
||||
</span><span id="55" class="l"><a class="l" href="#55"> 55: </a> <span class="php-comment">/**
|
||||
</span></span><span id="56" class="l"><a class="l" href="#56"> 56: </a><span class="php-comment"> * Get all, or specific records from provider's table.
|
||||
</span></span><span id="57" class="l"><a class="l" href="#57"> 57: </a><span class="php-comment"> *
|
||||
</span></span><span id="58" class="l"><a class="l" href="#58"> 58: </a><span class="php-comment"> * @example $this->Model->getBatch('id = ' . $recordId);
|
||||
</span></span><span id="59" class="l"><a class="l" href="#59"> 59: </a><span class="php-comment"> *
|
||||
</span></span><span id="60" class="l"><a class="l" href="#60"> 60: </a><span class="php-comment"> * @param string $whereClause (OPTIONAL) The WHERE clause of
|
||||
</span></span><span id="61" class="l"><a class="l" href="#61"> 61: </a><span class="php-comment"> * the query to be executed. DO NOT INCLUDE 'WHERE' KEYWORD.
|
||||
</span></span><span id="62" class="l"><a class="l" href="#62"> 62: </a><span class="php-comment"> * @return array Returns the rows from the database.
|
||||
</span></span><span id="63" class="l"><a class="l" href="#63"> 63: </a><span class="php-comment"> */</span>
|
||||
</span><span id="64" class="l"><a class="l" href="#64"> 64: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_batch" href="#_get_batch">get_batch</a>(<span class="php-var">$where_clause</span> = <span class="php-quote">''</span>) {
|
||||
</span><span id="65" class="l"><a class="l" href="#65"> 65: </a> <span class="php-var">$providers_role_id</span> = <span class="php-var">$this</span>->get_providers_role_id();
|
||||
</span><span id="66" class="l"><a class="l" href="#66"> 66: </a>
|
||||
</span><span id="67" class="l"><a class="l" href="#67"> 67: </a> <span class="php-keyword1">if</span> (<span class="php-var">$where_clause</span> != <span class="php-quote">''</span>) {
|
||||
</span><span id="68" class="l"><a class="l" href="#68"> 68: </a> <span class="php-var">$this</span>->db->where(<span class="php-var">$where_clause</span>);
|
||||
</span><span id="69" class="l"><a class="l" href="#69"> 69: </a> }
|
||||
</span><span id="70" class="l"><a class="l" href="#70"> 70: </a>
|
||||
</span><span id="71" class="l"><a class="l" href="#71"> 71: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id_roles'</span>, <span class="php-var">$providers_role_id</span>);
|
||||
</span><span id="72" class="l"><a class="l" href="#72"> 72: </a>
|
||||
</span><span id="73" class="l"><a class="l" href="#73"> 73: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get(<span class="php-quote">'ea_users'</span>)->result_array();
|
||||
</span><span id="74" class="l"><a class="l" href="#74"> 74: </a> }
|
||||
</span><span id="75" class="l"><a class="l" href="#75"> 75: </a>
|
||||
</span><span id="76" class="l"><a class="l" href="#76"> 76: </a> <span class="php-comment">/**
|
||||
</span></span><span id="77" class="l"><a class="l" href="#77"> 77: </a><span class="php-comment"> * This method returns the available providers and
|
||||
</span></span><span id="78" class="l"><a class="l" href="#78"> 78: </a><span class="php-comment"> * the services that can provide.
|
||||
</span></span><span id="79" class="l"><a class="l" href="#79"> 79: </a><span class="php-comment"> *
|
||||
</span></span><span id="80" class="l"><a class="l" href="#80"> 80: </a><span class="php-comment"> * @return array Returns an array with the providers
|
||||
</span></span><span id="81" class="l"><a class="l" href="#81"> 81: </a><span class="php-comment"> * data.
|
||||
</span></span><span id="82" class="l"><a class="l" href="#82"> 82: </a><span class="php-comment"> */</span>
|
||||
</span><span id="83" class="l"><a class="l" href="#83"> 83: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_available_providers" href="#_get_available_providers">get_available_providers</a>() {
|
||||
</span><span id="84" class="l"><a class="l" href="#84"> 84: </a> <span class="php-var">$this</span>->db
|
||||
</span><span id="85" class="l"><a class="l" href="#85"> 85: </a> ->select(<span class="php-quote">'ea_users.*'</span>)
|
||||
</span><span id="86" class="l"><a class="l" href="#86"> 86: </a> ->from(<span class="php-quote">'ea_users'</span>)
|
||||
</span><span id="87" class="l"><a class="l" href="#87"> 87: </a> -><span class="php-keyword2">join</span>(<span class="php-quote">'ea_roles'</span>, <span class="php-quote">'ea_roles.id = ea_users.id_roles'</span>, <span class="php-quote">'inner'</span>)
|
||||
</span><span id="88" class="l"><a class="l" href="#88"> 88: </a> ->where(<span class="php-quote">'ea_roles.slug'</span>, <span class="php-quote">'provider'</span>);
|
||||
</span><span id="89" class="l"><a class="l" href="#89"> 89: </a>
|
||||
</span><span id="90" class="l"><a class="l" href="#90"> 90: </a> <span class="php-var">$providers</span> = <span class="php-var">$this</span>->db->get()->result_array();
|
||||
</span><span id="91" class="l"><a class="l" href="#91"> 91: </a>
|
||||
</span><span id="92" class="l"><a class="l" href="#92"> 92: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$providers</span> <span class="php-keyword1">as</span> &<span class="php-var">$provider</span>) {
|
||||
</span><span id="93" class="l"><a class="l" href="#93"> 93: </a> <span class="php-var">$this</span>->db
|
||||
</span><span id="94" class="l"><a class="l" href="#94"> 94: </a> ->select(<span class="php-quote">'id_services'</span>)
|
||||
</span><span id="95" class="l"><a class="l" href="#95"> 95: </a> ->from(<span class="php-quote">'ea_services_providers'</span>)
|
||||
</span><span id="96" class="l"><a class="l" href="#96"> 96: </a> ->where(<span class="php-quote">'id_users'</span>, <span class="php-var">$provider</span>[<span class="php-quote">'id'</span>]);
|
||||
</span><span id="97" class="l"><a class="l" href="#97"> 97: </a>
|
||||
</span><span id="98" class="l"><a class="l" href="#98"> 98: </a> <span class="php-var">$provider_services</span> = <span class="php-var">$this</span>->db->get()->result_array();
|
||||
</span><span id="99" class="l"><a class="l" href="#99"> 99: </a>
|
||||
</span><span id="100" class="l"><a class="l" href="#100">100: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$provider</span>[<span class="php-quote">'services'</span>])) {
|
||||
</span><span id="101" class="l"><a class="l" href="#101">101: </a> <span class="php-var">$provider</span>[<span class="php-quote">'services'</span>] = <span class="php-keyword1">array</span>();
|
||||
</span><span id="102" class="l"><a class="l" href="#102">102: </a> }
|
||||
</span><span id="103" class="l"><a class="l" href="#103">103: </a>
|
||||
</span><span id="104" class="l"><a class="l" href="#104">104: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$provider_services</span> <span class="php-keyword1">as</span> <span class="php-var">$providerService</span>) {
|
||||
</span><span id="105" class="l"><a class="l" href="#105">105: </a> <span class="php-var">$provider</span>[<span class="php-quote">'services'</span>][] = <span class="php-var">$providerService</span>[<span class="php-quote">'id_services'</span>];
|
||||
</span><span id="106" class="l"><a class="l" href="#106">106: </a> }
|
||||
</span><span id="107" class="l"><a class="l" href="#107">107: </a> }
|
||||
</span><span id="108" class="l"><a class="l" href="#108">108: </a>
|
||||
</span><span id="109" class="l"><a class="l" href="#109">109: </a> <span class="php-keyword1">return</span> <span class="php-var">$providers</span>;
|
||||
</span><span id="110" class="l"><a class="l" href="#110">110: </a> }
|
||||
</span><span id="111" class="l"><a class="l" href="#111">111: </a>
|
||||
</span><span id="112" class="l"><a class="l" href="#112">112: </a> <span class="php-comment">/**
|
||||
</span></span><span id="113" class="l"><a class="l" href="#113">113: </a><span class="php-comment"> * Get the providers role id from the database.
|
||||
</span></span><span id="114" class="l"><a class="l" href="#114">114: </a><span class="php-comment"> *
|
||||
</span></span><span id="115" class="l"><a class="l" href="#115">115: </a><span class="php-comment"> * @return int Returns the role id for the customer records.
|
||||
</span></span><span id="116" class="l"><a class="l" href="#116">116: </a><span class="php-comment"> */</span>
|
||||
</span><span id="117" class="l"><a class="l" href="#117">117: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_providers_role_id" href="#_get_providers_role_id">get_providers_role_id</a>() {
|
||||
</span><span id="118" class="l"><a class="l" href="#118">118: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_roles'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'slug'</span> => DB_SLUG_PROVIDER))->row()->id;
|
||||
</span><span id="119" class="l"><a class="l" href="#119">119: </a> }
|
||||
</span><span id="120" class="l"><a class="l" href="#120">120: </a>}
|
||||
</span><span id="121" class="l"><a class="l" href="#121">121: </a>
|
||||
</span><span id="122" class="l"><a class="l" href="#122">122: </a><span class="php-comment">/* End of file providers_model.php */</span>
|
||||
</span><span id="123" class="l"><a class="l" href="#123">123: </a></span><span class="php-comment">/* Location: ./application/models/providers_model.php */</span></code></pre>
|
||||
</span><span id="36" class="l"><a class="l" href="#36"> 36: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'Invalid argument provided as $customer_id : '</span>
|
||||
</span><span id="37" class="l"><a class="l" href="#37"> 37: </a> . <span class="php-var">$provider_id</span>);
|
||||
</span><span id="38" class="l"><a class="l" href="#38"> 38: </a> }
|
||||
</span><span id="39" class="l"><a class="l" href="#39"> 39: </a>
|
||||
</span><span id="40" class="l"><a class="l" href="#40"> 40: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword2">is_string</span>(<span class="php-var">$field_name</span>)) {
|
||||
</span><span id="41" class="l"><a class="l" href="#41"> 41: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'$field_name argument is not a string : '</span>
|
||||
</span><span id="42" class="l"><a class="l" href="#42"> 42: </a> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="43" class="l"><a class="l" href="#43"> 43: </a> }
|
||||
</span><span id="44" class="l"><a class="l" href="#44"> 44: </a>
|
||||
</span><span id="45" class="l"><a class="l" href="#45"> 45: </a> <span class="php-keyword1">if</span> (<span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$provider_id</span>))->num_rows() == <span class="php-num">0</span>) {
|
||||
</span><span id="46" class="l"><a class="l" href="#46"> 46: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The record with the $provider_id argument'</span>
|
||||
</span><span id="47" class="l"><a class="l" href="#47"> 47: </a> . <span class="php-quote">'does not exist in the database : '</span> . <span class="php-var">$provider_id</span>);
|
||||
</span><span id="48" class="l"><a class="l" href="#48"> 48: </a> }
|
||||
</span><span id="49" class="l"><a class="l" href="#49"> 49: </a>
|
||||
</span><span id="50" class="l"><a class="l" href="#50"> 50: </a> <span class="php-var">$row_data</span> = <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$provider_id</span>))->row_array();
|
||||
</span><span id="51" class="l"><a class="l" href="#51"> 51: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$row_data</span>[<span class="php-var">$field_name</span>])) {
|
||||
</span><span id="52" class="l"><a class="l" href="#52"> 52: </a> <span class="php-keyword1">throw</span> <span class="php-keyword1">new</span> InvalidArgumentException(<span class="php-quote">'The given $field_name argument does not'</span>
|
||||
</span><span id="53" class="l"><a class="l" href="#53"> 53: </a> . <span class="php-quote">'exist in the database : '</span> . <span class="php-var">$field_name</span>);
|
||||
</span><span id="54" class="l"><a class="l" href="#54"> 54: </a> }
|
||||
</span><span id="55" class="l"><a class="l" href="#55"> 55: </a>
|
||||
</span><span id="56" class="l"><a class="l" href="#56"> 56: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_users'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id'</span> => <span class="php-var">$provider_id</span>))
|
||||
</span><span id="57" class="l"><a class="l" href="#57"> 57: </a> ->row_array()[<span class="php-var">$field_name</span>];
|
||||
</span><span id="58" class="l"><a class="l" href="#58"> 58: </a> }
|
||||
</span><span id="59" class="l"><a class="l" href="#59"> 59: </a>
|
||||
</span><span id="60" class="l"><a class="l" href="#60"> 60: </a> <span class="php-comment">/**
|
||||
</span></span><span id="61" class="l"><a class="l" href="#61"> 61: </a><span class="php-comment"> * Get all, or specific records from provider's table.
|
||||
</span></span><span id="62" class="l"><a class="l" href="#62"> 62: </a><span class="php-comment"> *
|
||||
</span></span><span id="63" class="l"><a class="l" href="#63"> 63: </a><span class="php-comment"> * @example $this->Model->getBatch('id = ' . $recordId);
|
||||
</span></span><span id="64" class="l"><a class="l" href="#64"> 64: </a><span class="php-comment"> *
|
||||
</span></span><span id="65" class="l"><a class="l" href="#65"> 65: </a><span class="php-comment"> * @param string $whereClause (OPTIONAL) The WHERE clause of
|
||||
</span></span><span id="66" class="l"><a class="l" href="#66"> 66: </a><span class="php-comment"> * the query to be executed. DO NOT INCLUDE 'WHERE' KEYWORD.
|
||||
</span></span><span id="67" class="l"><a class="l" href="#67"> 67: </a><span class="php-comment"> * @return array Returns the rows from the database.
|
||||
</span></span><span id="68" class="l"><a class="l" href="#68"> 68: </a><span class="php-comment"> */</span>
|
||||
</span><span id="69" class="l"><a class="l" href="#69"> 69: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_batch" href="#_get_batch">get_batch</a>(<span class="php-var">$where_clause</span> = <span class="php-quote">''</span>) {
|
||||
</span><span id="70" class="l"><a class="l" href="#70"> 70: </a> <span class="php-var">$providers_role_id</span> = <span class="php-var">$this</span>->get_providers_role_id();
|
||||
</span><span id="71" class="l"><a class="l" href="#71"> 71: </a>
|
||||
</span><span id="72" class="l"><a class="l" href="#72"> 72: </a> <span class="php-keyword1">if</span> (<span class="php-var">$where_clause</span> != <span class="php-quote">''</span>) {
|
||||
</span><span id="73" class="l"><a class="l" href="#73"> 73: </a> <span class="php-var">$this</span>->db->where(<span class="php-var">$where_clause</span>);
|
||||
</span><span id="74" class="l"><a class="l" href="#74"> 74: </a> }
|
||||
</span><span id="75" class="l"><a class="l" href="#75"> 75: </a>
|
||||
</span><span id="76" class="l"><a class="l" href="#76"> 76: </a> <span class="php-var">$this</span>->db->where(<span class="php-quote">'id_roles'</span>, <span class="php-var">$providers_role_id</span>);
|
||||
</span><span id="77" class="l"><a class="l" href="#77"> 77: </a>
|
||||
</span><span id="78" class="l"><a class="l" href="#78"> 78: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get(<span class="php-quote">'ea_users'</span>)->result_array();
|
||||
</span><span id="79" class="l"><a class="l" href="#79"> 79: </a> }
|
||||
</span><span id="80" class="l"><a class="l" href="#80"> 80: </a>
|
||||
</span><span id="81" class="l"><a class="l" href="#81"> 81: </a> <span class="php-comment">/**
|
||||
</span></span><span id="82" class="l"><a class="l" href="#82"> 82: </a><span class="php-comment"> * This method returns the available providers and
|
||||
</span></span><span id="83" class="l"><a class="l" href="#83"> 83: </a><span class="php-comment"> * the services that can provide.
|
||||
</span></span><span id="84" class="l"><a class="l" href="#84"> 84: </a><span class="php-comment"> *
|
||||
</span></span><span id="85" class="l"><a class="l" href="#85"> 85: </a><span class="php-comment"> * @return array Returns an array with the providers
|
||||
</span></span><span id="86" class="l"><a class="l" href="#86"> 86: </a><span class="php-comment"> * data.
|
||||
</span></span><span id="87" class="l"><a class="l" href="#87"> 87: </a><span class="php-comment"> */</span>
|
||||
</span><span id="88" class="l"><a class="l" href="#88"> 88: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_available_providers" href="#_get_available_providers">get_available_providers</a>() {
|
||||
</span><span id="89" class="l"><a class="l" href="#89"> 89: </a> <span class="php-var">$this</span>->db
|
||||
</span><span id="90" class="l"><a class="l" href="#90"> 90: </a> ->select(<span class="php-quote">'ea_users.*'</span>)
|
||||
</span><span id="91" class="l"><a class="l" href="#91"> 91: </a> ->from(<span class="php-quote">'ea_users'</span>)
|
||||
</span><span id="92" class="l"><a class="l" href="#92"> 92: </a> -><span class="php-keyword2">join</span>(<span class="php-quote">'ea_roles'</span>, <span class="php-quote">'ea_roles.id = ea_users.id_roles'</span>, <span class="php-quote">'inner'</span>)
|
||||
</span><span id="93" class="l"><a class="l" href="#93"> 93: </a> ->where(<span class="php-quote">'ea_roles.slug'</span>, <span class="php-quote">'provider'</span>);
|
||||
</span><span id="94" class="l"><a class="l" href="#94"> 94: </a>
|
||||
</span><span id="95" class="l"><a class="l" href="#95"> 95: </a> <span class="php-var">$providers</span> = <span class="php-var">$this</span>->db->get()->result_array();
|
||||
</span><span id="96" class="l"><a class="l" href="#96"> 96: </a>
|
||||
</span><span id="97" class="l"><a class="l" href="#97"> 97: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$providers</span> <span class="php-keyword1">as</span> &<span class="php-var">$provider</span>) {
|
||||
</span><span id="98" class="l"><a class="l" href="#98"> 98: </a> <span class="php-var">$this</span>->db
|
||||
</span><span id="99" class="l"><a class="l" href="#99"> 99: </a> ->select(<span class="php-quote">'id_services'</span>)
|
||||
</span><span id="100" class="l"><a class="l" href="#100">100: </a> ->from(<span class="php-quote">'ea_services_providers'</span>)
|
||||
</span><span id="101" class="l"><a class="l" href="#101">101: </a> ->where(<span class="php-quote">'id_users'</span>, <span class="php-var">$provider</span>[<span class="php-quote">'id'</span>]);
|
||||
</span><span id="102" class="l"><a class="l" href="#102">102: </a>
|
||||
</span><span id="103" class="l"><a class="l" href="#103">103: </a> <span class="php-var">$provider_services</span> = <span class="php-var">$this</span>->db->get()->result_array();
|
||||
</span><span id="104" class="l"><a class="l" href="#104">104: </a>
|
||||
</span><span id="105" class="l"><a class="l" href="#105">105: </a> <span class="php-keyword1">if</span> (!<span class="php-keyword1">isset</span>(<span class="php-var">$provider</span>[<span class="php-quote">'services'</span>])) {
|
||||
</span><span id="106" class="l"><a class="l" href="#106">106: </a> <span class="php-var">$provider</span>[<span class="php-quote">'services'</span>] = <span class="php-keyword1">array</span>();
|
||||
</span><span id="107" class="l"><a class="l" href="#107">107: </a> }
|
||||
</span><span id="108" class="l"><a class="l" href="#108">108: </a>
|
||||
</span><span id="109" class="l"><a class="l" href="#109">109: </a> <span class="php-keyword1">foreach</span>(<span class="php-var">$provider_services</span> <span class="php-keyword1">as</span> <span class="php-var">$providerService</span>) {
|
||||
</span><span id="110" class="l"><a class="l" href="#110">110: </a> <span class="php-var">$provider</span>[<span class="php-quote">'services'</span>][] = <span class="php-var">$providerService</span>[<span class="php-quote">'id_services'</span>];
|
||||
</span><span id="111" class="l"><a class="l" href="#111">111: </a> }
|
||||
</span><span id="112" class="l"><a class="l" href="#112">112: </a> }
|
||||
</span><span id="113" class="l"><a class="l" href="#113">113: </a>
|
||||
</span><span id="114" class="l"><a class="l" href="#114">114: </a> <span class="php-keyword1">return</span> <span class="php-var">$providers</span>;
|
||||
</span><span id="115" class="l"><a class="l" href="#115">115: </a> }
|
||||
</span><span id="116" class="l"><a class="l" href="#116">116: </a>
|
||||
</span><span id="117" class="l"><a class="l" href="#117">117: </a> <span class="php-comment">/**
|
||||
</span></span><span id="118" class="l"><a class="l" href="#118">118: </a><span class="php-comment"> * Get the providers role id from the database.
|
||||
</span></span><span id="119" class="l"><a class="l" href="#119">119: </a><span class="php-comment"> *
|
||||
</span></span><span id="120" class="l"><a class="l" href="#120">120: </a><span class="php-comment"> * @return int Returns the role id for the customer records.
|
||||
</span></span><span id="121" class="l"><a class="l" href="#121">121: </a><span class="php-comment"> */</span>
|
||||
</span><span id="122" class="l"><a class="l" href="#122">122: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_providers_role_id" href="#_get_providers_role_id">get_providers_role_id</a>() {
|
||||
</span><span id="123" class="l"><a class="l" href="#123">123: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_roles'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'slug'</span> => DB_SLUG_PROVIDER))->row()->id;
|
||||
</span><span id="124" class="l"><a class="l" href="#124">124: </a> }
|
||||
</span><span id="125" class="l"><a class="l" href="#125">125: </a>
|
||||
</span><span id="126" class="l"><a class="l" href="#126">126: </a> <span class="php-comment">/**
|
||||
</span></span><span id="127" class="l"><a class="l" href="#127">127: </a><span class="php-comment"> * Get a providers setting from the database.
|
||||
</span></span><span id="128" class="l"><a class="l" href="#128">128: </a><span class="php-comment"> *
|
||||
</span></span><span id="129" class="l"><a class="l" href="#129">129: </a><span class="php-comment"> * @param string $setting_name The setting name that is going to be
|
||||
</span></span><span id="130" class="l"><a class="l" href="#130">130: </a><span class="php-comment"> * returned.
|
||||
</span></span><span id="131" class="l"><a class="l" href="#131">131: </a><span class="php-comment"> * @param int $provider_id The selected provider id.
|
||||
</span></span><span id="132" class="l"><a class="l" href="#132">132: </a><span class="php-comment"> * @return string Returs the value of the selected user setting.
|
||||
</span></span><span id="133" class="l"><a class="l" href="#133">133: </a><span class="php-comment"> */</span>
|
||||
</span><span id="134" class="l"><a class="l" href="#134">134: </a> <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> <a id="_get_setting" href="#_get_setting">get_setting</a>(<span class="php-var">$setting_name</span>, <span class="php-var">$provider_id</span>) {
|
||||
</span><span id="135" class="l"><a class="l" href="#135">135: </a> <span class="php-keyword1">return</span> <span class="php-var">$this</span>->db->get_where(<span class="php-quote">'ea_user_settings'</span>, <span class="php-keyword1">array</span>(<span class="php-quote">'id_users'</span> => <span class="php-var">$provider_id</span>))
|
||||
</span><span id="136" class="l"><a class="l" href="#136">136: </a> ->row_array()[<span class="php-var">$setting_name</span>];
|
||||
</span><span id="137" class="l"><a class="l" href="#137">137: </a> }
|
||||
</span><span id="138" class="l"><a class="l" href="#138">138: </a>}
|
||||
</span><span id="139" class="l"><a class="l" href="#139">139: </a>
|
||||
</span><span id="140" class="l"><a class="l" href="#140">140: </a><span class="php-comment">/* End of file providers_model.php */</span>
|
||||
</span><span id="141" class="l"><a class="l" href="#141">141: </a></span><span class="php-comment">/* Location: ./application/models/providers_model.php */</span></code></pre>
|
||||
|
||||
<div id="footer">
|
||||
API documentation generated by <a href="http://apigen.org">ApiGen 2.8.0</a>
|
||||
|
|
|
@ -34,12 +34,12 @@ class Appointments extends CI_Controller {
|
|||
->get_batch(array('hash' => $appointment_hash))[0];
|
||||
$provider_data = $this->Providers_Model
|
||||
->get_row($appointment_data['id_users_provider']);
|
||||
$customer_data = $this->Customer_Model
|
||||
$customer_data = $this->Customers_Model
|
||||
->get_row($appointment_data['id_users_customer']);
|
||||
} else {
|
||||
// The customer is going to book an appointment so there is no
|
||||
// need for the manage functionality to be initialized.
|
||||
$manage_mode = false;
|
||||
$manage_mode = FALSE;
|
||||
$appointment_data = array();
|
||||
$provider_data = array();
|
||||
$customer_data = array();
|
||||
|
@ -76,8 +76,19 @@ class Appointments extends CI_Controller {
|
|||
// Send an email to the customer with the appointment info.
|
||||
$this->load->library('Notifications');
|
||||
try {
|
||||
$this->notifications->send_book_success($customer_data, $appointment_data);
|
||||
$this->notifications->send_new_appointment($customer_data, $appointment_data);
|
||||
if (!$post_data['manage_mode']) {
|
||||
$customer_title = 'Your appointment has been successfully booked!';
|
||||
$provider_title = 'A new appointment has been added to your plan.';
|
||||
} else {
|
||||
$customer_title = 'Appointment changes saved successfully!';
|
||||
$provider_title = 'Appointment details have changed.';
|
||||
}
|
||||
|
||||
$this->notifications->send_book_success(
|
||||
$customer_data, $appointment_data, $customer_title);
|
||||
$this->notifications->send_new_appointment(
|
||||
$customer_data, $appointment_data, $provider_title);
|
||||
|
||||
} catch (NotificationException $not_exc) {
|
||||
$view_data['notification_error'] = '<br><br>'
|
||||
. '<pre>An unexpected error occured while sending you an '
|
||||
|
@ -93,53 +104,51 @@ class Appointments extends CI_Controller {
|
|||
}
|
||||
|
||||
/**
|
||||
* Display the view - manage screen of an external
|
||||
* appointment link.
|
||||
* Cancel an existing appointment.
|
||||
*
|
||||
* This method loads the page that is going to be displayed
|
||||
* whenever a customer, or a provider clicks on the email link
|
||||
* that enables him to preview and make changes to the selected
|
||||
* appointment.
|
||||
*
|
||||
* @param string $user_type Link user type (one of the
|
||||
* DB_SLUG_CUSTOMER, ... constants).
|
||||
* @param string $appointment_hash the appointment db hash. This
|
||||
* is used to identify the appointment record.
|
||||
* This method removes an appointment from the company's schedule.
|
||||
* In order for the appointment to be deleted, the hash string must
|
||||
* be provided. The customer can only cancel the appointment if the
|
||||
* edit time period is not over yet.
|
||||
*
|
||||
* @param string $appointment_hash This is used to distinguish the
|
||||
* appointment record.
|
||||
*/
|
||||
public function external_link($user_type, $appointment_hash) {
|
||||
if (strtoupper($_SERVER['REQUEST_METHOD']) != 'POST') {
|
||||
// Prepare and display the external manage view page.
|
||||
public function cancel($appointment_hash) {
|
||||
try {
|
||||
$this->load->model('Appointments_Model');
|
||||
$this->load->model('Providers_Model');
|
||||
$this->load->model('Customers_Model');
|
||||
$this->load->model('Services_Model');
|
||||
|
||||
$appointment_data = $this->Appointments_Model
|
||||
->get_batch(array('hash' => $appointment_hash))[0];
|
||||
$provider_data = $this->Providers_Model
|
||||
->get_row($appointment_data['id_users_provider']);
|
||||
$customer_data = $this->Customers_Model
|
||||
->get_row($appointment_data['id_users_customer']);
|
||||
// Check whether the appointment hash exists in the database.
|
||||
$records = $this->Appointments_Model->get_batch(array('hash' => $appointment_hash));
|
||||
if (count($records) == 0) {
|
||||
throw new Exception('No record matches the provided hash.');
|
||||
}
|
||||
|
||||
$available_providers = $this->Providers_Model->get_available_providers();
|
||||
$available_services = $this->Services_Model->get_available_services();
|
||||
$appointment_data = $records[0];
|
||||
|
||||
$view_data = array(
|
||||
'appointment_data' => $appointment_data,
|
||||
'customer_data' => $customer_data,
|
||||
'provider_data' => $provider_data,
|
||||
'user_type' => $user_type,
|
||||
'available_providers' => $available_providers,
|
||||
'available_services' => $available_services
|
||||
);
|
||||
$this->load->view('appointments/external_manage', $view_data);
|
||||
} else {
|
||||
// The external manage page was posted back. Save the
|
||||
// changes of the user.
|
||||
// Delete the appointment from the database.
|
||||
if (!$this->Appointments_Model->delete($appointment_data['id'])) {
|
||||
throw new Exception('Appointment could not be deleted from the database.');
|
||||
}
|
||||
|
||||
// @task Save user changes.
|
||||
// Send notification emails to the customer and provider.
|
||||
$provider_email = $this->Providers_Model->get_value('email',
|
||||
$appointment_data['id_users_provider']);
|
||||
$customer_email = $this->Customers_Model->get_value('email',
|
||||
$appointment_data['id_users_customer']);
|
||||
|
||||
$this->load->library('Notifications');
|
||||
$this->notifications->send_cancel_appointment($appointment_data, $provider_email);
|
||||
$this->notifications->send_cancel_appointment($appointment_data, $customer_email);
|
||||
|
||||
} catch(Exception $exc) {
|
||||
// Display the error message to the customer.
|
||||
$view_data['error_message'] = $exc->getMessage();
|
||||
}
|
||||
|
||||
$this->load->view('appointments/cancel');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -160,22 +169,24 @@ class Appointments extends CI_Controller {
|
|||
|
||||
// Get the provider's working plan and reserved appointments.
|
||||
$working_plan = json_decode($this->Providers_Model
|
||||
->get_value('working_plan', $_POST['provider_id']), true);
|
||||
->get_setting('working_plan', $_POST['provider_id']), true);
|
||||
|
||||
$where_clause = array(
|
||||
'DATE(start_datetime)' => date('Y-m-d', strtotime($_POST['selected_date'])),
|
||||
'id_users_provider' => $_POST['provider_id'],
|
||||
'id_services' => $_POST['service_id']
|
||||
'id_users_provider' => $_POST['provider_id']
|
||||
);
|
||||
|
||||
$reserved_appointments = $this->Appointments_Model->get_batch($where_clause);
|
||||
|
||||
if ($_POST['manage_mode']) {
|
||||
if ($_POST['manage_mode'] === 'true') {
|
||||
// Current record id shouldn't be included as reserved time,
|
||||
// whent the manage mode is true.
|
||||
$where_clause['id !='] = $_POST['appointment_id'];
|
||||
foreach($reserved_appointments as $index=>$appointment) {
|
||||
if ($appointment['id'] == $_POST['appointment_id']) {
|
||||
unset($reserved_appointments[$index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$reserved_appointments = $this->Appointments_Model->get_batch($where_clause);
|
||||
|
||||
|
||||
// Find the empty spaces on the plan. The first split between
|
||||
// the plan is due to a break (if exist). After that every reserved
|
||||
|
@ -272,8 +283,25 @@ class Appointments extends CI_Controller {
|
|||
|
||||
foreach($empty_spaces as $space) {
|
||||
$start_hour = new DateTime($_POST['selected_date'] . ' ' . $space['start']);
|
||||
$end_hour = new DateTime($_POST['selected_date'] . ' ' . $space['end']);
|
||||
$curr_hour = $start_hour;
|
||||
$end_hour = new DateTime($_POST['selected_date'] . ' ' . $space['end']);
|
||||
|
||||
$minutes = $start_hour->format('i');
|
||||
|
||||
if ($minutes % 15 != 0) {
|
||||
// Change the start hour of the current space in order to be
|
||||
// on of the following: 00, 15, 30, 45.
|
||||
if ($minutes < 15) {
|
||||
$start_hour->setTime($start_hour->format('H'), 15);
|
||||
} else if ($minutes < 30) {
|
||||
$start_hour->setTime($start_hour->format('H'), 30);
|
||||
} else if ($minutes < 45) {
|
||||
$start_hour->setTime($start_hour->format('H'), 45);
|
||||
} else {
|
||||
$start_hour->setTime($start_hour->format('H') + 1, 00);
|
||||
}
|
||||
}
|
||||
|
||||
$curr_hour = $start_hour;
|
||||
|
||||
$diff = $curr_hour->diff($end_hour);
|
||||
while(($diff->h * 60 + $diff->i) > intval($_POST['service_duration'])) {
|
||||
|
@ -289,7 +317,12 @@ class Appointments extends CI_Controller {
|
|||
// that is at least half or one hour from now. The setting is stored in
|
||||
// minutes.
|
||||
if (date('m/d/Y', strtotime($_POST['selected_date'])) == date('m/d/Y')) {
|
||||
$book_advance_timeout = $this->Settings_Model->get_setting('book_advance_timeout');
|
||||
if ($_POST['manage_mode'] === 'true') {
|
||||
$book_advance_timeout = 0;
|
||||
} else {
|
||||
$book_advance_timeout = $this->Settings_Model
|
||||
->get_setting('book_advance_timeout');
|
||||
}
|
||||
|
||||
foreach($available_hours as $index=>$value) {
|
||||
$available_hour = strtotime($value);
|
||||
|
@ -321,7 +354,8 @@ class Appointments extends CI_Controller {
|
|||
try {
|
||||
$this->load->library('Google_Sync');
|
||||
$this->google_sync->sync_appointment($appointment_id);
|
||||
$view_data['message'] = 'Your appointment has been successfully added to Google Calendar!';
|
||||
$view_data['message'] = 'Your appointment has been successfully added'
|
||||
. 'to Google Calendar!';
|
||||
$view_data['image'] = 'success.png';
|
||||
} catch (Exception $exc) {
|
||||
$view_data['message'] = 'An unexpected error occured during the sync '
|
||||
|
|
|
@ -74,7 +74,12 @@ class Unit_tests_appointments_model extends CI_Driver {
|
|||
|
||||
// Check if the record is the one that was inserted.
|
||||
$db_data = $this->CI->db->get_where('ea_appointments', array('id' => $appointment_data['id']))->row_array();
|
||||
unset($db_data['hash']); // This should not be included because is generate when the record is inserted.
|
||||
|
||||
// These should not be included because they are generated when the
|
||||
// record is inserted.
|
||||
unset($db_data['hash']);
|
||||
unset($db_data['book_datetime']);
|
||||
|
||||
$this->CI->unit->run($appointment_data, $db_data, 'Test if add() appointment (insert operation) has successfully inserted a record.');
|
||||
|
||||
// Delete inserted record.
|
||||
|
@ -418,7 +423,8 @@ class Unit_tests_appointments_model extends CI_Driver {
|
|||
|
||||
// Get the appointment row from the database.
|
||||
$db_data = $this->CI->Appointments_Model->get_row($appointment_data['id']);
|
||||
|
||||
unset($db_data['book_datetime']);
|
||||
|
||||
// Check if this is the record we seek.
|
||||
$this->CI->unit->run($db_data, $appointment_data, 'Test get_row() method.');
|
||||
|
||||
|
|
|
@ -51,9 +51,11 @@ class Notifications {
|
|||
* data. Each key has the same name as the corresponding field in db.
|
||||
* @param array $appointment_data Associative array with the appointment's
|
||||
* data. Each key has the same name as the corresponding field in db.
|
||||
* @param string $email_title The email title is going to inform the customer
|
||||
* for the action that was taken.
|
||||
* @return bool Returns the operation result.
|
||||
*/
|
||||
public function send_book_success($customer_data, $appointment_data) {
|
||||
public function send_book_success($customer_data, $appointment_data, $email_title) {
|
||||
$this->CI->load->model('Providers_Model');
|
||||
$this->CI->load->model('Services_Model');
|
||||
$this->CI->load->model('Settings_Model');
|
||||
|
@ -64,11 +66,12 @@ class Notifications {
|
|||
->get_row($appointment_data['id_services']);
|
||||
|
||||
$replace_array = array(
|
||||
'$email_title' => $email_title,
|
||||
'$appointment_service' => $service_data['name'],
|
||||
'$appointment_provider' => $provider_data['first_name'] . ' ' . $provider_data['last_name'],
|
||||
'$appointment_date' => date('d/m/Y H:i', strtotime($appointment_data['start_datetime'])),
|
||||
'$appointment_duration' => $service_data['duration'] . ' minutes',
|
||||
'$appointment_link' => $this->CI->config->item('base_url') . $appointment_data['hash'],
|
||||
'$appointment_link' => $this->CI->config->item('base_url') . 'appointments/index/' . $appointment_data['hash'],
|
||||
'$company_link' => $this->CI->Settings_Model->get_setting('company_link'),
|
||||
'$company_name' => $this->CI->Settings_Model->get_setting('company_name'),
|
||||
'$customer_name' => $customer_data['first_name'] . ' ' . $customer_data['last_name']
|
||||
|
@ -83,7 +86,7 @@ class Notifications {
|
|||
$mail->AddAddress($customer_data['email']); // Do not use the name argument, phpmailer crushes.
|
||||
$mail->IsHTML(true);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->Subject = 'Appointment Book Success!';
|
||||
$mail->Subject = $email_title;
|
||||
$mail->Body = $email_html;
|
||||
|
||||
if(!$mail->Send()) {
|
||||
|
@ -105,9 +108,11 @@ class Notifications {
|
|||
* data. Each key has the same name as the corresponding field in db.
|
||||
* @param array $appointment_data Associative array with the appointment's
|
||||
* data. Each key has the same name as the corresponding field in db.
|
||||
* @param string $email_title The email title is going to inform the provider
|
||||
* for the action that was taken.
|
||||
* @return bool Returns the operation result.
|
||||
*/
|
||||
public function send_new_appointment($customer_data, $appointment_data) {
|
||||
public function send_new_appointment($customer_data, $appointment_data, $email_title) {
|
||||
$this->CI->load->model('Providers_Model');
|
||||
$this->CI->load->model('Services_Model');
|
||||
$this->CI->load->model('Settings_Model');
|
||||
|
@ -116,6 +121,7 @@ class Notifications {
|
|||
$service_data = $this->CI->Services_Model->get_row($appointment_data['id_services']);
|
||||
|
||||
$replace_array = array(
|
||||
'$email_title' => $email_title,
|
||||
'$appointment_service' => $service_data['name'],
|
||||
'$appointment_provider' => $provider_data['first_name'] . ' ' . $provider_data['last_name'],
|
||||
'$appointment_date' => date('d/m/Y H:i', strtotime($appointment_data['start_datetime'])),
|
||||
|
@ -135,11 +141,11 @@ class Notifications {
|
|||
|
||||
$mail = new PHPMailer();
|
||||
$mail->From = $this->CI->Settings_Model->get_setting('company_email');
|
||||
$mail->FromName = $this->CI->Settings_Model->get_setting('company_name');;
|
||||
$mail->FromName = $this->CI->Settings_Model->get_setting('company_name');
|
||||
$mail->AddAddress($provider_data['email']); // "Name" argument crushes the phpmailer class.
|
||||
$mail->IsHTML(true);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->Subject = 'New Appointment';
|
||||
$mail->Subject = $email_title;
|
||||
$mail->Body = $email_html;
|
||||
|
||||
if (!$mail->Send()) {
|
||||
|
@ -149,6 +155,52 @@ class Notifications {
|
|||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send an email notification to a user when an appointment is cancelled.
|
||||
*
|
||||
* @param array $appointment_data The record data of the cancelled appointment.
|
||||
* @param string $user_email The user email where the email notification is going
|
||||
* to be send.
|
||||
*/
|
||||
public function send_cancel_appointment($appointment_data, $user_email) {
|
||||
$this->CI->load->model('Providers_Model');
|
||||
$this->CI->load->model('Services_Model');
|
||||
$this->CI->load->model('Settings_Model');
|
||||
|
||||
$provider_data = $this->CI->Providers_Model->get_row($appointment_data['id_users_provider']);
|
||||
$service_data = $this->CI->Services_Model->get_row($appointment_data['id_services']);
|
||||
|
||||
$replace_array = array(
|
||||
'$email_title' => 'Appointment Cancelled',
|
||||
'$appointment_service' => $service_data['name'],
|
||||
'$appointment_provider' => $provider_data['first_name'] . ' ' . $provider_data['last_name'],
|
||||
'$appointment_date' => date('d/m/Y H:i', strtotime($appointment_data['start_datetime'])),
|
||||
'$appointment_duration' => $service_data['duration'] . ' minutes',
|
||||
'$company_link' => $this->CI->Settings_Model->get_setting('company_link'),
|
||||
'$company_name' => $this->CI->Settings_Model->get_setting('company_name')
|
||||
);
|
||||
|
||||
$email_html = file_get_contents(dirname(dirname(__FILE__))
|
||||
. '/views/emails/cancel_appointment.php');
|
||||
$email_html = $this->replace_template_variables($replace_array, $email_html);
|
||||
|
||||
$mail = new PHPMailer();
|
||||
$mail->From = $this->CI->Settings_Model->get_setting('company_email');
|
||||
$mail->FromName = $this->CI->Settings_Model->get_setting('company_name');
|
||||
$mail->AddAddress($user_email); // "Name" argument crushes the phpmailer class.
|
||||
$mail->IsHTML(true);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->Subject = 'Appointment Cancelled';
|
||||
$mail->Body = $email_html;
|
||||
|
||||
if (!$mail->Send()) {
|
||||
throw new NotificationException('Email could not been sent. '
|
||||
. 'Mailer Error (Line ' . __LINE__ . '): ' . $mail->ErrorInfo);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -15,24 +15,26 @@ class Appointments_Model extends CI_Model {
|
|||
* appointment doesn't exists it is going to be inserted, otherwise
|
||||
* the record is going to be updated.
|
||||
*
|
||||
* @expectedException ValidationException
|
||||
* @expectedException DatabaseException
|
||||
* @expectedException ValidationException Raises when the appointment data
|
||||
* are invalid.
|
||||
* @expectedException DatabaseException Raises when the insert or update
|
||||
* operation fail to complete successfully.
|
||||
*
|
||||
* @param array $appointment_data Associative array with the appointmet's
|
||||
* @param array $appointment_data Associative array with the appointment
|
||||
* data. Each key has the same name with the database fields.
|
||||
* @return int Returns the appointments id.
|
||||
*/
|
||||
public function add($appointment_data) {
|
||||
// Validate the appointment data before doing anything.
|
||||
if (!$this->validate_data($appointment_data)) {
|
||||
throw new ValidationException('Appointment data are not valid');
|
||||
throw new ValidationException('Appointment data are invalid.');
|
||||
}
|
||||
|
||||
// Insert or update the appointment data.
|
||||
if (!$this->exists($appointment_data)) {
|
||||
|
||||
// Perform insert() or update() operation.
|
||||
if (!isset($appointment_data['id'])) {
|
||||
$appointment_data['id'] = $this->insert($appointment_data);
|
||||
} else {
|
||||
$appointment_data['id'] = $this->update($appointment_data);
|
||||
$this->update($appointment_data);
|
||||
}
|
||||
|
||||
return $appointment_data['id'];
|
||||
|
@ -59,16 +61,17 @@ class Appointments_Model extends CI_Model {
|
|||
|| !isset($appointment_data['id_users_provider'])
|
||||
|| !isset($appointment_data['id_users_customer'])
|
||||
|| !isset($appointment_data['id_services'])) {
|
||||
throw new InvalidArgumentException('Not all appointment field values are provided : ' . print_r($appointment_data, TRUE));
|
||||
throw new InvalidArgumentException('Not all appointment field values '
|
||||
. 'are provided : ' . print_r($appointment_data, TRUE));
|
||||
}
|
||||
|
||||
$num_rows = $this->db->get_where('ea_appointments', array(
|
||||
'start_datetime' => $appointment_data['start_datetime'],
|
||||
'end_datetime' => $appointment_data['end_datetime'],
|
||||
'id_users_provider' => $appointment_data['id_users_provider'],
|
||||
'id_users_customer' => $appointment_data['id_users_customer'],
|
||||
'id_services' => $appointment_data['id_services'],
|
||||
))->num_rows();
|
||||
'start_datetime' => $appointment_data['start_datetime'],
|
||||
'end_datetime' => $appointment_data['end_datetime'],
|
||||
'id_users_provider' => $appointment_data['id_users_provider'],
|
||||
'id_users_customer' => $appointment_data['id_users_customer'],
|
||||
'id_services' => $appointment_data['id_services'],))
|
||||
->num_rows();
|
||||
|
||||
return ($num_rows > 0) ? TRUE : FALSE;
|
||||
}
|
||||
|
@ -76,17 +79,21 @@ class Appointments_Model extends CI_Model {
|
|||
/**
|
||||
* Insert a new appointment record to the database.
|
||||
*
|
||||
* @expectedException DatabaseException
|
||||
* @expectedException DatabaseException Raises when the insert operation
|
||||
* failes to complete successfully.
|
||||
*
|
||||
* @param array $appointment_data Associative array with the appointment's
|
||||
* data. Each key has the same name with the database fields.
|
||||
* @return int Returns the id of the new record.
|
||||
*/
|
||||
private function insert($appointment_data) {
|
||||
$appointment_data['book_datetime'] = date('Y-m-d H:i:s');
|
||||
$appointment_data['hash'] = $this->generate_hash();
|
||||
|
||||
if (!$this->db->insert('ea_appointments', $appointment_data)) {
|
||||
throw new DatabaseException('Could not insert appointment record.');
|
||||
}
|
||||
|
||||
return intval($this->db->insert_id());
|
||||
}
|
||||
|
||||
|
@ -96,38 +103,36 @@ class Appointments_Model extends CI_Model {
|
|||
* The appointment data argument should already include the record
|
||||
* id in order to process the update operation.
|
||||
*
|
||||
* @expectedException DatabaseException Raises when the update operation
|
||||
* failes to complete successfully.
|
||||
*
|
||||
* @param array $appointment_data Associative array with the appointment's
|
||||
* data. Each key has the same name with the database fields.
|
||||
* @return int Returns the id of the updated record.
|
||||
*/
|
||||
private function update($appointment_data) {
|
||||
if (!isset($appointment_data['id'])) {
|
||||
$appointment_data['id'] = $this->find_record_id($appointment_data);
|
||||
}
|
||||
|
||||
$this->db->where('id', $appointment_data['id']);
|
||||
if (!$this->db->update('ea_appointments', $appointment_data)) {
|
||||
throw new DatabaseException('Could not update appointment record.');
|
||||
}
|
||||
|
||||
return intval($appointment_data['id']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the database id of an appointment record.
|
||||
*
|
||||
* The appointment data should include the following fields in order to
|
||||
* get the unique id from the database: start_datetime, end_datetime,
|
||||
* id_users_provider, id_users_customer, id_services.
|
||||
* The appointment data should include the following fields in order
|
||||
* to get the unique id from the database: "start_datetime", "end_datetime",
|
||||
* "id_users_provider", "id_users_customer", "id_services".
|
||||
*
|
||||
* <strong>IMPORTANT!</strong> The record must already exists in the
|
||||
* database, otherwise an exception is raised.
|
||||
*
|
||||
* @expectedException DatabaseException
|
||||
* @expectedException DatabaseException Raises when this method cannot
|
||||
* find any record that matches the given data.
|
||||
*
|
||||
* @param array $appointment_data Array with the appointment data. The
|
||||
* keys of the array should have the same names as the db fields.
|
||||
* @return int Returns the id.
|
||||
* @return int Returns the db id of the record that matches the apppointment
|
||||
* data.
|
||||
*/
|
||||
public function find_record_id($appointment_data) {
|
||||
$this->db->where(array(
|
||||
|
@ -148,8 +153,8 @@ class Appointments_Model extends CI_Model {
|
|||
}
|
||||
|
||||
/**
|
||||
* Validate appointment data before the insert or
|
||||
* update operation is executed.
|
||||
* Validate appointment data before the insert or update operations
|
||||
* are executed.
|
||||
*
|
||||
* @param array $appointment_data Contains the appointment data.
|
||||
* @return bool Returns the validation result.
|
||||
|
@ -158,6 +163,17 @@ class Appointments_Model extends CI_Model {
|
|||
$this->load->helper('data_validation');
|
||||
|
||||
try {
|
||||
// If a appointment id is given, check wether the record exists
|
||||
// in the database.
|
||||
if (isset($appointment_data['id'])) {
|
||||
$num_rows = $this->db->get_where('ea_appointments',
|
||||
array('id' => $appointment_data['id']))->num_rows();
|
||||
if ($num_rows == 0) {
|
||||
throw new Exception('Provided appointment id does not '
|
||||
. 'exist in the database.');
|
||||
}
|
||||
}
|
||||
|
||||
// Check if appointment dates are valid.
|
||||
if (!validate_mysql_datetime($appointment_data['start_datetime'])) {
|
||||
throw new Exception('Appointment start datetime is invalid.');
|
||||
|
@ -169,30 +185,31 @@ class Appointments_Model extends CI_Model {
|
|||
|
||||
// Check if the provider's id is valid.
|
||||
$num_rows = $this->db
|
||||
->select('*')
|
||||
->from('ea_users')
|
||||
->join('ea_roles', 'ea_roles.id = ea_users.id_roles', 'inner')
|
||||
->where('ea_users.id', $appointment_data['id_users_provider'])
|
||||
->where('ea_roles.slug', DB_SLUG_PROVIDER)
|
||||
->get()->num_rows();
|
||||
->select('*')
|
||||
->from('ea_users')
|
||||
->join('ea_roles', 'ea_roles.id = ea_users.id_roles', 'inner')
|
||||
->where('ea_users.id', $appointment_data['id_users_provider'])
|
||||
->where('ea_roles.slug', DB_SLUG_PROVIDER)
|
||||
->get()->num_rows();
|
||||
if ($num_rows == 0) {
|
||||
throw new Exception('Appointment provider id is invalid.');
|
||||
}
|
||||
|
||||
// Check if the customer's id is valid.
|
||||
$num_rows = $this->db
|
||||
->select('*')
|
||||
->from('ea_users')
|
||||
->join('ea_roles', 'ea_roles.id = ea_users.id_roles', 'inner')
|
||||
->where('ea_users.id', $appointment_data['id_users_customer'])
|
||||
->where('ea_roles.slug', DB_SLUG_CUSTOMER)
|
||||
->get()->num_rows();
|
||||
->select('*')
|
||||
->from('ea_users')
|
||||
->join('ea_roles', 'ea_roles.id = ea_users.id_roles', 'inner')
|
||||
->where('ea_users.id', $appointment_data['id_users_customer'])
|
||||
->where('ea_roles.slug', DB_SLUG_CUSTOMER)
|
||||
->get()->num_rows();
|
||||
if ($num_rows == 0) {
|
||||
throw new Exception('Appointment customer id is invalid.');
|
||||
}
|
||||
|
||||
// Check if the service id is valid.
|
||||
$num_rows = $this->db->get_where('ea_services', array('id' => $appointment_data['id_services']))->num_rows();
|
||||
$num_rows = $this->db->get_where('ea_services',
|
||||
array('id' => $appointment_data['id_services']))->num_rows();
|
||||
if ($num_rows == 0) {
|
||||
throw new Exception('Appointment customer id is invalid.');
|
||||
}
|
||||
|
@ -214,10 +231,12 @@ class Appointments_Model extends CI_Model {
|
|||
*/
|
||||
public function delete($appointment_id) {
|
||||
if (!is_numeric($appointment_id)) {
|
||||
throw new InvalidArgumentException('Invalid argument type $appointment_id : ' . $appointment_id);
|
||||
throw new InvalidArgumentException('Invalid argument type $appointment_id : '
|
||||
. $appointment_id);
|
||||
}
|
||||
|
||||
$num_rows = $this->db->get_where('ea_appointments', array('id' => $appointment_id))->num_rows();
|
||||
$num_rows = $this->db->get_where('ea_appointments',
|
||||
array('id' => $appointment_id))->num_rows();
|
||||
|
||||
if ($num_rows == 0) {
|
||||
return FALSE; // Record does not exist.
|
||||
|
@ -237,36 +256,43 @@ class Appointments_Model extends CI_Model {
|
|||
*/
|
||||
public function get_row($appointment_id) {
|
||||
if (!is_numeric($appointment_id)) {
|
||||
throw new InvalidArgumentException('Invalid argument given. Expected integer for the $appointment_id : ' . $appointment_id);
|
||||
throw new InvalidArgumentException('Invalid argument given. Expected '
|
||||
. 'integer for the $appointment_id : ' . $appointment_id);
|
||||
}
|
||||
return $this->db->get_where('ea_appointments', array('id' => $appointment_id))->row_array();
|
||||
return $this->db->get_where('ea_appointments',
|
||||
array('id' => $appointment_id))->row_array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a specific field value from the database.
|
||||
*
|
||||
* @param string $field_name The field name of the value to be
|
||||
* returned.
|
||||
* @param string $field_name The field name of the value to be returned.
|
||||
* @param int $appointment_id The selected record's id.
|
||||
* @return string Returns the records value from the database.
|
||||
*/
|
||||
public function get_value($field_name, $appointment_id) {
|
||||
if (!is_numeric($appointment_id)) {
|
||||
throw new InvalidArgumentException('Invalid argument given, expected integer for the $appointment_id : ' . $appointment_id);
|
||||
throw new InvalidArgumentException('Invalid argument given, expected '
|
||||
. 'integer for the $appointment_id : ' . $appointment_id);
|
||||
}
|
||||
|
||||
if (!is_string($field_name)) {
|
||||
throw new InvalidArgumentException('Invalid argument given, expected string for the $field_name : ' . $field_name);
|
||||
throw new InvalidArgumentException('Invalid argument given, expected '
|
||||
. 'string for the $field_name : ' . $field_name);
|
||||
}
|
||||
|
||||
if ($this->db->get_where('ea_appointments', array('id' => $appointment_id))->num_rows() == 0) {
|
||||
throw new InvalidArgumentException('The record with the provided id does not exist in the database : ' . $appointment_id);
|
||||
if ($this->db->get_where('ea_appointments',
|
||||
array('id' => $appointment_id))->num_rows() == 0) {
|
||||
throw new InvalidArgumentException('The record with the provided id '
|
||||
. 'does not exist in the database : ' . $appointment_id);
|
||||
}
|
||||
|
||||
$row_data = $this->db->get_where('ea_appointments', array('id' => $appointment_id))->row_array();
|
||||
$row_data = $this->db->get_where('ea_appointments',
|
||||
array('id' => $appointment_id))->row_array();
|
||||
|
||||
if (!isset($row_data[$field_name])) {
|
||||
throw new InvalidArgumentException('The given field name does not exist in the database : ' . $field_name);
|
||||
throw new InvalidArgumentException('The given field name does not '
|
||||
. 'exist in the database : ' . $field_name);
|
||||
}
|
||||
|
||||
return $row_data[$field_name];
|
||||
|
|
|
@ -23,15 +23,15 @@ class Customers_Model extends CI_Model {
|
|||
* @return int Returns the customer id.
|
||||
*/
|
||||
public function add($customer_data) {
|
||||
// Validate the appointment data before doing anything.
|
||||
// Validate the customer data before doing anything.
|
||||
if (!$this->validate_data($customer_data)) {
|
||||
throw new ValidationException('Customer data are not valid.');
|
||||
}
|
||||
|
||||
if (!$this->exists($customer_data)) {
|
||||
if (!isset($customer_data['id'])) {
|
||||
$customer_data['id'] = $this->insert($customer_data);
|
||||
} else {
|
||||
$customer_data['id'] = $this->update($customer_data);
|
||||
$this->update($customer_data);
|
||||
}
|
||||
|
||||
return $customer_data['id'];
|
||||
|
@ -103,11 +103,7 @@ class Customers_Model extends CI_Model {
|
|||
* data. Each key has the same name with the database fields.
|
||||
* @return int Returns the updated record id.
|
||||
*/
|
||||
private function update($customer_data) {
|
||||
if (!isset($customer_data['id'])) {
|
||||
$customer_data['id'] = $this->find_record_id($customer_data);
|
||||
}
|
||||
|
||||
private function update($customer_data) {
|
||||
$this->db->where('id', $customer_data['id']);
|
||||
if (!$this->db->update('ea_users', $customer_data)) {
|
||||
throw new DatabaseException('Could not update customer to the database.');
|
||||
|
@ -164,6 +160,16 @@ class Customers_Model extends CI_Model {
|
|||
$this->load->helper('data_validation');
|
||||
|
||||
try {
|
||||
// If a customer id is provided, check whether the record
|
||||
// exist in the database.
|
||||
if (isset($customer_data['id'])) {
|
||||
$num_rows = $this->db->get_where('ea_users',
|
||||
array('id' => $customer_data['id']))->num_rows();
|
||||
if ($num_rows == 0) {
|
||||
throw new Exception('Provided customer id does not '
|
||||
. 'exist in the database.');
|
||||
}
|
||||
}
|
||||
// Validate required fields
|
||||
if (!isset($customer_data['last_name'])
|
||||
|| !isset($customer_data['email'])
|
||||
|
@ -174,7 +180,8 @@ class Customers_Model extends CI_Model {
|
|||
|
||||
// Validate email address
|
||||
if (!filter_var($customer_data['email'], FILTER_VALIDATE_EMAIL)) {
|
||||
throw new Exception('Invalid email address provided : ' . $customer_data['email']);
|
||||
throw new Exception('Invalid email address provided : '
|
||||
. $customer_data['email']);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
@ -194,7 +201,8 @@ class Customers_Model extends CI_Model {
|
|||
*/
|
||||
public function delete($customer_id) {
|
||||
if (!is_numeric($customer_id)) {
|
||||
throw new InvalidArgumentException('Invalid argument type $customer_id : ' . $customer_id);
|
||||
throw new InvalidArgumentException('Invalid argument type $customer_id : '
|
||||
. $customer_id);
|
||||
}
|
||||
|
||||
$num_rows = $this->db->get_where('ea_users', array('id' => $customer_id))->num_rows();
|
||||
|
@ -216,7 +224,8 @@ class Customers_Model extends CI_Model {
|
|||
*/
|
||||
public function get_row($customer_id) {
|
||||
if (!is_numeric($customer_id)) {
|
||||
throw new InvalidArgumentException('Invalid argument provided as $customer_id : ' . $customer_id);
|
||||
throw new InvalidArgumentException('Invalid argument provided as $customer_id : '
|
||||
. $customer_id);
|
||||
}
|
||||
return $this->db->get_where('ea_users', array('id' => $customer_id))->row_array();
|
||||
}
|
||||
|
@ -231,23 +240,29 @@ class Customers_Model extends CI_Model {
|
|||
*/
|
||||
public function get_value($field_name, $customer_id) {
|
||||
if (!is_numeric($customer_id)) {
|
||||
throw new InvalidArgumentException('Invalid argument provided as $customer_id : ' . $customer_id);
|
||||
throw new InvalidArgumentException('Invalid argument provided as $customer_id : '
|
||||
. $customer_id);
|
||||
}
|
||||
|
||||
if (!is_string($field_name)) {
|
||||
throw new InvalidArgumentException('$field_name argument is not a string : ' . $field_name);
|
||||
throw new InvalidArgumentException('$field_name argument is not a string : '
|
||||
. $field_name);
|
||||
}
|
||||
|
||||
if ($this->db->get_where('ea_users', array('id' => $customer_id))->num_rows() == 0) {
|
||||
throw new InvalidArgumentException('The record with the $customer_id argument does not exist in the database : ' . $customer_id);
|
||||
throw new InvalidArgumentException('The record with the $customer_id argument '
|
||||
. 'does not exist in the database : ' . $customer_id);
|
||||
}
|
||||
|
||||
$row_data = $this->db->get_where('ea_users', array('id' => $customer_id))->row_array();
|
||||
$row_data = $this->db->get_where('ea_users', array('id' => $customer_id)
|
||||
)->row_array();
|
||||
if (!isset($row_data[$field_name])) {
|
||||
throw new InvalidArgumentException('The given $field_name argument does not exist in the database : ' . $field_name);
|
||||
throw new InvalidArgumentException('The given $field_name argument does not'
|
||||
. 'exist in the database : ' . $field_name);
|
||||
}
|
||||
|
||||
return $this->db->get_where('ea_users', array('id' => $customer_id))->row_array()[$field_name];
|
||||
return $this->db->get_where('ea_users', array('id' => $customer_id))
|
||||
->row_array()[$field_name];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -33,23 +33,28 @@ class Providers_Model extends CI_Model {
|
|||
*/
|
||||
public function get_value($field_name, $provider_id) {
|
||||
if (!is_numeric($provider_id)) {
|
||||
throw new InvalidArgumentException('Invalid argument provided as $customer_id : ' . $provider_id);
|
||||
throw new InvalidArgumentException('Invalid argument provided as $customer_id : '
|
||||
. $provider_id);
|
||||
}
|
||||
|
||||
if (!is_string($field_name)) {
|
||||
throw new InvalidArgumentException('$field_name argument is not a string : ' . $field_name);
|
||||
throw new InvalidArgumentException('$field_name argument is not a string : '
|
||||
. $field_name);
|
||||
}
|
||||
|
||||
if ($this->db->get_where('ea_users', array('id' => $provider_id))->num_rows() == 0) {
|
||||
throw new InvalidArgumentException('The record with the $provider_id argument does not exist in the database : ' . $provider_id);
|
||||
throw new InvalidArgumentException('The record with the $provider_id argument'
|
||||
. 'does not exist in the database : ' . $provider_id);
|
||||
}
|
||||
|
||||
$row_data = $this->db->get_where('ea_users', array('id' => $provider_id))->row_array();
|
||||
if (!isset($row_data[$field_name])) {
|
||||
throw new InvalidArgumentException('The given $field_name argument does not exist in the database : ' . $field_name);
|
||||
throw new InvalidArgumentException('The given $field_name argument does not'
|
||||
. 'exist in the database : ' . $field_name);
|
||||
}
|
||||
|
||||
return $this->db->get_where('ea_users', array('id' => $provider_id))->row_array()[$field_name];
|
||||
return $this->db->get_where('ea_users', array('id' => $provider_id))
|
||||
->row_array()[$field_name];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -117,6 +122,19 @@ class Providers_Model extends CI_Model {
|
|||
public function get_providers_role_id() {
|
||||
return $this->db->get_where('ea_roles', array('slug' => DB_SLUG_PROVIDER))->row()->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a providers setting from the database.
|
||||
*
|
||||
* @param string $setting_name The setting name that is going to be
|
||||
* returned.
|
||||
* @param int $provider_id The selected provider id.
|
||||
* @return string Returs the value of the selected user setting.
|
||||
*/
|
||||
public function get_setting($setting_name, $provider_id) {
|
||||
return $this->db->get_where('ea_user_settings', array('id_users' => $provider_id))
|
||||
->row_array()[$setting_name];
|
||||
}
|
||||
}
|
||||
|
||||
/* End of file providers_model.php */
|
||||
|
|
|
@ -132,7 +132,11 @@
|
|||
Press the "Cancel" button to remove the appointment
|
||||
from the company schedule.
|
||||
</p>
|
||||
<button id="cancel-appointment" class="button">Cancel</button>
|
||||
<form method="get" action="' . $this->config->item('base_url')
|
||||
. 'appointments/cancel/' . $appointment_data['hash'] . '">
|
||||
<button id="cancel-appointment" class="btn btn-inverse">
|
||||
Cancel</button>
|
||||
</form>
|
||||
</div>';
|
||||
}
|
||||
?>
|
||||
|
|
63
src/application/views/appointments/cancel.php
Normal file
63
src/application/views/appointments/cancel.php
Normal file
|
@ -0,0 +1,63 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
|
||||
<?php // INCLUDE JS FILES ?>
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="<?php echo $this->config->base_url(); ?>assets/js/libs/jquery/jquery.min.js">
|
||||
</script>
|
||||
|
||||
<?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">
|
||||
|
||||
<?php // SET FAVICON FOR PAGE ?>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/x-icon"
|
||||
href="<?php echo $this->config->base_url(); ?>assets/images/favicon.ico">
|
||||
|
||||
<style>
|
||||
body {
|
||||
background-color: #CAEDF3;
|
||||
}
|
||||
|
||||
#success-frame {
|
||||
width: 660px;
|
||||
margin: 150px auto 0 auto;
|
||||
background: #FFF;
|
||||
border: 1px solid #DDDADA;
|
||||
min-height: 197px;
|
||||
padding: 108px 10px;
|
||||
}
|
||||
|
||||
#success-icon {
|
||||
float: left;
|
||||
margin: 10px 25px 100px 50px;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="success-frame" class="frame-container">
|
||||
<img id="success-icon" src="<?php echo $this->config->base_url(); ?>assets/images/success.png" />
|
||||
|
||||
<h2>Your appointment has been successfully cancelled.</h2>
|
||||
|
||||
<?php
|
||||
// Display exception message (if any).
|
||||
if (isset($error_message)) {
|
||||
echo $error_message;
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -11,7 +11,7 @@
|
|||
</div>
|
||||
|
||||
<div id="content" style="padding: 10px 15px;">
|
||||
<h2>Your appointment has been successfully booked!</h2>
|
||||
<h2>$email_title</h2>
|
||||
<p>
|
||||
Thank you $customer_name for arranging an appointment with us.
|
||||
Below you can see the appointment details. Click on the edit
|
||||
|
@ -44,7 +44,7 @@
|
|||
You are able to change the appointment details three hours before
|
||||
the appointment.
|
||||
</p>
|
||||
<a href="$appointment_link">$appointment_link</a>
|
||||
<a href="$appointment_link" style="width: 600px;">$appointment_link</a>
|
||||
</div>
|
||||
|
||||
<div id="footer" style="padding: 10px; text-align: center;
|
||||
|
|
46
src/application/views/emails/cancel_appointment.php
Normal file
46
src/application/views/emails/cancel_appointment.php
Normal file
|
@ -0,0 +1,46 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>$email_title</title>
|
||||
</head>
|
||||
<body style="font: 13px arial, helvetica, tahoma;">
|
||||
<div class="email-container" style="width: 650px;border: 1px solid #eee;">
|
||||
<div id="header" style="background-color: #3DD481; border-bottom: 4px solid #1A865F;
|
||||
height: 40px;padding: 10px 15px;">
|
||||
<strong id="logo" style="color: white; font-size: 31px;
|
||||
text-shadow: 1px 1px 1px #8F8888;">$company_name</strong>
|
||||
</div>
|
||||
|
||||
<div id="content" style="padding: 10px 15px;">
|
||||
<h2>$email_title</h2>
|
||||
<p>
|
||||
The following appointment was removed from the company's schedule.
|
||||
</p>
|
||||
|
||||
<h2>Appointment Details</h2>
|
||||
<table id="appointment-details">
|
||||
<tr>
|
||||
<td class="label" style="padding: 3px;font-weight: bold;">Service</td>
|
||||
<td style="padding: 3px;">$appointment_service</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label" style="padding: 3px;font-weight: bold;">Provider</td>
|
||||
<td style="padding: 3px;">$appointment_provider</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label" style="padding: 3px;font-weight: bold;">Date</td>
|
||||
<td style="padding: 3px;">$appointment_date</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="label" style="padding: 3px;font-weight: bold;">Duration</td>
|
||||
<td style="padding: 3px;">$appointment_duration</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="footer" style="padding: 10px; text-align: center;
|
||||
border-top: 1px solid #EEE;background: #FAFAFA;">
|
||||
<a href="$company_link">$company_name</a> | Powered by Easy!Appointments
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -12,7 +12,7 @@
|
|||
</div>
|
||||
|
||||
<div id="content" style="padding: 10px 15px;">
|
||||
<h2>A new appointment has been added to your plan.</h2>
|
||||
<h2>$email_title</h2>
|
||||
<h2>Appointment Details</h2>
|
||||
<table id="appointment-details">
|
||||
<tr>
|
||||
|
@ -55,7 +55,7 @@
|
|||
|
||||
<h2>Appointment Link</h2>
|
||||
<p>You can make more actions by pressing the following link.</p>
|
||||
<a href="$appointment_link">$appointment_link</a>
|
||||
<a href="$appointment_link" style="width: 600px;">$appointment_link</a>
|
||||
</div>
|
||||
|
||||
<div id="footer" style="padding: 10px; text-align: center;
|
||||
|
|
|
@ -142,10 +142,21 @@ body {
|
|||
}
|
||||
|
||||
#cancel-appointment-frame {
|
||||
|
||||
padding: 12px 17px;
|
||||
background: #F5F5F5;
|
||||
border-bottom: 1px solid #E2E2E2;
|
||||
}
|
||||
|
||||
#cancel-appointment-frame p {
|
||||
display: inline-block;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#cancel-appointment-frame form {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -28,9 +28,11 @@ var bookAppointment = {
|
|||
}
|
||||
|
||||
if (manageMode === undefined) {
|
||||
bookAppointment.manageMode = false; // Default Value
|
||||
manageMode = false; // Default Value
|
||||
}
|
||||
|
||||
bookAppointment.manageMode = manageMode;
|
||||
|
||||
// Initialize page's components (tooltips, datepickers etc).
|
||||
$('.book-step').qtip({
|
||||
position: {
|
||||
|
@ -243,8 +245,19 @@ var bookAppointment = {
|
|||
+ '</span><br/>');
|
||||
});
|
||||
|
||||
// Set the first item as selected.
|
||||
$('.available-hour:eq(0)').addClass('selected-hour');
|
||||
if (bookAppointment.manageMode) {
|
||||
// Set the appointment start time as selected.
|
||||
$('.available-hour').removeClass('selected-hour');
|
||||
$('.available-hour').filter(function() {
|
||||
return $(this).text() === Date.parseExact(
|
||||
GlobalVariables.appointmentData['start_datetime'],
|
||||
'yyyy-MM-dd HH:mm:ss').toString('HH:mm');
|
||||
}).addClass('selected-hour');
|
||||
} else {
|
||||
// Set the first item as selected.
|
||||
$('.available-hour:eq(0)').addClass('selected-hour');
|
||||
}
|
||||
|
||||
bookAppointment.updateConfirmFrame();
|
||||
} else {
|
||||
$('#available-hours').text('There are no available appointment'
|
||||
|
@ -253,8 +266,8 @@ var bookAppointment = {
|
|||
}
|
||||
|
||||
} catch(exception) {
|
||||
GeneralFunctions.displayMessageBox('Unexpected Error', 'An unexpected'
|
||||
+ 'error occured during the available hours calculation. Please'
|
||||
GeneralFunctions.displayMessageBox('Unexpected Error', 'An unexpected '
|
||||
+ 'error occured during the available hours calculation. Please '
|
||||
+ 'refresh the page and try again.');
|
||||
}
|
||||
});
|
||||
|
@ -331,6 +344,13 @@ var bookAppointment = {
|
|||
'id_services' : $('#select-service').val()
|
||||
};
|
||||
|
||||
postData['manage_mode'] = bookAppointment.manageMode;
|
||||
|
||||
if (bookAppointment.manageMode) {
|
||||
postData['appointment']['id'] = GlobalVariables.appointmentData['id'];
|
||||
postData['customer']['id'] = GlobalVariables.customerData['id'];
|
||||
}
|
||||
|
||||
$('input[name="post_data"]').val(JSON.stringify(postData));
|
||||
},
|
||||
|
||||
|
@ -378,26 +398,25 @@ var bookAppointment = {
|
|||
applyAppointmentData : function(appointmentData, providerData, customerData) {
|
||||
try {
|
||||
// Select Service & Provider
|
||||
$('#select-service').val(appointmentData['id_services']);
|
||||
$('#select-service').val(appointmentData['id_services']).trigger('change');
|
||||
$('#select-provider').val(appointmentData['id_users_provider']);
|
||||
|
||||
// Set Appointment Date
|
||||
$('.available-hour').removeClass('selected-hour');
|
||||
$('.available-hour').filter(function() {
|
||||
return $(this).text() === Date.parseExact(appointmentData['start_datetime'],
|
||||
'yyyy-MM-dd HH:mm').toString('HH:mm');
|
||||
}).addClass('selected-hour');
|
||||
$('#select-date').datepicker('setDate', Date.parseExact(
|
||||
appointmentData['start_datetime'], 'yyyy-MM-dd HH:mm:ss'));
|
||||
bookAppointment.getAvailableHours($('#select-date').val());
|
||||
|
||||
// Apply Customer's Data
|
||||
$('last-name').val(customerData['last_name']);
|
||||
$('first-name').val(customerData['first_name']);
|
||||
$('email').val(customerData['email']);
|
||||
$('phone-number').val(customerData['phone_number']);
|
||||
$('#last-name').val(customerData['last_name']);
|
||||
$('#first-name').val(customerData['first_name']);
|
||||
$('#email').val(customerData['email']);
|
||||
$('#phone-number').val(customerData['phone_number']);
|
||||
|
||||
$('address').val(customerData['address']);
|
||||
$('city').val(customerData['city']);
|
||||
$('zip-code').val(customerData['zip_code']);
|
||||
$('notes').text(customerData['notes']);
|
||||
$('#address').val(customerData['address']);
|
||||
$('#city').val(customerData['city']);
|
||||
$('#zip-code').val(customerData['zip_code']);
|
||||
var appointmentNotes = (appointmentData['notes'] !== null) ? appointmentData['notes'] : '';
|
||||
$('#notes').val(appointmentNotes);
|
||||
|
||||
bookAppointment.updateConfirmFrame();
|
||||
|
||||
|
|
Loading…
Reference in a new issue