Bookings API and implementation module proposal

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
c.lam's picture

I want to create a Drupal module for visitors to book rooms or entire buildings. It's intended for buildings that have publicly-accessible meeting rooms, study rooms, or banquet halls. The module would be built to allow managers to use it in tandem with Google Calendar for greater flexibility: sometimes bookings are made or changed in-person, and Google Calendar is better suited for quick and visual edits. This would just be a single possible implementation; I intend to also create a generic booking API along with this.

Proposed implementation's functionality:

  • The booking form will be supported with ajax that gives instant feedback on tentative and existing booking conflicts. Form submissions would be emailed to the manager(s), and also saved in the database.
  • The module and form checks for booking conflicts by downloading iCal files of existing bookings, as well as comparing it with its local records. Meant to work with Google Calendar.
  • Approved bookings are published as iCal files on a per-resource basis. It would also publish merged versions of bookings set on Google Calendar, and bookings approved within Drupal. This file can then be used elsewhere as the definitive record of bookings.
  • Users can book multiple resources at the same time. This means multiple rooms and resources can be booked together. The module will check for resource conflicts.
  • Email confirmation of booking applications. Would also include a random passcode for applicants to go back and edit their booking. I believe there's an event-related module that already implements the passcode idea. The booking form would not require user registration.
  • Resource availability times can be set, so users trying to book something outside of its time range will either be denied, or warned that further arrangements must be made.

iCal parsing would be achieved with the Date module.

About me:

I am a first-year computer science student at the University of British Columbia. I manage the website of the UBC science student society. I am in the process of migrating our website to Drupal. I think this project would be a fun and practical application of my first-year computer science studies. I have developed in PHP and web development for about 4 years, and although I'm just starting to move into Drupal, I'm extremely enthusiastic to develop this.

Motivation:

There seems to be a demand for booking systems in Drupal that haven't been adequately fulfilled yet. I believe this implementation would be an extremely useful and extensible starting point. Also, I personally would have great use for such a module! My student society owns a building that gets a high volume of room and building bookings that are currently being manually managed by email, paper, and Google Calendar.

The ideas for a booking API, as mentioned earlier in this group, would also be realized, and can be generalized to allow the booking of both rooms and other resources. The API would also allow other developers to jump in and create their own, more specialized, booking systems oriented towards their application (hotels, rentals, restaurants, etc). It's very important not to let bookings become interchangeable with events: otherwise the scope becomes too broad and may overlap with existing event modules. This means RSVPs, reminders, and invitations must not get tangled into this.

Rationale for the iCal export and import: bookings can still be very easily managed within Google Calendar. It's also to compensate for migration inertia in organizations that are already managing their bookings with Google Calendar - like mine!

Please tell me what you think. Thank you very much!

(edited to incorporate new ideas)

Comments

yes, there is demand

Matt V.'s picture

I agree that there is definitely demand for this type of module. You might want to cross-post your proposal to the Booking Systems group. Two discussions you might want to check out are here and here.

Have you taken a look at the availability, openresort, or resource conflict modules, for comparison? Would it be possible to extend any of the existing modules to include the specific features you envision?

I realize that booking can be a complex problem to begin with, but the module would likely have a wider audience if the project could be expanded to be slightly more generic, such as the API that fronbow envisioned.

APIs are nice

c.lam's picture

Good ideas!

I did read about the API fronbow wanted, so I was expecting that it would have already made significant progress by the time I got started. I strongly agree that an API would be useful to much more people: the modules you've mentioned could be obsoleted with the development of a booking API. I'm up for doing it!

I've taken a look at all 3 of those modules. It looks like availability and openresort are date-based, with no concern for times. Resource conflict depends on the Events module, a module which I hope to keep separate from this booking API and implementation, since not all bookings should be treated like events. A booking API can cover bookings for rooms and/or resources without needing to differentiate between the two, so I think that's pretty elegant.

How about a booking API, along with the particular implementation that I mentioned originally? I don't intend to tackle more specialized functionality such as integration with e-commerce, since I have no experience with that.

Unfortunately other work

fronbow's picture

Unfortunately other work commitments keep getting in the way! So the code is being written very very slowly!!

Maybe we need to join forces (and anyone else for that matter) as we seem to be thinking along the same lines?

You've prolly already read my idea; to have a separate API that does most of the leg work and has various facilities like collision detection, hooks into other modules, and the like.

