package com.andreiolar.abms.server;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.andreiolar.abms.client.rpc.DBSelfReading;
import com.andreiolar.abms.mail.MailSender;
import com.andreiolar.abms.shared.SelfReading;
import com.andreiolar.abms.shared.UserDetails;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class DBSelfReadingImpl extends RemoteServiceServlet implements DBSelfReading {
private static final long serialVersionUID = -8184360144223527661L;
@Override
public boolean insertReading(UserDetails userDetails, SelfReading reading) throws Exception {
Connection conn = null;
PreparedStatement stmt = null;
int executed = 0;
try {
conn = MyConnection.getConnection();
try {
String q = "insert into self_readings(apartment_number, cold_water, hot_water, electricity, gaz, month) values(?,?,?,?,?,?)";
stmt = conn.prepareStatement(q);
stmt.setString(1, userDetails.getApartmentNumber());
stmt.setString(2, reading.getColdWater());
stmt.setString(3, reading.getHotWater());
stmt.setString(4, reading.getElectricity());
stmt.setString(5, reading.getGaz());
stmt.setString(6, reading.getDate());
executed = stmt.executeUpdate();
String subject = "Submitted consumption report for " + reading.getDate();
String to = userDetails.getEmail();
String message = "<p>" + "Hello " + userDetails.getFirstName() + " " + userDetails.getLastName() + "," + "<br><br>"
+ "You have successfully submitted yor consumption report for " + reading.getDate() + "." + "<br><br>" + "Details:" + "<br>"
+ "Cold Water: <b>" + reading.getColdWater() + "</b> mc<br>" + "Hot Water: <b>" + reading.getHotWater() + "</b> mc<br>"
+ "Electricity: <b>" + reading.getElectricity() + "</b> kW<br>" + "Gas: <b>" + reading.getGaz() + "</b> mc<br>" + "<br>"
+ "Best regards," + "<br>" + "Administration" + "</p>";
MailSender.sendMail(subject, to, message, null);
} catch (Exception ex) {
throw new RuntimeException("Something went wrong: " + ex.getMessage(), ex);
} finally {
stmt.close();
}
} catch (Exception ex) {
throw new RuntimeException("Something went wrong: " + ex.getMessage(), ex);
} finally {
conn.close();
}
if (executed == 0) {
throw new Exception("Something went wrong: Unable to submit consumption report. Please try again.");
}
return true;
}
}