├── WiredBrainCoffee.Client ├── wwwroot │ ├── favicon.ico │ ├── images │ │ ├── app.png │ │ ├── bag.jpg │ │ ├── bagel.jpg │ │ ├── table.jpg │ │ ├── trail.jpg │ │ ├── coffee.jpg │ │ ├── ground.jpg │ │ ├── menu │ │ │ ├── bagel.png │ │ │ ├── beans.jpg │ │ │ ├── cup.png │ │ │ ├── cookies.png │ │ │ ├── cupcake.png │ │ │ ├── granola.png │ │ │ ├── ground.png │ │ │ ├── muffin.png │ │ │ ├── cappucino.png │ │ │ ├── chocolate.png │ │ │ ├── cupcakes.png │ │ │ ├── sandwich.png │ │ │ ├── whipcream.png │ │ │ ├── PumpkinBread.png │ │ │ └── strawberries.png │ │ ├── placeholder.png │ │ ├── download-small.png │ │ └── banner │ │ │ ├── banner-bag.png │ │ │ └── banner-ground.png │ ├── js │ │ └── promocode.js │ ├── css │ │ ├── open-iconic │ │ │ ├── font │ │ │ │ ├── fonts │ │ │ │ │ ├── open-iconic.eot │ │ │ │ │ ├── open-iconic.otf │ │ │ │ │ ├── open-iconic.ttf │ │ │ │ │ ├── open-iconic.woff │ │ │ │ │ └── open-iconic.svg │ │ │ │ └── css │ │ │ │ │ └── open-iconic-bootstrap.min.css │ │ │ ├── ICON-LICENSE │ │ │ ├── README.md │ │ │ └── FONT-LICENSE │ │ ├── app.css │ │ ├── wiredbrain.min.css │ │ └── wiredbrain.css │ ├── sample-data │ │ └── weather.json │ ├── index.html │ └── debug.log ├── Services │ ├── IMenuService.cs │ ├── IContactService.cs │ ├── EmailService.cs │ ├── ContactService.cs │ └── MenuService.cs ├── App.razor ├── Components │ ├── ContactInfo.razor │ ├── MailingList.razor │ ├── MenuListItem.razor │ ├── OrderListItem.razor │ └── CoffeeExtrasModal.razor ├── Properties │ └── launchSettings.json ├── Shared │ ├── SurveyPrompt.razor │ ├── NavMenu.razor.css │ ├── NavMenu.razor │ ├── MainLayout.razor.css │ └── MainLayout.razor ├── Pages │ ├── ContactConfirmation.razor │ ├── OrderConfirmation.razor │ ├── AdminDashboard.razor │ ├── Order.razor │ ├── ContactForm.razor │ ├── Order.razor.cs │ └── Index.razor ├── _Imports.razor ├── WiredBrainCoffee.Client.csproj └── Program.cs ├── WiredBrainCoffee.Api ├── appsettings.Development.json ├── appsettings.json ├── Properties │ └── launchSettings.json ├── WiredBrainCoffee.Api.csproj ├── Controllers │ ├── IngredientsController.cs │ ├── ContactController.cs │ ├── AdminController.cs │ └── MenuController.cs ├── Program.cs └── Startup.cs ├── WiredBrainCoffee.Models ├── CreamerOptions.cs ├── ContactReason.cs ├── Person.cs ├── WiredBrainCoffee.Models.csproj ├── UploadedFile.cs ├── OrderItem.cs ├── Extras.cs ├── Order.cs ├── MenuItem.cs └── Contact.cs ├── README.md ├── .gitignore └── WiredBrainCoffee.Client.sln /WiredBrainCoffee.Client/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/favicon.ico -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/app.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/bag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/bag.jpg -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/bagel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/bagel.jpg -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/table.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/table.jpg -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/trail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/trail.jpg -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/coffee.jpg -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/ground.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/ground.jpg -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/bagel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/bagel.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/beans.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/beans.jpg -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/cup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/cup.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/cookies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/cookies.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/cupcake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/cupcake.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/granola.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/granola.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/ground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/ground.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/muffin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/muffin.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/placeholder.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/download-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/download-small.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/cappucino.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/cappucino.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/chocolate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/chocolate.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/cupcakes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/cupcakes.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/sandwich.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/sandwich.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/whipcream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/whipcream.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/banner/banner-bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/banner/banner-bag.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/PumpkinBread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/PumpkinBread.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/menu/strawberries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/menu/strawberries.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/images/banner/banner-ground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/images/banner/banner-ground.png -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/js/promocode.js: -------------------------------------------------------------------------------- 1 | // This would be more complicated in a real app 2 | 3 | export function VerifyPromoCode(promoCode) { 4 | return promoCode.indexOf("wired") != -1; 5 | } -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/open-iconic/font/fonts/open-iconic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/css/open-iconic/font/fonts/open-iconic.eot -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/open-iconic/font/fonts/open-iconic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/css/open-iconic/font/fonts/open-iconic.otf -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/open-iconic/font/fonts/open-iconic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alex-wolf-ps/whats-new-dotnet-5/HEAD/WiredBrainCoffee.Client/wwwroot/css/open-iconic/font/fonts/open-iconic.woff -------------------------------------------------------------------------------- /WiredBrainCoffee.Api/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Api/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "AllowedHosts": "*" 10 | } 11 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Models/CreamerOptions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace WiredBrainCoffee.Models 6 | { 7 | public enum CreamerOptions 8 | { 9 | None, 10 | Light, 11 | Regular, 12 | Heavy 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Models/ContactReason.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace WiredBrainCoffee.Models 6 | { 7 | public enum ContactReason 8 | { 9 | Refund, 10 | Order, 11 | Quality, 12 | Feedback, 13 | Staff 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Models/Person.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace WiredBrainCoffee.Models 7 | { 8 | public class Person 9 | { 10 | public string FirstName { get; set; } 11 | public string LastName { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Models/WiredBrainCoffee.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Models/UploadedFile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace WiredBrainCoffee.Models 6 | { 7 | public class UploadedFile 8 | { 9 | public string FileName { get; set; } 10 | public string ContentType { get; set; } 11 | public byte[] FileContent { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # whats-new-dotnet-5 2 | 3 | Note: Module 02 is the first module in the course after the intro video, which is technically module 1. 4 | Because Module 02 is mostly setup and intro content, there is no start/end branch for this - only start. 5 | 6 | The rest of the modules all have branches for the start and end state of the project for that module. 7 | 8 | Thank you for checking out this course and repo! 9 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Services/IMenuService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using WiredBrainCoffee.Models; 6 | 7 | namespace WiredBrainCoffee.Services 8 | { 9 | public interface IMenuService 10 | { 11 | Task> GetMenuItems(); 12 | 13 | List GetPopularItems(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Models/OrderItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace WiredBrainCoffee.Models 7 | { 8 | public class OrderItem 9 | { 10 | public int Id { get; set; } 11 | public string Name { get; set; } 12 | public decimal Price { get; set; } 13 | public Extras Extras { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Services/IContactService.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components.Forms; 2 | using System.Collections.Generic; 3 | using System.Threading.Tasks; 4 | using WiredBrainCoffee.Models; 5 | 6 | namespace WiredBrainCoffee.Services 7 | { 8 | public interface IContactService 9 | { 10 | Task PostContact(Contact contact); 11 | Task PostContact(Contact contact, IReadOnlyList files); 12 | } 13 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | *.*~ 3 | project.lock.json 4 | .DS_Store 5 | *.pyc 6 | nupkg/ 7 | 8 | # Visual Studio Code 9 | .vscode 10 | 11 | # User-specific files 12 | *.suo 13 | *.user 14 | *.userosscache 15 | *.sln.docstates 16 | 17 | # Build results 18 | [Dd]ebug/ 19 | [Dd]ebugPublic/ 20 | [Rr]elease/ 21 | [Rr]eleases/ 22 | x64/ 23 | x86/ 24 | build/ 25 | bld/ 26 | [Bb]in/ 27 | [Oo]bj/ 28 | msbuild.log 29 | msbuild.err 30 | msbuild.wrn 31 | 32 | # Visual Studio 2015 33 | .vs/ -------------------------------------------------------------------------------- /WiredBrainCoffee.Models/Extras.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace WiredBrainCoffee.Models 7 | { 8 | public class Extras 9 | { 10 | public string Milk { get; set; } 11 | public string Flavor { get; set; } 12 | public CreamerOptions Creamer { get; set; } 13 | public string Topping { get; set; } 14 | public string Notes { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/App.razor: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Sorry, there's nothing at this address.