Then we have specialised contrib modules that perform specific functions; like a generic room booking system, but then this also could be hooked into if someone needed ecommerce/ubercart/ functionality.

Hopefully I'll have a few full days to go thru' this again next week

perfect

c.lam's picture

Yes, that was exactly what I had in mind. I won't try to throw in ecommerce into my initial implementation because I have no experience with that, but the API won't know or care what that is, so it's all good.

The support for Google Calendar is a bit specialized for my own use, but I'm sure there's many organizations out there who also currently organize their bookings with it.

Integration of existing project

kermitjr's picture

just curious, but I've been searching and the best thing I've come up with is http://mrbs.sourceforge.net/ which has excellent functionality, is MySQL, etc. and would be great if it could simply be integrated into Drupal (simply is relative, I know) but it might give you a good start.

Several different approaches

ndru's picture

I think I've posted here before about what kinds of solutions are possible. There doesn't seem to be much support in this (the Drupal) community for just doing a bit of work to integrate support for an already existing F/LOSS resource booking system (phpScheduleIt) that works quite well. Everyone here seems to want to start from scratch. To me, that goes against the grain of the Agile philosophy: make the the simplest thing that could possibly be accepted and make a difference.

By the way, c.lam, I'm in Vancouver too! Go Canucks!

Yes, but...

c.lam's picture

I know that a project like this would eventually replicate most of the features of phpScheduleIt, but my reasoning for starting from scratch is so that other developers can create their own custom-tailored booking implementations without needing to start from scratch also. phpScheduleIt is also very much permissions-based, while my particular implementation will be tailored for public bookings without needing to create an account. The invitation/attendance functionality seems to be geared for private groups to use instead of the general public. I'm also unsure whether it's acceptable for Drupal modules to use PEAR.

It'd be great if I could get more feedback; this isn't one of the more popular topics in the GSoC group, so I have no idea whether or not I'm on the right track!

(and yes, it's raining again. haha)

Sounds like Sheffield

fronbow's picture

Sounds like Sheffield (raining that is!)

I'd also be interested in "bridges" into other software as a sideline to the main event!

In between everything else I'm currently looking at converting iCalScheduler (a mrbs derivative) to work in drupal (I did it before so that it worked within phpBB).

Plus, if we could get some stuff out fairly quickly, I'm sure it would keep some people happy for a while until we can come up with purely native drupal code?!

well, as someone who has

robotjox's picture

well, as someone who has been searching for a LONG time for a solution to my clients booking-needs, I'd be more than thrilled to see a project like this get started. There are really quite a lot of posts by people looking for a booking-solution, and the answers are always along the lines of "have you looked at availability?" or "check out open resort, maybe". But I haven't actually heard from anyone being able to build a decent booking-solution using only drupal-stuff. that works with hours and minutes.

I made a booking solution using cck, views, events and resource-conflict, but it's really not much to look at and I haven't figured out a way to make it work as well as the famed mrbs.

So +1 for an api :)

Have you thought about

fronbow's picture

Have you thought about putting together an install profile for this setup?

Also, I agree, too many people say "Have you looked at x or y or z" but then don't offer anything further.

I would look at open resort but given that there's the open source version and the paid version, I'm guessing the OS version isn't as good as the paid version. Also, due to the nature of the sites I do/get involved with, I'm looking for a wholly gpl version; if people want to charge for addons that's fine, but the api should be freely available.

install profile

robotjox's picture

No, I don't plan to do an install profile of this as I'm very unhappy with it in it's current state - not yet, anyways. The main problem is that it's not properly integrated with the calendar. Ideally I would like a setup like mrbs, where you can browse the calendar and click on predefined time slots. That's what people expect from a booking calendar, I think.

Some dude did something similar with the airplane reservation module, so maybe we should look at that, but I dont think much is going on with that - I think a proper calendar-integration is all that is missing to make it work - ressource conflict really takes care of most of the booking functionality, so maybe an api is not needed?

Open Resort is pretty useless in that regard, cuz it's all about dates and the developers are not interested in embracing hours/minutes (I asked).

Maybe you just need a 'glue'

fronbow's picture

Maybe you just need a 'glue' module then to handle the calendar.

I think that if we based it on a calendar where you had to click a specific day/time to make a booking, then the resource conflict's are minimised for the main booking (you'd still need to check if there was a repeat option). This is the way I'm thinking, rather than people going to 'Create Content -> New Booking' or whatever; we present them with a clickable calendar ala mrbs and iCalScheduler (the mrbs derivative I'm familiar with).

