Kodall
Exercises

Exercise 15: Botanical Garden

Rendering diagram...

Description

  • The property "name" in the table "plant_state" can have the values: "Healthy", "Diseased", "Removed".
  • This app manages a garden by tracking plants, their growth states, sections, and gardeners. It links plants to sections where they grow, associates each plant with a growth state, and assigns gardeners to specific sections they tend. It helps organize plant care and garden management efficiently.
  • In entity "plant_state", name represents the state that will be displayed on the screen, label represents the value that programmer will use to filter the states, and the uuid represents a value to distinguish the states.
  • Note: The value of the field "uuid" is generated automatically.

Tasks

  • plant/gardener/section/plant_state/section_plant: Add, Edit, Update, Delete.
    • When a plant is created, it will automatically become "Healthy".
    • The field "Plant state" from entity "plant" will be read-only in edit view.
  • Create a catalog for entities: "gardener", "section", "plant" and "plant_state".
  • Create event listeners for tables that needs validations (e.g., adding a plant without a name, section without description, etc., should not be allowed).
  • In section, calculate the total number of plants.
  • Add a new entity action at the section level "Remove section":
    • It will change the state of all plants in the section to "Removed";
    • A section cannot be removed if it contains any "Healthy" plants → warning message.
    • A section cannot be removed if it already in the "Removed" state → warning message.
  • Plant report: section situation at plant level (total number of sections, plant details).
  • Gardener report: section situation at gardener level (total number of sections, plant details).