namespace Interfaces
{
public interface IRepository
{
///
/// Get a list of Users
///
///
/// Returns with full list of users,
/// plus a total user count. Pagination options are supported.
///
UserList GetUsers();
///
/// Search the user list for the following string
///
/// string to search the user store for.
///
/// Returns with full list of users,
/// plus a total user count. Pagination options are supported.
///
UserList Search(string searchParam);
///
/// Get details about a single user in the system base on their Id
///
///
/// integer data type, the Id of the User to get details about.
///
/// object with full details,
/// including full
///
User GetUser(int id);
///
/// Get a list of the timelogs available for the specified user
/// for the current Calendar Week
///
///
/// integer data type, the Id of the user to get time logs for
///
///
/// with nested objects
/// for the current calendar week
///
TimeLogList GetTimeLogs(int userId);
///
/// Get a list of the timelogs available for the specified user
/// for the specified calendar week
///
///
/// integer data type, the Id of the user to get time logs for
///
///
/// integer data type, the calendar week to retrieve logs for.
///
///
/// with nested objects
/// for the current calendar week
///
TimeLogList GetTimeLogs(int userId, int calendarWeek);
///
/// Get a full list of Identifiers which are not associated to a user.
///
///
/// with nested list
///
IdentifierList GetUnassignedIdentifierList();
///
/// Update a user in the system with the new values.
///
///
/// If the user object passed does not exist, it will be created.
///
///
/// object detailing the new properties to assign to the user.
/// The Id Field should not be changed, or should be -1 for new users.
///
///
/// int - ref param, value will be the UserId of the inserted or updated user
///
///
/// to indicate procedure status.
///
OperationResponse UpdateUser(User user, out int userId);
///
/// Create a new TimeLog Event in the repository.
///
///
/// object with the Unique Id triggering the event
///
///
/// to indicate procedure status.
///
OperationResponse LogEventTime(Identifier identifier);
}
}