The big problem with mrbs and its' derivatives is that a day is presented with a view for all rooms (and this could get a bit unwieldy if you've got a lot of bookable objects).

I've got some free days next week so I intend to come up with a more fleshed out api (whilst going thru either mrbs or iCS to see how they do it!!). (I've been looking at doing a separate calendar rather than hooking into the existing module as well). If I get a spare minute (lol) I'll have a look at the airplane reservation module as well.

re open resort - I thought as much, which is why we're here; it needs to be an open solution that can be built upon.

OpenResort

simonc's picture

Just wanted to mention that version 6 of OpenResort will be completely GPL and that there won't be any paid-for extras. We're just waiting on a couple of dependencies to be upgraded to D6 before we release it.

It probably doesn't help for this though as our code is very specific to accommodation. For performance reasons we took the decision early on not to do availability searches "where timestamp < xxx and timestamp > yyy". This is why supporting hours and minutes would be an almost total rewrite of our inventory management and availability searching code. This isn't an issue for accommodation but it is for car rentals and most other activities.

I like the idea of having a generic api as it seems that accommodation booking should just be an implementation of a more generic resource booking. To get a extendable api to perform well with large amounts of bookable resources would be an interesting challenge.

Is performance an issue for anyone else, and has any thought gone into the data structures and algorithms that will be the most efficient? If there is any interest in this I'd be happy to discuss and code up some alternatives for benchmarking.

Cheers,
Simon
www.openresort.org

performance issues?

c.lam's picture

Can you elaborate on the decision to make it dates-only? How severely did time affect performance? How many resources were supported without signs of slowdown? What actions were slow?

I imagine that O(logn) can easily be achieved, but I haven't given it deep thought. Maybe I'm missing some knowledge here, but MySQL can search ranges of DATE, DATETIME, TIMESTAMP, or unix int time pretty quickly, right? I don't see how performance might be a difficult issue in the API.

If this project is approved, it would be a good idea to try to tear it apart with benchmarking.

We didn't do any

simonc's picture

We didn't do any benchmarking before taking the decision, it just seemed to make sense for what we were trying to achieve. It may not have been so much of a problem which is why I'd like to help out to quantify.

We still use date fields but by using a separate availability record for each unit & date we thought the query would be simpler and faster. We wanted to use a single query so that we could return the results in a pager query. The SQL to make sure that availability was contiguous within the requested date range was getting too complex when you also needed to check minimum nights stay, price ranges, etc, and then grouping by hotel or building. With availability records that are fixed length (days) we can simply compare the number of records returned. With variable length records the SQL is more complicated although there are perhaps fewer records to search through. For a generic api you definitely need to be more granular than days but perhaps this is a non-issue given the right level of SQL mastery!

I think your proposal is very worthwhile and I really hope it gets accepted. I don't want to discourage you, just maybe warn you that we came across a few edge cases that led us away from a generic solution and towards something that we feel works very well for large accommodation sites. Let me know if I can help out though, I'd be interested in helping.

Cheers,
Simon

more links to look over

Matt V.'s picture

There is a good list of even more related modules in this post by rcross.

Some thoughts

alex_b's picture

Looks interesting. Some questions/thoughts:

  • Can this be abstracted to not just booking rooms but booking time in general?
  • keep the iCal parser for FeedAPI on your radar - in case your thinking of aggregating iCal to your local site. http://drupal.org/node/214688
  • when working with email - integrate with http://drupal.org/project/notifications or http://drupal.org/project/subscriptions
  • I would recommend focussing on the core functionality of booking resources, keep it simple, and keep the 'extras' for later.
  • Think of good API functions for this module - this makes it easier and more flexible to use for other modules.

Alex

Answers

c.lam's picture

The bookings API will be abstract enough to allow you to book anything. I plan for it to allocate time and check for conflicts for resources of a certain ID number, so it can be practically anything. It can also recommend similar time slots within a certain timeframe if the chosen time is unavailable.

I will definitely be monitoring the iCal parser now, thanks! But I don't plan to need specialized email modules; can't I just use the default Drupal mailing system? The only email communication in my implementation will be with the booker and the booking manager.

Mailing

Jose Reyero's picture

