SiteManagementServiceImpl.java

package net.andresbustamante.yafoot.core.services.impl;

import net.andresbustamante.yafoot.commons.model.UserContext;
import net.andresbustamante.yafoot.core.dao.PlayerDao;
import net.andresbustamante.yafoot.core.dao.SiteDao;
import net.andresbustamante.yafoot.core.model.Player;
import net.andresbustamante.yafoot.core.model.Site;
import net.andresbustamante.yafoot.core.services.SiteManagementService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * Site management service implementation.
 */
@Service
public class SiteManagementServiceImpl implements SiteManagementService {

    private final SiteDao siteDAO;
    private final PlayerDao playerDao;

    public SiteManagementServiceImpl(final SiteDao siteDAO, final PlayerDao playerDao) {
        this.siteDAO = siteDAO;
        this.playerDao = playerDao;
    }

    @Transactional
    @Override
    public Integer saveSite(final Site site, final UserContext userContext) {
        Player creator = playerDao.findPlayerByEmail(userContext.getUsername());

        siteDAO.saveSite(site, creator);
        return site.getId();
    }
}