Основные сущности

Перейдите в Студию и создайте основные классы приложения.

Основные классы приложения

Кинозал

Класс hall (Зал) определяет помещение, где просходит показ фильма. Кинотеатр может состоять из нескольких залов.

Создайте строковые атрибуты name (Название) и description (Описание). Для атрибута name установите флажки Required (Обязательный) и Unique (Уникальный).

Место в зале

Класс seat (Место) определяет место, на которое продается билет.

Создайте обязательный ссылочный атрибут hall (Зал), чтобы привязать место к залу. Установите флажок Eager loading (Жадная загрузка), чтобы загружать объект зала вместе с местом. Создайте обязательные целочисленные атрибуты row (Ряд) и column (Место). Для атрибута column добавьте валидатор Unique (Уникальный) с фильтром: "hall, row". Это проверит уникальность места внутри зала и ряда.

Постер фильма

Класс poster (Постер) определяет плакат для фильма.

Создайте обязательный строковый атрибут title (Заголовок). Создайте обязательный файловый атрибут file (Файл). Для класса добавьте поведение File. Это обеспечит загрузку и сохранение файлов. Установите флажок Image only (Только изображения). В поле Filename attribute (Атрибут имени файла) выберите title (Заголовок). Это автоматически установит в заголовок имя загружаемого файла.

Кинофильм

Класс movie (Фильм) определяет характеристики кинокартины.

Создайте обязательный уникальный строковый атрибут title (Заголовок). Создайте текстовый атрибут description (Описание). Создайте обязательный целочисленный атрибут duration (Длительность). Он определяет длительность фильма в минутах. Создайте ссылочный атрибут poster (Постер).

Ценообразование

Класс pricing (Ценообразование) определяет цену билета. Зал может иметь несколько ценообразований. При создании Показа выбирается подходящий под условия вариант ценообразования. Например, специальные цены могут устнавливаться в выходные и праздничные дни или для новинок проката.

Создайте обязательный строковый атрибут name (Название). Добавьте к нему валидатор Unique (Уникальный) с фильтром: "hall". Это гарантирует уникальность названия внутри зала. Создайте обязательный целочисленный атрибут value (Значение). Это определяет цену билета. Создайте обязательный ссылочный атрибут hall (Зал). Установите флажок Eager loading (Жадная загрузка).

Специальная цена

Класс seatPrice (Цена места) определяет специальную цену билета для места в зале. Например, для первого, последнего рядов или мест повышенной комфортности.

Создайте обязательный целочисленный атрибут value (Значение). Это определяет значение цены билета. Создайте обязательный ссылочный атрибут seat (Место). Это определяет место, для которого применяется специальная цена. Установите флажок Eager loading (Жадная загрузка).

Создайте ссылочный атрибут pricing (Ценообразование). Установите флажки Required (Обязательный), Read only (Только чтение) и Eager loading (Жадная загрузка). Здесь видится противоречие в логике. Флажок Required (Обязательный) требует данные, а флажок Read only запрещает передачу данных от клиента. Действительно, напрямую создать объект класса seatPrice нельзя. Однако это можно сделать через ссылочный атрибут класса pricing, потому что в нем передается автоматическая привязка к объекту-владельцу.

Кинопоказ

Класс screening (Показ) определяет характеристики демонстрации кинофильма.

Создайте атрибут date (Дата). Он определяет дату и время показа фильма. Выберите тип Date (Дата) и тип представления Local date and time (Локальные дата и время). Локальная дата привязана к месту события, поэтому клиенты будут видеть дату относительно своей часовой зоны.

Создайте логический атрибут active (Активно). Он определяет доступность показа для продажи билетов. Создайте обязательные ссылочные атрибуты movie (Фильм), hall (Кинозал), pricing (Ценообразование). Для атрибута hall установите флажок Read only. Это разрешает создавать показы только из кинозала.

Билет

Класс ticket (Билет) определяет проданные билеты.

Создайте целочисленный атибут price (Цена). Он определяет цену за которую был продан билет. Установите флажок Read only (Только чтение). Добавьте поведение Assigned value (Назначаемое значение). В поле Expression (Выражение) укажите конфигурацию класса выражения {"Class":"component/meta/expression/TicketPriceExpression"} и установите флажок On create (При создании). Цена билета устанавливается в момент создания и в дальнейшем остается неизменной.

Создайте обязательные ссылочные атибуты screening (Показ) и seat (Место). Это привязывает билет к месту и показу фильма.

Экспортируйте метаданные и проверьте созданные сущности в модуле Офис.