can't I just use the default Drupal mailing system?
I think that's fine.

However the messaging framework could provide some easy to implement and cool features, like being able to get an SMS confirmation instead of an e-mail.

Anyway I think it would be cool if the bookings API provided some hook that can be implemented by other modules (I.e. hook_booking) so we can work out the integration the other way around, I mean generating notifications on specific booking events.

Hooks included

c.lam's picture

Yes, I intend to put in hooks. Sorry, I didn't explicitly state this. Will update project proposal to reflect it.

Very interesting.

Macronomicus's picture

Thats very interesting about openResorts new track towards completely gpl. I would imagine there will be much more community involvement, admittedly its why I did not consider it. It would also be nice if it were compatible with uberCart as we dont plan on using the e-commerce modules.

The site we are deving right now will need a seriously robust booking/commerce engine. We have a huge amount of properties and an even larger amount of partner properties/products. Its all a bit convoluted as most of our partner products have their own xml api, booking engines and availability stuff; in addition we will require real inventory management for our personal properties, all this need to be seamless to the end user. Our personal properties are timeshared with individual members for each week, when a member "banks" their week with us we give them userPoints in exchange to spend in our global points network.

I am leaning towards a combination uberCart and userpoints, which will need some tweaking and/or add-on modules created. I am going to try sponsoring some solutions through the ubercart folks, and some of the other projects that seem to mesh with what were trying to get done. I'm glad to see that other people are working at this, surely we can all get together and hammer out some very useful stuff.

Your booking api is certainly interesting, I look forward to seeing where this whole thing goes ... as its a perfect fit with us. I would definitely consider sponsoring a booking API for drupal!

I would lean more towards

fronbow's picture

I would lean more towards using ubercart over ecommerce as well as I've done a few other 'private' integrations with uber, and their sub-community is really good/helpful!

If you want to join forces to get this done (I feel it is bigger than being a gsoc project) please contact me

Sounds good to me

Macronomicus's picture

Yeah I only just discovered what GSOC is and I think this could easily be out of scope for that. Though im sure whatever he contributes will be helpful.

Ready!

c.lam's picture

Hi everyone,

I've revised my proposal on the GSoC webapp. It's been up on the webapp since Monday, but I've made some changes just now. It contains much more detail and follows the proposal template. Should I replace my original post here with it, or keep them separate?

Also, is anyone willing to mentor me? I will definitely need help with some of the more esoteric aspects of Drupal.

Thanks!

I'd be willing to be your

fronbow's picture

I'd be willing to be your mentor if you don't mind that we're in totally different time zones?

PST

c.lam's picture

Sure, but given a choice, I would prefer someone with a closer time zone if at all possible.

Well, let me know either way

fronbow's picture

Well, let me know either way cos I'm sure there's stuff I'd need to do to become a mentor

go ahead

c.lam's picture

Yes, please go ahead and do all that stuff. Thanks!

Theater Seat Tickets

qbnflaco's picture

This would be great if it were flexible enough to build ticketing integration. I manage a website for a non-profit performance group and the phpmyticet solutions has been working alright, but I'd like to drupify it and have it live in drupal.

Can you define ticketing? If

fronbow's picture

Can you define ticketing?

If you mean, will there be a seat booking system, then there could be. I'm just toying with the idea of doing a generic contrib module that could be used for rooms or tickets or similar; but that's probably some way off at the moment

Also interested in this direction

mlncn's picture

from back in the days where we'd still set up a site in wordpress... http://zingspace.org/oboe/

benjamin, Agaric Design Collective

benjamin, agaric

Passcodes

jpetso's picture

For the passcode functionality mentioned in your application, you might consider to use my Login Ticket API. Will be updated to Drupal 6 by the start of GSoC.

Time Zones

Scott's picture

Will the booking module be time-zone agnostic? By that I mean, will the data structure be designed so that people in different time zones can book the same resource and have the time data displayed in their own time-zone reference?

For example, say the resource is a supercomputer in Sydney, AU, that can be used remotely from anywhere in the world. I am in Seattle, US, and I book the computer for this Tuesday at noon (US/Pacific time zone). When the admin in Sydney logs in, she should see that I've booked the computer for Wednesday at 5:00am (Sydney time, 17 hours ahead of Seattle). Note that the time difference between Seattle and Sydney varies depending on the time of year because of differences in Daylight Saving Time offsets. See http://www.twinsun.com/tz/tz-link.htm

