Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge to master #56

Closed
wants to merge 126 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
05f3c4b
added contractor end invoice creation view and agency end individual …
Caleb-Stripes Mar 26, 2020
84f72af
fixed file paths for the js and css
Caleb-Stripes Mar 26, 2020
b157592
add missing fields and recoded some css
Caleb-Stripes Mar 26, 2020
235cd24
updated agency view and fixed first delete button position
Caleb-Stripes Mar 26, 2020
611f279
created POJOs
youjeng Mar 26, 2020
64c5779
Merge pull request #17 from TEAM-ProJo/addClassGenericContractor_panama
Caleb-Stripes Mar 26, 2020
06c7063
added fields and getters and setters to POJOs
youjeng Mar 26, 2020
c0c9e0d
adding mappings
youjeng Mar 27, 2020
1d7f36d
added JPA Test for contractor payPalId
youjeng Mar 27, 2020
817f8d3
added inheritance strategy joined to customer and invoice
youjeng Mar 27, 2020
95588fb
refactored - removed commented out code
youjeng Mar 27, 2020
3d997c9
added test, should save and load business
youjeng Mar 27, 2020
2ce7837
got the funky functions right
Caleb-Stripes Mar 27, 2020
5feecbd
added test shouldGenerateAgencyId
youjeng Mar 28, 2020
616a700
refactored css statements to be more favorible for team
Caleb-Stripes Mar 28, 2020
6dda339
woops
Caleb-Stripes Mar 28, 2020
c768b67
general sweep of the code for cleanliness
Caleb-Stripes Mar 28, 2020
60c2d39
added tests to establish Agency to Contractor relationship
youjeng Mar 28, 2020
3242349
correcting merge
Caleb-Stripes Mar 28, 2020
4e7e8b5
Merge pull request #19 from TEAM-ProJo/invoice-views_rocky
Mar 28, 2020
61c6fb8
Merge pull request #21 from TEAM-ProJo/addJPAMappingsTest
Mar 28, 2020
7590471
test run
youjeng Mar 28, 2020
68a33e1
added test shouldSaveAndLoadInoiceDateOfService
youjeng Mar 28, 2020
333a598
prior to making new class for serviceItem
youjeng Mar 28, 2020
7cae828
added class ServiceItem with passing smoke test
youjeng Mar 28, 2020
4041fdc
set up relatioships and added getters and setters for ServiceItem
youjeng Mar 28, 2020
253c4a5
removed vistigule commented code
youjeng Mar 28, 2020
247f2d3
added test for shouldGenerateInvoiceId
youjeng Mar 28, 2020
15ca730
added test shouldGenerateServiceItemId
youjeng Mar 28, 2020
c8a9cc9
added test shouldSaveAndLoadServiceItemDateOfService
youjeng Mar 28, 2020
a7e1082
added test shouldEstablishInvoiceToServiceItemRelationship
youjeng Mar 28, 2020
09bbe07
added test shouldEstablishServiceItemToInvoiceRelationship
youjeng Mar 28, 2020
83d5e5a
added test shouldGenerateCustomerId
youjeng Mar 28, 2020
47f7948
added test shouldSaveAndLoadCustomerName
youjeng Mar 28, 2020
a012f33
added test shouldEstablishServiceItemToCustomerRelationship
youjeng Mar 28, 2020
b7b1c8d
added test shouldEstablishCustomerToServiceItemRelationship
youjeng Mar 28, 2020
2d3d072
added test shouldEstablishContractorToInvoiceImpRelationship
youjeng Mar 28, 2020
0d0b87e
Merge pull request #27 from TEAM-ProJo/moreJPAMappingTests
Caleb-Stripes Mar 28, 2020
95fb56a
Merge branch 'dev' of https://github.com/TEAM-ProJo/invoice-tracker i…
Caleb-Stripes Apr 1, 2020
8b7ed75
updating css and json
Caleb-Stripes Apr 1, 2020
dc4646b
added class name to the created divs on the invoice creation
Caleb-Stripes Apr 1, 2020
3763854
adjusted file path for css and js in create-invoice.html
youjeng Apr 1, 2020
35b2f90
created folders for css and js in static
youjeng Apr 1, 2020
f73b812
renamed html views
youjeng Apr 1, 2020
928620a
Added test shouldGetStatusOfOkWhenNavigatingToViewInvoice
youjeng Apr 1, 2020
b855a10
got the function to parse the input fields for values and print to th…
Caleb-Stripes Apr 1, 2020
f551384
closing in on the JSON file
Caleb-Stripes Apr 1, 2020
3be4356
got a JSON file... now what
Caleb-Stripes Apr 1, 2020
3f4033b
correct mispelling of repository on files
youjeng Apr 2, 2020
65c7d29
added populator
youjeng Apr 2, 2020
35e30c7
Merge pull request #30 from TEAM-ProJo/ContractorController2ndAttempt…
Caleb-Stripes Apr 2, 2020
5988046
prior to getting rid of abstract invoice
youjeng Apr 2, 2020
b0c4137
renamed InvoiceImp to Invoice, removed abstract Invoice Class
youjeng Apr 2, 2020
5fbbee5
refactored file structure
Caleb-Stripes Apr 3, 2020
ea98e66
Merge branch 'dev' of https://github.com/TEAM-ProJo/invoice-tracker i…
Caleb-Stripes Apr 3, 2020
27a3e29
merge
Caleb-Stripes Apr 3, 2020
6c68596
some path fixes
Caleb-Stripes Apr 3, 2020
5a4aa49
Merge pull request #31 from TEAM-ProJo/json-front-to-back_rocky
Apr 3, 2020
1b05a18
removed unnneccsaary abstract classes
youjeng Apr 3, 2020
7cc81e8
Merge branch 'dev' into ContractorController2ndAttempt_panama
Apr 3, 2020
7c753df
Merge pull request #33 from TEAM-ProJo/ContractorController2ndAttempt…
Caleb-Stripes Apr 3, 2020
c8f1af0
fix mapping to make testing functional for multiple machines
Caleb-Stripes Apr 3, 2020
45c033b
squashed the script src to json.js bug
Caleb-Stripes Apr 3, 2020
d545d42
fixed test shouldEstablishServiceItemToCustomerRelationship
youjeng Apr 3, 2020
b8deccc
I don't know....Merge branch 'ContractorController2ndAttempt_panama'…
youjeng Apr 3, 2020
a88f1b9
fixed test shouldEstablishServiceItemToCustomerRelationship
youjeng Apr 3, 2020
a97a5f6
changed contract to agency relationship from many to many, to one to …
youjeng Apr 3, 2020
04c864a
added test shouldSumServiceItemsAmountDue
youjeng Apr 3, 2020
97c41ae
updated search-invoice-list for controntractor
youjeng Apr 4, 2020
d4cfbd1
added significant amount of code
Caleb-Stripes Apr 4, 2020
bc53550
stuff is happening time to build a controller
Caleb-Stripes Apr 4, 2020
650f428
got the date to the repo
Caleb-Stripes Apr 4, 2020
2705114
got the json numbers to the repo
Caleb-Stripes Apr 4, 2020
29ea170
need to work on the function to parse JSON into repos
Caleb-Stripes Apr 4, 2020
1c1d2a2
Merge pull request #34 from TEAM-ProJo/json-post_rocky
KariNoir Apr 5, 2020
75782e3
commit
youjeng Apr 5, 2020
3f36cb2
dont push to dev
Caleb-Stripes Apr 5, 2020
259ce70
update to dev
youjeng Apr 5, 2020
5ea7e85
adjust
youjeng Apr 5, 2020
a4f3712
admin
youjeng Apr 5, 2020
fbd8a78
commit
youjeng Apr 5, 2020
f0d213e
fix dev
Caleb-Stripes Apr 5, 2020
ac0394f
Merge pull request #35 from TEAM-ProJo/fix-div_rocky
Apr 5, 2020
df61c31
updated to dev
youjeng Apr 5, 2020
2ff5516
Removing from the repo.
Dean110 Apr 5, 2020
88c1058
Merge pull request #36 from Dean110/gitFix
jhutch2000 Apr 5, 2020
b55b94d
getting back to best dev
youjeng Apr 5, 2020
be3ee0e
eerge branch 'dev' of https://github.com/TEAM-ProJo/invoice-tracker i…
youjeng Apr 5, 2020
25516d3
clean up bin
youjeng Apr 5, 2020
925a1f3
have basic table info displayed
youjeng Apr 7, 2020
3426752
working this css
youjeng Apr 7, 2020
fd1178c
adding css to view
youjeng Apr 7, 2020
e31d6a9
added formatting functions to invoice classs for currency and custome…
youjeng Apr 8, 2020
fef555a
added links to open individual invoice
youjeng Apr 8, 2020
ee3a601
working on invoice controller
youjeng Apr 8, 2020
172948e
changed getMapping to cascadeType Merge)
youjeng Apr 9, 2020
74edf0b
added iteration over serviceItems
youjeng Apr 9, 2020
e5e4db9
reworked relationships in contractor, invoice, serviceItem. Removed …
youjeng Apr 10, 2020
86928f9
All JPA test for relationships green again
youjeng Apr 10, 2020
05687b8
cleaned up populator
youjeng Apr 10, 2020
7c2d173
added tests shouldSumServiceItemsAmountDue and shouldRemoveServiceIte…
youjeng Apr 10, 2020
115bc21
added test shouldReturnThreeServiceItemCustomerNamesAsACommaSeparated…
youjeng Apr 10, 2020
71de13d
fixed test shouldClipNumberOfServiceItemCustomerNamesOver3()
youjeng Apr 10, 2020
e831075
added test to ContractorTest shouldAdd1TocurrentInvoiceNumber cleaned…
youjeng Apr 10, 2020
ac72453
added 3 invoices to populator
youjeng Apr 10, 2020
a9bb9f2
working on single invoice view page
youjeng Apr 10, 2020
103a1eb
got print working, finished css layout for single invoice view
youjeng Apr 11, 2020
26bc4ec
added test shouldFormatAmountDueAsCurrency, and now display service i…
youjeng Apr 11, 2020
d85a927
shouldReturnStringPaidIfInvoiceIsPaid test added
youjeng Apr 12, 2020
2865a6e
tested and built showPaymentStatus in INvoice
youjeng Apr 12, 2020
4811e5e
updated ContractorController Tests, all passing
youjeng Apr 12, 2020
26eb355
added mark paid functionailty
youjeng Apr 12, 2020
ff1aae3
added send button, and controller function for setting isSent
youjeng Apr 12, 2020
fbfeb76
added raw footer to search invoices page
youjeng Apr 12, 2020
14a3a24
Merge pull request #52 from TEAM-ProJo/ContractorController2ndAttempt…
Caleb-Stripes Apr 12, 2020
c5b2fc9
added sitewide nav to search-invoice-list
youjeng Apr 13, 2020
51d3603
added site wide footer to search invoice list
youjeng Apr 13, 2020
66f9520
added login view, and mockMvcTest for login
youjeng Apr 13, 2020
b7de2df
updated login page
youjeng Apr 13, 2020
6ccba34
added nav and footer to view-invoice page
youjeng Apr 13, 2020
117858a
inegrated profile page
youjeng Apr 14, 2020
94e318c
updated profile css
youjeng Apr 14, 2020
7ea1b48
Merge pull request #54 from TEAM-ProJo/PayAndSendButtons_panama
Apr 14, 2020
be0da24
fixed nav active
youjeng Apr 14, 2020
6ab80d1
Merge branch 'dev' into PayAndSendButtons_panama
youjeng Apr 14, 2020
dab3c1c
Merge pull request #55 from TEAM-ProJo/PayAndSendButtons_panama
Apr 14, 2020
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
Binary file added .DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**
!**/src/test/**
bin/

### STS ###
.apt_generated
Expand Down
1 change: 0 additions & 1 deletion bin/main/application.properties

This file was deleted.

Binary file not shown.
Binary file removed bin/main/com/invoicetracker/models/User.class
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-rest'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.data:spring-data-rest-hal-browser'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
Expand Down
Binary file added build.zip
Binary file not shown.
Binary file added java-json.jar
Binary file not shown.
185 changes: 185 additions & 0 deletions src/main/java/com/invoicetracker/Populator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
package com.invoicetracker;

import java.time.LocalDate;
import javax.annotation.Resource;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import com.invoicetracker.models.Contractor;
import com.invoicetracker.models.Invoice;
import com.invoicetracker.models.ServiceItem;
import com.invoicetracker.repositories.ContractorRepository;
import com.invoicetracker.repositories.InvoiceRepository;
import com.invoicetracker.repositories.ServiceItemRepository;

@Component
public class Populator implements CommandLineRunner {

@Resource
ServiceItemRepository serviceItemRepo;

@Resource
InvoiceRepository invoiceRepo;

@Resource
ContractorRepository contractorRepo;

@Override
public void run(String... args) throws Exception {

/*
* Contractor_A has 5 invoices called invoice_A1...A5 each invoice has 1 to 4
* service items
*/
Contractor contractor_A = new Contractor();
contractor_A.setEmail("[email protected]");
contractor_A.setAddressLineOne("Center St");
contractor_A.setAddressLineTwo("Suite A");
contractor_A.setCity("Cityville");
contractor_A.setState("Alabama");
contractor_A.setZip("90210");
contractor_A.setCountry("USA");
contractor_A.setPhoneNumber("(555) 555-5555");
contractor_A.setFirstName("Andy");
contractor_A.setLastName("Amoray");
contractor_A.setPayPalId("AndyAmorayPayPal");
contractorRepo.save(contractor_A);

