package fi.otavanopisto.pyramus.rest.controller;
import java.util.List;
import javax.ejb.Stateless;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import fi.otavanopisto.pyramus.dao.reports.ReportCategoryDAO;
import fi.otavanopisto.pyramus.dao.reports.ReportDAO;
import fi.otavanopisto.pyramus.domainmodel.reports.Report;
import fi.otavanopisto.pyramus.domainmodel.reports.ReportCategory;
import fi.otavanopisto.pyramus.domainmodel.users.User;
@Dependent
@Stateless
public class ReportController {
@Inject
private ReportDAO reportDAO;
@Inject
private ReportCategoryDAO reportCategoryDAO;
public Report createReport(String name, String data, User user) {
Report report = reportDAO.create(name, data, user);
return report;
}
public ReportCategory createReportCategory(String name, Integer indexColumn) {
ReportCategory reportCategory = reportCategoryDAO.create(name, indexColumn);
return reportCategory;
}
public List<Report> findReports() {
List<Report> reports = reportDAO.listAll();
return reports;
}
public List<Report> findUnarchivedReports() {
List<Report> reports = reportDAO.listUnarchived();
return reports;
}
public Report findReportById(Long id) {
Report report = reportDAO.findById(id);
return report;
}
public List<ReportCategory> findReportCategories() {
List<ReportCategory> reportCategories = reportCategoryDAO.listAll();
return reportCategories;
}
public List<ReportCategory> findUnarchivedReportCategories() {
List<ReportCategory> reportCategories = reportCategoryDAO.listUnarchived();
return reportCategories;
}
public ReportCategory findReportCategoryById(Long id) {
ReportCategory reportCategory = reportCategoryDAO.findById(id);
return reportCategory;
}
public Report updateReport(Report report, String name, ReportCategory reportCategory) {
reportDAO.update(report, name, reportCategory);
return report;
}
public Report updateReportName(Report report, String name, User user) {
reportDAO.updateName(report, name, user);
return report;
}
public Report updateReportData(Report report, String data, User user) {
reportDAO.updateData(report, data, user);
return report;
}
public ReportCategory updateReportCategory(ReportCategory reportCategory, String name, Integer indexColumn) {
reportCategoryDAO.update(reportCategory, name, indexColumn);
return reportCategory;
}
public Report archiveReport(Report report, User user) {
reportDAO.archive(report, user);
return report;
}
public Report unarchiveReport(Report report, User user) {
reportDAO.unarchive(report, user);
return report;
}
public ReportCategory archiveReportCategory(ReportCategory reportCategory, User user) {
reportCategoryDAO.archive(reportCategory, user);
return reportCategory;
}
public ReportCategory unarchiveReportCategory(ReportCategory reportCategory, User user) {
reportCategoryDAO.unarchive(reportCategory, user);
return reportCategory;
}
}