You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

270 lines
9.7 KiB

package com.gcc.communityHall.service.Impl;
import java.io.FileOutputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.gcc.communityHall.entity.ApplicationLogs;
import com.gcc.communityHall.entity.BookingDetails;
import com.gcc.communityHall.entity.Counsellordetails;
import com.gcc.communityHall.entity.HallDetails;
import com.gcc.communityHall.entity.HallImages;
import com.gcc.communityHall.entity.UserHistory;
import com.gcc.communityHall.entity.Users;
import com.gcc.communityHall.repository.ApplicationLogsRepository;
import com.gcc.communityHall.repository.BookingDetailsRepository;
import com.gcc.communityHall.repository.CounsellorDetailsRepository;
import com.gcc.communityHall.repository.UserHistoryRepository;
import com.gcc.communityHall.repository.UsersRepository;
import com.gcc.communityHall.service.UserService;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.http.HttpSession;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UsersRepository usersRepository;
@Autowired
private CounsellorDetailsRepository counsellorDetailsRepository;
@Autowired
private BookingDetailsRepository bookingDetailsRepository;
@Autowired
private HttpSession session;
@Autowired
private ApplicationLogsRepository applicationLogsRepository;
@PersistenceContext
private EntityManager entityManager;
@Value("${file.upload.directory}")
private String uploadDirectory;
@Value("${file.fullpath}")
private String serverPath;
@Override
@Transactional
public void approveUser(int userId) {
entityManager.createQuery(
"UPDATE Users u SET u.userstatus = 'APPROVED' WHERE u.userId = :userId AND u.userstatus = 'PENDING'")
.setParameter("userId", userId)
.executeUpdate();
}
@Autowired
UserHistoryRepository userHistoryRepository;
public UserServiceImpl(UsersRepository userRepo) {
this.usersRepository = userRepo;
}
public UserServiceImpl() {
}
@Override
public Users user(Users user) {
if (user.getUsertype() == null || !user.getUsertype().equals(Users.userType.PUBLIC)) {
user.setUserstatus(Users.userStatus.PENDING);
}
// if(user.getUsertype().equals(Users.userType.COUNCILLOR)) {
// Counsellordetails
// counsellordetails=counsellorDetailsRepository.findByMobile(user.getMobileNo());
// counsellordetails.getMobile1();counsellordetails.getMobile2()
// }
Users saveUser = usersRepository.save(user);
if (user.getUserPhoto() != null && !user.getUserPhoto().isEmpty()) {
String fileName = saveUser.getUserId() + "_" + user.getUserPhoto().getOriginalFilename();
String filePath = uploadDirectory + "/userPhoto/" + fileName;
try (FileOutputStream fos = new FileOutputStream(filePath)) {
byte[] bytes = user.getUserPhoto().getBytes();
fos.write(bytes);
} catch (Exception e) {
throw new RuntimeException(e);
}
saveUser.setProfilephoto(serverPath + "images/userPhoto/" + fileName);
saveUser = usersRepository.save(saveUser);
}
return saveUser;
}
@Override
public Users getUserById(int userId) {
Optional<Users> user = usersRepository.findById(userId);
if (user.isPresent()) {
return user.get();
}
return null;
}
@Override
public List<Users> getUserByStatus(Users.userStatus status) {
return usersRepository.findByUserstatus(status);
}
@Override
public List<Users> getUserByType(Users.userType userType) {
return usersRepository.findByUsertype(userType);
}
@Override
public Users updateUserStatus(int userId, Users.userStatus status, String comments) {
Optional<Users> user = usersRepository.findById(userId);
String adminname = (String) session.getAttribute("usertype");
Integer loginid = (Integer) session.getAttribute("id");
if (user.isPresent()) {
Users usr = user.get();
UserHistory userHistory = new UserHistory();
userHistory.setUsers(usr);
userHistory.setUserstatus(status);
userHistory.setComments(comments);
userHistory.setCdate(new Date());
userHistory.setUpdatedBy(adminname);
userHistoryRepository.save(userHistory);
usr.setUserstatus(status);
usr.setUpdatedBy(adminname);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDate = LocalDateTime.now().format(formatter);
usr.setUpdatedDate(formattedDate);
Users users = usersRepository.save(usr);
ApplicationLogs logs = new ApplicationLogs();
logs.setComments("Action by " + adminname);
logs.setLoginId(loginid);
logs.setLogType("User Status:-" + status.toString());
InetAddress inetAddress;
try {
inetAddress = InetAddress.getLocalHost();
String hostname = InetAddress.getLocalHost().getHostName();
logs.setIpaddress(inetAddress.getHostAddress());
logs.setSystemName(hostname);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
applicationLogsRepository.save(logs);
return users;
}
return null;
}
@Override
public Users findByMobileno(Long mobileNo) {
// TODO Auto-generated method stub
return usersRepository.findByMobileNo(mobileNo);
}
// yoga
@Override
public List<Users> getAllUsers(String fromDate, String toDate) {
return usersRepository.getAllUsers(fromDate, toDate);
}
@Override
public List<Users> getAllUsersWithFilters(String fromDate, String toDate, String userStatus, String userType) {
return usersRepository.getAllUsersWithFilters(fromDate, toDate, userStatus, userType);
}
@Override
public List<Users> getAllUsersWithStatusFilters(String fromDate, String toDate, String userStatus) {
return usersRepository.getAllUsersWithStatusFilters(fromDate, toDate, userStatus);
}
@Override
public List<Users> getAllUsersWithTypeFilters(String fromDate, String toDate, String userType) {
return usersRepository.getAllUsersWithTypeFilters(fromDate, toDate, userType);
}
public void updateProfile(Users userProfileRequest) {
// Retrieve the user entity from the repository based on the ID
Optional<Users> optionalUser = usersRepository.findById(userProfileRequest.getUserId());
if (optionalUser.isPresent()) {
Users user = optionalUser.get();
// Update the user entity with the new profile details
user.setName(userProfileRequest.getName());
user.setEmail(userProfileRequest.getEmail());
user.setEmail(userProfileRequest.getArea());
user.setEmail(userProfileRequest.getStreet());
user.setEmail(userProfileRequest.getDoorNo());
usersRepository.save(user);
} else {
// System.out.println("User with ID " + userProfileRequest.getUserId() + " not
// found");
}
}
@Override
public String updateUserDetails(Users userDetails) {
Users existingUser = usersRepository.findById(userDetails.getUserId()).orElse(null);
if (existingUser != null) {
// Update user details
existingUser.setName(userDetails.getName());
existingUser.setDoorNo(userDetails.getDoorNo());
existingUser.setArea(userDetails.getArea());
existingUser.setLocation(userDetails.getLocation());
existingUser.setUsertype(userDetails.getUsertype());
existingUser.setPinCode(userDetails.getPinCode());
existingUser.setEmail(userDetails.getEmail());
if (userDetails.getProfilephoto() != null && !userDetails.getProfilephoto().isEmpty()) {
existingUser.setProfilephoto(userDetails.getProfilephoto()); // Update profile photo path
}
if (userDetails.getUsertype() == Users.userType.PUBLIC) {
existingUser.setUserstatus(Users.userStatus.APPROVED);
} else {
existingUser.setUserstatus(Users.userStatus.PENDING);
}
usersRepository.save(existingUser);
return "success";
}
return "failed";
}
@Override
public void saveUsers(Users user) {
// TODO Auto-generated method stub
}
public Counsellordetails findByMobile(long mobileno) {
return counsellorDetailsRepository.findByMobile(mobileno);
}
@Override
public Users getUserDetailsByMobileNo(long mobileNo) {
return usersRepository.findByMobileNo(mobileNo);
}
public void toggleUserStatus(Integer userId, boolean active) {
Optional<Users> optionalUser = usersRepository.findById(userId);
if (optionalUser.isPresent()) {
Users user = optionalUser.get();
user.setActive(active);
usersRepository.save(user);
}
}
}