---
# System prepended metadata

title: Cocktail Festival

---

# Cocktail Festival


[TOC]

### 1. minimalnie/maksymalnie ilość menu (wymagana) - FE


Todo
- migracja
- validacja na modelu FE
- validacja na modelu FER
- zwracanie info o min/max menu na front (mutacje)


Dodajemy kolumny
```
- festival_editions.min_menus_amount
- festival_editions.max_menus_amount
```

wywalamy
- menus_amount

migracja ustawiająca min_menus_amount i max_menus_amount na to co menus_amount

**app/models/festival_edition.rb:39**


```ruby=
#rails g migration AddMenusAmountFieldsToFestivalEditions

# frozen_string_literal: true

class AddMenusAmountFieldsToFestivalEditions < ActiveRecord::Migration[5.2]
  def change
    add_column :festival_editions, :min_menus_amount, :integer
    add_column :festival_editions, :max_menus_amount, :integer
    populate_menus_amount_fields
    remove_column :festival_editions, :menus_amount
  end

  private

  def populate_menus_amount_fields
    FestivalEdition.all.each do |fedition|
        fedition.min_menus_amount = fedition.menus_amount
        fedition.max_menus_amount = fedition.menus_amount
        fedition.save!
    end
  end
end

```

### 2. mnożnik menus per person

- mutacja updateFestivalEdition - dodać menus_per_person (wymagane) + uzupełnić typ/query FE
- dodać w query/type FER, Daily, Event -> menus_per_person
- migracja

```ruby
    add_column :festival_editions, :menus_per_person, :integer
```

potem uzupełnic 1 i zmienić nullability na false



Zmienić na FER
app/models/festival_edition_restaurant.rb:63~65
```ruby=
  def menus_per_person
    menus.empty? ? 0 : festival_edition.menus_per_person
  end

```

### 3. FE - godzina/dni zamknięcia list + rezerwacja na ten sam dzień #605

**[>>> GITLAB TICKET LINK <<<](https://gitlab.com/restaurantclub/api/-/issues/605)**

czyli: `next_day_reservation_closed_hour` musimy zmienić na dynamiczne



1) do festival_edition dodajemy 

```ruby
add_column :festivals, :reservation_closing_rule, :jsonb
```
```json
{
  days_offset: 1, // 1 dzień wcześniej
  minutes_since_midnight: 1200 // do 20:00
}
```

2) dodajemy te pola do mutacji tworzenia/edycji Festivalu

3) zmieniamy `app/services/slot_calculator.rb:51~75` żeby korzystał z `festivals.reservation_closing_rule`




### 4. slot_availability_time_limit_in_minutes - rozbite na restauracje #606

**[>>> GITLAB TICKET LINK <<<](https://gitlab.com/restaurantclub/api/-/issues/606)**



dodajemy
```ruby=
add_column :dailies, :slot_availablity_time_limit_in_minutes, :integer
```
- zaseedować z Settings a potem zmienić nullability na false
- wymagać w mutacji create/updateDaily (czy jak jej tam)




app/models/event.rb:58


