package carpool.dbservice.admin;
import java.util.ArrayList;
import carpool.carpoolDAO.*;
import carpool.cleanRoutineTask.MessageCleaner;
import carpool.cleanRoutineTask.TransactionCleaner;
import carpool.configurations.EnumConfig;
import carpool.configurations.EnumConfig.MessageState;
import carpool.configurations.EnumConfig.TransactionState;
import carpool.configurations.EnumConfig.UserState;
import carpool.dbservice.NotificationDaoService;
import carpool.exception.*;
import carpool.exception.location.LocationException;
import carpool.exception.location.LocationNotFoundException;
import carpool.exception.validation.ValidationException;
import carpool.model.*;
public class AdminService {
public static void changeUserState(int userId, UserState targetState) throws PseudoException{
User user = CarpoolDaoUser.getUserById(userId);
user.setState(targetState);
CarpoolDaoUser.UpdateUserInDatabase(user);
}
public static void changeMessageState(int messageId, MessageState targetState) throws PseudoException{
Message message = CarpoolDaoMessage.getMessageById(messageId);
message.setState(targetState);
CarpoolDaoMessage.UpdateMessageInDatabase(message);
}
public static void changeTransactionState(int transactionId, TransactionState targetState) throws PseudoException{
Transaction transaction = CarpoolDaoTransaction.getTransactionById(transactionId);
transaction.setState(targetState);
CarpoolDaoTransaction.updateTransactionInDatabase(transaction);
//send notifications
ArrayList<Notification> ns = new ArrayList<Notification>();
ns.add(new Notification(EnumConfig.NotificationEvent.transactionCancelled, transaction.getProviderId(), transaction.getCustomerId(), transaction.getMessageId(), transaction.getTransactionId()));
ns.add(new Notification(EnumConfig.NotificationEvent.transactionCancelled, transaction.getCustomerId(), transaction.getProviderId(), transaction.getMessageId(), transaction.getTransactionId()));
NotificationDaoService.sendNotification(ns);
}
public static void clearBothDatabase(){
CarpoolDaoBasic.clearBothDatabase();
}
public static void forceMessageClean() throws LocationNotFoundException{
MessageCleaner.Clean();
}
public static void forceTransactionMonitoring() throws LocationNotFoundException{
TransactionCleaner.Clean();
}
public static void forceReloadLocation() throws LocationException, ValidationException, LocationNotFoundException{
CarpoolDaoLocation.reloadDefaultLocations();
}
}