# Zniżki na RC+y
## Wymagania
## Diagramig
```ruby=
class DiscountApplicabilityChecker
def call
check_user_constraint
check_user_constraint
check_user_constraint
end
def check_user_constraint
disocunt_constraints.where()
end
end
```
```plantuml
@startuml
class Discount {
+ type
+ value
+ prefix
+ enabled
+ discountable_type
+ discountable_id / future
}
class DiscountableConstraint {
+ discount_id
+ constrainable_type
+ constrainable_id
}
class OrderItem {
+ orderable_id
+ orderable_type
+ value : decimal
}
Reservation --{ OrderItem
Discount -- DiscountableConstraint
```
#### DiscountableConstraints
```csvpreview {header="true"}
discount_id, constrainable_type, constrainable_id
1,User,5
1, Restaurant, 1
1,FestivalEditon,1
1,Degustation, null
2,DeliveryFee, null
```
#### OrderItems
```csvpreview {header="true"}
id, orderable_type, orderable_id, qty, unit_price, value, related_id, reserv_id
1, Menu, 5, 2, 200.0, 400.0, NULL, 567
2, CrossSell, 21, 1, 50.0, 50.0, NULL, 567
3, ReservationExtra, 31, 1, 30.0, 30.0, NULL, 567
4, Discount, 55, 1, -40.0, -40.0, 5, 567
5,
```