---
# System prepended metadata

title: Class diagram

---

# Class diagram
```mermaid
classDiagram
    class CustomerSystem {
    
    }
    
    RecipeSystem o-- AdminSystem
    OrderSystem "1" -- "0..*" Shop
    OrderSystem "1" -- "0..*" Order
    OrderSystem -- Cart
    OrderSystem -- RecipeSystem
    
    OrderSystem "0.1" -- "1" CustomerSystem
    
    
    Shop "1" -- "0.*" Cook
    Shop "1" -- "0.*" Order
    Shop "0.*" -- "1" Schedule
    Shop "0.*" -- "1" AdminSystem
    
    Order "0.*" -- "1" Cook
    Order "0.1" -- "1" Cart
    
    Cart -- RecipeCount
    RecipeCount -- Recipe
    
    Recipe "0.*" -- "1.*" Ingredient
    Recipe "0.*" -- "1" RecipeSystem
    
    Shop "" -- "" AdminSystem
    
        
    Ingredient "0.*" -- "1.*" IngredientEnum: is one of

    
    UserAccount "1" -- "*" Order: has history
    AccountSystem "1" -- "*" UserAccount: contains
    
    Cook "1" -- "1" Schedule: has
    
    CustomerSystem -- AccountSystem
    
    class Shop {
        setSchedule()
        checkSchedule(): boolean
        +getCookieList()
        +takeNextOrder()
    }
    
    class Schedule {
    }
    
    class RecipeSystem {
        -maximumIngredients: Integer
        +createRecipe()
        +deleteRecipe()
        +addRecipeIngredient()
        +isRecipeExist()
    }
    
    class Ingredient {
        -price: Integer
    }
    
    class OrderSystem {
        +createOrder()
        +getPaymentValidation()
        +getFormList()
        +getFormsOfUser(account)
        +cancelOrder()
        +removeOrder()
        +isOrderExist(orderId)
        +getOrderCancelCount()
        +pickupOrder(orderID)
    }
    
    class Order {
        -id: Integer
        +getInformations()
        +isOrderStarted()
        +getOrderStatus()
        +getLocation()
    }
    
    class Cart {
        totalPrice: Integer
        +addCookie()
        +delCookie()
    }
    
    class UserAccount {
        -id: Integer
        -firstName: String
        -lastName: String
        -email: String
        -password: String
        +setAccountInformations()
        +isPasswordValid()
    }
    
    class AccountSystem {
        +createAccount()
        +isAccountInformationsValid()
        +isAccountExist()
        +login()
        +getAccount()
    }
    
    class Recipe {
        -id: Integer
        -price: Integer
        +addIngredient()
        +showTheRecipe()
    }
```