This commit is contained in:
@@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import ru.soune.nocopy.entity.tarif.TariffInfo;
|
||||
import ru.soune.nocopy.entity.tarif.TariffTimeTerm;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
@@ -57,7 +58,7 @@ public interface TariffInfoRepository extends JpaRepository<TariffInfo, String>
|
||||
WHERE ti.endTariff >= CURRENT_TIMESTAMP
|
||||
AND (:term IS NULL OR ti.tariff.tariffTerm = :term)
|
||||
""")
|
||||
Long getCurrentActiveSubscriptions(@Param("term") String term);
|
||||
Long getCurrentActiveSubscriptions(@Param("term") TariffTimeTerm term);
|
||||
|
||||
@Query("""
|
||||
SELECT ti
|
||||
@@ -65,5 +66,5 @@ public interface TariffInfoRepository extends JpaRepository<TariffInfo, String>
|
||||
WHERE (:term IS NULL OR ti.tariff.tariffTerm = :term)
|
||||
ORDER BY ti.startTariff
|
||||
""")
|
||||
List<TariffInfo> getAllTariffInfosForAnalysis(@Param("term") String term);
|
||||
List<TariffInfo> getAllTariffInfosForAnalysis(@Param("term") TariffTimeTerm term);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.soune.nocopy.dto.statistic.SubscriberStatisticResponse;
|
||||
import ru.soune.nocopy.entity.tarif.TariffInfo;
|
||||
import ru.soune.nocopy.entity.tarif.TariffTimeTerm;
|
||||
import ru.soune.nocopy.entity.user.User;
|
||||
import ru.soune.nocopy.repository.TariffInfoRepository;
|
||||
import ru.soune.nocopy.repository.UserRepository;
|
||||
@@ -15,22 +16,18 @@ import java.util.*;
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class SubscriberStatisticService {
|
||||
|
||||
private final TariffInfoRepository tariffInfoRepository;
|
||||
|
||||
private final UserRepository userRepository;
|
||||
|
||||
private static final String TERM_MONTHLY = "MONTHLY";
|
||||
|
||||
private static final String TERM_YEARLY = "YEAR";
|
||||
|
||||
public SubscriberStatisticResponse getSubscriberStatistics() {
|
||||
return SubscriberStatisticResponse.builder()
|
||||
.monthly(buildPeriodStatistics(TERM_MONTHLY))
|
||||
.yearly(buildPeriodStatistics(TERM_YEARLY))
|
||||
.monthly(buildPeriodStatistics(TariffTimeTerm.MONTHLY))
|
||||
.yearly(buildPeriodStatistics(TariffTimeTerm.YEAR))
|
||||
.build();
|
||||
}
|
||||
|
||||
private SubscriberStatisticResponse.PeriodStatistics buildPeriodStatistics(String term) {
|
||||
private SubscriberStatisticResponse.PeriodStatistics buildPeriodStatistics(TariffTimeTerm term) {
|
||||
Long currentActive = tariffInfoRepository.getCurrentActiveSubscriptions(term);
|
||||
|
||||
List<TariffInfo> allTariffs = tariffInfoRepository.getAllTariffInfosForAnalysis(term);
|
||||
|
||||
Reference in New Issue
Block a user