📦 sleepyfran / duets

📄 Drink.Items.fs · 195 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195module Duets.Data.Items.Drink

open Duets.Common
open Duets.Entities

module Beer =
    (* Australian beer. *)
    let victoriaBitter: PurchasableItem =
        Item.Beer.create "Victoria Bitter beer" 375<milliliter> 4.9, 3.0m<dd>

    let fostersLager: PurchasableItem =
        Item.Beer.create "Foster's Lager beer" 375<milliliter> 4.0, 2.8m<dd>

    let coopersPaleAle: PurchasableItem =
        Item.Beer.create "Coopers Pale Ale beer" 375<milliliter> 4.5, 3.2m<dd>

    let carltonDraught: PurchasableItem =
        Item.Beer.create "Carlton Draught beer" 375<milliliter> 4.6, 3.1m<dd>

    let tooheysNew: PurchasableItem =
        Item.Beer.create "Tooheys New beer" 375<milliliter> 4.6, 3.0m<dd>


    (* Czech beer. *)
    let cernaHoraPint: PurchasableItem =
        Item.Beer.create "Černa Horá beer" 500<milliliter> 4.8, 2.2m<dd>

    let gambrinusPint: PurchasableItem =
        Item.Beer.create "Gambrinus beer" 500<milliliter> 4.3, 1.5m<dd>

    let kozelPint: PurchasableItem =
        Item.Beer.create "Kozel beer" 500<milliliter> 4.6, 1.5m<dd>

    let matushkaPint: PurchasableItem =
        Item.Beer.create "Matuška California beer" 500<milliliter> 5.4, 2.4m<dd>

    let pilsnerUrquellPint: PurchasableItem =
        Item.Beer.create "Pilsner Urquell beer" 500<milliliter> 4.4, 1.8m<dd>

    let staropramenPint: PurchasableItem =
        Item.Beer.create "Staropramen beer" 500<milliliter> 4.7, 1.5m<dd>

    (* Spanish beer. *)
    let cruzcampo: PurchasableItem =
        Item.Beer.create "Cruzcampo beer" 330<milliliter> 4.8, 2.0m<dd>

    let estrellaDamm: PurchasableItem =
        Item.Beer.create "Estrella Damm beer" 330<milliliter> 4.6, 2.1m<dd>

    let mahou: PurchasableItem =
        Item.Beer.create "Mahou beer" 330<milliliter> 4.8, 2.2m<dd>

    let alhambra: PurchasableItem =
        Item.Beer.create "Alhambra beer" 330<milliliter> 4.6, 2.3m<dd>

    let sanMiguel: PurchasableItem =
        Item.Beer.create "San Miguel beer" 330<milliliter> 4.5, 2.0m<dd>

    (* Irish beer. *)
    let guinnessPint: PurchasableItem =
        Item.Beer.create "Guinness beer" 500<milliliter> 4.3, 2.1m<dd>

    (* Japanese beer. *)
    let asahiSuperDry: PurchasableItem =
        Item.Beer.create "Asahi Super Dry beer" 350<milliliter> 5.0, 2.7m<dd>

    let kirinIchiban: PurchasableItem =
        Item.Beer.create "Kirin Ichiban beer" 350<milliliter> 4.6, 2.8m<dd>

    let sapporoPremium: PurchasableItem =
        Item.Beer.create "Sapporo Premium Beer beer" 350<milliliter> 4.7,
        3.0m<dd>

    let suntoryPremiumMalts: PurchasableItem =
        Item.Beer.create "Suntory The Premium Malt's beer" 330<milliliter> 5.5,
        3.2m<dd>

    let yebisu: PurchasableItem =
        Item.Beer.create "Yebisu beer" 350<milliliter> 5.0, 3.3m<dd>

    (* Mexican beer. *)
    let coronaExtra: PurchasableItem =
        Item.Beer.create "Corona Extra beer" 355<milliliter> 4.5, 2.5m<dd>

    let modeloEspecial: PurchasableItem =
        Item.Beer.create "Modelo Especial beer" 355<milliliter> 4.4, 2.6m<dd>

    let pacifico: PurchasableItem =
        Item.Beer.create "Pacifico beer" 355<milliliter> 4.5, 2.7m<dd>

    let tecate: PurchasableItem =
        Item.Beer.create "Tecate beer" 355<milliliter> 4.5, 2.4m<dd>

    let dosEquis: PurchasableItem =
        Item.Beer.create "Dos Equis beer" 355<milliliter> 4.2, 2.6m<dd>

    (* US beer. *)
    let budLight: PurchasableItem =
        Item.Beer.create "Bud Light beer" 355<milliliter> 4.2, 2.5m<dd>

    let coorsLight: PurchasableItem =
        Item.Beer.create "Coors Light beer" 355<milliliter> 4.2, 2.6m<dd>

    let millerLite: PurchasableItem =
        Item.Beer.create "Miller Lite beer" 355<milliliter> 4.2, 2.4m<dd>

    let yuengling: PurchasableItem =
        Item.Beer.create "Yuengling beer" 355<milliliter> 4.4, 2.8m<dd>

    let samuelAdams: PurchasableItem =
        Item.Beer.create "Samuel Adams beer" 355<milliliter> 5.0, 3.0m<dd>

    (* UK beer. *)
    let fullersLondonPride: PurchasableItem =
        Item.Beer.create "Fuller's London Pride beer" 568<milliliter> 4.7,
        3.5m<dd>

    let timothyTaylorLandlord: PurchasableItem =
        Item.Beer.create "Timothy Taylor Landlord beer" 568<milliliter> 4.3,
        3.6m<dd>

    let shepherdNeameSpitfire: PurchasableItem =
        Item.Beer.create "Shepherd Neame Spitfire beer" 568<milliliter> 4.2,
        3.4m<dd>

    let adnamsBroadside: PurchasableItem =
        Item.Beer.create "Adnams Broadside beer" 568<milliliter> 4.7, 3.7m<dd>

    let stAustellTribute: PurchasableItem =
        Item.Beer.create "St Austell Tribute beer" 568<milliliter> 4.2, 3.6m<dd>

    let private americanBeers =
        [ budLight; coorsLight; millerLite; yuengling; samuelAdams ]

    /// Defines the most common beers by location.
    let byLocation =
        [ (London,
           [ fullersLondonPride
             timothyTaylorLandlord
             shepherdNeameSpitfire
             adnamsBroadside
             stAustellTribute ])
          (LosAngeles, americanBeers)
          (Madrid, [ cruzcampo; estrellaDamm; mahou; alhambra; sanMiguel ])
          // (MexicoCity,
          //  [ coronaExtra; modeloEspecial; pacifico; tecate; dosEquis ])
          (NewYork, americanBeers)
          (Prague,
           [ gambrinusPint; kozelPint; pilsnerUrquellPint; staropramenPint ])
          // (Sydney,
          //  [ victoriaBitter
          //    fostersLager
          //    coopersPaleAle
          //    carltonDraught
          //    tooheysNew ])
          // (Tokyo,
          //  [ asahiSuperDry
          //    kirinIchiban
          //    sapporoPremium
          //    suntoryPremiumMalts
          //    yebisu ])
          ]
        |> Map.ofList

    let all =
        byLocation
        |> List.ofMapValues
        |> List.concat
        |> List.distinctBy (fun (item, _) -> item.Brand)

module Coffee =
    let espresso: PurchasableItem =
        Item.Coffee.create "Espresso" 20<milliliter> 20<milliliter>, 1.8m<dd>

    let doubleEspresso: PurchasableItem =
        Item.Coffee.create "Double espresso" 40<milliliter> 40<milliliter>,
        2.2m<dd>

    let capuccino: PurchasableItem =
        Item.Coffee.create "Capuccino" 105<milliliter> 20<milliliter>, 2.5m<dd>

    let flatWhite: PurchasableItem =
        Item.Coffee.create "Flat White" 125<milliliter> 40<milliliter>, 2.7m<dd>

    let all = [ espresso; doubleEspresso; capuccino; flatWhite ]

module SoftDrinks =
    let cocaColaBottle: PurchasableItem =
        Item.Soda.create "Coca Cola" 330<milliliter>, 0.6m<dd>

    let homemadeLemonade: PurchasableItem =
        Item.Soda.create "Homemade lemonade" 500<milliliter>, 0.9m<dd>

    let all = [ cocaColaBottle; homemadeLemonade ]