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

Chat test #196

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
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
1,289 changes: 356 additions & 933 deletions logs/logfile.txt

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,13 @@ public ResponseEntity<?> removeInvoice(@PathVariable Long id) {
return ResponseEntity.ok("Invoice successfully removed");
}

@RequestMapping(value = "api/invoice/{id}", method = RequestMethod.PUT)
public ResponseEntity<?> updateInvoice(@PathVariable("id") Long id,
@RequestBody InvoiceRequest invoiceRequest){
Optional<Invoice> invoice=
this.invoiceService.updateInvoice(id,invoiceRequest);
return ResponseEntity.of(invoice);

}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.ogoma.vue_starter.vue_starter.boundaries.accounting.entities;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ogoma.vue_starter.vue_starter.boundaries.project_management.entities.Client;
import com.ogoma.vue_starter.vue_starter.boundaries.project_management.entities.Project;
import org.hibernate.annotations.CreationTimestamp;
Expand All @@ -16,6 +18,7 @@ public class Invoice {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Date invoiceDate;
@JsonProperty("expiryDate")
private Date dueDate;
@ManyToOne
private Client client;
Expand All @@ -27,7 +30,8 @@ public class Invoice {
private BigDecimal grandTotal;
@OneToMany(cascade = CascadeType.PERSIST,
mappedBy = InvoiceItem_.INVOICE)
private List<InvoiceItem> items = new ArrayList<InvoiceItem>();
@JsonIgnoreProperties(InvoiceItem_.INVOICE)
private List<InvoiceItem> items;//= new ArrayList<>();
@Temporal(TemporalType.TIMESTAMP)
@UpdateTimestamp
private Date updatedAt;
Expand Down Expand Up @@ -108,6 +112,9 @@ public List<InvoiceItem> getItems() {
}

public void setItems(List<InvoiceItem> items) {
if (items != null) {
items.forEach(i -> i.setInvoice(this));
}
this.items = items;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class InvoiceItem {
@Min(value = 0)
@JsonProperty(value = "qty")
private Integer quantity;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
private Invoice invoice;

public Long getId() {
Expand Down Expand Up @@ -61,4 +61,12 @@ public Integer getQuantity() {
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}

public Invoice getInvoice() {
return invoice;
}

public void setInvoice(Invoice invoice) {
this.invoice = invoice;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,13 @@
import com.ogoma.vue_starter.vue_starter.boundaries.accounting.entities.Invoice;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface InvoiceRepository extends JpaRepository<Invoice,Long>, JpaSpecificationExecutor<Invoice> {
@Query(value = "select inv from Invoice inv left join fetch inv.items left join fetch inv.client where inv.id=:id")
Optional<Invoice> getInvoiceById(Long id);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.ogoma.vue_starter.vue_starter.boundaries.accounting.models.InvoicePagedDataRequest;
import com.ogoma.vue_starter.vue_starter.boundaries.accounting.repositories.InvoiceRepository;
import com.ogoma.vue_starter.vue_starter.boundaries.accounting.requests.InvoiceRequest;
import com.ogoma.vue_starter.vue_starter.boundaries.project_management.entities.Client;
import com.ogoma.vue_starter.vue_starter.boundaries.project_management.repositories.ClientsRepository;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;

Expand All @@ -12,9 +14,11 @@
@Service
public class InvoiceService {
private final InvoiceRepository invoiceRepository;
private final ClientsRepository clientsRepository;

public InvoiceService(InvoiceRepository invoiceRepository) {
public InvoiceService(InvoiceRepository invoiceRepository, ClientsRepository clientsRepository) {
this.invoiceRepository = invoiceRepository;
this.clientsRepository = clientsRepository;
}

public Page<Invoice> getInvoices(InvoicePagedDataRequest invoicePagedDataRequest) {
Expand All @@ -24,7 +28,7 @@ public Page<Invoice> getInvoices(InvoicePagedDataRequest invoicePagedDataRequest
}

public Optional<Invoice> getInvoiceById(Long id) {
Optional<Invoice> invoice = this.invoiceRepository.findById(id);
Optional<Invoice> invoice = this.invoiceRepository.getInvoiceById(id);
return invoice;
}

Expand All @@ -33,12 +37,29 @@ public void removeInvoice(Long id) {
}

public Invoice createInvoice(InvoiceRequest invoiceRequest) {
Client client= this.clientsRepository.getOne(invoiceRequest.getClientId());
Invoice invoice = new Invoice();
invoice.setInvoiceDate(invoiceRequest.getInvoiceDate());
invoice.setDueDate(invoiceRequest.getExpiryDate());
invoice.setOtherInformation(invoiceRequest.getOtherInformation());
invoice.setItems(invoiceRequest.getItems());
invoice.setClient(client);
this.invoiceRepository.save(invoice);
return invoice;
}
public Optional<Invoice> updateInvoice(Long id, InvoiceRequest invoiceRequest) {
Optional<Invoice> invoice=
this.invoiceRepository.findById(id);

invoice.ifPresent(inv->{
Client client= this.clientsRepository.getOne(invoiceRequest.getClientId());
inv.setInvoiceDate(invoiceRequest.getInvoiceDate());
inv.setDueDate(invoiceRequest.getExpiryDate());
inv.setOtherInformation(invoiceRequest.getOtherInformation());
inv.setItems(invoiceRequest.getItems());
inv.setClient(client);
invoiceRepository.save(inv);
});
return invoice;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.ogoma.vue_starter.vue_starter.boundaries.training;

import com.ogoma.vue_starter.vue_starter.boundaries.training.entities.Trainer;
import com.ogoma.vue_starter.vue_starter.boundaries.training.requests.TrainerRequest;
import com.ogoma.vue_starter.vue_starter.boundaries.training.services.TrainerService;
import com.ogoma.vue_starter.vue_starter.models.requests.PagedDataRequest;
import org.springframework.data.domain.Page;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
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.RequestMethod;

import javax.validation.Valid;
import java.util.Optional;

@Controller
public class TrainersController {
private final TrainerService trainerService;

public TrainersController(TrainerService trainerService) {
this.trainerService = trainerService;
}

@RequestMapping(value = "api/trainers", method = RequestMethod.POST)
public ResponseEntity<?> createTrainer(@RequestBody @Valid TrainerRequest trainer) {
this.trainerService.createTrainer(trainer);
return ResponseEntity.ok(trainer);
}

@RequestMapping(value = "api/trainers", method = RequestMethod.GET)
public ResponseEntity<?> getAllTrainers(PagedDataRequest pagedDataRequest) {
Page<Trainer> trainers = this.trainerService.getTrainers(pagedDataRequest);
return ResponseEntity.ok(trainers);
}

@RequestMapping(value = "api/trainers/{id}", method = RequestMethod.GET)
public ResponseEntity<?> getTrainer(@PathVariable("id") Long id) {
Optional<Trainer> trainer = this.trainerService.getTrainer(id);
return ResponseEntity.of(trainer);
}
@RequestMapping(value = "api/trainers/{id}", method = RequestMethod.PUT)
public ResponseEntity<?> updateTrainer(@PathVariable Long id,
@RequestBody @Valid TrainerRequest trainerRequest){
Optional<Trainer> trainer=
this.trainerService.updateTrainer(id,trainerRequest);
return ResponseEntity.of(trainer);
}


@RequestMapping(value = "api/trainers/{id}",method = RequestMethod.DELETE)
public ResponseEntity<?> removeTrainer(@PathVariable Long id){
this.trainerService.removeTrainer(id);
return ResponseEntity.ok("Trainer successfully removed");
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package com.ogoma.vue_starter.vue_starter.boundaries.training.entities;

import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;

import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.util.Date;

@Entity
@Table(name = "trainers")
public class Trainer {
public enum Status{
Active, Inactive,
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
private String firstName;
@NotBlank
private String lastName;
@NotBlank
private String email;
@NotBlank
private String description;
private String role;
private Status status;
@Temporal(TemporalType.TIMESTAMP)
@CreationTimestamp
private Date createdAt;
@Temporal(TemporalType.TIMESTAMP)
@UpdateTimestamp
private Date updatedAt;


public Long getId() {
return id;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public String getRole() {
return role;
}

public void setRole(String role) {
this.role = role;
}

public Status getStatus() {
return status;
}

public void setStatus(Status status) {
this.status = status;
}

public Date getCreatedAt() {
return createdAt;
}

public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
}
Loading