package org.ei.drishti.repository; import org.ei.drishti.common.AllConstants; import org.ei.drishti.domain.MCTSReport; import org.ektorp.CouchDbConnector; import org.ektorp.support.GenerateView; import org.ektorp.support.View; import org.joda.time.LocalDate; import org.motechproject.dao.MotechBaseRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; import java.util.Date; import java.util.List; @Repository public class AllMCTSReports extends MotechBaseRepository<MCTSReport> { @Autowired public AllMCTSReports(@Qualifier(AllConstants.DRISHTI_MCTS_DATABASE_CONNECTOR) CouchDbConnector db) { super(MCTSReport.class, db); } @GenerateView public MCTSReport findByCaseId(String caseId) { List<MCTSReport> reports = queryView("by_caseId", caseId); if (reports == null || reports.isEmpty()) { return null; } return reports.get(0); } @View(name = "all_mcts_reports_for_a_day", map = "function(doc) { if (doc.type === 'MCTSReport' && doc.reportSent === 'false') { emit(doc.sendDate); } }") public List<MCTSReport> allReportsToBeSentAsOf(String date) { String startDate = LocalDate.fromDateFields(new Date(0)).toString(); return db.queryView(createQuery("all_mcts_reports_for_a_day") .startKey(startDate) .endKey(date) .includeDocs(true), MCTSReport.class); } public void markReportAsSent(MCTSReport report) { this.update(report.markReportAsSent()); } }