If you don't plan to build in this kind of flexibility, I suggest you design the data structure and API in such a way that time-zone flexibility can be easily added in a future version.

Time Zones

Scott's picture

Sorry... my post was somehow submitted twice and I can't delete this one.

Congradulations

drewish's picture

Excited to hear you got accepted for this project. Back when I wrote the scheduling module for the station module I'd always intended to generalize it to allow something like this. Please keep me in mind if you need additional code reviews, I'm happy to help out.

Mentoring

Crell's picture

On seeing this project approved, I just signed up as a secondary mentor for it. I've written 2 proprietary booking systems in the past 2 years, and my company has also worked on a third for a theater company. I'm happy to help out and highlight likely places where you'll get snarled in details, because I can say from experience there are a LOT of them. :-)

The success of a booking or calendaring system, in my experience, is how well it handles exceptions and edge cases. All booking systems are exercises in edge cases, because they're never simple. So you want to plan ahead for a data model and workflow model that can handle all sorts of weird edge cases and special cases and exceptions and optional features (billing, auxiliary resources, etc.)

Let's talk. :-)

Congratulations

cpelham's picture

I look forward to seeing what you produce! For several years we have been using appointmentquest.com for therapy room bookings and ovationtix.com for ticket sales. Both are very good, professional products, but neither interfaces with Drupal and appointmentquest has some shortcomings: monthly fee, lousy customer service/responsiveness to customer requests (does not appear to be under development any longer) and limited flexibility in some cases.

Appointmentquest's strengths are its professional GUI interface (which could nonetheless really benefit from AJAX to reduce page reloads). I really think that it can be very important to have a easy to use and understand GUI to present to clients. So many solutions look half-baked.

I would like to point out a couple of its weaknesses in case that might be helpful. Our hours are kind of flexible. We are changing which hours are available to book all the time. In apointmentquest we have to go to a settings screen, click edit, click hours, turn the hours off or on, then go back to make an appointment, make the appointment, then (in some cases), go back to the settings and turn those particular hours back off again. This is because when you make for instance room A available on Tuesday from 1-2 pm, it becomes available on every Tuesday. It's all or nothing. That's why we have to keep turning them off and on. Sometimes someone else logs on and makes a 1 pm before I can turn 1 pm back off again. So it would be great to be able to make available a certain time on one day only.

Another weakness I think is the email confirmation system for a couple of reasons:

1) The custom email message that goes with the confirmation email, detailing how to get here, what the cancellation policy is, what to wear or bring, etc. must be very short unless you pay them a lot more money per month, which totally blows. But I expect any Drupal solution to have flexibility with regard to email notification customization. On the other hand, having spent tons of time trying to get CiviMail working in CiviCRM, I understand that email is not always easy (although phplist emails were easy enough)...

2) If the client books the space, then of course they know they have booked the space. But if a client calls us and we put in the appointment, there is a chance that we put it in wrong. It would be great if the book system would ask for the client to respond to the confirmation email to confirm that it is correct -- but not require this in the event that the client has no email access. And then at least the admin could check to see the status and call the client if necessary the day before to confirm.

In terms of ticketing, I think ovationtix is great although some of the navigation is not yet as intuitive as it could be. But it is super flexible. I would say definitely study it as a role model.


Christopher Pelham
Director
CRS (Center for Remembering & Sharing)
http://www.crsny.org

CRS (Center for Remembering & Sharing) is an arts & healing center located just south of Union Square in Manhattan.

Restaurant Reservations

jpowell-gdo's picture

This is awesome news! I've been hearing some interest from some local restaurants to offer online reservations to their clientele. I have been trying to cobble together an elegant solution using existing modules, but so far haven't gotten the right fit. The type of generalized booking system you are describing could be perfect! Please keep in the back of you mind the potential uses for the restaurant industry. :-)

Again, huge interest in

Hitby's picture

Again, huge interest in creating a room booking system, preferable with the ability to book 'items' along with your room such as Drum kit, PA, mic, technician etc.

Will follow thread with interest.

booking system

Z2222's picture

It would be great if you could just make a CCK type "bookable" and allocate availability... then availability/bookings could be applied to "hotel room", "restaurant table", "dorm bed", "microphone", or whatever the node->type is.

And yet more interest.

ryivhnn's picture

