Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package edu.uark.registerapp.commands.transactions;

import java.util.Optional;

import javax.transaction.Transactional;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import edu.uark.registerapp.commands.ResultCommandInterface;
import edu.uark.registerapp.commands.exceptions.ConflictException;
import edu.uark.registerapp.commands.exceptions.UnprocessableEntityException;
import edu.uark.registerapp.models.api.Transaction;
import edu.uark.registerapp.models.entities.TransactionEntity;
import edu.uark.registerapp.models.repositories.TransactionRepository;

@Service
public class TransactionCreateCommand implements ResultCommandInterface<Transaction> {
@Override
public Transaction execute() {
this.validateProperties();

final TransactionEntity createdTransactionEntity = this.createTransactionEntity();

// Synchronize information generated by the database upon INSERT.
this.apiTransaction.setId(createdTransactionEntity.getId());
this.apiTransaction.setCreatedOn(createdTransactionEntity.getCreatedOn());

return this.apiTransaction;
}

// Helper methods
private void validateProperties() {
if (StringUtils.isBlank(this.apiTransaction.getLookupCode())) {
throw new UnprocessableEntityException("lookupcode");
}
}

@Transactional
private TransactionEntity createTransactionEntity() {
final Optional<TransactionEntity> queriedTransactionEntity =
this.transactionRepository
.findByLookupCode(this.apiTransaction.getLookupCode());

if (queriedTransactionEntity.isPresent()) {
// Lookupcode already defined for another transaction.
throw new ConflictException("lookupcode");
}

// No ENTITY object was returned from the database, thus the API object's
// lookupcode must be unique.

// Write, via an INSERT, the new record to the database.
return this.transactionRepository.save(
new TransactionEntity(apiTransaction));
}

// Properties
private Transaction apiTransaction;
public Transaction getApiTransaction() {
return this.apiTransaction;
}
public TransactionCreateCommand setApiTransaction(final Transaction apiTransaction) {
this.apiTransaction = apiTransaction;
return this;
}

@Autowired
private TransactionRepository transactionRepository;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@

package edu.uark.registerapp.commands.transactions;

import java.util.LinkedList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import edu.uark.registerapp.commands.ResultCommandInterface;
import edu.uark.registerapp.models.api.Transaction;
import edu.uark.registerapp.models.entities.TransactionEntity;
import edu.uark.registerapp.models.repositories.TransactionRepository;

@Service
public class TransactionsQuery implements ResultCommandInterface<List<Transaction>> {
@Override
public List<Transaction> execute() {
final LinkedList<Transaction> transactions = new LinkedList<Transaction>();

for (final TransactionEntity transactionEntity : transactionRepository.findAll()) {
transactions.addLast(new Transaction(transactionEntity));
}

return transactions;
}

@Autowired
TransactionRepository transactionRepository;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package edu.uark.registerapp.commands.transactions;

import java.util.Optional;
import java.util.UUID;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import edu.uark.registerapp.commands.ResultCommandInterface;
import edu.uark.registerapp.commands.exceptions.NotFoundException;
import edu.uark.registerapp.commands.exceptions.UnprocessableEntityException;
import edu.uark.registerapp.models.api.Transaction; //Transaction capitalized by Jacob
import edu.uark.registerapp.models.entities.TransactionEntity;
import edu.uark.registerapp.models.repositories.TransactionRepository;

@Service
public class transactionUpdateCommand implements ResultCommandInterface<transaction> {
@Transactional
@Override
public transaction execute() {
this.validateProperties();

final Optional<transactionEntity> transactionEntity =
this.transactionRepository.findById(this.transactionId);
if (!transactionEntity.isPresent()) { // No record with the associated record ID exists in the database.
throw new NotFoundException("transaction");
}

// Synchronize any incoming changes for UPDATE to the database.
this.apitransaction = transactionEntity.get().synchronize(this.apitransaction);

// Write, via an UPDATE, any changes to the database.
this.transactionRepository.save(transactionEntity.get());

return this.apitransaction;
}

// Helper methods
private void validateProperties() {
if (StringUtils.isBlank(this.apitransaction.getLookupCode())) {
throw new UnprocessableEntityException("lookupcode");
}
}

// Properties
private UUID transactionId;
public UUID gettransactionId() {
return this.transactionId;
}
public transactionUpdateCommand settransactionId(final UUID transactionId) {
this.transactionId = transactionId;
return this;
}

private transaction apitransaction;
public transaction getApitransaction() {
return this.apitransaction;
}
public transactionUpdateCommand setApitransaction(final transaction apitransaction) {
this.apitransaction = apitransaction;
return this;
}

@Autowired
private TransactionRepository transactionRepository; //Transaction capitalized by Jacob
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ public class ProductUpdateCommand implements ResultCommandInterface<Product> {
public Product execute() {
this.validateProperties();

this.updateProductEntity();

final Optional<ProductEntity> productEntity =
this.productRepository.findById(this.productId);
if (!productEntity.isPresent()) { // No record with the associated record ID exists in the database.
Expand All @@ -44,6 +46,25 @@ private void validateProperties() {
}
}

//----------------------------------------------------------------------------
//Jacob Dedman
//Update product entity for database update
@Transactional
private void updateProductEntity() {
final Optional<ProductEntity> queriedProductEntity =
this.productRepository.findById(this.productId);

if (!queriedProductEntity.isPresent()) {
throw new NotFoundException("Product"); // No record with the associated record ID exists in the database.
}

this.apiProduct = queriedProductEntity.get()
.synchronize(this.apiProduct); // Synchronize any incoming changes for UPDATE to the database.

this.ProductRepository.save(queriedProductEntity.get()); // Write, via an UPDATE, any changes to the database.
}
//---------------------------------------------------------------------------------------------

// Properties
private UUID productId;
public UUID getProductId() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ public EmployeeSignIn setEmployeeId(final String employeeId) {
this.employeeId = employeeId;
return this;
}

public EmployeSignIn getEmployeeId(){
return this.employeeId;
}

private String password;
public String getPassword() {
Expand Down
33 changes: 32 additions & 1 deletion src/main/java/edu/uark/registerapp/models/api/Product.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@


package edu.uark.registerapp.models.api;

import java.time.LocalDateTime;
Expand Down Expand Up @@ -28,6 +30,21 @@ public Product setLookupCode(final String lookupCode) {
this.lookupCode = lookupCode;
return this;
}
//-----------------------------------------------------------------------
// This is what Floyd Brown added 11/22/20
// This is basically creating a get and set for the cost of what is being purchased
// It is based off of the other getters and setters in the file
private float cost;

public float getCost() {
return this.cost;
}

public Product setCost(final float cost) {
this.cost = cost;
return this;
}
//-----------------------------------------------------------------------

private int count;

Expand All @@ -40,6 +57,16 @@ public Product setCount(final int count) {
return this;
}

//-----------------------------------------------------------------------
// Jacob Dedman
// Function to change product count by num
public Product changeCount(final int num) {
this.count = this.count + num;
return this;
}
//-----------------------------------------------------------------------


private String createdOn;

public String getCreatedOn() {
Expand All @@ -60,7 +87,10 @@ public Product setCreatedOn(final LocalDateTime createdOn) {

public Product() {
super();

//----------------------------------------
this.cost = 0;
// The line above is letting our cost equal 0
//------------------------------------------
this.count = -1;
this.id = new UUID(0, 0);
this.lookupCode = StringUtils.EMPTY;
Expand All @@ -74,6 +104,7 @@ public Product(final ProductEntity productEntity) {
this.id = productEntity.getId();
this.count = productEntity.getCount();
this.lookupCode = productEntity.getLookupCode();
this.cost = productEntity.getCost();

this.setCreatedOn(productEntity.getCreatedOn());
}
Expand Down
80 changes: 80 additions & 0 deletions src/main/java/edu/uark/registerapp/models/api/Transaction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
//------------------------------------------------------------
//Jacob Dedman
//Created Transaction.java

package edu.uark.registerapp.models.api;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;
import java.util.ArrayList;

import org.apache.commons.lang3.StringUtils;

import edu.uark.registerapp.models.api.Product;
import edu.uark.registerapp.models.entities.ProductEntity;


//Jacob Dedman
//Created Transaction class so I can add functionality for updating database

public class Transaction extends ApiResponse {

//Jacob Dedman
//Cart class to hold items
private class Cart {
//Jacob Dedman
//Array of strings holds lookupcode of products
private ArrayList<String> products = new ArrayList<String>();
public void addProduct(Product prod) {
products.add(prod.getLookupCode());
}

public void remProduct(Product prod) {
for (int i = 0; i < products.size(); i++) {
if (products.get(i) == prod.getLookupCode()) {
products.remove(i);
i--;
}
}
}
}


//Jacob Dedman
//Properties

private Cart productCart;
public Transaction addToCart(Product prod) {
this.productCart.addProduct(prod);
return this;
}
public Transaction remFromCart(Product prod) {
this.productCart.remProduct(prod);
return this;
}

private String lookupCode;
public String getLookupCode() {
return this.lookupCode;
}

public Product setLookupCode(final String lookupCode) {
this.lookupCode = lookupCode;
return this;
}


public Transaction() {
super();
this.id = new UUID(0, 0);
this.lookupCode = StringUtils.EMPTY;
}

public Transaction(final TransactionEntity transactionEntity) {
super(false);

this.id = transactionEntity.getId();
this.lookupCode = transactionEntity.getLookupCode();
}
}
Loading