Skip to content

Commit

Permalink
#134 Extras are now item-specific
Browse files Browse the repository at this point in the history
  • Loading branch information
kovacsbertalan committed Mar 8, 2022
1 parent a6df27f commit 07c3df6
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 25 deletions.
2 changes: 1 addition & 1 deletion src/main/kotlin/hu/kirdev/schpincer/dao/Repositories.kt
Original file line number Diff line number Diff line change
Expand Up @@ -84,5 +84,5 @@ interface UserRepository : JpaRepository<UserEntity, String> {

@Repository
interface ExtrasRepository : JpaRepository<ExtraEntity, Long> {
fun findByCircleAndNameAndInputTypeAndSelectedIndex(circle: CircleEntity, name: String, inputType: CustomComponentType, selectedIndex: Int): Optional<ExtraEntity>
fun findByItemAndNameAndInputTypeAndSelectedIndex(item: ItemEntity, name: String, inputType: CustomComponentType, selectedIndex: Int): Optional<ExtraEntity>
}
44 changes: 24 additions & 20 deletions src/main/kotlin/hu/kirdev/schpincer/model/ExtraEntity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,34 @@ import javax.persistence.*

@Entity
@Table(name = "extras")
data class ExtraEntity (
@Id
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
var id: Long = 0,
data class ExtraEntity(
@Id
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
var id: Long = 0,

@ManyToOne
var circle: CircleEntity,
@ManyToOne
var circle: CircleEntity,

@Column
var category: String,

@Column
var category: String,
@Column
var selectedIndex: Int,

@Column
var selectedIndex: Int,
@Column
var displayName: String,

@Column
var displayName: String,
@Column
var inputType: CustomComponentType,

@Column
var inputType: CustomComponentType,
@Column
var name: String,

@Column
var name: String,
@Column
var price: Int) {

@ManyToOne
lateinit var item: ItemEntity

@Column
var price: Int
)
}
13 changes: 10 additions & 3 deletions src/main/kotlin/hu/kirdev/schpincer/service/ExtrasService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import hu.kirdev.schpincer.dao.ExtrasRepository
import hu.kirdev.schpincer.dao.ItemRepository
import hu.kirdev.schpincer.model.CircleEntity
import hu.kirdev.schpincer.model.ExtraEntity
import hu.kirdev.schpincer.model.ItemEntity
import hu.kirdev.schpincer.web.component.CustomComponentModel
import hu.kirdev.schpincer.web.component.CustomComponentModelList
import hu.kirdev.schpincer.web.component.CustomComponentType
Expand Down Expand Up @@ -42,16 +43,21 @@ class ExtrasService {
mapped.forEach { that ->
val mappedExtra = that.value
for (i in 0 until mappedExtra.values.size) {
createOrUpdateExtra(mappedExtra, i, circle)
createOrUpdateExtra(mappedExtra, i, circle, it)
}
}

}

}

private fun createOrUpdateExtra(mappedExtra: CustomComponentModel, i: Int, circle: CircleEntity) {
val optionalExtra = extrasRepository.findByCircleAndNameAndInputTypeAndSelectedIndex(circle, mappedExtra.name, CustomComponentType.valueOf(mappedExtra.type), i)
private fun createOrUpdateExtra(mappedExtra: CustomComponentModel, i: Int, circle: CircleEntity, item: ItemEntity) {
val optionalExtra = extrasRepository.findByItemAndNameAndInputTypeAndSelectedIndex(
item,
mappedExtra.name,
CustomComponentType.valueOf(mappedExtra.type),
i
)
optionalExtra.ifPresentOrElse({
it.price = mappedExtra.prices[i]
extrasRepository.save(it)
Expand All @@ -65,6 +71,7 @@ class ExtrasService {
displayName = mappedExtra.values[i],
price = mappedExtra.prices[i]
)
extra.item = item
extrasRepository.save(extra)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ class MakeOrderProcedure (
val name = answer.name
for (selected in answer.selected) {

val optionalExtra = extrasRepository.findByCircleAndNameAndInputTypeAndSelectedIndex(current.circle!!, name, type, selected)
val optionalExtra = extrasRepository.findByItemAndNameAndInputTypeAndSelectedIndex(item, name, type, selected)
if (optionalExtra.isEmpty) {
throw IllegalArgumentException("${current.circle!!} has no optional extra with input type $type and name $name")
}
Expand Down

0 comments on commit 07c3df6

Please sign in to comment.