And yet more interest. Currently in the process of attempting to hack a front end for ubercart that looks like it might be a ticket booking thing to book plane tickets, except I have exactly no experience or skills in making things go into databases :S If any more help is needed I'm really good at breaking things...er...I mean testing... ;) and I can do php as long as it doesn't involve security or databases, and I learn fast :)

Time-zone agnostic and internationalization

nestorconde's picture

Looking forward to this functionality!. Two features that would be great for international websites are internationalization and time-zone agnostic booking. I hope they are not out of the scope of the project:

Internationalization: so users would be able to book the same product for a "monday", "lundi", "lunes"... depending on their language.

Time-zone agnostic booking: useful for long distance medical care, real-time consulting between different time zones...

whats the difference?

expatme's picture

whats the difference bw this module and the one for which this group is set up for?

This module is a Google SoC

fronbow's picture

This module is a Google SoC work. The one I initially set this group for is a personal/private effort.
Something needed by me, and a few other people I've been in contact with.

Unfortunately I haven't been able to do anything for the last few months as I have a few mental issues to work thru' :(

But I will get back on track, it just might be a little while until I find the right medication

Cheers

fronbow

Booking for conference/event

princeofgonville's picture

Hi everyone,

I have been tasked with getting a conference booking system up and running for a conference in summer 2009. The stuff you discuss here seems to be the closest I can find to my needs, and I like the idea of using Drupal to handle the framework.

My requirement involves booking people (into accommodation and seminars), rooms (general reservation; booking of specific delegates into specific seminars) and equipment. Quite a complex scenario really. So far I have found PHP applications that do bits of it, but not all of it. The proposed API would be particularly useful for this work.

I have reasonable PHP experience, and may be able to help with some aspects of programming. But my main strength is in testing. I am happy to try stuff out with my real-world example to see how it behaves. Hopefully it will result in a Conferences package for Drupal. If nothing else, I can write up some documentation...

Don't want to promise the earth, but want to signal my interest and intention to help. If anyone has suggestions of modules that do most of what I need, I'll be very grateful.

Cheers
PoG, London

Small, busy, community hall

wreford's picture

Just wanted to state my interest in a booking system for a volunteer-run community hall (Galiano Island, actually... I can see UBC from here across the water, Carson).

Bookings currently take up way too much volunteer time, and we'd like our (drupal) website to take some of the load off.

needs are simple:
- hourly blocks, repeating events
- a few rooms
- a few add-on options (p.a. system, tech support, etc.)
- a few rate categories
- customizable email confirmation
- works with Events module
- pending and confirmed status

added bonus: iCal hooks to share booking info with other sites (activegaliano.org).

We use gmail for the club email address, so G.Cal might work for us too. It sounds like what you're working on could help us immensely; good luck with the work!

Code for this??

marqpdx's picture

hi Everyone,

we're looking at something to allow community members to book space for classes they want to offer to others. good and basic stuff that would well use all the ideas noted above.

my question: is there any code for this that i/we could try to make better?? would be glad to have a look.

thanks,
m

True Wheel - Community Hosting

You should take a look at

kreynen's picture

You should take a look at MERCI.

Just to let you know - I am

tirsales@drupal.org's picture

Just to let you know - I am co-maintaining Bookings API / Public Bookings. New ideas or comments for this modules are heartily welcomed! :)

where is this

gwhosting's picture

i'm writing to ask if we can find this? I'm trying to set up a car rental site, and would love to allow customers the ability to reserve the car from the website and not have to call us for the car to be reserved. Ideas please? I know i would love to let them use paypal, or even linkpoint to pay for there car, however, if this is not possible right now, that's all right, but i'de love to allow them to rent the car online right away.
thanks

Bookings API / Public

tirsales's picture

Bookings API / Public Bookings would allow bookings of cars (http://drupal.org/project/publicbookings, http://drupal.org/project/bookingsapi) - but so far I have not programmed a pay-system integration. AFAIK Ubercart provide possibilities to allow something like "prohibit access to pages unless paid" and Bookings API provides some Triggers/Actions that could be used to check for / requisit payments.

thanks

gwhosting's picture

thanks for this link, i'll have to check it out.
mike

Hi, Subscribing, wandering if

Summit's picture

Hi,
Subscribing, wandering if booking api and publicbookings could also be used as hotel-room allotments system?
Greetings,
Martijn

Hi, of course - with one

tirsales's picture

Hi,

of course - with one problem: At the moment the customer would have to select his room (and not e.g. the number of beds booked). This could be helped by writing an additional module providing a new booking page and a "select free resource with the following ability"-routine and adding a new ability/field to the resources.

Hi Sebastian, That would be

Summit's picture

Hi Sebastian,
That would be great! Then drupal can be used with bookingsapi and publicbookings also in the hotel-branch! I see lots of posts about using drupal as allotsment/booking system.
Would this be implemented in 3.X?
Thanks for your quick reply!
Greetings,
Martijn

Depends ;)