9 |
10 |
11 |
12 |
-------------------------------------------------------------------------------- /WiredBrainCoffee.Api/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "profiles": { 4 | "WiredBrainCoffee.Api": { 5 | "commandName": "Project", 6 | "dotnetRunMessages": "true", 7 | "launchBrowser": true, 8 | "launchUrl": "swagger", 9 | "applicationUrl": "https://localhost:3001;http://localhost:3000", 10 | "environmentVariables": { 11 | "ASPNETCORE_ENVIRONMENT": "Development" 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Components/ContactInfo.razor: -------------------------------------------------------------------------------- 1 | @namespace WiredBrainCoffeeClient.Components 2 | 3 |
4 |

Contact Details

5 |

6 | 1234 Wired Brain Blvd 7 |
Awesome City, MM 55555 8 |
9 |

10 |

11 | Phone: (555) 456-7890
12 | Hours: Monday - Friday: 6:00 AM to 9:00 PM 13 |

14 | 15 |
16 | 17 | @code { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "WiredBrainCoffee.Client": { 4 | "commandName": "Project", 5 | "dotnetRunMessages": "true", 6 | "launchBrowser": true, 7 | "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", 8 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 9 | "environmentVariables": { 10 | "ASPNETCORE_ENVIRONMENT": "Development" 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Services/EmailService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using WiredBrainCoffee.Models; 6 | 7 | namespace WiredBrainCoffee.Services 8 | { 9 | public static class EmailService 10 | { 11 | public static void SendEmail(Contact contact) 12 | { 13 | // Todo 14 | } 15 | 16 | public static void SendEmail(string address) 17 | { 18 | // Todo 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/sample-data/weather.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "date": "2018-05-06", 4 | "temperatureC": 1, 5 | "summary": "Freezing" 6 | }, 7 | { 8 | "date": "2018-05-07", 9 | "temperatureC": 14, 10 | "summary": "Bracing" 11 | }, 12 | { 13 | "date": "2018-05-08", 14 | "temperatureC": -13, 15 | "summary": "Freezing" 16 | }, 17 | { 18 | "date": "2018-05-09", 19 | "temperatureC": -16, 20 | "summary": "Balmy" 21 | }, 22 | { 23 | "date": "2018-05-10", 24 | "temperatureC": -2, 25 | "summary": "Chilly" 26 | } 27 | ] 28 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Shared/SurveyPrompt.razor: -------------------------------------------------------------------------------- 1 | 11 | 12 | @code { 13 | // Demonstrates how a parent component can supply parameters 14 | [Parameter] 15 | public string Title { get; set; } 16 | } 17 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Api/WiredBrainCoffee.Api.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Models/Order.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace WiredBrainCoffee.Models 7 | { 8 | public class Order 9 | { 10 | public int OrderNumber { get; set; } 11 | public string PromoCode { get; set; } 12 | public List Items { get; set; } = new List(); 13 | public DateTime Created { get; set; } 14 | public decimal Total 15 | { 16 | get 17 | { 18 | return Items.Sum(x => x.Price); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Pages/ContactConfirmation.razor: -------------------------------------------------------------------------------- 1 | @page "/contact-confirmation" 2 | @inject NavigationManager NavManager 3 |
4 |
5 |

Thank you!

6 |
7 |
8 |
9 |

A customer service rep will respond to you shortly. We try our best to get back to you within 24 hours.

10 |
11 |
12 | 13 |
14 |
15 |
16 |
17 | @code { 18 | } 19 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/_Imports.razor: -------------------------------------------------------------------------------- 1 | @using System.Net.Http 2 | @using System.Net.Http.Json 3 | @using Microsoft.AspNetCore.Components.Forms 4 | @using Microsoft.AspNetCore.Components.Routing 5 | @using Microsoft.AspNetCore.Components.Web 6 | @using Microsoft.AspNetCore.Components.Web.Virtualization 7 | @using Microsoft.AspNetCore.Components.WebAssembly.Http 8 | @using Microsoft.JSInterop 9 | @using WiredBrainCoffee.Client 10 | @using WiredBrainCoffee.Client.Shared 11 | @using Blazorise 12 | @using Blazored.Modal 13 | @using Blazored.Modal.Services 14 | @using WiredBrainCoffee.Models 15 | @using WiredBrainCoffeeClient.Components 16 | @using WiredBrainCoffee.Services -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Components/MailingList.razor: -------------------------------------------------------------------------------- 1 | @namespace WiredBrainCoffeeClient.Components 2 |
3 |

Keep in Touch

4 |

Sign up for our mailing list - no spam, we promise.

5 |
6 |
7 | 8 |
9 |
10 | 11 |
12 |
13 |
14 | 15 | 16 | @code { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Models/MenuItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace WiredBrainCoffee.Models 7 | { 8 | public class MenuItem 9 | { 10 | public int Id { get; set; } 11 | public string Slug { get; set; } 12 | public string Name { get; set; } 13 | public string Summary { get; set; } 14 | public string Description { get; set; } 15 | public string ImageFile { get; set; } 16 | public decimal Price { get; set; } 17 | public string Category { get; set; } 18 | public Extras Extras { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Models/Contact.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using System.Net.Http; 7 | 8 | namespace WiredBrainCoffee.Models 9 | { 10 | public class Contact 11 | { 12 | public string Name { get; set; } 13 | 14 | public string Phone { get; set; } 15 | 16 | public string Email { get; set; } 17 | 18 | public string Message { get; set; } 19 | 20 | public ContactReason Reason { get; set; } 21 | 22 | public List AttachedFiles { get; set; } = new List(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Pages/OrderConfirmation.razor: -------------------------------------------------------------------------------- 1 | @page "/order-confirmation" 2 | @using WiredBrainCoffee.Models 3 | 4 |
5 |
6 |
7 |
8 |

Thank you!

9 |

Your order will be ready soon. You can pick up your items at one of our convenient caffeine stations.

10 |

Interested in faster ordering? Be sure to download our app for all the very best service.

11 |
12 |
13 | 14 |
15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Api/Controllers/IngredientsController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using Microsoft.Extensions.Logging; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | 8 | namespace WiredBrainCoffee.Api.Controllers 9 | { 10 | [ApiController] 11 | [Route("[controller]")] 12 | public class IngredientsController : ControllerBase 13 | { 14 | private readonly ILogger _logger; 15 | 16 | public IngredientsController(ILogger logger) 17 | { 18 | _logger = logger; 19 | } 20 | 21 | [HttpGet] 22 | public IActionResult Get() 23 | { 24 | // Todo 25 | return Ok(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Api/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Hosting; 2 | using Microsoft.Extensions.Configuration; 3 | using Microsoft.Extensions.Hosting; 4 | using Microsoft.Extensions.Logging; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Threading.Tasks; 9 | 10 | namespace WiredBrainCoffee.Api 11 | { 12 | public class Program 13 | { 14 | public static void Main(string[] args) 15 | { 16 | CreateHostBuilder(args).Build().Run(); 17 | } 18 | 19 | public static IHostBuilder CreateHostBuilder(string[] args) => 20 | Host.CreateDefaultBuilder(args) 21 | .ConfigureWebHostDefaults(webBuilder => 22 | { 23 | webBuilder.UseStartup(); 24 | }); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Components/MenuListItem.razor: -------------------------------------------------------------------------------- 1 | @namespace WiredBrainCoffeeClient.Components 2 | @using WiredBrainCoffee.Models 3 | 4 | 17 | 18 | @code { 19 | [Parameter] 20 | public MenuItem MenuItem { get; set; } = new MenuItem(); 21 | 22 | [Parameter] 23 | public EventCallback OnClickCallback { get; set; } 24 | } 25 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/WiredBrainCoffee.Client.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/app.css: -------------------------------------------------------------------------------- 1 | @import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); 2 | 3 | html, body { 4 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 5 | } 6 | 7 | a, .btn-link { 8 | color: #0366d6; 9 | } 10 | 11 | .btn-primary { 12 | color: #fff; 13 | background-color: #1b6ec2; 14 | border-color: #1861ac; 15 | } 16 | 17 | .content { 18 | padding-top: 1.1rem; 19 | } 20 | 21 | .valid.modified:not([type=checkbox]) { 22 | outline: 1px solid #26b050; 23 | } 24 | 25 | .invalid { 26 | outline: 1px solid red; 27 | } 28 | 29 | .validation-message { 30 | color: red; 31 | } 32 | 33 | #blazor-error-ui { 34 | background: lightyellow; 35 | bottom: 0; 36 | box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); 37 | display: none; 38 | left: 0; 39 | padding: 0.6rem 1.25rem 0.7rem 1.25rem; 40 | position: fixed; 41 | width: 100%; 42 | z-index: 1000; 43 | } 44 | 45 | #blazor-error-ui .dismiss { 46 | cursor: pointer; 47 | position: absolute; 48 | right: 0.75rem; 49 | top: 0.5rem; 50 | } 51 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Components/OrderListItem.razor: -------------------------------------------------------------------------------- 1 | @namespace WiredBrainCoffeeClient.Components 2 | @using WiredBrainCoffee.Models 3 | 4 |
5 |
6 | @OrderItem.Name@OrderItem.Price.ToString("C") 7 |
8 | @if (OrderItem.Extras != null) 9 | { 10 |
    11 |
  • Milk:@OrderItem.Extras.Milk
  • 12 |
  • Creamer:@OrderItem.Extras.Creamer
  • 13 |
  • Flavor:@OrderItem.Extras.Flavor
  • 14 |
  • Topping:@OrderItem.Extras.Topping
  • 15 |
  • Notes:@OrderItem.Extras.Notes
  • 16 |
17 | } 18 |
Remove
19 |
20 | 21 | @code { 22 | [Parameter] 23 | public OrderItem OrderItem { get; set; } 24 | 25 | [Parameter] 26 | public EventCallback OnClickCallback { get; set; } 27 | } 28 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/open-iconic/ICON-LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Waybury 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/wiredbrain.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:54px;background-color:#f1efee !important;padding-bottom:0}.body-content{padding-left:15px;padding-right:15px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}#qrCode{margin:15px}@media screen and (max-width:767px){.carousel-caption{display:none}}@media(min-width:992px){body{padding-top:56px}}.carousel-caption{position:absolute;right:0;bottom:0;left:0;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;background:#000;text-align:center}.portfolio-item{margin-bottom:30px}.card-image{width:100%;height:250px}.bg-ground{background-image:url("../images/ground.jpg");background-size:cover}.bg-bagel{background-image:url("../images/bagel.jpg");background-size:cover;background-position-y:-75px}.bg-table{background-image:url("../images/table.jpg");background-size:cover;background-position-y:-110px}.carousel-item{height:65vh;min-height:300px;background:no-repeat center center scroll;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover}.card-title a{color:#353a40}.portfolio-item img{width:100%;max-height:300px}.field-validation-error{color:#f00}.contact-container{min-height:500px} -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Shared/NavMenu.razor.css: -------------------------------------------------------------------------------- 1 | .navbar-toggler { 2 | background-color: rgba(255, 255, 255, 0.1); 3 | } 4 | 5 | .top-row { 6 | height: 3.5rem; 7 | background-color: rgba(0,0,0,0.4); 8 | } 9 | 10 | .navbar-brand { 11 | font-size: 1.1rem; 12 | } 13 | 14 | .oi { 15 | width: 2rem; 16 | font-size: 1.1rem; 17 | vertical-align: text-top; 18 | top: -2px; 19 | } 20 | 21 | .nav-item { 22 | font-size: 0.9rem; 23 | padding-bottom: 0.5rem; 24 | } 25 | 26 | .nav-item:first-of-type { 27 | padding-top: 1rem; 28 | } 29 | 30 | .nav-item:last-of-type { 31 | padding-bottom: 1rem; 32 | } 33 | 34 | .nav-item ::deep a { 35 | color: #d7d7d7; 36 | border-radius: 4px; 37 | height: 3rem; 38 | display: flex; 39 | align-items: center; 40 | line-height: 3rem; 41 | } 42 | 43 | .nav-item ::deep a.active { 44 | background-color: rgba(255,255,255,0.25); 45 | color: white; 46 | } 47 | 48 | .nav-item ::deep a:hover { 49 | background-color: rgba(255,255,255,0.1); 50 | color: white; 51 | } 52 | 53 | @media (min-width: 641px) { 54 | .navbar-toggler { 55 | display: none; 56 | } 57 | 58 | .collapse { 59 | /* Never collapse the sidebar for wide screens */ 60 | display: block; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Shared/NavMenu.razor: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 26 |
27 | 28 | @code { 29 | private bool collapseNavMenu = true; 30 | 31 | private string NavMenuCssClass => collapseNavMenu ? "collapse" : null; 32 | 33 | private void ToggleNavMenu() 34 | { 35 | collapseNavMenu = !collapseNavMenu; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Api/Controllers/ContactController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Hosting; 2 | using Microsoft.AspNetCore.Http; 3 | using Microsoft.AspNetCore.Mvc; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.IO; 7 | using System.Linq; 8 | using System.Net.Http.Headers; 9 | using System.Threading.Tasks; 10 | using WiredBrainCoffee.Models; 11 | 12 | namespace WiredBrainCoffee.Api.Controllers 13 | { 14 | [ApiController] 15 | [Route("[controller]")] 16 | public class ContactController : Controller 17 | { 18 | private readonly IWebHostEnvironment webHostEnvironment; 19 | 20 | public ContactController(IWebHostEnvironment webHostEnvironment) 21 | { 22 | this.webHostEnvironment = webHostEnvironment; 23 | } 24 | 25 | [HttpPost()] 26 | public void Post(Contact contact) 27 | { 28 | // Todo: Save contact info to the database 29 | 30 | // Write uploaded files to images directory 31 | foreach(var file in contact.AttachedFiles) 32 | { 33 | var path = $"{webHostEnvironment.ContentRootPath}\\images\\{file.FileName}"; 34 | var fs = System.IO.File.Create(path); 35 | fs.Write(file.FileContent, 0, file.FileContent.Length); 36 | fs.Close(); 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Services/ContactService.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Components.Forms; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Net.Http; 6 | using System.Net.Http.Json; 7 | using System.Threading.Tasks; 8 | using WiredBrainCoffee.Models; 9 | 10 | namespace WiredBrainCoffee.Services 11 | { 12 | public class ContactService : IContactService 13 | { 14 | private readonly HttpClient http; 15 | 16 | public ContactService(HttpClient http) 17 | { 18 | this.http = http; 19 | } 20 | 21 | public async Task PostContact(Contact contact) 22 | { 23 | await http.PostAsJsonAsync("contact", contact); 24 | } 25 | 26 | public async Task PostContact(Contact contact, 27 | IReadOnlyList attachedFiles) 28 | { 29 | foreach(var file in attachedFiles) 30 | { 31 | var buffer = new byte[file.Size]; 32 | await file.OpenReadStream().ReadAsync(buffer); 33 | 34 | contact.AttachedFiles.Add(new UploadedFile() 35 | { 36 | FileName = file.Name, 37 | FileContent = buffer 38 | }); 39 | } 40 | 41 | await http.PostAsJsonAsync("contact", contact); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Shared/MainLayout.razor.css: -------------------------------------------------------------------------------- 1 | .page { 2 | position: relative; 3 | display: flex; 4 | flex-direction: column; 5 | } 6 | 7 | .main { 8 | flex: 1; 9 | } 10 | 11 | .sidebar { 12 | background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); 13 | } 14 | 15 | .top-row { 16 | background-color: #f7f7f7; 17 | border-bottom: 1px solid #d6d5d5; 18 | justify-content: flex-end; 19 | height: 3.5rem; 20 | display: flex; 21 | align-items: center; 22 | } 23 | 24 | .top-row ::deep a, .top-row .btn-link { 25 | white-space: nowrap; 26 | margin-left: 1.5rem; 27 | } 28 | 29 | .top-row a:first-child { 30 | overflow: hidden; 31 | text-overflow: ellipsis; 32 | } 33 | 34 | @media (max-width: 640.98px) { 35 | .top-row:not(.auth) { 36 | display: none; 37 | } 38 | 39 | .top-row.auth { 40 | justify-content: space-between; 41 | } 42 | 43 | .top-row a, .top-row .btn-link { 44 | margin-left: 0; 45 | } 46 | } 47 | 48 | @media (min-width: 641px) { 49 | .page { 50 | flex-direction: row; 51 | } 52 | 53 | .sidebar { 54 | width: 250px; 55 | height: 100vh; 56 | position: sticky; 57 | top: 0; 58 | } 59 | 60 | .top-row { 61 | position: sticky; 62 | top: 0; 63 | z-index: 1; 64 | } 65 | 66 | .main > div { 67 | padding-left: 2rem !important; 68 | padding-right: 1.5rem !important; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Services/MenuService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Net.Http; 5 | using System.Net.Http.Json; 6 | using System.Threading.Tasks; 7 | using WiredBrainCoffee.Models; 8 | 9 | namespace WiredBrainCoffee.Services 10 | { 11 | public class MenuService : IMenuService 12 | { 13 | private readonly HttpClient http; 14 | 15 | public MenuService(HttpClient http) 16 | { 17 | this.http = http; 18 | } 19 | 20 | public async Task> GetMenuItems() 21 | { 22 | var menuItems = await http.GetFromJsonAsync("menu"); 23 | return menuItems.ToList(); 24 | } 25 | 26 | public List GetPopularItems() 27 | { 28 | return new List() 29 | { 30 | new MenuItem() 31 | { 32 | Name = "Mocha Latte", 33 | Summary = "Half coffee, half treat - the perfect combo." 34 | }, 35 | new MenuItem() 36 | { 37 | Name = "Raspberry Coffee", 38 | Summary = "A fresh blend with a refreshing taste" 39 | }, 40 | new MenuItem() 41 | { 42 | Name = "Peppermint Hot Chocolate", 43 | Summary = "So good, you'll be glad it's cold outside." 44 | }, 45 | new MenuItem() 46 | { 47 | Name = "Green Tea", 48 | Summary = "It's classic for a reason" 49 | } 50 | }; 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Api/Controllers/AdminController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using Microsoft.Extensions.Logging; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using WiredBrainCoffee.Models; 8 | 9 | namespace WiredBrainCoffee.Api.Controllers 10 | { 11 | [ApiController] 12 | [Route("[controller]")] 13 | public class AdminController : ControllerBase 14 | { 15 | private readonly ILogger _logger; 16 | 17 | public AdminController(ILogger logger) 18 | { 19 | _logger = logger; 20 | } 21 | 22 | [HttpGet("/order-history")] 23 | public IActionResult Get() 24 | { 25 | var orderHistory = new List(); 26 | 27 | var sampleItems = new List() 28 | { 29 | "Latte", 30 | "Cappucino", 31 | "Cookies", 32 | "Coffee", 33 | "Cupcake", 34 | "Fuit Cup", 35 | "Bagel", 36 | "Granola", 37 | "Americano", 38 | "Pumpkin Bread" 39 | }; 40 | 41 | Random rnd = new Random(); 42 | for (int i = 0; i < 1000; i++) 43 | { 44 | orderHistory.Add(new Order() 45 | { 46 | Created = DateTime.Now, 47 | OrderNumber = rnd.Next(1000, 10000), 48 | PromoCode = "None", 49 | Items = new List() { new OrderItem() { Name = sampleItems[rnd.Next(0, 9)] } } 50 | }); 51 | } 52 | 53 | // Todo 54 | return Ok(orderHistory); 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Program.cs: -------------------------------------------------------------------------------- 1 | using Blazorise; 2 | using Blazorise.Bootstrap; 3 | using Microsoft.AspNetCore.Components.WebAssembly.Hosting; 4 | using Blazorise.Icons.FontAwesome; 5 | using Microsoft.Extensions.Configuration; 6 | using Microsoft.Extensions.DependencyInjection; 7 | using Microsoft.Extensions.Logging; 8 | using System; 9 | using System.Collections.Generic; 10 | using System.Net.Http; 11 | using System.Text; 12 | using System.Threading.Tasks; 13 | using Blazored.Modal; 14 | using WiredBrainCoffee.Services; 15 | 16 | namespace WiredBrainCoffee.Client 17 | { 18 | public class Program 19 | { 20 | public static async Task Main(string[] args) 21 | { 22 | var builder = WebAssemblyHostBuilder.CreateDefault(args); 23 | builder.RootComponents.Add("#app"); 24 | 25 | builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); 26 | builder.Services.AddBlazoredModal(); 27 | builder.Services.AddBlazorise(options => 28 | { 29 | options.ChangeTextOnKeyPress = true; 30 | }) 31 | .AddBootstrapProviders() 32 | .AddFontAwesomeIcons(); 33 | 34 | builder.Services.AddHttpClient(client => 35 | client.BaseAddress = new Uri("https://localhost:3001/")); 36 | builder.Services.AddHttpClient(client => 37 | client.BaseAddress = new Uri("https://localhost:3001/")); 38 | 39 | var host = builder.Build(); 40 | 41 | host.Services 42 | .UseBootstrapProviders() 43 | .UseFontAwesomeIcons(); 44 | 45 | await host.RunAsync(); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Pages/AdminDashboard.razor: -------------------------------------------------------------------------------- 1 | @page "/admin" 2 | 3 | @inject NavigationManager NavManager 4 | 5 |
6 |
7 |
8 |
9 |
    10 |
  • Order History
  • 11 |
  • Manage Menu
  • 12 |
  • Contact History
  • 13 |
  • Settings
  • 14 |
  • Feedback
  • 15 |
16 |
17 |
18 |

Order History:

19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | @for (int i = 0; i < 1000; i++) 31 | { 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | } 40 | 41 |
#ItemsNotesTotalDate
1CoffeeLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.$5.00@DateTime.Now
42 |
43 |
44 |
45 |
46 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Api/Startup.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Builder; 2 | using Microsoft.AspNetCore.Hosting; 3 | using Microsoft.AspNetCore.HttpsPolicy; 4 | using Microsoft.AspNetCore.Mvc; 5 | using Microsoft.Extensions.Configuration; 6 | using Microsoft.Extensions.DependencyInjection; 7 | using Microsoft.Extensions.Hosting; 8 | using Microsoft.Extensions.Logging; 9 | using Microsoft.OpenApi.Models; 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Linq; 13 | using System.Threading.Tasks; 14 | 15 | namespace WiredBrainCoffee.Api 16 | { 17 | public class Startup 18 | { 19 | public Startup(IConfiguration configuration) 20 | { 21 | Configuration = configuration; 22 | } 23 | 24 | public IConfiguration Configuration { get; } 25 | 26 | // This method gets called by the runtime. Use this method to add services to the container. 27 | public void ConfigureServices(IServiceCollection services) 28 | { 29 | 30 | services.AddControllers(); 31 | services.AddSwaggerGen(c => 32 | { 33 | c.SwaggerDoc("v1", new OpenApiInfo { Title = "WiredBrainCoffee.Api", Version = "v1" }); 34 | }); 35 | } 36 | 37 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 38 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 39 | { 40 | if (env.IsDevelopment()) 41 | { 42 | app.UseDeveloperExceptionPage(); 43 | app.UseSwagger(); 44 | app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WiredBrainCoffee.Api v1")); 45 | } 46 | 47 | app.UseHttpsRedirection(); 48 | 49 | app.UseRouting(); 50 | 51 | app.UseAuthorization(); 52 | 53 | app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()); 54 | 55 | app.UseEndpoints(endpoints => 56 | { 57 | endpoints.MapControllers(); 58 | }); 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | WiredBrainCoffee.Client 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
Loading...
22 | 23 |
24 | An unhandled error has occurred. 25 | Reload 26 | 🗙 27 |
28 | 29 | 30 | 31 | 32 | 33 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Shared/MainLayout.razor: -------------------------------------------------------------------------------- 1 | @inherits LayoutComponentBase 2 | 3 | 27 | 28 | @Body 29 | 30 | 31 |
32 |
33 |
34 |
35 |

Copyright © Wired Brain

36 |
37 |
38 |

Contact Info:

39 |

Phone: 555-555-1234
Address: 1234 Test
Email: Care@WiredBrain.com

40 |
41 |
42 |

Coffee Fact of the Day

43 |

More cups of coffee are drank every day than there are people on earth. (May not be true)

44 |
45 |
46 |
47 |
-------------------------------------------------------------------------------- /WiredBrainCoffee.Client.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30509.190 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WiredBrainCoffee.Client", "WiredBrainCoffee.Client\WiredBrainCoffee.Client.csproj", "{FC97BD6B-55BC-4A3F-AC77-D9719541382E}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WiredBrainCoffee.Api", "WiredBrainCoffee.Api\WiredBrainCoffee.Api.csproj", "{D95E9C5B-6D86-4901-9E00-7F21D86F9B26}" 9 | EndProject 10 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WiredBrainCoffee.Models", "WiredBrainCoffee.Models\WiredBrainCoffee.Models.csproj", "{1659F021-5D2E-45B2-8A5D-6D86EB27C226}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Release|Any CPU = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {FC97BD6B-55BC-4A3F-AC77-D9719541382E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {FC97BD6B-55BC-4A3F-AC77-D9719541382E}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {FC97BD6B-55BC-4A3F-AC77-D9719541382E}.Release|Any CPU.ActiveCfg = Release|Any CPU 21 | {FC97BD6B-55BC-4A3F-AC77-D9719541382E}.Release|Any CPU.Build.0 = Release|Any CPU 22 | {D95E9C5B-6D86-4901-9E00-7F21D86F9B26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {D95E9C5B-6D86-4901-9E00-7F21D86F9B26}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {D95E9C5B-6D86-4901-9E00-7F21D86F9B26}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {D95E9C5B-6D86-4901-9E00-7F21D86F9B26}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {1659F021-5D2E-45B2-8A5D-6D86EB27C226}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {1659F021-5D2E-45B2-8A5D-6D86EB27C226}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {1659F021-5D2E-45B2-8A5D-6D86EB27C226}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {1659F021-5D2E-45B2-8A5D-6D86EB27C226}.Release|Any CPU.Build.0 = Release|Any CPU 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | GlobalSection(ExtensibilityGlobals) = postSolution 35 | SolutionGuid = {8BC741BB-9417-4A96-B41D-A732DE4A4A6E} 36 | EndGlobalSection 37 | EndGlobal 38 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Pages/Order.razor: -------------------------------------------------------------------------------- 1 | @page "/order" 2 | 3 |
4 |
5 |
6 |
7 |

New Order

8 |

Coffee, comfort food, great prices - we have it all.

9 |
10 |
11 |
12 |
13 |
14 | 22 |
23 | 29 | 35 |
36 |
37 |
38 |
39 |

Your Current Order:

40 | @foreach (var item in CurrentOrder) 41 | { 42 | 43 | } 44 |
45 |

Sales Tax:@((OrderTotal * SalesTax).ToString("C"))

46 |

Your Total:@((OrderTotal + (SalesTax * OrderTotal)).ToString("C"))

47 |
48 |
49 |

Gift cards or coupons? Enter them here.

50 | 51 | 52 |
53 | 54 |
55 |
56 |
57 |
58 |
59 |
60 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Components/CoffeeExtrasModal.razor: -------------------------------------------------------------------------------- 1 | @namespace WiredBrainCoffeeClient.Components 2 | @using WiredBrainCoffee.Models 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 | @code { 52 | 53 | [CascadingParameter] BlazoredModalInstance BlazoredModal { get; set; } 54 | 55 | public Extras Extras = new Extras() 56 | { 57 | Milk = "None", 58 | Flavor = "None", 59 | Notes = "", 60 | Topping = "None" 61 | }; 62 | 63 | void SubmitForm() 64 | { 65 | BlazoredModal.Close(ModalResult.Ok(Extras)); 66 | } 67 | 68 | void Cancel() 69 | { 70 | BlazoredModal.Cancel(); 71 | } 72 | } -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Pages/ContactForm.razor: -------------------------------------------------------------------------------- 1 | @page "/Contact" 2 | @using System.Net.Http; 3 | 4 | @inject NavigationManager NavManager 5 | @inject IContactService ContactService 6 | 7 |
8 |
9 |
10 |
11 |

Contact Us

12 |

We'd love to hear from you! We try our best to respond within 24 hours.

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 | @code { 55 | public Contact Contact = new Contact(); 56 | 57 | private async void HandleValidSubmit() 58 | { 59 | await ContactService.PostContact(Contact); 60 | NavManager.NavigateTo("contact-confirmation"); 61 | } 62 | } -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Pages/Order.razor.cs: -------------------------------------------------------------------------------- 1 | using Blazored.Modal.Services; 2 | using Microsoft.AspNetCore.Components; 3 | using Microsoft.JSInterop; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Threading.Tasks; 8 | using WiredBrainCoffee.Models; 9 | using WiredBrainCoffee.Services; 10 | using WiredBrainCoffeeClient.Components; 11 | 12 | namespace WiredBrainCoffee.Client.Pages 13 | { 14 | public partial class Order 15 | { 16 | [Inject] 17 | public IMenuService MenuService { get; set; } 18 | 19 | [Inject] 20 | public NavigationManager NavManager { get; set; } 21 | 22 | [CascadingParameter] 23 | public IModalService Modal { get; set; } 24 | 25 | public List CurrentOrder { get; set; } = new List(); 26 | public List FoodMenuItems { get; set; } = new List(); 27 | public List CoffeeMenuItems { get; set; } = new List(); 28 | public decimal OrderTotal { get; set; } = 0; 29 | public decimal SalesTax { get; set; } = 0.06m; 30 | public string PromoCode { get; set; } = ""; 31 | public bool IsValidPromoCode { get; set; } = true; 32 | public bool FoodTabHidden { get; set; } = true; 33 | public bool CoffeeTabHidden { get; set; } = false; 34 | 35 | public void ShowCoffee() 36 | { 37 | CoffeeTabHidden = false; 38 | FoodTabHidden = true; 39 | } 40 | 41 | public void ShowFood() 42 | { 43 | CoffeeTabHidden = true; 44 | FoodTabHidden = false; 45 | } 46 | 47 | async Task AddExtras(MenuItem item) 48 | { 49 | item.Extras = new Extras(); 50 | var formModal = Modal.Show("Enhance Your Coffee"); 51 | var result = await formModal.Result; 52 | 53 | if (!result.Cancelled) 54 | { 55 | item.Extras = (Extras)result.Data; 56 | AddToOrder(item); 57 | } 58 | } 59 | 60 | public void AddToOrder(MenuItem item) 61 | { 62 | CurrentOrder.Add(new OrderItem() 63 | { 64 | Name = item.Name, 65 | Id = item.Id, 66 | Price = item.Price, 67 | Extras = item.Extras 68 | }); 69 | 70 | OrderTotal += item.Price; 71 | } 72 | 73 | public void RemoveFromOrder(OrderItem item) 74 | { 75 | CurrentOrder.Remove(item); 76 | OrderTotal -= item.Price; 77 | } 78 | 79 | public async Task PlaceOrder() 80 | { 81 | NavManager.NavigateTo("order-confirmation"); 82 | } 83 | 84 | protected async override Task OnInitializedAsync() 85 | { 86 | var menuItems = await MenuService.GetMenuItems(); 87 | 88 | FoodMenuItems = menuItems.Where(x => x.Category == "Food").ToList(); 89 | CoffeeMenuItems = menuItems.Where(x => x.Category == "Coffee").ToList(); 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/debug.log: -------------------------------------------------------------------------------- 1 | [1101/155957.392:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 2 | [1101/164530.121:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 3 | [1101/170112.535:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 4 | [1101/183203.316:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 5 | [1101/190053.135:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 6 | [1102/190053.137:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 7 | [1103/190053.138:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 8 | [1104/190054.533:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 9 | [1105/190054.534:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 10 | [1106/190054.560:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 11 | [1107/190054.561:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 12 | [1108/184505.163:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 13 | [1108/213244.934:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 14 | [1108/220940.556:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 15 | [1108/223006.003:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 16 | [1109/223006.005:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 17 | [1110/225138.092:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 18 | [1116/190245.470:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 19 | [1116/221954.932:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 20 | [1120/211339.534:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 21 | [1121/215156.253:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 22 | [1121/221748.199:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 23 | [1124/115101.703:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 24 | [1124/211441.765:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 25 | [1124/221544.717:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 26 | [1125/151202.158:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 27 | [1125/154739.170:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 28 | [1125/203325.413:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) 29 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/open-iconic/README.md: -------------------------------------------------------------------------------- 1 | [Open Iconic v1.1.1](http://useiconic.com/open) 2 | =========== 3 | 4 | ### Open Iconic is the open source sibling of [Iconic](http://useiconic.com). It is a hyper-legible collection of 223 icons with a tiny footprint—ready to use with Bootstrap and Foundation. [View the collection](http://useiconic.com/open#icons) 5 | 6 | 7 | 8 | ## What's in Open Iconic? 9 | 10 | * 223 icons designed to be legible down to 8 pixels 11 | * Super-light SVG files - 61.8 for the entire set 12 | * SVG sprite—the modern replacement for icon fonts 13 | * Webfont (EOT, OTF, SVG, TTF, WOFF), PNG and WebP formats 14 | * Webfont stylesheets (including versions for Bootstrap and Foundation) in CSS, LESS, SCSS and Stylus formats 15 | * PNG and WebP raster images in 8px, 16px, 24px, 32px, 48px and 64px. 16 | 17 | 18 | ## Getting Started 19 | 20 | #### For code samples and everything else you need to get started with Open Iconic, check out our [Icons](http://useiconic.com/open#icons) and [Reference](http://useiconic.com/open#reference) sections. 21 | 22 | ### General Usage 23 | 24 | #### Using Open Iconic's SVGs 25 | 26 | We like SVGs and we think they're the way to display icons on the web. Since Open Iconic are just basic SVGs, we suggest you display them like you would any other image (don't forget the `alt` attribute). 27 | 28 | ``` 29 | icon name 30 | ``` 31 | 32 | #### Using Open Iconic's SVG Sprite 33 | 34 | Open Iconic also comes in a SVG sprite which allows you to display all the icons in the set with a single request. It's like an icon font, without being a hack. 35 | 36 | Adding an icon from an SVG sprite is a little different than what you're used to, but it's still a piece of cake. *Tip: To make your icons easily style able, we suggest adding a general class to the* `` *tag and a unique class name for each different icon in the* `` *tag.* 37 | 38 | ``` 39 | 40 | 41 | 42 | ``` 43 | 44 | Sizing icons only needs basic CSS. All the icons are in a square format, so just set the `` tag with equal width and height dimensions. 45 | 46 | ``` 47 | .icon { 48 | width: 16px; 49 | height: 16px; 50 | } 51 | ``` 52 | 53 | Coloring icons is even easier. All you need to do is set the `fill` rule on the `` tag. 54 | 55 | ``` 56 | .icon-account-login { 57 | fill: #f00; 58 | } 59 | ``` 60 | 61 | To learn more about SVG Sprites, read [Chris Coyier's guide](http://css-tricks.com/svg-sprites-use-better-icon-fonts/). 62 | 63 | #### Using Open Iconic's Icon Font... 64 | 65 | 66 | ##### …with Bootstrap 67 | 68 | You can find our Bootstrap stylesheets in `font/css/open-iconic-bootstrap.{css, less, scss, styl}` 69 | 70 | 71 | ``` 72 | 73 | ``` 74 | 75 | 76 | ``` 77 | 78 | ``` 79 | 80 | ##### …with Foundation 81 | 82 | You can find our Foundation stylesheets in `font/css/open-iconic-foundation.{css, less, scss, styl}` 83 | 84 | ``` 85 | 86 | ``` 87 | 88 | 89 | ``` 90 | 91 | ``` 92 | 93 | ##### …on its own 94 | 95 | You can find our default stylesheets in `font/css/open-iconic.{css, less, scss, styl}` 96 | 97 | ``` 98 | 99 | ``` 100 | 101 | ``` 102 | 103 | ``` 104 | 105 | 106 | ## License 107 | 108 | ### Icons 109 | 110 | All code (including SVG markup) is under the [MIT License](http://opensource.org/licenses/MIT). 111 | 112 | ### Fonts 113 | 114 | All fonts are under the [SIL Licensed](http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web). 115 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/open-iconic/FONT-LICENSE: -------------------------------------------------------------------------------- 1 | SIL OPEN FONT LICENSE Version 1.1 2 | 3 | Copyright (c) 2014 Waybury 4 | 5 | PREAMBLE 6 | The goals of the Open Font License (OFL) are to stimulate worldwide 7 | development of collaborative font projects, to support the font creation 8 | efforts of academic and linguistic communities, and to provide a free and 9 | open framework in which fonts may be shared and improved in partnership 10 | with others. 11 | 12 | The OFL allows the licensed fonts to be used, studied, modified and 13 | redistributed freely as long as they are not sold by themselves. The 14 | fonts, including any derivative works, can be bundled, embedded, 15 | redistributed and/or sold with any software provided that any reserved 16 | names are not used by derivative works. The fonts and derivatives, 17 | however, cannot be released under any other type of license. The 18 | requirement for fonts to remain under this license does not apply 19 | to any document created using the fonts or their derivatives. 20 | 21 | DEFINITIONS 22 | "Font Software" refers to the set of files released by the Copyright 23 | Holder(s) under this license and clearly marked as such. This may 24 | include source files, build scripts and documentation. 25 | 26 | "Reserved Font Name" refers to any names specified as such after the 27 | copyright statement(s). 28 | 29 | "Original Version" refers to the collection of Font Software components as 30 | distributed by the Copyright Holder(s). 31 | 32 | "Modified Version" refers to any derivative made by adding to, deleting, 33 | or substituting -- in part or in whole -- any of the components of the 34 | Original Version, by changing formats or by porting the Font Software to a 35 | new environment. 36 | 37 | "Author" refers to any designer, engineer, programmer, technical 38 | writer or other person who contributed to the Font Software. 39 | 40 | PERMISSION & CONDITIONS 41 | Permission is hereby granted, free of charge, to any person obtaining 42 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 43 | redistribute, and sell modified and unmodified copies of the Font 44 | Software, subject to the following conditions: 45 | 46 | 1) Neither the Font Software nor any of its individual components, 47 | in Original or Modified Versions, may be sold by itself. 48 | 49 | 2) Original or Modified Versions of the Font Software may be bundled, 50 | redistributed and/or sold with any software, provided that each copy 51 | contains the above copyright notice and this license. These can be 52 | included either as stand-alone text files, human-readable headers or 53 | in the appropriate machine-readable metadata fields within text or 54 | binary files as long as those fields can be easily viewed by the user. 55 | 56 | 3) No Modified Version of the Font Software may use the Reserved Font 57 | Name(s) unless explicit written permission is granted by the corresponding 58 | Copyright Holder. This restriction only applies to the primary font name as 59 | presented to the users. 60 | 61 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 62 | Software shall not be used to promote, endorse or advertise any 63 | Modified Version, except to acknowledge the contribution(s) of the 64 | Copyright Holder(s) and the Author(s) or with their explicit written 65 | permission. 66 | 67 | 5) The Font Software, modified or unmodified, in part or in whole, 68 | must be distributed entirely under this license, and must not be 69 | distributed under any other license. The requirement for fonts to 70 | remain under this license does not apply to any document created 71 | using the Font Software. 72 | 73 | TERMINATION 74 | This license becomes null and void if any of the above conditions are 75 | not met. 76 | 77 | DISCLAIMER 78 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 79 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 80 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 81 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 82 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 83 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 84 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 85 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 86 | OTHER DEALINGS IN THE FONT SOFTWARE. 87 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/wiredbrain.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 54px; 3 | background-color: #F1EFEE !important; 4 | padding-bottom: 0px; 5 | font-family: "Arial"; 6 | color: #505050 7 | } 8 | 9 | .body-content { 10 | padding-left: 15px; 11 | padding-right: 15px; 12 | } 13 | 14 | .carousel-caption p { 15 | font-size: 20px; 16 | line-height: 1.4; 17 | } 18 | 19 | .carousel-inner .item img[src$=".svg"] { 20 | width: 100%; 21 | } 22 | 23 | #qrCode { 24 | margin: 15px; 25 | } 26 | 27 | @media screen and (max-width: 767px) { 28 | .carousel-caption { 29 | display: none; 30 | } 31 | } 32 | 33 | @media (min-width: 992px) { 34 | body { 35 | padding-top: 56px; 36 | } 37 | } 38 | 39 | .carousel-caption { 40 | position: absolute; 41 | right: 0; 42 | bottom: 0; 43 | left: 0; 44 | z-index: 10; 45 | padding-top: 20px; 46 | padding-bottom: 20px; 47 | color: white; 48 | background: black; 49 | text-align: center; 50 | } 51 | 52 | 53 | .portfolio-item { 54 | margin-bottom: 30px; 55 | } 56 | 57 | .card-image { 58 | width: 100%; 59 | height: 250px; 60 | } 61 | 62 | .bg-ground { 63 | background-image: url("../images/ground.jpg"); 64 | background-size: cover; 65 | } 66 | 67 | .bg-bagel { 68 | background-image: url("../images/bagel.jpg"); 69 | background-size: cover; 70 | background-position-y: -75px; 71 | } 72 | 73 | .bg-table { 74 | background-image: url("../images/table.jpg"); 75 | background-size: cover; 76 | background-position-y: -110px; 77 | } 78 | 79 | .card-title a { 80 | color: #353A40; 81 | } 82 | 83 | .portfolio-item img { 84 | width: 100%; 85 | max-height: 300px; 86 | } 87 | 88 | .field-validation-error { 89 | color: red; 90 | } 91 | 92 | .contact-container { 93 | min-height: 500px; 94 | } 95 | 96 | /* Menu Items */ 97 | .menu-item { 98 | background-color: #fff; 99 | display: flex; 100 | position: relative; 101 | padding: 10px 10px; 102 | border-bottom: 1px solid #ddd; 103 | border-left: 1px solid #ddd; 104 | border-right: 1px solid #ddd; 105 | } 106 | 107 | .menu-item-info { 108 | padding: 0 10px; 109 | flex-grow: 2; 110 | } 111 | 112 | .menu-item-actions { 113 | display: flex; 114 | justify-content: space-between 115 | } 116 | 117 | .menu-item img { 118 | width: 150px; 119 | display: block; 120 | } 121 | 122 | .current-order-list { 123 | margin: 25px 0; 124 | padding: 0; 125 | } 126 | 127 | .current-order-list li { 128 | display: flex; 129 | justify-content: space-between; 130 | padding: 10px 0; 131 | } 132 | 133 | a, .btn-link { 134 | color: #121212; 135 | } 136 | 137 | .order-page { 138 | min-height: 750px; 139 | margin: 25px 0; 140 | } 141 | 142 | .contact-form { 143 | margin: 25px 0; 144 | } 145 | 146 | .mobile-content { 147 | display: flex; 148 | justify-content: space-between; 149 | } 150 | 151 | .mobile-app { 152 | padding: 50px; 153 | margin-top: 10px; 154 | background: #fff; 155 | } 156 | 157 | .sub-line { 158 | text-align: right; 159 | } 160 | 161 | .remove-item { 162 | cursor: pointer; 163 | text-align: right; 164 | } 165 | 166 | .extra-row { 167 | display: flex; 168 | justify-content: space-between; 169 | } 170 | 171 | .add-extra { 172 | cursor: pointer; 173 | } 174 | 175 | .add-extra:hover { 176 | text-decoration: underline; 177 | } 178 | 179 | .order-wrapper { 180 | padding: 10px 5px; 181 | text-align: right; 182 | border-bottom: 1px solid #ccc; 183 | } 184 | 185 | .order-info { 186 | margin: 50px 0; 187 | } 188 | 189 | .order-item { 190 | display: flex; 191 | justify-content: space-between; 192 | padding: 5px 0; 193 | } 194 | 195 | .extras-list li { 196 | display: flex; 197 | justify-content: space-between; 198 | } 199 | 200 | .place-order { 201 | margin: 10px 0; 202 | } 203 | 204 | .page-wrapper { 205 | margin: 25px 0; 206 | min-height: 700px; 207 | } 208 | 209 | .valid.modified:not([type=checkbox]) { 210 | outline: none; 211 | } 212 | 213 | @media only screen and (min-width: 768px) { 214 | .blazored-modal { 215 | min-width: 500px; 216 | } 217 | } 218 | 219 | input[type="radio"] { 220 | margin-right: 10px; 221 | } 222 | 223 | .blazored-modal-container { 224 | z-index: 5000; 225 | } 226 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/Pages/Index.razor: -------------------------------------------------------------------------------- 1 | @page "/" 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | @code{ 14 | private string selectedSlide = "2"; 15 | } 16 |
17 |
18 |

Welcome to Live Reload.

19 |
20 |
21 |
22 |
23 |
24 |
25 |

Coffee

26 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod tenetur ex natus at dolorem enim! Nesciunt pariatur voluptatem sunt quam eaque, vel, non in id dolore voluptates quos eligendi labore.

27 |
28 | 31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |

Carbs

39 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod tenetur ex natus at dolorem enim! Nesciunt pariatur voluptatem sunt quam eaque, vel, non in id dolore voluptates quos eligendi labore.

40 |
41 | 44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |

Community

52 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod tenetur ex natus at dolorem enim! Nesciunt pariatur voluptatem sunt quam eaque, vel, non in id dolore voluptates quos eligendi labore.

53 |
54 | 57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | 66 |
67 |
68 |
69 |

Stay Wired on the Go

70 |

Download our app for the best service and the latest offerings.

71 |
    72 |
  • Coupons and promotions
  • 73 |
  • Brainiacs club benefits
  • 74 |
  • Store locator
  • 75 |
  • Latest menu options
  • 76 |
  • Exclusive items
  • 77 |
  • Reminders
  • 78 |
  • Community connections
  • 79 |
80 |

Available on all the most popular app stores. Availability may vary by region.

81 | Download Now 82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |

Contact Us

91 | 92 |

Questions or feedback about anything? We'd love to hear from you.

93 |
94 | 97 |
98 |
99 |
100 |
101 |
102 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:Icons;src:url(../fonts/open-iconic.eot);src:url(../fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(../fonts/open-iconic.woff) format('woff'),url(../fonts/open-iconic.ttf) format('truetype'),url(../fonts/open-iconic.otf) format('opentype'),url(../fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal}.oi{position:relative;top:1px;display:inline-block;speak:none;font-family:Icons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi.oi-align-center:before{text-align:center}.oi.oi-align-left:before{text-align:left}.oi.oi-align-right:before{text-align:right}.oi.oi-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.oi.oi-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(-1,1);transform:scale(1,-1)}.oi.oi-flip-horizontal-vertical:before{-webkit-transform:scale(-1,-1);-ms-transform:scale(-1,1);transform:scale(-1,-1)}.oi-account-login:before{content:'\e000'}.oi-account-logout:before{content:'\e001'}.oi-action-redo:before{content:'\e002'}.oi-action-undo:before{content:'\e003'}.oi-align-center:before{content:'\e004'}.oi-align-left:before{content:'\e005'}.oi-align-right:before{content:'\e006'}.oi-aperture:before{content:'\e007'}.oi-arrow-bottom:before{content:'\e008'}.oi-arrow-circle-bottom:before{content:'\e009'}.oi-arrow-circle-left:before{content:'\e00a'}.oi-arrow-circle-right:before{content:'\e00b'}.oi-arrow-circle-top:before{content:'\e00c'}.oi-arrow-left:before{content:'\e00d'}.oi-arrow-right:before{content:'\e00e'}.oi-arrow-thick-bottom:before{content:'\e00f'}.oi-arrow-thick-left:before{content:'\e010'}.oi-arrow-thick-right:before{content:'\e011'}.oi-arrow-thick-top:before{content:'\e012'}.oi-arrow-top:before{content:'\e013'}.oi-audio-spectrum:before{content:'\e014'}.oi-audio:before{content:'\e015'}.oi-badge:before{content:'\e016'}.oi-ban:before{content:'\e017'}.oi-bar-chart:before{content:'\e018'}.oi-basket:before{content:'\e019'}.oi-battery-empty:before{content:'\e01a'}.oi-battery-full:before{content:'\e01b'}.oi-beaker:before{content:'\e01c'}.oi-bell:before{content:'\e01d'}.oi-bluetooth:before{content:'\e01e'}.oi-bold:before{content:'\e01f'}.oi-bolt:before{content:'\e020'}.oi-book:before{content:'\e021'}.oi-bookmark:before{content:'\e022'}.oi-box:before{content:'\e023'}.oi-briefcase:before{content:'\e024'}.oi-british-pound:before{content:'\e025'}.oi-browser:before{content:'\e026'}.oi-brush:before{content:'\e027'}.oi-bug:before{content:'\e028'}.oi-bullhorn:before{content:'\e029'}.oi-calculator:before{content:'\e02a'}.oi-calendar:before{content:'\e02b'}.oi-camera-slr:before{content:'\e02c'}.oi-caret-bottom:before{content:'\e02d'}.oi-caret-left:before{content:'\e02e'}.oi-caret-right:before{content:'\e02f'}.oi-caret-top:before{content:'\e030'}.oi-cart:before{content:'\e031'}.oi-chat:before{content:'\e032'}.oi-check:before{content:'\e033'}.oi-chevron-bottom:before{content:'\e034'}.oi-chevron-left:before{content:'\e035'}.oi-chevron-right:before{content:'\e036'}.oi-chevron-top:before{content:'\e037'}.oi-circle-check:before{content:'\e038'}.oi-circle-x:before{content:'\e039'}.oi-clipboard:before{content:'\e03a'}.oi-clock:before{content:'\e03b'}.oi-cloud-download:before{content:'\e03c'}.oi-cloud-upload:before{content:'\e03d'}.oi-cloud:before{content:'\e03e'}.oi-cloudy:before{content:'\e03f'}.oi-code:before{content:'\e040'}.oi-cog:before{content:'\e041'}.oi-collapse-down:before{content:'\e042'}.oi-collapse-left:before{content:'\e043'}.oi-collapse-right:before{content:'\e044'}.oi-collapse-up:before{content:'\e045'}.oi-command:before{content:'\e046'}.oi-comment-square:before{content:'\e047'}.oi-compass:before{content:'\e048'}.oi-contrast:before{content:'\e049'}.oi-copywriting:before{content:'\e04a'}.oi-credit-card:before{content:'\e04b'}.oi-crop:before{content:'\e04c'}.oi-dashboard:before{content:'\e04d'}.oi-data-transfer-download:before{content:'\e04e'}.oi-data-transfer-upload:before{content:'\e04f'}.oi-delete:before{content:'\e050'}.oi-dial:before{content:'\e051'}.oi-document:before{content:'\e052'}.oi-dollar:before{content:'\e053'}.oi-double-quote-sans-left:before{content:'\e054'}.oi-double-quote-sans-right:before{content:'\e055'}.oi-double-quote-serif-left:before{content:'\e056'}.oi-double-quote-serif-right:before{content:'\e057'}.oi-droplet:before{content:'\e058'}.oi-eject:before{content:'\e059'}.oi-elevator:before{content:'\e05a'}.oi-ellipses:before{content:'\e05b'}.oi-envelope-closed:before{content:'\e05c'}.oi-envelope-open:before{content:'\e05d'}.oi-euro:before{content:'\e05e'}.oi-excerpt:before{content:'\e05f'}.oi-expand-down:before{content:'\e060'}.oi-expand-left:before{content:'\e061'}.oi-expand-right:before{content:'\e062'}.oi-expand-up:before{content:'\e063'}.oi-external-link:before{content:'\e064'}.oi-eye:before{content:'\e065'}.oi-eyedropper:before{content:'\e066'}.oi-file:before{content:'\e067'}.oi-fire:before{content:'\e068'}.oi-flag:before{content:'\e069'}.oi-flash:before{content:'\e06a'}.oi-folder:before{content:'\e06b'}.oi-fork:before{content:'\e06c'}.oi-fullscreen-enter:before{content:'\e06d'}.oi-fullscreen-exit:before{content:'\e06e'}.oi-globe:before{content:'\e06f'}.oi-graph:before{content:'\e070'}.oi-grid-four-up:before{content:'\e071'}.oi-grid-three-up:before{content:'\e072'}.oi-grid-two-up:before{content:'\e073'}.oi-hard-drive:before{content:'\e074'}.oi-header:before{content:'\e075'}.oi-headphones:before{content:'\e076'}.oi-heart:before{content:'\e077'}.oi-home:before{content:'\e078'}.oi-image:before{content:'\e079'}.oi-inbox:before{content:'\e07a'}.oi-infinity:before{content:'\e07b'}.oi-info:before{content:'\e07c'}.oi-italic:before{content:'\e07d'}.oi-justify-center:before{content:'\e07e'}.oi-justify-left:before{content:'\e07f'}.oi-justify-right:before{content:'\e080'}.oi-key:before{content:'\e081'}.oi-laptop:before{content:'\e082'}.oi-layers:before{content:'\e083'}.oi-lightbulb:before{content:'\e084'}.oi-link-broken:before{content:'\e085'}.oi-link-intact:before{content:'\e086'}.oi-list-rich:before{content:'\e087'}.oi-list:before{content:'\e088'}.oi-location:before{content:'\e089'}.oi-lock-locked:before{content:'\e08a'}.oi-lock-unlocked:before{content:'\e08b'}.oi-loop-circular:before{content:'\e08c'}.oi-loop-square:before{content:'\e08d'}.oi-loop:before{content:'\e08e'}.oi-magnifying-glass:before{content:'\e08f'}.oi-map-marker:before{content:'\e090'}.oi-map:before{content:'\e091'}.oi-media-pause:before{content:'\e092'}.oi-media-play:before{content:'\e093'}.oi-media-record:before{content:'\e094'}.oi-media-skip-backward:before{content:'\e095'}.oi-media-skip-forward:before{content:'\e096'}.oi-media-step-backward:before{content:'\e097'}.oi-media-step-forward:before{content:'\e098'}.oi-media-stop:before{content:'\e099'}.oi-medical-cross:before{content:'\e09a'}.oi-menu:before{content:'\e09b'}.oi-microphone:before{content:'\e09c'}.oi-minus:before{content:'\e09d'}.oi-monitor:before{content:'\e09e'}.oi-moon:before{content:'\e09f'}.oi-move:before{content:'\e0a0'}.oi-musical-note:before{content:'\e0a1'}.oi-paperclip:before{content:'\e0a2'}.oi-pencil:before{content:'\e0a3'}.oi-people:before{content:'\e0a4'}.oi-person:before{content:'\e0a5'}.oi-phone:before{content:'\e0a6'}.oi-pie-chart:before{content:'\e0a7'}.oi-pin:before{content:'\e0a8'}.oi-play-circle:before{content:'\e0a9'}.oi-plus:before{content:'\e0aa'}.oi-power-standby:before{content:'\e0ab'}.oi-print:before{content:'\e0ac'}.oi-project:before{content:'\e0ad'}.oi-pulse:before{content:'\e0ae'}.oi-puzzle-piece:before{content:'\e0af'}.oi-question-mark:before{content:'\e0b0'}.oi-rain:before{content:'\e0b1'}.oi-random:before{content:'\e0b2'}.oi-reload:before{content:'\e0b3'}.oi-resize-both:before{content:'\e0b4'}.oi-resize-height:before{content:'\e0b5'}.oi-resize-width:before{content:'\e0b6'}.oi-rss-alt:before{content:'\e0b7'}.oi-rss:before{content:'\e0b8'}.oi-script:before{content:'\e0b9'}.oi-share-boxed:before{content:'\e0ba'}.oi-share:before{content:'\e0bb'}.oi-shield:before{content:'\e0bc'}.oi-signal:before{content:'\e0bd'}.oi-signpost:before{content:'\e0be'}.oi-sort-ascending:before{content:'\e0bf'}.oi-sort-descending:before{content:'\e0c0'}.oi-spreadsheet:before{content:'\e0c1'}.oi-star:before{content:'\e0c2'}.oi-sun:before{content:'\e0c3'}.oi-tablet:before{content:'\e0c4'}.oi-tag:before{content:'\e0c5'}.oi-tags:before{content:'\e0c6'}.oi-target:before{content:'\e0c7'}.oi-task:before{content:'\e0c8'}.oi-terminal:before{content:'\e0c9'}.oi-text:before{content:'\e0ca'}.oi-thumb-down:before{content:'\e0cb'}.oi-thumb-up:before{content:'\e0cc'}.oi-timer:before{content:'\e0cd'}.oi-transfer:before{content:'\e0ce'}.oi-trash:before{content:'\e0cf'}.oi-underline:before{content:'\e0d0'}.oi-vertical-align-bottom:before{content:'\e0d1'}.oi-vertical-align-center:before{content:'\e0d2'}.oi-vertical-align-top:before{content:'\e0d3'}.oi-video:before{content:'\e0d4'}.oi-volume-high:before{content:'\e0d5'}.oi-volume-low:before{content:'\e0d6'}.oi-volume-off:before{content:'\e0d7'}.oi-warning:before{content:'\e0d8'}.oi-wifi:before{content:'\e0d9'}.oi-wrench:before{content:'\e0da'}.oi-x:before{content:'\e0db'}.oi-yen:before{content:'\e0dc'}.oi-zoom-in:before{content:'\e0dd'}.oi-zoom-out:before{content:'\e0de'} -------------------------------------------------------------------------------- /WiredBrainCoffee.Api/Controllers/MenuController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using Microsoft.Extensions.Logging; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using WiredBrainCoffee.Models; 8 | 9 | namespace WiredBrainCoffee.Api.Controllers 10 | { 11 | [ApiController] 12 | [Route("[controller]")] 13 | public class MenuController : ControllerBase 14 | { 15 | private readonly ILogger _logger; 16 | private List MenuItems { get; set; } 17 | 18 | public MenuController(ILogger logger) 19 | { 20 | _logger = logger; 21 | } 22 | 23 | [HttpGet] 24 | public IEnumerable Get() 25 | { 26 | MenuItems = new List() { 27 | new MenuItem() 28 | { 29 | Id = 6, 30 | Name = "Cupcake", 31 | Summary = "Vanilla cupcakes with the perfect level of sweetness.", 32 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 33 | ImageFile = "images/menu/cupcake.png", 34 | Price = 4, 35 | Category = "Food" 36 | }, 37 | new MenuItem() 38 | { 39 | Id = 6, 40 | Name = "Muffin", 41 | Summary = "A freshly baked chocolate chip muffin - the perfect way to start a Monday morning.", 42 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 43 | ImageFile = "images/menu/muffin.png", 44 | Price = 3, 45 | Category = "Food" 46 | }, 47 | new MenuItem() 48 | { 49 | Id = 6, 50 | Name = "Chocolate Bites", 51 | Summary = "Rich and sweet chocolate bites for those in need of a special treat.", 52 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 53 | ImageFile = "images/menu/chocolate.png", 54 | Price = 5, 55 | Category = "Food" 56 | }, 57 | new MenuItem() 58 | { 59 | Id = 1, 60 | Name = "Frosted Pumpkin Bread", 61 | Slug = "pumpkin-bread", 62 | Summary = "A seasonal delight we offer every autumn. Pumpking bread with just a bit of spice, cream cheese frosting with just a hint of home.", 63 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 64 | ImageFile = "images/menu/pumpkinbread.png", 65 | Price = 4, 66 | Category = "Food" 67 | }, 68 | new MenuItem() 69 | { 70 | Id = 3, 71 | Name = "Granola with Nuts", 72 | Summary = "It's not flashy, but it sure is healthy. Perfect for when you need the calories, but not the guilt.", 73 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 74 | ImageFile = "images/menu/granola.png", 75 | Price = 3, 76 | Category = "Food" 77 | }, 78 | new MenuItem() 79 | { 80 | Id = 4, 81 | Name = "Chocolate Chip Cookies", 82 | Summary = "They're made fresh every day, and they taste like it..", 83 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 84 | ImageFile = "images/menu/cookies.png", 85 | Price = 2, 86 | Category = "Food" 87 | }, 88 | new MenuItem() 89 | { 90 | Id = 5, 91 | Name = "Fresh Bagels", 92 | Summary = "They're just as round as donuts, but far more healthy! Freshly made every morning before sunrise.", 93 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 94 | ImageFile = "images/menu/bagel.png", 95 | Price = 5, 96 | Category = "Food" 97 | }, 98 | new MenuItem() 99 | { 100 | Id = 6, 101 | Name = "Fresh Fruit", 102 | Summary = "We've got strawberries, blueberries, apples, bananas - we could list them all, but we'd prefer you come take a look!", 103 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 104 | ImageFile = "images/menu/strawberries.png", 105 | Price = 5, 106 | Category = "Food" 107 | }, 108 | new MenuItem() 109 | { 110 | Id = 1, 111 | Name = "Dark Brewed Coffee", 112 | Slug = "dark-brew", 113 | Summary = "A classic, refreshing original.", 114 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 115 | ImageFile = "images/menu/ground.png", 116 | Price = 2, 117 | Category = "Coffee" 118 | }, 119 | new MenuItem() 120 | { 121 | Id = 3, 122 | Name = "Latte", 123 | Summary = "More than just coffee, but still just coffee.", 124 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 125 | ImageFile = "images/menu/cappucino.png", 126 | Price = 3, 127 | Category = "Coffee" 128 | }, 129 | new MenuItem() 130 | { 131 | Id = 2, 132 | Name = "Americano", 133 | Slug = "ground-coffee", 134 | Summary = "Still classic, but a little more sophisticated.", 135 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 136 | ImageFile = "images/menu/beans.jpg", 137 | Price = 4, 138 | Category = "Coffee" 139 | }, 140 | new MenuItem() 141 | { 142 | Id = 3, 143 | Name = "Cappucino", 144 | Summary = "Rich and foamy, its the perfect comfort-coffee.", 145 | Description = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut, tenetur natus doloremque laborum quos iste ipsum rerum obcaecati impedit odit illo dolorum ab tempora nihil dicta earum fugiat. Temporibus, voluptatibus.", 146 | ImageFile = "images/menu/cup.png", 147 | Price = 4, 148 | Category = "Coffee" 149 | } }; 150 | 151 | return MenuItems; 152 | } 153 | } 154 | } 155 | -------------------------------------------------------------------------------- /WiredBrainCoffee.Client/wwwroot/css/open-iconic/font/fonts/open-iconic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | Created by FontForge 20120731 at Tue Jul 1 20:39:22 2014 9 | By P.J. Onori 10 | Created by P.J. Onori with FontForge 2.0 (http://fontforge.sf.net) 11 | 12 | 13 | 14 | 27 | 28 | 30 | 32 | 34 | 36 | 38 | 40 | 42 | 45 | 47 | 49 | 51 | 53 | 55 | 57 | 59 | 61 | 63 | 65 | 67 | 69 | 71 | 74 | 76 | 79 | 81 | 84 | 86 | 88 | 91 | 93 | 95 | 98 | 100 | 102 | 104 | 106 | 109 | 112 | 115 | 117 | 121 | 123 | 125 | 127 | 130 | 132 | 134 | 136 | 138 | 141 | 143 | 145 | 147 | 149 | 151 | 153 | 155 | 157 | 159 | 162 | 165 | 167 | 169 | 172 | 174 | 177 | 179 | 181 | 183 | 185 | 189 | 191 | 194 | 196 | 198 | 200 | 202 | 205 | 207 | 209 | 211 | 213 | 215 | 218 | 220 | 222 | 224 | 226 | 228 | 230 | 232 | 234 | 236 | 238 | 241 | 243 | 245 | 247 | 249 | 251 | 253 | 256 | 259 | 261 | 263 | 265 | 267 | 269 | 272 | 274 | 276 | 280 | 282 | 285 | 287 | 289 | 292 | 295 | 298 | 300 | 302 | 304 | 306 | 309 | 312 | 314 | 316 | 318 | 320 | 322 | 324 | 326 | 330 | 334 | 338 | 340 | 343 | 345 | 347 | 349 | 351 | 353 | 355 | 358 | 360 | 363 | 365 | 367 | 369 | 371 | 373 | 375 | 377 | 379 | 381 | 383 | 386 | 388 | 390 | 392 | 394 | 396 | 399 | 401 | 404 | 406 | 408 | 410 | 412 | 414 | 416 | 419 | 421 | 423 | 425 | 428 | 431 | 435 | 438 | 440 | 442 | 444 | 446 | 448 | 451 | 453 | 455 | 457 | 460 | 462 | 464 | 466 | 468 | 471 | 473 | 477 | 479 | 481 | 483 | 486 | 488 | 490 | 492 | 494 | 496 | 499 | 501 | 504 | 506 | 509 | 512 | 515 | 517 | 520 | 522 | 524 | 526 | 529 | 532 | 534 | 536 | 539 | 542 | 543 | 544 | --------------------------------------------------------------------------------