Professional Documents
Culture Documents
Package Com - Verizon.controller
Package Com - Verizon.controller
controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.verizon.dto.CustomerAddressRequest;
import com.verizon.dto.CustomerAddressResponse;
import com.verizon.dto.CustomerDetailsRequest;
import com.verizon.dto.CustomerDetailsResponse;
import com.verizon.dto.ServiceProviderDetailsRequest;
import com.verizon.entity.CustomerAddress;
import com.verizon.entity.CustomerDetails;
import com.verizon.mapper.CustomerAddressMapper;
import com.verizon.mapper.CustomerDetailsMapper;
import com.verizon.mapper.ServiceProviderDetailsMapper;
import com.verizon.service.CustomerDetailsService;
//Indicating that this class is a REST controller
@RestController
//URL mapping for this controller
@RequestMapping("/cust")
public class CustomerControl {
// Annotation for automatic dependency injection
// Dependency injection for CustomerAddressMapper
private CustomerAddressMapper customerAddressMapper;
@Autowired
private CustomerDetailsService customerDetailsService; // Dependency
injection for CustomerDetailsService
@Autowired
private CustomerDetailsMapper customerDetailsMapper;// Dependency injection
for CustomerDetailsMapper
// Endpoint for saving customer details
@Autowired
private ServiceProviderDetailsMapper serviceProviderDetailsMapper;
CustomerControl(CustomerAddressMapper customerAddressMapper) {
this.customerAddressMapper = customerAddressMapper;
}
// Endpoint for saving customer details
@PostMapping("/costomerdetails") // Annotation to handle HTTP POST requests
public CustomerDetailsResponse SaveCustomerDetails(@RequestBody
CustomerDetailsRequest customerDetailsRequest) {
CustomerDetailsResponse customerDetailsResponse = new
CustomerDetailsResponse(); // Initialize the response object
List<String> messages = new ArrayList();// Initialize the list to hold
validation messages
try
{
// Validate phone number
// Check if phone number is null
if(customerDetailsRequest.getPhoneNumber()==null)
{
messages.add("Phone Number Must Not null");
}
// Check if phone number is exactly 10 digits
if (customerDetailsRequest.getPhoneNumber().length()<10 ||
customerDetailsRequest.getPhoneNumber().length()>10 )
{
messages.add("Phone Number must be 10 digits");
}
// Validate PassPort
//Passport Must Not null
if (customerDetailsRequest.getPassport() ==null) {
messages.add(" Must Provide New service provider and
cannot be null.");
List<CustomerAddressRequest> addressRequests =
customerDetailsRequest.getCustomerAddressRequest();
if (addressRequests != null) {
for (CustomerAddressRequest addressRequest :
addressRequests) {
// Check each property of addressRequest for null or
empty values and add appropriate messages
if (addressRequest.getMandal() == null ||
addressRequest.getMandal().isEmpty())
{
messages.add("Mandal must not be null or
empty");
}
if (addressRequest.getDistrict() == null ||
addressRequest.getDistrict().isEmpty())
{
messages.add("Mandal must not be null or
empty");
}
if (addressRequest.getCity() == null ||
addressRequest.getCity().isEmpty())
{
messages.add("Mandal must not be null or
empty");
}
if (addressRequest.getState() == null ||
addressRequest.getState().isEmpty())
{
messages.add("Mandal must not be null or
empty");
}
if (addressRequest.getCountry() == null &&
addressRequest.getCountry().isEmpty())
{
messages.add("Mandal must not be null or
empty");
}
}
}
// Validate ServiceProviderDetails
List<ServiceProviderDetailsRequest> serviceProviderRequests =
customerDetailsRequest.getServiceProviderDetailsRequest();
if (serviceProviderRequests != null) {
for (ServiceProviderDetailsRequest serviceProviderRequest :
serviceProviderRequests) {
// Loop through each service provider request
// Check each property of serviceProviderRequest for null or
empty values and add appropriate messages
if (serviceProviderRequest.getProviderName() == null
|| serviceProviderRequest.getProviderName().isEmpty()) {
messages.add("Provider Name must not be null or
empty");
}
if (serviceProviderRequest.getProviderAddress() ==
null || serviceProviderRequest.getProviderAddress().isEmpty()) {
messages.add("Provider Address must not be null
or empty");
}
if (serviceProviderRequest.getProviderContact() ==
null || serviceProviderRequest.getProviderContact().isEmpty()) {
messages.add("Provider Contact must not be null
or empty");
}
if (serviceProviderRequest.getProviderType() == null
|| serviceProviderRequest.getProviderType().isEmpty()) {
messages.add("Provider Type must not be null or
empty");
}
// Add additional validations for other properties
}
}
else {
messages.add("Service Provider Details Request list must
not be null");
}
CustomerDetails customerDetails =
customerDetailsMapper.mapCustomerDetails(customerDetailsRequest);// Map the request
to entity
}
catch(Exception e)
{
messages.add("An error occurred: " + e.getMessage()); // Catch
and add any exceptions to messages
}
finally
{
customerDetailsResponse.setMessages(messages);// Set the messages
in the response object
}
ackage com.verizon.dto;
}
package com.verizon.dto;
import java.util.List;
}
package com.verizon.dto;
import java.util.Date;
import java.util.List;
package com.verizon.dto;
import java.util.List;
}
package com.verizon.dto;
}
package com.verizon.dto;
import java.sql.Date;
}
package com.verizon.mapper;
import org.springframework.stereotype.Component;
import com.verizon.dto.CustomerAddressRequest;
import com.verizon.entity.CustomerAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.verizon.dto.CustomerDetailsRequest;
import com.verizon.dto.ServiceProviderDetailsRequest;
import com.verizon.entity.CustomerDetails;
import com.verizon.entity.CustomerAddress;
import com.verizon.entity.ServiceProviderDetails;
customerDetails.setCustomerActiveDate(customerDetailsRequest.getCustomerActiveDate(
));
customerDetails.setDateOfBirth(customerDetailsRequest.getDateOfBirth());
customerDetails.setPhoneNumber(customerDetailsRequest.getPhoneNumber());
customerDetails.setCustomerDeactiveDate(customerDetailsRequest.getCustomerDeactiveD
ate());
customerDetails.setTransactionId(customerDetailsRequest.getTransactionId());
customerDetails.setGender(customerDetailsRequest.getGender());
customerDetails.setPassport(customerDetailsRequest.getPassport());
// Map Address
if (customerDetailsRequest.getCustomerAddressRequest() != null) {
// Mapping customer address if present
CustomerAddress customerAddress =
customerAddressMapper.mapAddress(customerDetailsRequest.getCustomerAddressRequest()
.get(0)); // Assuming only one address is present
customerDetails.setAddress(customerAddress); // Setting the mapped
customer address to customer details
}
// Map ServiceProviderDetails
if (customerDetailsRequest.getServiceProviderDetailsRequest() != null && !
customerDetailsRequest.getServiceProviderDetailsRequest().isEmpty()) {
// Mapping service provider details if present
ServiceProviderDetailsRequest serviceProviderRequest =
customerDetailsRequest.getServiceProviderDetailsRequest().get(0); // Assuming only
one service provider is present
ServiceProviderDetails serviceProviderDetails =
serviceProviderDetailsMapper.mapServiceProviderDetails(serviceProviderRequest); //
Mapping service provider details
customerDetails.setServiceProvider(serviceProviderDetails); // Setting
the mapped service provider details to customer details
}
import org.springframework.stereotype.Component;
import com.verizon.dto.ServiceProviderDetailsRequest;
import com.verizon.entity.ServiceProviderDetails;
serviceProviderDetails.setSpid(serviceProviderDetailsRequest.getSpid());
serviceProviderDetails.setProviderName(serviceProviderDetailsRequest.getProviderNam
e());
serviceProviderDetails.setProviderAddress(serviceProviderDetailsRequest.getProvider
Address());
serviceProviderDetails.setProviderContact(serviceProviderDetailsRequest.getProvider
Contact());
serviceProviderDetails.setProviderType(serviceProviderDetailsRequest.getProviderTyp
e());
serviceProviderDetails.setWebsite(serviceProviderDetailsRequest.getWebsite());
serviceProviderDetails.setServicesOffered(serviceProviderDetailsRequest.getServices
Offered());
serviceProviderDetails.setEstablishedDate(serviceProviderDetailsRequest.getEstablis
hedDate());
serviceProviderDetails.setRating(serviceProviderDetailsRequest.getRating());
package com.verizon.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.verizon.entity.CustomerDetails;
import com.verizon.entity.CustomerDetails;
*/
package com.verizon.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.verizon.entity.CustomerDetails;
import com.verizon.repository.CustomerDetailsRepository;
@Override
public CustomerDetails saveCustomerDetails(CustomerDetails customerDetails) {
// Method to save customer details using the repository
return customerDetailsRepository.save(customerDetails); // Saving and
returning the customer details
}
}