/********* Next invoice and service items *************/
{
Invoice invoice_A1 = new Invoice(contractor_A);
LocalDate dateInvoice_A1 = LocalDate.of(2020, 03, 28);
invoice_A1.setDateOfInvoice(dateInvoice_A1);
invoice_A1.setInvoiceNote("Students did a great job applying themselves durring both sessions, I am very impressed with the progress!");
invoice_A1.setIsPaid(false);
invoiceRepo.save(invoice_A1);
contractorRepo.save(contractor_A);

ServiceItem serviceItem_A1 = new ServiceItem(invoice_A1);
LocalDate dateServiceItem_A1 = LocalDate.of(2020, 03, 11);
serviceItem_A1.setDateOfService(dateServiceItem_A1);
serviceItem_A1.setAmountDue(100);
serviceItem_A1.setServiceDescription("Tutored Alley");
serviceItemRepo.save(serviceItem_A1);

ServiceItem serviceItem_A2 = new ServiceItem(invoice_A1);
LocalDate dateServiceItem_A2 = LocalDate.of(2020, 02, 01);
serviceItem_A2.setDateOfService(dateServiceItem_A2);
serviceItem_A2.setAmountDue(150);
serviceItem_A2.setServiceDescription("Tutored Allen");
serviceItemRepo.save(serviceItem_A2);
}
/********* Next invoice and service items *************/
{
Invoice invoice_A2 = new Invoice(contractor_A);
LocalDate dateInvoice_A2 = LocalDate.of(2020, 03, 11);
invoice_A2.setDateOfInvoice(dateInvoice_A2);
invoice_A2.setInvoiceNote("Students did a great job applying themselves durring both sessions, I am very impressed with the progress!");
invoice_A2.setIsPaid(false);
invoiceRepo.save(invoice_A2);

ServiceItem serviceItem_A3 = new ServiceItem(invoice_A2);
LocalDate dateServiceItem_A3 = LocalDate.of(2020, 02, 12);
serviceItem_A3.setDateOfService(dateServiceItem_A3);
serviceItem_A3.setAmountDue(200);
serviceItem_A3.setServiceDescription("Tutored Billy");
serviceItemRepo.save(serviceItem_A3);

ServiceItem serviceItem_A4 = new ServiceItem(invoice_A2);
LocalDate dateServiceItem_A4 = LocalDate.of(2020, 02, 02);
serviceItem_A4.setDateOfService(dateServiceItem_A4);
serviceItem_A4.setAmountDue(250);
serviceItem_A4.setServiceDescription("Tutored Bobo");
serviceItemRepo.save(serviceItem_A4);

ServiceItem serviceItem_A5 = new ServiceItem(invoice_A2);
LocalDate dateServiceItem_A5 = LocalDate.of(2020, 02, 01);
serviceItem_A5.setDateOfService(dateServiceItem_A5);
serviceItem_A5.setAmountDue(350);
serviceItem_A5.setServiceDescription("Tutored Bathsheba");
serviceItemRepo.save(serviceItem_A5);
}
/********* Next invoice and service items *************/
{
Invoice invoice_A3 = new Invoice(contractor_A);
LocalDate dateInvoice_A3 = LocalDate.of(2020, 03, 11);
invoice_A3.setDateOfInvoice(dateInvoice_A3);
invoice_A3.setInvoiceNote("Contractor A's Third Invoice");
invoice_A3.setIsPaid(false);
invoiceRepo.save(invoice_A3);

ServiceItem serviceItem_A6 = new ServiceItem(invoice_A3);
LocalDate dateServiceItem_A6 = LocalDate.of(2020, 02, 12);
serviceItem_A6.setDateOfService(dateServiceItem_A6);
serviceItem_A6.setAmountDue(200);
serviceItem_A6.setServiceDescription("Tutored Chanel");
serviceItemRepo.save(serviceItem_A6);

ServiceItem serviceItem_A7 = new ServiceItem(invoice_A3);
LocalDate dateServiceItem_A7 = LocalDate.of(2020, 02, 02);
serviceItem_A7.setDateOfService(dateServiceItem_A7);
serviceItem_A7.setAmountDue(250);
serviceItem_A7.setServiceDescription("Tutored Chira");
serviceItemRepo.save(serviceItem_A7);

ServiceItem serviceItem_A8 = new ServiceItem(invoice_A3);
LocalDate dateServiceItem_A8 = LocalDate.of(2020, 02, 01);
serviceItem_A8.setDateOfService(dateServiceItem_A8);
serviceItem_A8.setAmountDue(350);
serviceItem_A8.setServiceDescription("Tutored Carton'O");
serviceItemRepo.save(serviceItem_A8);
}
/********* Next invoice and service items *************/
{
Invoice invoice_A4 = new Invoice(contractor_A);
LocalDate dateInvoice_A4 = LocalDate.of(2020, 03, 11);
invoice_A4.setDateOfInvoice(dateInvoice_A4);
invoice_A4.setInvoiceNote("Contractor A's Fourth Invoice");
invoice_A4.setIsPaid(false);
invoiceRepo.save(invoice_A4);

ServiceItem serviceItem_A9 = new ServiceItem(invoice_A4);
LocalDate dateServiceItem_A9 = LocalDate.of(2020, 02, 12);
serviceItem_A9.setDateOfService(dateServiceItem_A9);
serviceItem_A9.setAmountDue(200);
serviceItem_A9.setServiceDescription("Tutored David");
serviceItemRepo.save(serviceItem_A9);

ServiceItem serviceItem_A10 = new ServiceItem(invoice_A4);
LocalDate dateServiceItem_A10 = LocalDate.of(2020, 02, 02);
serviceItem_A10.setDateOfService(dateServiceItem_A10);
serviceItem_A10.setAmountDue(250);
serviceItem_A10.setServiceDescription("Tutored Donna");
serviceItemRepo.save(serviceItem_A10);

ServiceItem serviceItem_A11 = new ServiceItem(invoice_A4);
LocalDate dateServiceItem_A11 = LocalDate.of(2020, 02, 01);
serviceItem_A11.setDateOfService(dateServiceItem_A11);
serviceItem_A11.setAmountDue(350);
serviceItem_A11.setServiceDescription("Tutored Dauphny");
serviceItemRepo.save(serviceItem_A11);

ServiceItem serviceItem_A12 = new ServiceItem(invoice_A4);
LocalDate dateServiceItem_A12 = LocalDate.of(2020, 02, 01);
serviceItem_A12.setDateOfService(dateServiceItem_A12);
serviceItem_A12.setAmountDue(350);
serviceItem_A12.setServiceDescription("Tutored Le'Don");
serviceItemRepo.save(serviceItem_A12);
}
/********* Next invoice and service items *************/
{
Invoice invoice_A5 = new Invoice(contractor_A);
LocalDate dateInvoice_A5 = LocalDate.of(2020, 01, 11);
invoice_A5.setDateOfInvoice(dateInvoice_A5);
invoice_A5.setInvoiceNote("Contractor A's Fith Invoice");
invoice_A5.setIsPaid(false);
invoiceRepo.save(invoice_A5);

ServiceItem serviceItem_A13 = new ServiceItem(invoice_A5);
LocalDate dateServiceItem_A13 = LocalDate.of(2020, 02, 12);
serviceItem_A13.setDateOfService(dateServiceItem_A13);
serviceItem_A13.setAmountDue(200);
serviceItem_A13.setServiceDescription("Tutored Erin");
serviceItemRepo.save(serviceItem_A13);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package com.invoicetracker.controllers;

import java.util.Collection;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.invoicetracker.models.Contractor;
import com.invoicetracker.models.Invoice;
import com.invoicetracker.repositories.ContractorRepository;
import com.invoicetracker.repositories.InvoiceRepository;

@RequestMapping("/contractor")
@Controller
public class ContractorController {

@Resource
private ContractorRepository contractorRepo;

@Resource
private InvoiceRepository invoiceRepo;

@GetMapping("/create-new-invoice/{contractorId}")
private String createInvoice(@PathVariable(value = "contractorId") long contractorId, Model model) {
Contractor contractor = contractorRepo.findById(contractorId).get();
model.addAttribute("contractor", contractor);
return "create-invoice";
}

@GetMapping("/update-profile/{contractorId}")
private String updateProfile(@PathVariable(value = "contractorId") long contractorId, Model model) {
Contractor contractor = contractorRepo.findById(contractorId).get();
model.addAttribute("contractor", contractor);
return "profile";
}


@GetMapping("/view-existing-invoice/{contractorId}/{invoiceId}")
private String viewInvoice(@PathVariable(value = "contractorId") long contractorId,
@PathVariable(value = "invoiceId") long invoiceId, Model model) {

Contractor contractor = contractorRepo.findById(contractorId).get();
Invoice invoice = invoiceRepo.findById(invoiceId).get();

model.addAttribute("contractor", contractor);
model.addAttribute("invoice", invoice);

return "view-invoice";
}

@GetMapping("/search-invoice-list/{contractorId}")
private String viewInvoiceList(@PathVariable(value = "contractorId") long contractorId, Model model) {

Contractor contractor = contractorRepo.findById(contractorId).get();
Collection<Invoice> invoices = contractor.getInvoices();
model.addAttribute("invoices", invoices);
model.addAttribute("contractor", contractor);

return "search-invoice-list";
}

/*
* TODO Needs Code Review:
* I do not think a @PutMapping is right, but it is working.
*/
@PutMapping("/mark-invoice-paid/{invoiceId}")
private void markInvoicePaid(@PathVariable(value = "invoiceId") long invoiceId){

Invoice invoiceToMarkPaid = invoiceRepo.findById(invoiceId).get();
invoiceToMarkPaid.setIsPaid(true);
invoiceRepo.save(invoiceToMarkPaid);
}

/*
* TODO Needs Code Review:
* I do not think a @PutMapping is right, but it is working.
*/
@PutMapping("/mark-invoice-sent/{invoiceId}")
private void markInvoiceSent(@PathVariable(value = "invoiceId") long invoiceId){

Invoice invoiceToSend = invoiceRepo.findById(invoiceId).get();
invoiceToSend.setIsSent(true);
invoiceRepo.save(invoiceToSend);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.invoicetracker.controllers;

import java.time.LocalDate;

import javax.annotation.Resource;

import org.json.JSONArray;
import org.json.JSONException;
//the jar file for this import is on the desktop
// source of file is found https://stackoverflow.com/questions/8997598/importing-json-into-an-eclipse-project
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.invoicetracker.models.Invoice;
import com.invoicetracker.models.ServiceItem;
import com.invoicetracker.repositories.ContractorRepository;
import com.invoicetracker.repositories.InvoiceRepository;
import com.invoicetracker.repositories.ServiceItemRepository;

@CrossOrigin
@Controller
public class InvoiceController {

@Resource
private InvoiceRepository invoiceRepo;

@Resource
private ServiceItemRepository serviceItemRepo;

@Resource
private ContractorRepository contractorItemRepo;

@RequestMapping("submit-invoice")
private void createNewInvoice(@RequestBody String body) throws JSONException {

/* Create the invoice */
JSONObject newInvoice = new JSONObject(body);

String dateOfInvoice = newInvoice.getJSONObject("invoiceNumbersJson").getString("invoiceDate");
LocalDate localDate = LocalDate.parse(dateOfInvoice);
Invoice invoice = new Invoice(localDate);

int invoiceNumber = newInvoice.getJSONObject("invoiceNumbersJson").getInt("invoiceNumber");
invoice.setInvoiceNumber(invoiceNumber);
invoiceRepo.save(invoice);

/* Add Service Items */
JSONArray serviceItemsArray = newInvoice.getJSONArray("invoiceArray");

for(int i = 0; i < serviceItemsArray.length(); i++) {

JSONObject aServiceItem = (JSONObject) serviceItemsArray.get(2);
String serviceDate = aServiceItem.getString("serviceDate");
LocalDate localServiceDate = LocalDate.parse(serviceDate);
ServiceItem newServiceItem = new ServiceItem(localServiceDate, invoice);
serviceItemRepo.save(newServiceItem);
}

contractorItemRepo.findById(27L).get().addInvoice(invoice);

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.invoicetracker.controllers;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import com.invoicetracker.models.Invoice;
import com.invoicetracker.repositories.InvoiceRepository;

@RestController
public class InvoiceRestController {

@Resource
private InvoiceRepository invoiceRepo;

@GetMapping("/api/invoice/{id}")
public Invoice retrieveInvoice(@PathVariable Long id) {
return invoiceRepo.findById(id).get();
}
}
Loading