show free beds, see #2
This commit is contained in:
parent
5a365b1a37
commit
8f69320505
@ -8,7 +8,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = 'de.jottyfan.camporganizer'
|
||||
version = '0.6.8'
|
||||
version = '0.6.9'
|
||||
|
||||
description = """CampOrganizer2"""
|
||||
|
||||
@ -42,7 +42,7 @@ war {
|
||||
|
||||
dependencies {
|
||||
implementation 'org.jooq:jooq:3.19.1'
|
||||
implementation 'de.jottyfan:COJooq:2023.12.1'
|
||||
implementation 'de.jottyfan:COJooq:2024.02.23'
|
||||
|
||||
implementation 'org.apache.logging.log4j:log4j-api:2.22.0'
|
||||
implementation 'org.apache.logging.log4j:log4j-core:2.22.0'
|
||||
|
@ -13,12 +13,10 @@ import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.jooq.Condition;
|
||||
@ -27,7 +25,7 @@ import org.jooq.DeleteConditionStep;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.InsertResultStep;
|
||||
import org.jooq.InsertReturningStep;
|
||||
import org.jooq.InsertValuesStep11;
|
||||
import org.jooq.InsertValuesStep15;
|
||||
import org.jooq.InsertValuesStep3;
|
||||
import org.jooq.Record4;
|
||||
import org.jooq.Record5;
|
||||
@ -61,6 +59,7 @@ import de.jottyfan.camporganizer.module.admin.model.LocationBean;
|
||||
import de.jottyfan.camporganizer.module.admin.model.PrivilegesContainerBean;
|
||||
import de.jottyfan.camporganizer.module.admin.model.ProfileBean;
|
||||
import de.jottyfan.camporganizer.module.camplist.model.LambdaResultWrapper;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -439,7 +438,7 @@ public class AdminRepository {
|
||||
LocalDateTime arrive = arriveDate == null ? null : arriveDate.atStartOfDay();
|
||||
LocalDateTime depart = departDate == null ? null : departDate.atStartOfDay();
|
||||
if (bean.getPk() == null) {
|
||||
InsertValuesStep11<TCampRecord, LocalDateTime, String, LocalDateTime, Integer, Integer, Integer, Boolean, Integer, Integer, String, String> sql = DSL
|
||||
InsertValuesStep15<TCampRecord, LocalDateTime, String, LocalDateTime, Integer, Integer, Integer, Boolean, Integer, Integer, String, String, Integer, Integer, Integer, Integer> sql = DSL
|
||||
.using(t)
|
||||
// @formatter:off
|
||||
.insertInto(T_CAMP,
|
||||
@ -453,9 +452,14 @@ public class AdminRepository {
|
||||
T_CAMP.MAX_AGE,
|
||||
T_CAMP.MIN_AGE,
|
||||
T_CAMP.NAME,
|
||||
T_CAMP.PRICE)
|
||||
T_CAMP.PRICE,
|
||||
T_CAMP.BEDS_FEMALE,
|
||||
T_CAMP.BEDS_MALE,
|
||||
T_CAMP.BLOCKED_BEDS_FEMALE,
|
||||
T_CAMP.BLOCKED_BEDS_MALE)
|
||||
.values(arrive, bean.getCountries(), depart, bean.getFkDocument(), bean.getFkLocation(), bean.getFkProfile(),
|
||||
bean.getLockSales() != null ? bean.getLockSales() : false, bean.getMaxAge(), bean.getMinAge(), bean.getName(), bean.getPrice());
|
||||
bean.getLockSales() != null ? bean.getLockSales() : false, bean.getMaxAge(), bean.getMinAge(), bean.getName(), bean.getPrice(),
|
||||
bean.getBedsFemale(), bean.getBedsMale(), bean.getBlockedBedsFemale(), bean.getBlockedBedsMale());
|
||||
// @formatter:on
|
||||
LOGGER.debug(sql.toString());
|
||||
sql.execute();
|
||||
@ -474,6 +478,10 @@ public class AdminRepository {
|
||||
.set(T_CAMP.MIN_AGE, bean.getMinAge())
|
||||
.set(T_CAMP.NAME, bean.getName())
|
||||
.set(T_CAMP.PRICE, bean.getPrice())
|
||||
.set(T_CAMP.BEDS_FEMALE, bean.getBedsFemale())
|
||||
.set(T_CAMP.BEDS_MALE, bean.getBedsMale())
|
||||
.set(T_CAMP.BLOCKED_BEDS_FEMALE, bean.getBlockedBedsFemale())
|
||||
.set(T_CAMP.BLOCKED_BEDS_MALE, bean.getBlockedBedsMale())
|
||||
.where(T_CAMP.PK.eq(bean.getPk()));
|
||||
// @formatter:on
|
||||
LOGGER.debug(sql.toString());
|
||||
|
@ -7,12 +7,12 @@ import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import de.jottyfan.camporganizer.db.jooq.tables.records.TCampRecord;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -45,6 +45,18 @@ public class CampBean implements Serializable {
|
||||
private String countries;
|
||||
@NotNull
|
||||
private String price;
|
||||
@NotNull
|
||||
@Min(value = 0)
|
||||
private Integer bedsFemale;
|
||||
@NotNull
|
||||
@Min(value = 0)
|
||||
private Integer bedsMale;
|
||||
@NotNull
|
||||
@Min(value = 0)
|
||||
private Integer blockedBedsFemale;
|
||||
@NotNull
|
||||
@Min(value = 0)
|
||||
private Integer blockedBedsMale;
|
||||
|
||||
/**
|
||||
* generate a camp bean out of r
|
||||
@ -71,6 +83,10 @@ public class CampBean implements Serializable {
|
||||
bean.setName(r.getName());
|
||||
bean.setPk(r.getPk());
|
||||
bean.setPrice(r.getPrice());
|
||||
bean.setBedsFemale(r.getBedsFemale());
|
||||
bean.setBedsMale(r.getBedsMale());
|
||||
bean.setBlockedBedsFemale(r.getBlockedBedsFemale());
|
||||
bean.setBlockedBedsMale(r.getBlockedBedsMale());
|
||||
return bean;
|
||||
}
|
||||
|
||||
@ -272,4 +288,60 @@ public class CampBean implements Serializable {
|
||||
}
|
||||
this.countries = buf.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the bedsFemale
|
||||
*/
|
||||
public Integer getBedsFemale() {
|
||||
return bedsFemale;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bedsFemale the bedsFemale to set
|
||||
*/
|
||||
public void setBedsFemale(Integer bedsFemale) {
|
||||
this.bedsFemale = bedsFemale;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the bedsMale
|
||||
*/
|
||||
public Integer getBedsMale() {
|
||||
return bedsMale;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bedsMale the bedsMale to set
|
||||
*/
|
||||
public void setBedsMale(Integer bedsMale) {
|
||||
this.bedsMale = bedsMale;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the blockedBedsFemale
|
||||
*/
|
||||
public Integer getBlockedBedsFemale() {
|
||||
return blockedBedsFemale;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param blockedBedsFemale the blockedBedsFemale to set
|
||||
*/
|
||||
public void setBlockedBedsFemale(Integer blockedBedsFemale) {
|
||||
this.blockedBedsFemale = blockedBedsFemale;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the blockedBedsMale
|
||||
*/
|
||||
public Integer getBlockedBedsMale() {
|
||||
return blockedBedsMale;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param blockedBedsMale the blockedBedsMale to set
|
||||
*/
|
||||
public void setBlockedBedsMale(Integer blockedBedsMale) {
|
||||
this.blockedBedsMale = blockedBedsMale;
|
||||
}
|
||||
}
|
||||
|
@ -119,6 +119,34 @@
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<label for="inputBedsFemale" class="col-sm-2 col-form-label">Anzahl Betten für Mädchen</label>
|
||||
<div class="col-sm-10">
|
||||
<span class="error" th:each="error : ${#fields.errors('bedsFemale')}">[[${error}]]<br /></span>
|
||||
<input type="number" class="form-control" th:field="*{bedsFemale}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<label for="inputBedsMale" class="col-sm-2 col-form-label">Anzahl Betten für Jungen</label>
|
||||
<div class="col-sm-10">
|
||||
<span class="error" th:each="error : ${#fields.errors('bedsMale')}">[[${error}]]<br /></span>
|
||||
<input type="number" class="form-control" th:field="*{bedsMale}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<label for="inputBlockedBedsFemale" class="col-sm-2 col-form-label">Reservierte Betten für Mädchen</label>
|
||||
<div class="col-sm-10">
|
||||
<span class="error" th:each="error : ${#fields.errors('blockedBedsFemale')}">[[${error}]]<br /></span>
|
||||
<input type="number" class="form-control" th:field="*{blockedBedsFemale}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<label for="inputBlockedBedsMale" class="col-sm-2 col-form-label">Reservierte Betten für Jungen</label>
|
||||
<div class="col-sm-10">
|
||||
<span class="error" th:each="error : ${#fields.errors('blockedBedsMale')}">[[${error}]]<br /></span>
|
||||
<input type="number" class="form-control" th:field="*{blockedBedsMale}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<label for="inputLockSales" class="col-sm-2 col-form-label">Kassenschluss</label>
|
||||
<div class="col-sm-10">
|
||||
|
@ -14,8 +14,8 @@
|
||||
<div class="accordion-body">
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td rowspan="4"><img th:src="@{/images/Icon_Stern.svg}" width="36px" height="36px" style="margin-left: 24px" /></td>
|
||||
<td rowspan="4">
|
||||
<td rowspan="5"><img th:src="@{/images/Icon_Stern.svg}" width="36px" height="36px" style="margin-left: 24px" /></td>
|
||||
<td rowspan="5">
|
||||
<div>
|
||||
Biblische Geschichten<br /> Nachtwanderung<br /> Gruppenspiele<br /> Ausflüge<br /> Überraschungen
|
||||
</div>
|
||||
@ -38,6 +38,12 @@
|
||||
<p th:text="${c.price}"></p>
|
||||
</div></td>
|
||||
</tr>
|
||||
<tr th:if="${c.bedsFemale + c.bedsMale > 0}">
|
||||
<td><img th:src="@{/images/Icon_Bett.svg}" width="36px" height="36px" style="margin-top: 24px" /></td>
|
||||
<td><div style="margin-top: 24px">
|
||||
<p style="width: 200px" th:utext="${'es sind nur noch <br />' + (c.bedsFemale - c.blockedBedsFemale - c.usedBedsFemale) + ' Mädchen- und ' + (c.bedsMale - c.blockedBedsMale - c.usedBedsMale) + ' Jungs-<br />von ' + (c.bedsFemale + c.bedsMale) + ' Betten frei'}"></p>
|
||||
</div></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="text-align: center; margin-top: 64px">
|
||||
<a class="btn btn-linda buttonfont" th:href="@{/registration/{id}(id=${c.pk})}">jetzt anmelden</a>
|
||||
|
Loading…
x
Reference in New Issue
Block a user