package ua.sergiishapoval.carrental.dao;
import ua.sergiishapoval.carrental.model.Order;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
/**
* Created by Сергей on 22.12.2014.
*/
public class DaoOrder {
Connection connection;
final static ResourceBundle sqlResourceBundle = ResourceBundle.getBundle("sqlstatements");
public DaoOrder() {
}
public void setConnection(Connection connection) {
this.connection = connection;
}
final static String MY_ORDERS_REQUESTS_SELECT = sqlResourceBundle.getString("MY_ORDERS_REQUESTS_SELECT");
final static String ALL_ORDERS_REQUESTS_SELECT = sqlResourceBundle.getString("ALL_ORDERS_REQUESTS_SELECT");
final static String ORDERS_REQUESTS_SELECT_BY_ID = sqlResourceBundle.getString("ORDERS_REQUESTS_SELECT_BY_ID");
final static String UPDATE_ORDER_STATUS = sqlResourceBundle.getString("UPDATE_ORDER_STATUS");
final static String UPDATE_ORDER_REASON = sqlResourceBundle.getString("UPDATE_ORDER_REASON");
final static String UPDATE_ORDER_PENALTY = sqlResourceBundle.getString("UPDATE_ORDER_PENALTY");
public boolean changePenalty(int orderId, double penalty) throws SQLException {
PreparedStatement preparedStatement = connection.prepareStatement(UPDATE_ORDER_PENALTY);
preparedStatement.setDouble(1, penalty);
preparedStatement.setInt(2, orderId);
return preparedStatement.executeUpdate() == 1;
}
public boolean changeReason(int orderId, String reason) throws SQLException {
PreparedStatement preparedStatement = connection.prepareStatement(UPDATE_ORDER_REASON);
preparedStatement.setString(1, reason);
preparedStatement.setInt(2, orderId);
return preparedStatement.executeUpdate() ==1;
}
public boolean changeStatus(int orderId, String status) throws SQLException {
PreparedStatement preparedStatement = connection.prepareStatement(UPDATE_ORDER_STATUS);
preparedStatement.setString(1, status);
preparedStatement.setInt(2, orderId);
return preparedStatement.executeUpdate() ==1;
}
public Order getDataById(int orderId) throws SQLException {
Order order = new Order();
PreparedStatement preparedStatement = connection.prepareStatement(ORDERS_REQUESTS_SELECT_BY_ID);
preparedStatement.setInt(1, orderId);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next() ){
order = setProps(resultSet);
}
return order;
}
public List<Order> getByUserIdAndStatus(int userId, String status) throws SQLException {
List<Order> orders = new ArrayList<>();
PreparedStatement preparedStatement = connection.prepareStatement(MY_ORDERS_REQUESTS_SELECT);
preparedStatement.setInt(1, userId);
preparedStatement.setString(2, status);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next() ){
Order order = setProps(resultSet);
orders.add(order);
}
return orders;
}
public List<Order> getAllData(String status) throws SQLException {
List<Order> orders = new ArrayList<>();
PreparedStatement preparedStatement = connection.prepareStatement(ALL_ORDERS_REQUESTS_SELECT);
preparedStatement.setString(1, status);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next() ){
Order order = setProps(resultSet);
orders.add(order);
}
return orders;
}
private Order setProps(ResultSet resultSet) throws SQLException {
Order order = new Order();
order.setBrand(resultSet.getString("brand_name"));
order.setModel(resultSet.getString("model_name"));
order.setRentTotal(resultSet.getDouble("rent_total"));
order.setPenalty(resultSet.getDouble("penalty"));
order.setReason(resultSet.getString("reason"));
order.setStatus(resultSet.getString("status"));
order.setDateStart(resultSet.getDate("date_start"));
order.setDateEnd(resultSet.getDate("date_end"));
order.setCarId(resultSet.getInt("car_id"));
order.setOrderId(resultSet.getInt("order_id"));
order.setUserId(resultSet.getInt("user_id"));
return order;
}
}