/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.modules.gotomeeting;
import java.util.Date;
import java.util.List;
import org.olat.basesecurity.IdentityRef;
import org.olat.core.id.Identity;
import org.olat.group.BusinessGroup;
import org.olat.group.BusinessGroupRef;
import org.olat.modules.gotomeeting.model.GoToError;
import org.olat.modules.gotomeeting.model.GoToRecordingsG2T;
import org.olat.modules.gotomeeting.model.GoToType;
import org.olat.repository.RepositoryEntry;
import org.olat.repository.RepositoryEntryRef;
/**
*
* Initial date: 22.03.2016<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*
*/
public interface GoToMeetingManager {
/**
* Add or update the organizer with the specified user name after
* a round trip to the GoToMeeting server.
*
* @param name Only a label for OpenOLAT (optional)
* @param username
* @param password
* @return
*/
public boolean addOrganizer(String name, String username, String password, Identity owner, GoToError error);
/**
* @return The list of all organizers on the system.
*/
public List<GoToOrganizer> getOrganizers();
/**
*
* @return the list of system-wide organizers
*/
public List<GoToOrganizer> getSystemOrganizers();
/**
* Return the list of system wide organizers and the one which
* the user has created (if any).
* @param identity
* @return A lsit of organizers
*/
public List<GoToOrganizer> getOrganizersFor(Identity identity);
/**
*
* @param organizer
* @return
*/
public boolean removeOrganizer(GoToOrganizer organizer);
/**
* Check if the organizer is available between the 2 specified dates.
*
* @param organizer
* @param start
* @param end
* @return
*/
public boolean checkOrganizerAvailability(GoToOrganizer organizer, Date start, Date end);
public GoToMeeting scheduleTraining(GoToOrganizer organizer, String name, String externalId, String description, Date start, Date end,
RepositoryEntry resourceOwner, String subIdentifier, BusinessGroup businessGroup, GoToError error);
/**
* Update name / description and the first session start and end date.
* @param meeting
* @param name
* @param description
* @param start
* @param end
* @return
*/
public GoToMeeting updateTraining(GoToMeeting meeting, String name, String description, Date start, Date end, GoToError error);
/**
* Admin. method to retrieve all meetings / training / webinars booked through OpenOLAT.
*
* @return
*/
public List<GoToMeeting> getAllMeetings();
public List<GoToMeeting> getMeetings(GoToType type, RepositoryEntryRef entry, String subIdent, BusinessGroupRef businessGroup);
/**
* Reload the meeting from the database AND from the
* GoTo server.
*
* @param meeting
* @return
*/
public GoToMeeting getMeeting(GoToMeeting meeting, GoToError error);
/**
* Load from the OpenOLAT system only.
* @param meetingKey
* @return
*/
public GoToMeeting getMeetingByKey(Long meetingKey);
/**
* Load from the OpenOLAT system only.
* @param externalId
* @return
*/
public GoToMeeting getMeetingByExternalId(String externalId);
/**
* Register or update the registrant of a specified user
*
* @param meeting
* @param trainee
* @return
*/
public GoToRegistrant registerTraining(GoToMeeting meeting, Identity trainee, GoToError error);
public GoToRegistrant getRegistrant(GoToMeeting meeting, IdentityRef trainee);
public String startTraining(GoToMeeting meeting, GoToError error);
public List<GoToRecordingsG2T> getRecordings(GoToMeeting meeting, GoToError error);
/**
* Return the list of registrants for a specified user.
*
* @param identity
* @param entry
* @param subIdent
* @param businessGroup
* @return
*/
public List<GoToRegistrant> getRegistrants(IdentityRef identity, RepositoryEntryRef entry, String subIdent, BusinessGroupRef businessGroup);
public boolean delete(GoToMeeting meeting);
public void deleteAll(RepositoryEntryRef entry, String subIdent, BusinessGroupRef businessGroup);
}