Skip to content
Snippets Groups Projects
Commit b927bbe3 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

handle deletion of categories that are used by some payments; formatted dates in datePicker

parent 5722f108
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ package de.deadlocker8.budgetmaster.controller; ...@@ -3,6 +3,7 @@ package de.deadlocker8.budgetmaster.controller;
import de.deadlocker8.budgetmaster.entities.Category; import de.deadlocker8.budgetmaster.entities.Category;
import de.deadlocker8.budgetmaster.entities.CategoryType; import de.deadlocker8.budgetmaster.entities.CategoryType;
import de.deadlocker8.budgetmaster.repositories.CategoryRepository; import de.deadlocker8.budgetmaster.repositories.CategoryRepository;
import de.deadlocker8.budgetmaster.services.CategoryService;
import de.deadlocker8.budgetmaster.services.HelpersService; import de.deadlocker8.budgetmaster.services.HelpersService;
import de.deadlocker8.budgetmaster.utils.Colors; import de.deadlocker8.budgetmaster.utils.Colors;
import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException; import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException;
...@@ -24,6 +25,9 @@ public class CategoryController extends BaseController ...@@ -24,6 +25,9 @@ public class CategoryController extends BaseController
@Autowired @Autowired
private CategoryRepository categoryRepository; private CategoryRepository categoryRepository;
@Autowired
private CategoryService categoryService;
@Autowired @Autowired
private HelpersService helpers; private HelpersService helpers;
...@@ -52,7 +56,7 @@ public class CategoryController extends BaseController ...@@ -52,7 +56,7 @@ public class CategoryController extends BaseController
{ {
if(isDeletable(ID)) if(isDeletable(ID))
{ {
categoryRepository.delete(ID); categoryService.deleteCategory(ID);
} }
return "redirect:/categories"; return "redirect:/categories";
......
...@@ -46,8 +46,7 @@ public class PaymentController extends BaseController ...@@ -46,8 +46,7 @@ public class PaymentController extends BaseController
date = DateTime.parse(cookieDate, DateTimeFormat.forPattern("dd.MM.yy").withLocale(getSettings().getLanguage().getLocale())); date = DateTime.parse(cookieDate, DateTimeFormat.forPattern("dd.MM.yy").withLocale(getSettings().getLanguage().getLocale()));
} }
model.addAttribute("currentDate", helpers.getDateString(date)); model.addAttribute("currentDate", date);
model.addAttribute("currentDateFormatted", helpers.getDateStringWithMonthAndYear(date));
model.addAttribute("payments", getPaymentsForMonthAndYear(date.getMonthOfYear(), date.getYear())); model.addAttribute("payments", getPaymentsForMonthAndYear(date.getMonthOfYear(), date.getYear()));
return "payments/payments"; return "payments/payments";
} }
...@@ -75,7 +74,7 @@ public class PaymentController extends BaseController ...@@ -75,7 +74,7 @@ public class PaymentController extends BaseController
} }
@RequestMapping("/payments/{ID}/requestDelete") @RequestMapping("/payments/{ID}/requestDelete")
public String requestDeletePayment(Model model, @PathVariable("ID") Integer ID) public String requestDeletePayment(Model model, @PathVariable("ID") Integer ID, @CookieValue("currentDate") String cookieDate)
{ {
if(!isDeletable(ID)) if(!isDeletable(ID))
{ {
...@@ -83,17 +82,16 @@ public class PaymentController extends BaseController ...@@ -83,17 +82,16 @@ public class PaymentController extends BaseController
} }
DateTime date; DateTime date;
if(model.containsAttribute("date")) if(cookieDate == null)
{ {
date = (DateTime)model.asMap().get("date"); date = DateTime.now();
} }
else else
{ {
date = DateTime.now(); date = DateTime.parse(cookieDate, DateTimeFormat.forPattern("dd.MM.yy").withLocale(getSettings().getLanguage().getLocale()));
} }
model.addAttribute("currentDate", helpers.getDateString(date)); model.addAttribute("currentDate", date);
model.addAttribute("currentDateFormatted", helpers.getDateStringWithMonthAndYear(date));
model.addAttribute("payments", getPaymentsForMonthAndYear(date.getMonthOfYear(), date.getYear())); model.addAttribute("payments", getPaymentsForMonthAndYear(date.getMonthOfYear(), date.getYear()));
model.addAttribute("currentPayment", paymentRepository.getOne(ID)); model.addAttribute("currentPayment", paymentRepository.getOne(ID));
return "payments/payments"; return "payments/payments";
......
...@@ -3,12 +3,10 @@ package de.deadlocker8.budgetmaster.entities; ...@@ -3,12 +3,10 @@ package de.deadlocker8.budgetmaster.entities;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import tools.ConvertTo; import tools.ConvertTo;
import javax.persistence.Entity; import javax.persistence.*;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import java.util.List;
@Entity @Entity
public class Category public class Category
...@@ -16,12 +14,16 @@ public class Category ...@@ -16,12 +14,16 @@ public class Category
@Id @Id
@GeneratedValue(strategy = GenerationType.AUTO) @GeneratedValue(strategy = GenerationType.AUTO)
private Integer ID; private Integer ID;
@NotNull @NotNull
@Size(min = 1) @Size(min = 1)
private String name; private String name;
private String color; private String color;
private CategoryType type; private CategoryType type;
@OneToMany(mappedBy = "category", fetch = FetchType.LAZY)
private List<Payment> referringPayments;
public Category(String name, String color, CategoryType type) public Category(String name, String color, CategoryType type)
{ {
this.name = name; this.name = name;
...@@ -73,6 +75,16 @@ public class Category ...@@ -73,6 +75,16 @@ public class Category
this.type = type; this.type = type;
} }
public List<Payment> getReferringPayments()
{
return referringPayments;
}
public void setReferringPayments(List<Payment> referringPayments)
{
this.referringPayments = referringPayments;
}
public String getAppropriateTextColor() public String getAppropriateTextColor()
{ {
return ConvertTo.toRGBHexWithoutOpacity(ConvertTo.getAppropriateTextColor(Color.web(color))); return ConvertTo.toRGBHexWithoutOpacity(ConvertTo.getAppropriateTextColor(Color.web(color)));
......
...@@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.services; ...@@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.services;
import de.deadlocker8.budgetmaster.entities.Category; import de.deadlocker8.budgetmaster.entities.Category;
import de.deadlocker8.budgetmaster.entities.CategoryType; import de.deadlocker8.budgetmaster.entities.CategoryType;
import de.deadlocker8.budgetmaster.entities.Payment;
import de.deadlocker8.budgetmaster.repositories.CategoryRepository; import de.deadlocker8.budgetmaster.repositories.CategoryRepository;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -12,10 +13,13 @@ import org.springframework.stereotype.Service; ...@@ -12,10 +13,13 @@ import org.springframework.stereotype.Service;
public class CategoryService public class CategoryService
{ {
private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
private CategoryRepository categoryRepository;
@Autowired @Autowired
public CategoryService(CategoryRepository categoryRepository) public CategoryService(CategoryRepository categoryRepository)
{ {
this.categoryRepository = categoryRepository;
if(categoryRepository.findByType(CategoryType.NONE) == null) if(categoryRepository.findByType(CategoryType.NONE) == null)
{ {
categoryRepository.save(new Category("Keine Kategorie", "#FFFFFF", CategoryType.NONE)); categoryRepository.save(new Category("Keine Kategorie", "#FFFFFF", CategoryType.NONE));
...@@ -28,4 +32,15 @@ public class CategoryService ...@@ -28,4 +32,15 @@ public class CategoryService
LOGGER.debug("Created default category REST"); LOGGER.debug("Created default category REST");
} }
} }
public void deleteCategory(int ID)
{
Category categoryToDelete = categoryRepository.findOne(ID);
for(Payment payment : categoryToDelete.getReferringPayments())
{
payment.setCategory(categoryRepository.findByType(CategoryType.NONE));
}
categoryRepository.delete(ID);
}
} }
<#macro datePicker fullDate formatteDate> <#macro datePicker fullDate>
<div class="container"> <div class="container">
<div class="section center-align"> <div class="section center-align">
<a href="/previousMonth" class="waves-effect grey-text text-darken-4"><i class="material-icons icon-chevron">chevron_left</i></a> <a href="/previousMonth" class="waves-effect grey-text text-darken-4"><i class="material-icons icon-chevron">chevron_left</i></a>
<a id="datePicker" class="waves-effect grey-text text-darken-4 headline-date">${formatteDate}</a> <a id="datePicker" class="waves-effect grey-text text-darken-4 headline-date">${helpers.getDateStringWithMonthAndYear(fullDate)}</a>
<a href="/nextMonth" class="waves-effect grey-text text-darken-4"><i class="material-icons icon-chevron">chevron_right</i></a> <a href="/nextMonth" class="waves-effect grey-text text-darken-4"><i class="material-icons icon-chevron">chevron_right</i></a>
</div> </div>
</div> </div>
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<main> <main>
<div class="card main-card"> <div class="card main-card">
<#import "../datePicker.ftl" as datePicker> <#import "../datePicker.ftl" as datePicker>
<@datePicker.datePicker currentDate currentDateFormatted/> <@datePicker.datePicker currentDate/>
<div class="hide-on-small-only"><br></div> <div class="hide-on-small-only"><br></div>
<div class="container"> <div class="container">
<div class="center-align"><a href="/payments/newPayment" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">add</i>${locale.getString("title.payment.new")}</a></div> <div class="center-align"><a href="/payments/newPayment" class="waves-effect waves-light btn budgetmaster-blue"><i class="material-icons left">add</i>${locale.getString("title.payment.new")}</a></div>
...@@ -73,6 +73,6 @@ ...@@ -73,6 +73,6 @@
<script src="/js/main.js"></script> <script src="/js/main.js"></script>
<script src="/js/payments.js"></script> <script src="/js/payments.js"></script>
<script src="/js/datePicker.js"></script> <script src="/js/datePicker.js"></script>
<script>document.cookie = "currentDate=${currentDate}";</script> <script>document.cookie = "currentDate=${helpers.getDateString(currentDate)}";</script>
</body> </body>
</html> </html>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment