Search in sources :

Example 6 with Courier

use of com.ncedu.fooddelivery.api.v1.entities.Courier in project 2021-msk-food-delivery by netcracker-edu.

the class UserDetailsServiceImpl method loadUserByUsername.

// TODO: add courier repo for finding user by phoneNumber
@Override
public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException {
    User user = userRepo.findByEmail(login);
    // if user not found by Email try find client/courier by phoneNumber
    if (user == null) {
        Client client = clientRepo.findByPhoneNumber(login);
        if (client == null) {
            throw new NotFoundEx(login);
        }
        user = client.getUser();
    }
    return user;
}
Also used : User(com.ncedu.fooddelivery.api.v1.entities.User) NotFoundEx(com.ncedu.fooddelivery.api.v1.errors.notfound.NotFoundEx) Client(com.ncedu.fooddelivery.api.v1.entities.Client)

Example 7 with Courier

use of com.ncedu.fooddelivery.api.v1.entities.Courier in project 2021-msk-food-delivery by netcracker-edu.

the class DeliverySessionServiceTest method getFakeSessionInfoDTOs.

private List<DeliverySessionInfoDTO> getFakeSessionInfoDTOs() {
    Courier c = UserUtils.courierHowardWolowitz(100L).getCourier();
    CourierInfoDTO targetCourierInfoDTO = new CourierInfoDTO(targetCourier.getId(), Role.COURIER.name(), user.getFullName(), user.getEmail(), user.getLastSigninDate(), user.getAvatarId(), targetCourier.getPhoneNumber(), targetCourier.getRating(), targetCourier.getWarehouse().getId(), targetCourier.getAddress(), targetCourier.getCurrentBalance());
    DeliverySessionInfoDTO dto1 = new DeliverySessionInfoDTO(userId, targetCourierInfoDTO, currDateTime, currDateTime.plusHours(1L), 1, "01:00:00", 1000.0F);
    dto1.setId(1L);
    DeliverySessionInfoDTO dto2 = new DeliverySessionInfoDTO(userId, targetCourierInfoDTO, currDateTime.minusHours(3), currDateTime.minusHours(2), 2, "00:30:00", 2000.0F);
    dto2.setId(2L);
    DeliverySessionInfoDTO dto3 = new DeliverySessionInfoDTO(userId, targetCourierInfoDTO, currDateTime.minusDays(1), currDateTime.minusDays(1).plusHours(4), 7, "00:34:17", 5000.0F);
    dto3.setId(3L);
    return new ArrayList<>(Arrays.asList(dto1, dto2, dto3));
}
Also used : CourierInfoDTO(com.ncedu.fooddelivery.api.v1.dto.user.CourierInfoDTO) ArrayList(java.util.ArrayList) DeliverySessionInfoDTO(com.ncedu.fooddelivery.api.v1.dto.deliverySession.DeliverySessionInfoDTO)

Example 8 with Courier

use of com.ncedu.fooddelivery.api.v1.entities.Courier in project 2021-msk-food-delivery by netcracker-edu.

the class OrderServiceTest method replaceCourierSuccessTest.

@Test
public void replaceCourierSuccessTest() {
    User fakeUser = getFakeUserModerator();
    Courier fakeCourier = getFakeCourier2();
    Order fakeOrder = getFakeOrder();
    Mockito.when(courierRepo.getWaitingCourierByWarehouse(1L)).thenReturn(fakeCourier);
    orderService.replaceCourier(fakeOrder, fakeUser);
    Assertions.assertEquals(fakeOrder.getCourier(), fakeCourier);
    Mockito.verify(courierRepo, Mockito.times(1)).getWaitingCourierByWarehouse(1L);
}
Also used : Order(com.ncedu.fooddelivery.api.v1.entities.order.Order) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 9 with Courier

use of com.ncedu.fooddelivery.api.v1.entities.Courier in project 2021-msk-food-delivery by netcracker-edu.

the class OrderServiceTest method replaceCourierAccessExTest.

@Test
public void replaceCourierAccessExTest() {
    User fakeUser = getFakeUserModerator();
    Courier mockCourier = Mockito.mock(Courier.class);
    Order fakeOrder = getFakeOrder();
    fakeOrder.setWarehouse(getFakeWarehouse2());
    Assertions.assertThrows(CustomAccessDeniedException.class, new Executable() {

        @Override
        public void execute() throws Throwable {
            orderService.replaceCourier(fakeOrder, fakeUser);
        }
    });
}
Also used : Order(com.ncedu.fooddelivery.api.v1.entities.order.Order) Executable(org.junit.jupiter.api.function.Executable) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 10 with Courier

use of com.ncedu.fooddelivery.api.v1.entities.Courier in project 2021-msk-food-delivery by netcracker-edu.

the class CourierServiceImpl1 method findFreeCourier.

@Override
public Courier findFreeCourier(Long warehouseId) {
    Courier courier = new Courier();
    int i = 0;
    try {
        for (; i < 15; i++) {
            courier = courierRepo.getWaitingCourierByWarehouse(warehouseId);
            if (courier != null)
                break;
            Thread.sleep(2000);
        }
    } catch (InterruptedException ex) {
    }
    if (i == 15)
        throw new CourierAvailabilityEx();
    return courier;
}
Also used : CourierAvailabilityEx(com.ncedu.fooddelivery.api.v1.errors.orderRegistration.CourierAvailabilityEx) Courier(com.ncedu.fooddelivery.api.v1.entities.Courier)

Aggregations

Order (com.ncedu.fooddelivery.api.v1.entities.order.Order)5 Test (org.junit.jupiter.api.Test)3 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)3 DeliverySessionInfoDTO (com.ncedu.fooddelivery.api.v1.dto.deliverySession.DeliverySessionInfoDTO)2 CourierInfoDTO (com.ncedu.fooddelivery.api.v1.dto.user.CourierInfoDTO)2 CourierAvailabilityEx (com.ncedu.fooddelivery.api.v1.errors.orderRegistration.CourierAvailabilityEx)2 Executable (org.junit.jupiter.api.function.Executable)2 com.ncedu.fooddelivery.api.v1.dto.areCreatedDTO (com.ncedu.fooddelivery.api.v1.dto.areCreatedDTO)1 Client (com.ncedu.fooddelivery.api.v1.entities.Client)1 Courier (com.ncedu.fooddelivery.api.v1.entities.Courier)1 User (com.ncedu.fooddelivery.api.v1.entities.User)1 OrderProductPosition (com.ncedu.fooddelivery.api.v1.entities.orderProductPosition.OrderProductPosition)1 ProductPosition (com.ncedu.fooddelivery.api.v1.entities.productPosition.ProductPosition)1 NotFoundEx (com.ncedu.fooddelivery.api.v1.errors.notfound.NotFoundEx)1 CustomAccessDeniedException (com.ncedu.fooddelivery.api.v1.errors.security.CustomAccessDeniedException)1 Coordinate (com.vividsolutions.jts.geom.Coordinate)1 Geometry (com.vividsolutions.jts.geom.Geometry)1 Duration (java.time.Duration)1 ArrayList (java.util.ArrayList)1 Transactional (org.springframework.transaction.annotation.Transactional)1