package eu.dnetlib.client.managers;

import eu.dnetlib.efg1914.authoring.components.Configuration;
import eu.dnetlib.efg1914.authoring.components.Frame;
import eu.dnetlib.efg1914.authoring.components.Item;
import eu.dnetlib.efg1914.authoring.components.Theme;
import eu.dnetlib.efg1914.authoring.components.Topic;
import eu.dnetlib.efg1914.authoring.users.User;

public interface UpdateManager {

	/**
	 * Creates a new item for user
	 * 
	 * -Saves item to DB -Updates Layout -Sends notification to Notification
	 * Service
	 * 
	 * @param user
	 * @param itemToSave
	 */
	public void createNewItem(User user, Item itemToSave);

	public void updateItem(Item item, String userId);

	public void deleteItem(Item item, String userId);

	public void createNewFrame(String userId, Frame frame);

	public void updateFrame(Frame updatedFrame, String userId);

	public void deleteFrame(Frame frame, String userId);

	public void createNewTopic(String userId, Topic topic);

	public void updateTopic(Topic updatedTopic, String userId);

	public void deleteTopic(Topic topi, String userId);

	public void createNewTheme(String userId, Theme theme);

	public void updateTheme(Theme updatedTheme, String userId);

	public void deleteTheme(Theme theme, String userId);

	public void createUser(User userToCreate, String userId);

	public void updateUser(User userToUpdate, String userId);

	public void deleteUser(String userIdToDelete, String userId);

	public void updateConfiguration(Configuration configuration, String userId);

}
