Design a calendar Application (similar on lines with Google's Calendar) It should support the following functionalities:
Ability to create, update, delete an Event a. An event would typically consist of {start, end, location, Owner, user-list, title}. b. Events can either be like meetings(with a dedicated location and appropriate guest-list) or as well be like holidays, birthdays, reminders etc. c. An event once created, can be either accepted or rejected by the constituent users - if neither it should be in neutral state. Get Calendar for a user Ui Get Event details. For a given set of users[U1, U2,....Un] identity a common free slot of time. Expectations
Code should a demo able, either by using a main driver program or test cases. Create the sample data yourself. you can put it into a file, test case or main driver program itself. Avoid writing monolithic code. Code should be readable, modular, testable, extensible with proper naming conventions. It should be easy to add/remove functionality without rewriting entire codebase. Code should handle edge cases properly and fail gracefully. Don't use any external data store, all the data should be loaded in application itself. Don't spend lot of time in parsing the input.
Input can be read from file or can be hard coded/used.