source: KernelRecordsMVC.Web/Views/Release/Details.cshtml@ fa0fbaf

main
Last change on this file since fa0fbaf was fa0fbaf, checked in by mmilevski <markomilevski3@…>, 4 weeks ago

Added major improvements.

  • Property mode set to 100644
File size: 9.3 KB
Line 
1@model KernelRecordsMVC.Models.Release
2
3@{
4 ViewData["Title"] = Model.Title;
5
6 var isAlbum = Model.Album != null;
7 var isSingle = Model.SingleRelease != null;
8
9 var releaseType =
10 isAlbum ? "ALBUM" :
11 isSingle ? "SINGLE" :
12 "RELEASE";
13
14 var artists = string.Join(
15 ", ",
16 Model.ReleaseArtists
17 .OrderBy(x => x.ReleaseOrdinal)
18 .Select(x => x.Artist.ArtistName)
19 );
20}
21
22<div class="release-details-page">
23
24 <div class="release-hero">
25
26 <div class="release-hero-cover">
27
28 @if (!string.IsNullOrWhiteSpace(Model.CoverPhoto))
29 {
30 <img src="@Model.CoverPhoto"
31 alt="@Model.Title" />
32 }
33 else
34 {
35 <div class="release-no-cover">
36 <span>♪</span>
37 </div>
38 }
39
40 </div>
41
42
43 <div class="release-hero-info">
44
45 <span class="page-eyebrow">
46 @releaseType
47 </span>
48
49 <h1>
50 @Model.Title
51 </h1>
52
53 <p class="release-artists-main">
54 @artists
55 </p>
56
57
58 <div class="release-facts">
59
60 <div>
61
62 <span>Genre</span>
63
64 <strong>
65 @Model.Genre
66 </strong>
67
68 </div>
69
70 <div>
71
72 <span>Released</span>
73
74 <strong>
75 @Model.ReleaseDate.ToString("MMM dd, yyyy")
76 </strong>
77
78 </div>
79
80 <div>
81
82 <span>Label</span>
83
84 <strong>
85 @Model.RecordLabel
86 </strong>
87
88 </div>
89
90 </div>
91
92
93 <div class="artist-section">
94
95 <span class="section-label">
96 ARTISTS
97 </span>
98
99 <div class="release-artists">
100
101 @foreach (var artist in Model.ReleaseArtists
102 .OrderBy(x => x.ReleaseOrdinal))
103 {
104 <span class="artist-tag">
105
106 @artist.Artist.ArtistName
107
108 @if (artist.Type.ToString() == "FEATURE")
109 {
110 <span class="artist-role">
111 Featured
112 </span>
113 }
114
115 </span>
116 }
117
118 </div>
119
120 </div>
121
122 </div>
123
124 </div>
125
126
127 <!-- =====================================================
128 PRODUCTS
129 ===================================================== -->
130
131 <section class="release-section">
132
133 <div class="section-heading">
134
135 <div>
136
137 <span class="section-label">
138 AVAILABLE FORMATS
139 </span>
140
141 <h2>
142 Choose your format
143 </h2>
144
145 </div>
146
147 <span class="track-count">
148 @Model.Products.Count product(s)
149 </span>
150
151 </div>
152
153
154 @if (!Model.Products.Any())
155 {
156 <div class="no-products">
157 No physical products are currently available.
158 </div>
159 }
160 else
161 {
162 <div class="product-grid">
163
164 @foreach (var product in Model.Products
165 .OrderBy(x => x.Format))
166 {
167 <div class="store-product-card">
168
169 <div class="product-card-top">
170
171 <span class="product-format">
172 @product.Format
173 </span>
174
175 @if (product.Stock > 0)
176 {
177 <span class="product-stock available">
178 In stock
179 </span>
180 }
181 else
182 {
183 <span class="product-stock unavailable">
184 Out of stock
185 </span>
186 }
187
188 </div>
189
190
191 <div class="product-price">
192 @product.Price.ToString("C")
193 </div>
194
195
196 <p class="product-description">
197 @product.ProductDescription
198 </p>
199
200
201 @if (product.Stock > 0)
202 {
203 <div class="product-actions">
204
205 <a asp-controller="Order"
206 asp-action="AddProduct"
207 asp-route-id="@product.ProductId"
208 class="store-button primary">
209
210 Add to Cart
211
212 </a>
213
214 <a asp-controller="Wishlist"
215 asp-action="Add"
216 asp-route-productId="@product.ProductId"
217 class="store-button secondary">
218
219 ♡ Wishlist
220
221 </a>
222
223 </div>
224 }
225 else
226 {
227 <div class="product-actions">
228
229 <a asp-controller="Wishlist"
230 asp-action="Add"
231 asp-route-productId="@product.ProductId"
232 class="store-button secondary full">
233
234 ♡ Add to Wishlist
235
236 </a>
237
238 </div>
239 }
240
241 </div>
242 }
243
244 </div>
245 }
246
247 </section>
248
249
250 <!-- =====================================================
251 ALBUM
252 ===================================================== -->
253
254 @if (Model.Album != null)
255 {
256 <section class="release-section">
257
258 <div class="section-heading">
259
260 <div>
261
262 <span class="section-label">
263 ALBUM
264 </span>
265
266 <h2>
267 Track List
268 </h2>
269
270 </div>
271
272 <span class="track-count">
273 @Model.Album.AlbumSongs.Count tracks
274 </span>
275
276 </div>
277
278
279 <ol class="track-list">
280
281 @{
282 var trackNumber = 1;
283 }
284
285 @foreach (var albumSong in Model.Album.AlbumSongs
286 .OrderBy(x => x.SongId))
287 {
288 <li class="track-row">
289
290 <span class="track-number">
291 @trackNumber.ToString("00")
292 </span>
293
294 <div class="track-main">
295
296 <strong>
297 @albumSong.Song.SongName
298 </strong>
299
300 @if (albumSong.Song.SongArtists.Any())
301 {
302 <div class="song-artists">
303
304 @string.Join(
305 ", ",
306 albumSong.Song.SongArtists
307 .OrderBy(x => x.SongOrdinal)
308 .Select(x => x.Artist.ArtistName)
309 )
310
311 </div>
312 }
313
314 </div>
315
316 <span class="track-duration">
317 @albumSong.Song.SongDuration
318 </span>
319
320 </li>
321
322 trackNumber++;
323 }
324
325 </ol>
326
327 </section>
328 }
329
330
331 <!-- =====================================================
332 SINGLE
333 ===================================================== -->
334
335 @if (Model.SingleRelease != null)
336 {
337 <section class="release-section">
338
339 <div class="section-heading">
340
341 <div>
342
343 <span class="section-label">
344 SINGLE
345 </span>
346
347 <h2>
348 Single Information
349 </h2>
350
351 </div>
352
353 </div>
354
355
356 <div class="single-info-card">
357
358 <div>
359
360 <span class="section-label">
361 RELEASE TYPE
362 </span>
363
364 <h2>
365 Single
366 </h2>
367
368 </div>
369
370 <div class="single-duration">
371
372 <span>
373 Duration
374 </span>
375
376 <strong>
377 @Model.SingleRelease.Duration
378 </strong>
379
380 </div>
381
382 </div>
383
384 </section>
385 }
386
387</div>
Note: See TracBrowser for help on using the repository browser.