93 lines
2.1 KiB
Java
93 lines
2.1 KiB
Java
package com.drinkool.services;
|
|
|
|
import com.drinkool.*;
|
|
import com.drinkool.dtos.*;
|
|
import com.drinkool.entities.CustomerEntity;
|
|
import jakarta.inject.Inject;
|
|
import jakarta.transaction.Transactional;
|
|
import jakarta.ws.rs.*;
|
|
import jakarta.ws.rs.core.*;
|
|
|
|
@Path(Role.Customer)
|
|
public class CustomerService extends BaseService<CustomerEntity> {
|
|
|
|
@Inject
|
|
OtpService otpService;
|
|
|
|
public CustomerService() {
|
|
super(CustomerEntity.class);
|
|
}
|
|
|
|
@POST
|
|
@Path(Url.Signup)
|
|
@Transactional
|
|
public Response signup(Signup input) {
|
|
CustomerEntity newCustomer = new CustomerEntity();
|
|
|
|
newCustomer.signup(input.name, input.phone, input.password);
|
|
|
|
return Response.status(Response.Status.CREATED)
|
|
.header(InternalValue.userId, newCustomer.id.toString())
|
|
.header(InternalValue.role, Role.Customer)
|
|
.entity(newCustomer)
|
|
.build();
|
|
}
|
|
|
|
@POST
|
|
@Path(Url.QuickSignup)
|
|
@Transactional
|
|
public Response quickSignup(QuickSignup input) {
|
|
CustomerEntity newCustomer = new CustomerEntity();
|
|
|
|
newCustomer.signup(input.phone);
|
|
|
|
return Response.status(Response.Status.CREATED).build();
|
|
}
|
|
|
|
@POST
|
|
@Path(Url.Login)
|
|
public Response login(Login input) {
|
|
CustomerEntity customer = CustomerEntity.find(
|
|
"phone",
|
|
input.phone
|
|
).firstResult();
|
|
|
|
if (customer == null) return Response.status(Response.Status.BAD_REQUEST)
|
|
.entity("InvalidPhoneNumber")
|
|
.build();
|
|
|
|
if (!customer.login(input.password)) return Response.status(
|
|
Response.Status.BAD_REQUEST
|
|
)
|
|
.entity("InvalidPassword")
|
|
.build();
|
|
|
|
return Response.accepted()
|
|
.header(InternalValue.userId, customer.id.toString())
|
|
.header(InternalValue.role, Role.Customer)
|
|
.entity(customer)
|
|
.build();
|
|
}
|
|
|
|
@POST
|
|
@Path(Url.QuickLogin)
|
|
public Response quickLogin(QuickLogin input) {
|
|
if (!otpService.verifyOtp(input.phone, input.otp)) {
|
|
return Response.status(Response.Status.UNAUTHORIZED)
|
|
.entity("InvalidOTP")
|
|
.build();
|
|
}
|
|
|
|
CustomerEntity customer = CustomerEntity.find(
|
|
"phone",
|
|
input.phone
|
|
).firstResult();
|
|
|
|
return Response.accepted()
|
|
.header(InternalValue.userId, customer.id.toString())
|
|
.header(InternalValue.role, Role.Customer)
|
|
.entity(customer)
|
|
.build();
|
|
}
|
|
}
|