tirsales's picture

Hi,

this depends .. it could (relatively easily) be implemented with 3.x, but I'd rather finish the core Bookings API first and I'm not sure how many proposals will have pilled up on my desk till then ;) Parts of my time for this project are getting paid for (otherwise I wouldnt be able to spend as much time on this but OTOH my employer has one or two words to say about the working order and this is not my only project).

regards,

Sebastian

Hi Sebastian, I understand

Summit's picture

Hi Sebastian,
I understand your priorities, it would be great though to be able to use bookings api in it's fully potential with allotments usage in 3.X.
Thanks for your quick reply!
Greetings,
Martijn

Booking Tutor Time Slots

yindi1951's picture

G'day people

Yindi Systems are now building an application on Drupal and MySQL to assist high school and university students to book tutorial sessions with tutors who have the subject expertise they need help with.

I have got as far as specifying the functionality of my system. Now I am looking for existing applications that could provide "building blocks" for my system. Parts of my solution have a lot in common with applications like booking theatre tickets:

  • sub-system for registering students into the system, and defining their education needs profile
  • sub-system for registering tutors into the system, including Criminal Record Checks
  • an inventory of time slots needs to be maintained by each tutor registered in the system
  • a sub-system for short-listing tutors who match the education needs of a student
  • a sub-system for identifying time slots available from the short-listed tutors
  • time slots have to be removed from the inventory once a student has booked a time slot that has been published by a tutor
  • ideally tutors would be able to publish their availability via an iCal compliant calendar module
  • students will need to pay a booking fee, using an existing shopping cart system

I dont want to re-invent the wheel, if "building blocks" for my application are available via a GPL licence. I have worked long enough in the UNIX/LINUX community, since 1984, to be a big fan of community based software. I would be interested to hear from other organisations who have experience that could be relevant to my business requirement, and of course to share the bits of code that we have to develop ourselves.

John Young
yindi@yindi.net
Sydney, Australia

John Young
Yindi Systems
web: www.yindi.net
twitter: @yindisystems

Hi, It would be great if you

Summit's picture

Hi,
It would be great if you could work with Sebastian and enhance bookingsapi and public bookings, see post http://groups.drupal.org/node/9882#comment-106888.
Projects: http://drupal.org/project/bookingsapi, http://drupal.org/project/publicbookings , http://drupal.org/project/eventbookings.
It would be absolutely great if you could also get ubercart (www.ubercart.org) into scope using inventory, booking fee (payment system) etc...
It would be brilliant if you would make a install profile of the system you are making, and make it independent of students. tutor, so it can be used also for cars, holidayhouses etc..

Greetings, Martijn

Bookings API can currently

developer-x's picture

Bookings API can currently handle certain aspects of your requirements. The "inventory" capability for a tutor is possible by assigning "availabilities". The availabilities aren't true inventory - they are either available or not. So there is no "deducting" - that is we have 30 cameras, someone claims 1 of them, now there are 29 cameras available. But from what I see, you really need availabilities and not inventory (you'll always have an inventory of 1 per tutor) - so I think this will work.

If you really need inventory management - I'd checkout MERCI.

Regarding payments - you're probably talking ubercart. Bookingsapi doesn't have ubercart integration - bookingsapi uses a Booking Resource Content Type and ubercart uses Product Content Type. So you will have to do something to bridge the gap. A node reference between the Resource (tutor) and Product would bridge the data model - now you have write some code passes the product via the resource to the Ubercart checkout.

Resource Conflict actually can work with any type of Node as a resource; however, they don't have availabilities. But they can work directly against a Product.

If you want to see the Bookingsapi in action, you can goto http://www.okeel.com/demo/calendar. This uses eventbookings for the UI. When viewing the demo, just mentally switch out Meeting Room with Tutor and you'll get the idea. The demo doesn't show the ability to define availabilities - but the capability is there.