/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package budgetforce.control.resources;
import budgetforce.control.FileHandle;
import budgetforce.model.Budget;
import budgetforce.model.DatabaseManager;
import budgetforce.model.login.Login;
import budgetforce.model.Outgoing;
import budgetforce.model.Receipt;
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;
import java.io.IOException;
import java.io.InputStream;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
* REST Web Service
*
* @author Soi Fon
*/
@Path("/outgoing/{outgoingID}/receipt")
public class ReceiptResource
{
public ReceiptResource()
{
}
@GET
@Path("{id}")
@Produces("application/json")
public Receipt getReceiptById(@PathParam("id") Integer _Id)
{
return DatabaseManager.getDatabaseManager().getReceiptByID(_Id);
}
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("application/json")
public Response uploadFile(@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail,
@PathParam("outgoingID") int outgoingID)
{
String fileDestination[];
Outgoing outgoing = DatabaseManager.getDatabaseManager().getOutgoingByID(outgoingID);
Budget budget = DatabaseManager.getDatabaseManager().getBudgetByID(outgoing.getBudgetId());
Login login = DatabaseManager.getDatabaseManager().getLoginByPersonID(budget.getPersonId());
try
{
FileHandle.CreateUserDirectory(login.getUsername());
FileHandle.CreateUserSubDirectory(login.getUsername());
fileDestination = FileHandle.CreateFile(uploadedInputStream, fileDetail.getFileName(),login.getUsername(), Receipt.NewReceiptID());
}
catch (IOException ex)
{
return Response.status(Response.Status.BAD_REQUEST).entity(null).build();
}
Receipt r = new Receipt();
r.setPersonID(login.getPersondId());
r.setOutgoingID(outgoingID);
r.setPath(fileDestination[0]);
r.setFilename(fileDestination[1]);
DatabaseManager.getDatabaseManager().insertReceipt(r);
return Response.status(201).entity(r).build();
}
//put for updating an entry
@PUT
@Path("{id}")
@Consumes("application/json")
@Produces("application/json")
public Response putReceipt(@PathParam("id") Integer _Id, Receipt _Receipt)
{
boolean successful = DatabaseManager.getDatabaseManager().updateReceipt(_Receipt);
return Response.status(201).entity(successful).build();
}
@DELETE
@Path("{id}")
@Consumes("application/json")
@Produces("application/json")
public Response deleteReceipt(@PathParam("id") Integer _Id)
{
boolean successful = DatabaseManager.getDatabaseManager().deleteReceipt(_Id);
return Response.status(201).entity(successful).build();
}
}