package it.sw.pa.comune.artegna.service;

import it.sw.pa.comune.artegna.service.dto.UtenteAppDTO;
import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

/**
 * Service Interface for managing {@link it.sw.pa.comune.artegna.domain.UtenteApp}.
 */
public interface UtenteAppService {
    /**
     * Save a utenteApp.
     *
     * @param utenteAppDTO the entity to save.
     * @return the persisted entity.
     */
    UtenteAppDTO save(UtenteAppDTO utenteAppDTO);

    /**
     * Updates a utenteApp.
     *
     * @param utenteAppDTO the entity to update.
     * @return the persisted entity.
     */
    UtenteAppDTO update(UtenteAppDTO utenteAppDTO);

    /**
     * Partially updates a utenteApp.
     *
     * @param utenteAppDTO the entity to update partially.
     * @return the persisted entity.
     */
    Optional<UtenteAppDTO> partialUpdate(UtenteAppDTO utenteAppDTO);

    /**
     * Get all the utenteApps.
     *
     * @return the list of entities.
     */
    List<UtenteAppDTO> findAll();

    /**
     * Get all the utenteApps with eager load of many-to-many relationships.
     *
     * @param pageable the pagination information.
     * @return the list of entities.
     */
    Page<UtenteAppDTO> findAllWithEagerRelationships(Pageable pageable);

    /**
     * Get the "id" utenteApp.
     *
     * @param id the id of the entity.
     * @return the entity.
     */
    Optional<UtenteAppDTO> findOne(Long id);

    /**
     * Get utenteApp by username.
     *
     * @param username the username of the entity.
     * @return the entity.
     */
    Optional<UtenteAppDTO> findByUsername(String username);

    /**
     * Delete the "id" utenteApp.
     *
     * @param id the id of the entity.
     */
    void delete(Long id);

    UtenteAppDTO fetchUtenteAppFromUser();
}
