package unitest;

import eu.dnetlib.goldoa.domain.*;
import eu.dnetlib.goldoa.service.BudgetManager;
import eu.dnetlib.goldoa.service.InvoiceManager;
import eu.dnetlib.goldoa.service.RequestManagerImpl;
import eu.dnetlib.goldoa.service.UserManager;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.transaction.Transactional;
import java.util.List;

/**
 * Created by panagiotis on 8/2/2017.
 */
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration(locations = "classpath:applicationContext-goldoa-service-test.xml")
public class MonitorTest {

    @Autowired
    BudgetManager bm;
    @Autowired
    RequestManagerImpl rm;
    @Autowired
    UserManager um;
    @Autowired
    InvoiceManager inv;

    @Test
    @Transactional
    @Rollback(true)
    public void monitorBudgets(){
        List<Budget> budgets = bm.getBudgets();
        for(Budget b:budgets)
            System.out.println(b.getId() + "/" + b.getStatus().getValue());
    }

    @Test
    @Transactional
    @Rollback(true)
    public void monitorFundingRequests(){
        RequestSort requestSortBy = null;
        //export csv button
        String rs = rm.getCSV("moderator",requestSortBy.DATE, RequestSortOrder.DESCENDING,
                RequestFilter.ID,null,null);
        System.out.println(rs);

        List<Request> resultSet = rm.getRequests(null, null, requestSortBy.DATE, RequestSortOrder.DESCENDING, null,
                null, null, 0, 10).getRequests();
        for(Request r : resultSet )
            System.out.println(r.getId() + "/" + r.getProject().getTitle());

        System.out.println("--------------------------");
        resultSet = rm.getRequests(null, null, requestSortBy.DATE, RequestSortOrder.DESCENDING, null,
                null, new Request.RequestStatus[]{Request.RequestStatus.SUBMITTED}, 0, 10).getRequests();

        for(Request r : resultSet )
            System.out.println(r.getId() + "/" + r.getProject().getTitle());
    }

    @Test
    @Transactional
    @Rollback(true)
    public void monitorUser(){
        um.getUsers();
    }

    @Test
    @Transactional
    @Rollback(true)
    public void getInvoice(){
        try {
            inv.getInvoice(null);
        } catch (ManagerException e) {
            e.printStackTrace();
        }
    }

}