develop #3

Merged
Petr merged 18 commits from develop into master 2025-02-19 12:37:36 +00:00
2 changed files with 43 additions and 8 deletions
Showing only changes of commit 4545f1de5e - Show all commits

View File

@ -6,11 +6,10 @@ import java.util.List;
public interface OfficeService {
List<OfficeDTO> getAllOffice();
List<OfficeDTO> getAllSortedDistance(double userLatitude, double userLongitude);
OfficeDTO getById(long officeId);
OfficeDTO create(OfficeDTO officeDTO);
OfficeDTO update(long officeId, OfficeDTO officeDTO);
void delete(long officeId);
void patchBlockVolunteer(long id, boolean blockStatus);
}

View File

@ -1,5 +1,8 @@
package com.example.nto.service.impl;
import com.example.nto.aspect.annotation.LogExample;
import com.example.nto.domain.entity.Office;
import com.example.nto.domain.exception.ResourceNotFoundException;
import com.example.nto.dto.entity.OfficeDTO;
import com.example.nto.dto.mappers.OfficeMapper;
import com.example.nto.repository.OfficeRepository;
@ -7,6 +10,8 @@ import com.example.nto.service.OfficeService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.awt.geom.Point2D;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@ -16,32 +21,63 @@ public class OfficeServiceImpl implements OfficeService {
private final OfficeRepository officeRepository;
@Override
@LogExample
public List<OfficeDTO> getAllOffice() {
return officeRepository.findAll().stream().map(OfficeMapper::convertToDTO).collect(Collectors.toList());
}
@Override
public List<OfficeDTO> getAllSortedDistance(double userLatitude, double userLongitude) {
return officeRepository.findAll().stream().map(OfficeMapper::convertToDTO)
.sorted(createComparator(new Point2D.Double(userLatitude, userLongitude))).collect(Collectors.toList());
}
@Override
@LogExample
public OfficeDTO getById(long officeId) {
return null;
return officeRepository.findById(officeId).map(OfficeMapper::convertToDTO)
.orElseThrow(() -> new ResourceNotFoundException("Офис с id (" + officeId + ") не найден!"));
}
@Override
@LogExample
public OfficeDTO create(OfficeDTO officeDTO) {
return null;
return OfficeMapper.convertToDTO(officeRepository.save(OfficeMapper.convertFromDTO(officeDTO)));
}
@Override
@LogExample
public OfficeDTO update(long officeId, OfficeDTO officeDTO) {
return null;
Office office = officeRepository.findById(officeId)
.orElseThrow(() -> new ResourceNotFoundException("Офис с id (" + officeId + ") не найден!"));
office.setName(officeDTO.getName());
office.setDescription(officeDTO.getDescription());
office.setAddress(officeDTO.getAddress());
office.setLatitude(officeDTO.getLatitude());
office.setLongitude(officeDTO.getLongitude());
// linkLogo меняется в отдельном запросе
office.setTelephone(officeDTO.getTelephone());
office.setEmail(officeDTO.getEmail());
return OfficeMapper.convertToDTO(officeRepository.save(office));
}
@Override
@LogExample
public void delete(long officeId) {
officeRepository.findById(officeId).orElseThrow(() -> new ResourceNotFoundException("Офис с id (" + officeId + ") не найден!"));
officeRepository.deleteById(officeId);
}
@Override
public void patchBlockVolunteer(long id, boolean blockStatus) {
private static Comparator<OfficeDTO> createComparator(Point2D point) {
return (office0, office1) -> {
Point2D point0 = new Point2D.Double(office0.getLatitude(), office0.getLongitude());
Point2D point1 = new Point2D.Double(office1.getLatitude(), office1.getLongitude());
return Double.compare(point0.distanceSq(point), point1.distanceSq(point));
};
}
}