show free beds, see #2
This commit is contained in:
parent
5a365b1a37
commit
8f69320505
@ -8,7 +8,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = 'de.jottyfan.camporganizer'
|
group = 'de.jottyfan.camporganizer'
|
||||||
version = '0.6.8'
|
version = '0.6.9'
|
||||||
|
|
||||||
description = """CampOrganizer2"""
|
description = """CampOrganizer2"""
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ war {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'org.jooq:jooq:3.19.1'
|
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-api:2.22.0'
|
||||||
implementation 'org.apache.logging.log4j:log4j-core: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.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.jooq.Condition;
|
import org.jooq.Condition;
|
||||||
@ -27,7 +25,7 @@ import org.jooq.DeleteConditionStep;
|
|||||||
import org.jooq.Field;
|
import org.jooq.Field;
|
||||||
import org.jooq.InsertResultStep;
|
import org.jooq.InsertResultStep;
|
||||||
import org.jooq.InsertReturningStep;
|
import org.jooq.InsertReturningStep;
|
||||||
import org.jooq.InsertValuesStep11;
|
import org.jooq.InsertValuesStep15;
|
||||||
import org.jooq.InsertValuesStep3;
|
import org.jooq.InsertValuesStep3;
|
||||||
import org.jooq.Record4;
|
import org.jooq.Record4;
|
||||||
import org.jooq.Record5;
|
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.PrivilegesContainerBean;
|
||||||
import de.jottyfan.camporganizer.module.admin.model.ProfileBean;
|
import de.jottyfan.camporganizer.module.admin.model.ProfileBean;
|
||||||
import de.jottyfan.camporganizer.module.camplist.model.LambdaResultWrapper;
|
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 arrive = arriveDate == null ? null : arriveDate.atStartOfDay();
|
||||||
LocalDateTime depart = departDate == null ? null : departDate.atStartOfDay();
|
LocalDateTime depart = departDate == null ? null : departDate.atStartOfDay();
|
||||||
if (bean.getPk() == null) {
|
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)
|
.using(t)
|
||||||
// @formatter:off
|
// @formatter:off
|
||||||
.insertInto(T_CAMP,
|
.insertInto(T_CAMP,
|
||||||
@ -453,9 +452,14 @@ public class AdminRepository {
|
|||||||
T_CAMP.MAX_AGE,
|
T_CAMP.MAX_AGE,
|
||||||
T_CAMP.MIN_AGE,
|
T_CAMP.MIN_AGE,
|
||||||
T_CAMP.NAME,
|
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(),
|
.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
|
// @formatter:on
|
||||||
LOGGER.debug(sql.toString());
|
LOGGER.debug(sql.toString());
|
||||||
sql.execute();
|
sql.execute();
|
||||||
@ -474,6 +478,10 @@ public class AdminRepository {
|
|||||||
.set(T_CAMP.MIN_AGE, bean.getMinAge())
|
.set(T_CAMP.MIN_AGE, bean.getMinAge())
|
||||||
.set(T_CAMP.NAME, bean.getName())
|
.set(T_CAMP.NAME, bean.getName())
|
||||||
.set(T_CAMP.PRICE, bean.getPrice())
|
.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()));
|
.where(T_CAMP.PK.eq(bean.getPk()));
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
LOGGER.debug(sql.toString());
|
LOGGER.debug(sql.toString());
|
||||||
|
@ -7,12 +7,12 @@ import java.time.format.DateTimeFormatter;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import de.jottyfan.camporganizer.db.jooq.tables.records.TCampRecord;
|
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;
|
private String countries;
|
||||||
@NotNull
|
@NotNull
|
||||||
private String price;
|
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
|
* generate a camp bean out of r
|
||||||
@ -71,6 +83,10 @@ public class CampBean implements Serializable {
|
|||||||
bean.setName(r.getName());
|
bean.setName(r.getName());
|
||||||
bean.setPk(r.getPk());
|
bean.setPk(r.getPk());
|
||||||
bean.setPrice(r.getPrice());
|
bean.setPrice(r.getPrice());
|
||||||
|
bean.setBedsFemale(r.getBedsFemale());
|
||||||
|
bean.setBedsMale(r.getBedsMale());
|
||||||
|
bean.setBlockedBedsFemale(r.getBlockedBedsFemale());
|
||||||
|
bean.setBlockedBedsMale(r.getBlockedBedsMale());
|
||||||
return bean;
|
return bean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -272,4 +288,60 @@ public class CampBean implements Serializable {
|
|||||||
}
|
}
|
||||||
this.countries = buf.toString();
|
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>
|
</script>
|
||||||
</div>
|
</div>
|
||||||
</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">
|
<div class="row mb-2">
|
||||||
<label for="inputLockSales" class="col-sm-2 col-form-label">Kassenschluss</label>
|
<label for="inputLockSales" class="col-sm-2 col-form-label">Kassenschluss</label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
|
@ -14,8 +14,8 @@
|
|||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<table style="width: 100%">
|
<table style="width: 100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="4"><img th:src="@{/images/Icon_Stern.svg}" width="36px" height="36px" style="margin-left: 24px" /></td>
|
<td rowspan="5"><img th:src="@{/images/Icon_Stern.svg}" width="36px" height="36px" style="margin-left: 24px" /></td>
|
||||||
<td rowspan="4">
|
<td rowspan="5">
|
||||||
<div>
|
<div>
|
||||||
Biblische Geschichten<br /> Nachtwanderung<br /> Gruppenspiele<br /> Ausflüge<br /> Überraschungen
|
Biblische Geschichten<br /> Nachtwanderung<br /> Gruppenspiele<br /> Ausflüge<br /> Überraschungen
|
||||||
</div>
|
</div>
|
||||||
@ -38,6 +38,12 @@
|
|||||||
<p th:text="${c.price}"></p>
|
<p th:text="${c.price}"></p>
|
||||||
</div></td>
|
</div></td>
|
||||||
</tr>
|
</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>
|
</table>
|
||||||
<div style="text-align: center; margin-top: 64px">
|
<div style="text-align: center; margin-top: 64px">
|
||||||
<a class="btn btn-linda buttonfont" th:href="@{/registration/{id}(id=${c.pk})}">jetzt anmelden</a>
|
<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