Loading core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java +18 −18 Original line number Diff line number Diff line Loading @@ -23,8 +23,9 @@ import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Component @RequiredArgsConstructor @Component public class DataInitializer implements ApplicationRunner { private final UserService userService; private final DeviceService deviceService; Loading Loading @@ -80,8 +81,18 @@ public class DataInitializer implements ApplicationRunner { .build(); userService.create(user); House house = House.builder() .address("lol") .city("lol") .state("lol") .zipcode("lol") .build(); house.setId("b256ac78-dc47-11ed-afa1-0242ac120002"); houseService.create(house); HouseRole role = HouseRole.builder() .houseRole(HouseRoleEnum.Owner) .house(house) .build(); role.setUser(user); roleService.create(role); Loading @@ -89,24 +100,13 @@ public class DataInitializer implements ApplicationRunner { Device device = Device.builder().name("device03").build(); deviceService.create(device); SmartMeter smartMeter = SmartMeter.builder().name("smartMeter01").device(device).build(); smartMeterService.create(smartMeter); List<SmartMeter> smartMeterList = new ArrayList<SmartMeter>(); smartMeterList.add(smartMeter); ArrayList<HouseRole> owners = new ArrayList<>(); owners.add(role); House house = House.builder() .smartMeterList(smartMeterList) .address("lol") .city("lol") .state("lol") .zipcode("lol") .ownerList(owners) SmartMeter smartMeter = SmartMeter .builder() .name("SmartMeter04") .device(device) .house(house) .build(); houseService.create(house); smartMeterService.create(smartMeter); Metrics metrics = Metrics.builder() .consumptionKWH(10) Loading core/src/main/java/cz/muni/fi/pa165/core/user/UserRepository.java +1 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ public interface UserRepository extends JpaRepository<User, String> { @Query("Select SUM(m.consumptionKWH) " + "From User u " + "INNER JOIN Role r " + "INNER JOIN HouseRole hr " + "INNER JOIN House h " + "INNER JOIN SmartMeter s " + Loading core/src/test/java/cz/muni/fi/pa165/core/user/UserServiceTest.java 0 → 100644 +310 −0 Original line number Diff line number Diff line package cz.muni.fi.pa165.core.user; import cz.muni.fi.pa165.core.company.Company; import cz.muni.fi.pa165.core.device.Device; import cz.muni.fi.pa165.core.house.House; import cz.muni.fi.pa165.core.house.HouseService; import cz.muni.fi.pa165.core.metrics.Metrics; import cz.muni.fi.pa165.core.metrics.MetricsService; import cz.muni.fi.pa165.core.smartmeter.SmartMeter; import cz.muni.fi.pa165.core.smartmeter.SmartMeterService; import cz.muni.fi.pa165.core.user.roles.HouseRole; import cz.muni.fi.pa165.core.user.roles.RoleService; import cz.muni.fi.pa165.model.dto.role.enums.HouseRoleEnum; import org.junit.Assert; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.openMocks; public class UserServiceTest { @InjectMocks private UserService userService; @Mock private MetricsService metricsService; @Mock private SmartMeterService smartMeterService; @Mock private HouseService houseService; @Mock private RoleService roleService; @Mock private UserRepository userReposiroyMock; @BeforeEach void init() { openMocks(this); } @Test void shouldGetUserById() { User user = User .builder() .username("Test") .build(); when(userReposiroyMock.findById(user.getId())).thenReturn(Optional.of(user)); User result = userService.findById(user.getId()); verify(userReposiroyMock).findById(user.getId()); assertEquals(user, result); } @Test void shouldCreateNewDevice() { User user = User .builder() .username("Test") .build(); when(userReposiroyMock.save(user)).thenReturn(user); User createdUser = userService.create(user); verify(userReposiroyMock).save(user); assertThat(createdUser).isEqualTo(user); } @Test void shouldFindUserByName() { User user = User .builder() .username("Test") .build(); when(userReposiroyMock.findByUsername(user.getUsername())).thenReturn(Optional.of(user)); User result = userService.findByUsername(user.getUsername()); verify(userReposiroyMock).findByUsername(user.getUsername()); assertEquals(user, result); } @Test void shouldFindAllUserPageableInt() { User user1 = User .builder() .username("Test") .build(); User user2 = User .builder() .username("Test2") .build(); Page<User> page = new PageImpl<>(List.of(user1, user2)); int pageNumber = 0; int pageSize = 10; when(userReposiroyMock.findAll(PageRequest.of(pageNumber, pageSize))).thenReturn(page); Page<User> result = userService.findAllPageableInt(pageNumber); verify(userReposiroyMock).findAll(PageRequest.of(pageNumber, pageSize)); assertThat(result).containsExactlyInAnyOrder(user1, user2); } @Test void shouldDeleteUserById() { User user = User .builder() .username("Test") .build(); when(userReposiroyMock.findById(user.getId())).thenReturn(Optional.of(user)); User deletedUser = userService.deleteById(user.getId()); verify(userReposiroyMock).findById(user.getId()); verify(userReposiroyMock).save(user); // soft delete assertNotNull(deletedUser.getDeletedDateTime()); assertEquals(user, deletedUser); } @Test void shouldUpdateUser() { User originalUser = User .builder() .username("Test1") .build(); User updatedUser = User .builder() .username("Test2") .build(); when(userReposiroyMock.findById(originalUser.getId())).thenReturn(Optional.of(originalUser)); when(userReposiroyMock.save(updatedUser)).thenReturn(updatedUser); User result = userService.update(updatedUser, originalUser.getId()); verify(userReposiroyMock).findById(originalUser.getId()); verify(userReposiroyMock).save(updatedUser); assertEquals(originalUser.getId(), result.getId()); assertEquals(updatedUser.getUsername(), result.getUsername()); } @Test void shouldHardDeleteAllUsers() { userService.hardDeleteAll(); verify(userReposiroyMock).deleteAll(); } @Test void shouldDeleteAllUsers() { var data = List.of( User.builder().username("Test1").build(), User.builder().username("Test2").build() ); when(userReposiroyMock.findAll()).thenReturn(data); userService.deleteAll(); verify(userReposiroyMock).findAll(); verify(userReposiroyMock).saveAll(data); } @Test void shouldDeleteAllUsersIds() { User firstUser = User .builder() .username("Test1") .build(); User secondUser = User .builder() .username("Test2") .build(); String[] ids = {firstUser.getId(), secondUser.getId()}; when(userReposiroyMock.findById(ids[0])).thenReturn(Optional.of(firstUser)); when(userReposiroyMock.findById(ids[1])).thenReturn(Optional.of(secondUser)); userService.deleteAllById(ids); verify(userReposiroyMock).save(firstUser); verify(userReposiroyMock).save(secondUser); } @Test void shouldFindAllUsers() { var data = List.of( User.builder().username("Test1").build(), User.builder().username("Test2").build() ); when(userReposiroyMock.findAll()).thenReturn(data); List<User> result = userService.findAll(); verify(userReposiroyMock).findAll(); assertEquals(data, result); } @Test void shouldFindAllUsersPageable() { int pageNumber = 0; int pageSize = 10; Pageable pageable = PageRequest.of(pageNumber, pageSize); var data = List.of( User.builder().username("Test1").build(), User.builder().username("Test2").build() ); Page<User> pageResult = new PageImpl<>(data, pageable, data.size()); when(userReposiroyMock.findAll(pageable)).thenReturn(pageResult); Page<User> result = userService.findAllPageable(pageable); verify(userReposiroyMock).findAll(pageable); assertEquals(pageResult, result); } @Test void shouldReturnUserMonthConsumption() { User user = User.builder() .email("test@gmail.com") .firstName("lol") .lastName("lol") .username("lol") .password("lol") .userType(UserType.ADMIN) .build(); user.setId("6a9f853d-59ef-4636-9c0b-bbac44bfd7f4"); userService.create(user); House house = House.builder() .address("lol") .city("lol") .state("lol") .zipcode("lol") .build(); house.setId("b256ac78-dc47-11ed-afa1-0242ac120002"); houseService.create(house); HouseRole role = HouseRole.builder() .houseRole(HouseRoleEnum.Owner) .house(house) .build(); role.setUser(user); roleService.create(role); SmartMeter smartMeter = SmartMeter .builder() .house(house) .build(); smartMeterService.create(smartMeter); LocalDateTime date = LocalDateTime.of(2023, 1,15,0,0,0,0); double consumptionSeed = 0; Metrics metrics = Metrics.builder() .consumptionKWH(consumptionSeed) .timeStamp(date) .smartMeter(smartMeter) .build(); metricsService.create(metrics); double consumption = userService.getConsumption(user.getId(), house.getId(), LocalDateTime.of(2023, 1,1,0,0,0,0), LocalDateTime.of(2023, 1,31,0,0,0,0)); assertEquals(consumptionSeed, consumption); } } statistics/src/main/java/cz/muni/fi/pa165/statistics/statistics/StatisticService.java +6 −13 Original line number Diff line number Diff line package cz.muni.fi.pa165.statistics.statistics; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.impl.client.HttpClientBuilder; Loading @@ -12,12 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.UUID; Loading @@ -35,7 +28,7 @@ public class StatisticService { } @Transactional public UserStatistic CreateStatistic(UserStatistic userStatistic) throws IOException { public UserStatistic createStatistic(UserStatistic userStatistic) throws IOException { UserStatistic statistic = repository.findUserHouseDateStatistics(userStatistic.getUserId(), userStatistic.getHouseId(), userStatistic.getMonthNum(), userStatistic.getYearNum()); if (statistic == null){ Loading @@ -45,7 +38,7 @@ public class StatisticService { userStatistic.getHouseId(), userStatistic.getMonthNum(), userStatistic.getYearNum())); userStatistic.setMonthlyConsumption(GenerateStatistic(userStatistic)); userStatistic.setMonthlyConsumption(generateStatistic(userStatistic)); repository.save(userStatistic); return userStatistic; } Loading @@ -65,7 +58,7 @@ public class StatisticService { return repository.findAllByUserAndHouse(userId, houseId); } private double GenerateStatistic(UserStatistic userStatistic) throws IOException { public double generateStatistic(UserStatistic userStatistic) throws IOException { LocalDateTime startDateTime = GetFirstDayOfMonth(userStatistic.getYearNum(), userStatistic.getMonthNum()); LocalDateTime lastDateTime = GetLastDayOfMonth(userStatistic.getYearNum(), userStatistic.getMonthNum()); Loading Loading @@ -102,12 +95,12 @@ public class StatisticService { private LocalDateTime GetLastDayOfMonth(int year, int month){ LocalDateTime date = LocalDateTime.of(year, month,1,0,0,0,0); date.plusMonths(1); date.minusDays(1); LocalDateTime date_pom = date.plusMonths(1); LocalDateTime lastDateOfMonth = date_pom.minusDays(1); return LocalDateTime.of(year, month, date.getDayOfMonth(), lastDateOfMonth.getDayOfMonth(), 23,59,59,999999); } Loading statistics/src/main/java/cz/muni/fi/pa165/statistics/statistics/StatisticsFacade.java +1 −3 Original line number Diff line number Diff line package cz.muni.fi.pa165.statistics.statistics; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestParam; import java.io.IOException; import java.util.List; Loading @@ -24,7 +22,7 @@ public class StatisticsFacade { @Transactional public UserStatisticsDto CreateStatistics(StatisticCreateDto entity) throws IOException { return mapper.toDto(statisticService.CreateStatistic(mapper.fromDto(entity))); return mapper.toDto(statisticService.createStatistic(mapper.fromDto(entity))); } @Transactional Loading Loading
core/src/main/java/cz/muni/fi/pa165/core/DataInitializer.java +18 −18 Original line number Diff line number Diff line Loading @@ -23,8 +23,9 @@ import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Component @RequiredArgsConstructor @Component public class DataInitializer implements ApplicationRunner { private final UserService userService; private final DeviceService deviceService; Loading Loading @@ -80,8 +81,18 @@ public class DataInitializer implements ApplicationRunner { .build(); userService.create(user); House house = House.builder() .address("lol") .city("lol") .state("lol") .zipcode("lol") .build(); house.setId("b256ac78-dc47-11ed-afa1-0242ac120002"); houseService.create(house); HouseRole role = HouseRole.builder() .houseRole(HouseRoleEnum.Owner) .house(house) .build(); role.setUser(user); roleService.create(role); Loading @@ -89,24 +100,13 @@ public class DataInitializer implements ApplicationRunner { Device device = Device.builder().name("device03").build(); deviceService.create(device); SmartMeter smartMeter = SmartMeter.builder().name("smartMeter01").device(device).build(); smartMeterService.create(smartMeter); List<SmartMeter> smartMeterList = new ArrayList<SmartMeter>(); smartMeterList.add(smartMeter); ArrayList<HouseRole> owners = new ArrayList<>(); owners.add(role); House house = House.builder() .smartMeterList(smartMeterList) .address("lol") .city("lol") .state("lol") .zipcode("lol") .ownerList(owners) SmartMeter smartMeter = SmartMeter .builder() .name("SmartMeter04") .device(device) .house(house) .build(); houseService.create(house); smartMeterService.create(smartMeter); Metrics metrics = Metrics.builder() .consumptionKWH(10) Loading
core/src/main/java/cz/muni/fi/pa165/core/user/UserRepository.java +1 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ public interface UserRepository extends JpaRepository<User, String> { @Query("Select SUM(m.consumptionKWH) " + "From User u " + "INNER JOIN Role r " + "INNER JOIN HouseRole hr " + "INNER JOIN House h " + "INNER JOIN SmartMeter s " + Loading
core/src/test/java/cz/muni/fi/pa165/core/user/UserServiceTest.java 0 → 100644 +310 −0 Original line number Diff line number Diff line package cz.muni.fi.pa165.core.user; import cz.muni.fi.pa165.core.company.Company; import cz.muni.fi.pa165.core.device.Device; import cz.muni.fi.pa165.core.house.House; import cz.muni.fi.pa165.core.house.HouseService; import cz.muni.fi.pa165.core.metrics.Metrics; import cz.muni.fi.pa165.core.metrics.MetricsService; import cz.muni.fi.pa165.core.smartmeter.SmartMeter; import cz.muni.fi.pa165.core.smartmeter.SmartMeterService; import cz.muni.fi.pa165.core.user.roles.HouseRole; import cz.muni.fi.pa165.core.user.roles.RoleService; import cz.muni.fi.pa165.model.dto.role.enums.HouseRoleEnum; import org.junit.Assert; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.openMocks; public class UserServiceTest { @InjectMocks private UserService userService; @Mock private MetricsService metricsService; @Mock private SmartMeterService smartMeterService; @Mock private HouseService houseService; @Mock private RoleService roleService; @Mock private UserRepository userReposiroyMock; @BeforeEach void init() { openMocks(this); } @Test void shouldGetUserById() { User user = User .builder() .username("Test") .build(); when(userReposiroyMock.findById(user.getId())).thenReturn(Optional.of(user)); User result = userService.findById(user.getId()); verify(userReposiroyMock).findById(user.getId()); assertEquals(user, result); } @Test void shouldCreateNewDevice() { User user = User .builder() .username("Test") .build(); when(userReposiroyMock.save(user)).thenReturn(user); User createdUser = userService.create(user); verify(userReposiroyMock).save(user); assertThat(createdUser).isEqualTo(user); } @Test void shouldFindUserByName() { User user = User .builder() .username("Test") .build(); when(userReposiroyMock.findByUsername(user.getUsername())).thenReturn(Optional.of(user)); User result = userService.findByUsername(user.getUsername()); verify(userReposiroyMock).findByUsername(user.getUsername()); assertEquals(user, result); } @Test void shouldFindAllUserPageableInt() { User user1 = User .builder() .username("Test") .build(); User user2 = User .builder() .username("Test2") .build(); Page<User> page = new PageImpl<>(List.of(user1, user2)); int pageNumber = 0; int pageSize = 10; when(userReposiroyMock.findAll(PageRequest.of(pageNumber, pageSize))).thenReturn(page); Page<User> result = userService.findAllPageableInt(pageNumber); verify(userReposiroyMock).findAll(PageRequest.of(pageNumber, pageSize)); assertThat(result).containsExactlyInAnyOrder(user1, user2); } @Test void shouldDeleteUserById() { User user = User .builder() .username("Test") .build(); when(userReposiroyMock.findById(user.getId())).thenReturn(Optional.of(user)); User deletedUser = userService.deleteById(user.getId()); verify(userReposiroyMock).findById(user.getId()); verify(userReposiroyMock).save(user); // soft delete assertNotNull(deletedUser.getDeletedDateTime()); assertEquals(user, deletedUser); } @Test void shouldUpdateUser() { User originalUser = User .builder() .username("Test1") .build(); User updatedUser = User .builder() .username("Test2") .build(); when(userReposiroyMock.findById(originalUser.getId())).thenReturn(Optional.of(originalUser)); when(userReposiroyMock.save(updatedUser)).thenReturn(updatedUser); User result = userService.update(updatedUser, originalUser.getId()); verify(userReposiroyMock).findById(originalUser.getId()); verify(userReposiroyMock).save(updatedUser); assertEquals(originalUser.getId(), result.getId()); assertEquals(updatedUser.getUsername(), result.getUsername()); } @Test void shouldHardDeleteAllUsers() { userService.hardDeleteAll(); verify(userReposiroyMock).deleteAll(); } @Test void shouldDeleteAllUsers() { var data = List.of( User.builder().username("Test1").build(), User.builder().username("Test2").build() ); when(userReposiroyMock.findAll()).thenReturn(data); userService.deleteAll(); verify(userReposiroyMock).findAll(); verify(userReposiroyMock).saveAll(data); } @Test void shouldDeleteAllUsersIds() { User firstUser = User .builder() .username("Test1") .build(); User secondUser = User .builder() .username("Test2") .build(); String[] ids = {firstUser.getId(), secondUser.getId()}; when(userReposiroyMock.findById(ids[0])).thenReturn(Optional.of(firstUser)); when(userReposiroyMock.findById(ids[1])).thenReturn(Optional.of(secondUser)); userService.deleteAllById(ids); verify(userReposiroyMock).save(firstUser); verify(userReposiroyMock).save(secondUser); } @Test void shouldFindAllUsers() { var data = List.of( User.builder().username("Test1").build(), User.builder().username("Test2").build() ); when(userReposiroyMock.findAll()).thenReturn(data); List<User> result = userService.findAll(); verify(userReposiroyMock).findAll(); assertEquals(data, result); } @Test void shouldFindAllUsersPageable() { int pageNumber = 0; int pageSize = 10; Pageable pageable = PageRequest.of(pageNumber, pageSize); var data = List.of( User.builder().username("Test1").build(), User.builder().username("Test2").build() ); Page<User> pageResult = new PageImpl<>(data, pageable, data.size()); when(userReposiroyMock.findAll(pageable)).thenReturn(pageResult); Page<User> result = userService.findAllPageable(pageable); verify(userReposiroyMock).findAll(pageable); assertEquals(pageResult, result); } @Test void shouldReturnUserMonthConsumption() { User user = User.builder() .email("test@gmail.com") .firstName("lol") .lastName("lol") .username("lol") .password("lol") .userType(UserType.ADMIN) .build(); user.setId("6a9f853d-59ef-4636-9c0b-bbac44bfd7f4"); userService.create(user); House house = House.builder() .address("lol") .city("lol") .state("lol") .zipcode("lol") .build(); house.setId("b256ac78-dc47-11ed-afa1-0242ac120002"); houseService.create(house); HouseRole role = HouseRole.builder() .houseRole(HouseRoleEnum.Owner) .house(house) .build(); role.setUser(user); roleService.create(role); SmartMeter smartMeter = SmartMeter .builder() .house(house) .build(); smartMeterService.create(smartMeter); LocalDateTime date = LocalDateTime.of(2023, 1,15,0,0,0,0); double consumptionSeed = 0; Metrics metrics = Metrics.builder() .consumptionKWH(consumptionSeed) .timeStamp(date) .smartMeter(smartMeter) .build(); metricsService.create(metrics); double consumption = userService.getConsumption(user.getId(), house.getId(), LocalDateTime.of(2023, 1,1,0,0,0,0), LocalDateTime.of(2023, 1,31,0,0,0,0)); assertEquals(consumptionSeed, consumption); } }
statistics/src/main/java/cz/muni/fi/pa165/statistics/statistics/StatisticService.java +6 −13 Original line number Diff line number Diff line package cz.muni.fi.pa165.statistics.statistics; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.impl.client.HttpClientBuilder; Loading @@ -12,12 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.UUID; Loading @@ -35,7 +28,7 @@ public class StatisticService { } @Transactional public UserStatistic CreateStatistic(UserStatistic userStatistic) throws IOException { public UserStatistic createStatistic(UserStatistic userStatistic) throws IOException { UserStatistic statistic = repository.findUserHouseDateStatistics(userStatistic.getUserId(), userStatistic.getHouseId(), userStatistic.getMonthNum(), userStatistic.getYearNum()); if (statistic == null){ Loading @@ -45,7 +38,7 @@ public class StatisticService { userStatistic.getHouseId(), userStatistic.getMonthNum(), userStatistic.getYearNum())); userStatistic.setMonthlyConsumption(GenerateStatistic(userStatistic)); userStatistic.setMonthlyConsumption(generateStatistic(userStatistic)); repository.save(userStatistic); return userStatistic; } Loading @@ -65,7 +58,7 @@ public class StatisticService { return repository.findAllByUserAndHouse(userId, houseId); } private double GenerateStatistic(UserStatistic userStatistic) throws IOException { public double generateStatistic(UserStatistic userStatistic) throws IOException { LocalDateTime startDateTime = GetFirstDayOfMonth(userStatistic.getYearNum(), userStatistic.getMonthNum()); LocalDateTime lastDateTime = GetLastDayOfMonth(userStatistic.getYearNum(), userStatistic.getMonthNum()); Loading Loading @@ -102,12 +95,12 @@ public class StatisticService { private LocalDateTime GetLastDayOfMonth(int year, int month){ LocalDateTime date = LocalDateTime.of(year, month,1,0,0,0,0); date.plusMonths(1); date.minusDays(1); LocalDateTime date_pom = date.plusMonths(1); LocalDateTime lastDateOfMonth = date_pom.minusDays(1); return LocalDateTime.of(year, month, date.getDayOfMonth(), lastDateOfMonth.getDayOfMonth(), 23,59,59,999999); } Loading
statistics/src/main/java/cz/muni/fi/pa165/statistics/statistics/StatisticsFacade.java +1 −3 Original line number Diff line number Diff line package cz.muni.fi.pa165.statistics.statistics; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestParam; import java.io.IOException; import java.util.List; Loading @@ -24,7 +22,7 @@ public class StatisticsFacade { @Transactional public UserStatisticsDto CreateStatistics(StatisticCreateDto entity) throws IOException { return mapper.toDto(statisticService.CreateStatistic(mapper.fromDto(entity))); return mapper.toDto(statisticService.createStatistic(mapper.fromDto(entity))); } @Transactional Loading