This commit is contained in:
2016-08-08 14:47:35 -04:00
commit 0b0cb7c73a
156 changed files with 114318 additions and 0 deletions
@@ -0,0 +1,54 @@
@{
ViewBag.Title = "Log In";
}
@section Styles {
<style>
body {
height: auto;
}
#wrapper {
padding-left: 0;
height: auto;
}
#page-wrapper {
padding-top: 0;
margin-top: 10%;
max-width: 400px;
margin-left: auto;
margin-right: auto;
}
</style>
}
<h2>Log In</h2>
<form name="vm.form" novalidate
ng-controller="LoginController as vm"
ng-submit="vm.login()">
<fieldset ng-disabled="vm.loggingIn">
<div class="alert alert-info" ng-hide="vm.errorMessage != null">
Please log in to continue...
</div>
<div class="alert alert-danger" ng-show="vm.errorMessage != null">
{{vm.errorMessage}}
</div>
<div class="form-group has-feedback">
<label class="control-label" for="EmailAddress">Email Address</label>
<input required ng-model="vm.emailAddress"
class="form-control" name="EmailAddress" type="email" placeholder="your@email.com...">
</div>
<div class="form-group has-feedback">
<label class="control-label" for="Password">Password</label>
<input required ng-model="vm.password"
class="form-control" id="Password" name="Password" type="password" value="" placeholder="your password...">
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">
Log In
</button>
</div>
</fieldset>
</form>
@@ -0,0 +1,15 @@
@model dynamic
@{
ViewBag.Title = "Customers";
}
<div ng-controller="CustomerListController as vm">
<h1 class="page-header">
Customers
<a class="pull-right" href="" ng-click="vm.add()"><i class="fa fa-plus-circle"></i></a>
</h1>
<div class="customer-list">
<customer-details ng-repeat="customer in vm.customers" customer="customer"></customer-details>
</div>
</div>
@@ -0,0 +1,14 @@
@model dynamic
@{
ViewBag.Title = "Dashboard";
}
<h1 class="page-header">
Dashboard
</h1>
<div>
Welcome to Heroic CRM! This is a simple app to demonstrate how .NET's type system
can be used to generate client-side code in a strongly-typed way!
</div>
@@ -0,0 +1,15 @@
@model dynamic
@{
ViewBag.Title = "Inventory";
}
<div ng-controller="InventoryListController as vm">
<h1 class="page-header">
Inventory
<a class="pull-right" href="" ng-click="vm.add()"><i class="fa fa-plus-circle"></i></a>
</h1>
<div class="customer-list">
<inventory-details ng-repeat="inventory in vm.inventories" inventory="inventory"></inventory-details>
</div>
</div>
@@ -0,0 +1,23 @@
@model InventoryTraker.Web.Models.OpportunityViewModel[]
@{
ViewBag.Title = "Opportunities";
}
<h1 class="page-header">
All Opportunities
</h1>
@foreach (var opportunity in Model)
{
<div class="panel panel-default">
<div class="panel-body">
<h4>
@opportunity.CustomerName - @opportunity.Title
<small class="pull-right">@opportunity.CreateDate.ToShortDateString()</small>
</h4>
<hr />
<p>@opportunity.Description</p>
</div>
</div>
}
@@ -0,0 +1,50 @@
@using InventoryTraker.Web.Helpers
@model InventoryTraker.Web.Models.ProfileForm
@{
ViewBag.Title = "Your Profile";
}
<h1 class="page-header">Update Your Profile</h1>
<form novalidate
name="vm.form"
ng-controller="EditProfileController as vm"
ng-submit="vm.form.$valid && vm.save()"
style="max-width: 500px;">
<fieldset ng-disabled="vm.saving">
<div class="alert alert-info" ng-show="vm.errorMessage == null && !vm.saving && !vm.success">
Make changes below.
</div>
<div class="alert alert-info" ng-show="vm.saving">
Saving changes...
</div>
<div class="alert alert-success" ng-show="vm.success">
<span class="fa fa-check"></span>
Changes saved!
</div>
<div class="alert alert-danger" ng-show="vm.errorMessage != null">
{{vm.errorMessage}}
</div>
@Html.Angular().FormForModel("vm.profile")
<div class="form-group">
<button class="btn btn-success">Save Changes</button>
<a class="btn btn-warning" href="/">Cancel</a>
</div>
</fieldset>
</form>
@section Scripts
{
<script>
var url = '@(Html.BuildUrlFromExpression<ProfileController>(c => c.Update(null)))';
window.app.constant('editProfileConfig', {
saveUrl: url
});
window.app.constant('model', @Html.JsonFor(Model))
</script>
}
@@ -0,0 +1,22 @@
@using InventoryTraker.Web.Helpers
@using InventoryTraker.Web.Models
@model dynamic
@{
ViewBag.Title = "Reports";
}
<h1 class="page-header">
Reports
</h1>
@(Html.Angular().GridFor<ReportController>(c => c.NewCustomers())
.Title("New Customers")
.Columns<NewCustomerReportViewModel>(config =>
{
config.Add(x => x.Name);
config.Add(x => x.WorkEmail);
config.Add(x => x.CreateDate, "Date Joined", "date: 'MM/dd/yyyy'");
}))
<lost-customers-report ></lost-customers-report>
@@ -0,0 +1,23 @@
@model InventoryTraker.Web.Models.RiskViewModel[]
@{
ViewBag.Title = "Risks";
}
<h1 class="page-header">
All Risks
</h1>
@foreach (var risk in Model)
{
<div class="panel panel-default">
<div class="panel-body">
<h4>
@risk.CustomerName - @risk.Title
<small class="pull-right">@risk.CreateDate.ToShortDateString()</small>
</h4>
<hr />
<p>@risk.Description</p>
</div>
</div>
}
@@ -0,0 +1,34 @@
@using System.Web.Optimization
<!DOCTYPE html>
<html lang="en" ng-app="InventoryTraker">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>@ViewBag.Title - InventoryTraker</title>
@Styles.Render("~/Content/all.css")
@RenderSection("Styles", required: false)
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div id="wrapper" ng-cloak>
@(Request.IsAuthenticated ? Html.Partial("_NavigationHero") : Html.Partial("_NavigationNoAuth"))
<div id="page-wrapper">
<div class="container-fluid">
@RenderBody()
</div>
</div>
<!-- /#page-wrapper -->
</div>
<!-- /#wrapper -->
@Scripts.Render("~/js/all.js")
@RenderSection("Scripts", required: false)
</body>
</html>
@* This is based on the (excellent) SB Admin: http://startbootstrap.com/template-overviews/sb-admin/ *@
@@ -0,0 +1,35 @@
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="~/">Inventory Traker</a>
</div>
<!-- Top Menu Items -->
<ul class="nav navbar-right top-nav">
<li class="dropdown">
<a href="" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> @User.Identity.Name <b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<a href="@(Html.BuildUrlFromExpression<ProfileController>(c => c.Index()))"><i class="fa fa-fw fa-user"></i> Profile</a>
</li>
<li>
<a href="@(Html.BuildUrlFromExpression<AuthenticationController>(c => c.Logout()))"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
</li>
</ul>
</li>
</ul>
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav side-nav">
<li>
<a href="@(Html.BuildUrlFromExpression<InventoryController>(c => c.Index()))"><i class="fa fa-fw fa-list"></i> Inventory</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</nav>
@@ -0,0 +1,47 @@
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="~/">Inventory Traker</a>
</div>
<!-- Top Menu Items -->
<ul class="nav navbar-right top-nav">
<li class="dropdown">
<a href="" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> @User.Identity.Name <b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<a href="@(Html.BuildUrlFromExpression<ProfileController>(c => c.Index()))"><i class="fa fa-fw fa-user"></i> Profile</a>
</li>
<li>
<a href="@(Html.BuildUrlFromExpression<AuthenticationController>(c => c.Logout()))"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
</li>
</ul>
</li>
</ul>
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav side-nav">
<li>
<a href="@(Html.BuildUrlFromExpression<HomeController>(c => c.Index()))"><i class="fa fa-fw fa-dashboard"></i> Dashboard</a>
</li>
<li>
<a href="@(Html.BuildUrlFromExpression<CustomerController>(c => c.Index()))"><i class="fa fa-fw fa-users"></i> Customers</a>
</li>
<li>
<a href="@(Html.BuildUrlFromExpression<OpportunityController>(c => c.Index()))"><i class="fa fa-fw fa-dollar"></i> Opportunities</a>
</li>
<li>
<a href="@(Html.BuildUrlFromExpression<RiskController>(c => c.Index()))"><i class="fa fa-fw fa-exclamation-triangle"></i> Risks</a>
</li>
<li>
<a href="@(Html.BuildUrlFromExpression<ReportController>(c => c.Index()))"><i class="fa fa-fw fa-line-chart"></i> Reports</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</nav>
@@ -0,0 +1,6 @@
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<a class="navbar-brand" href="~/">Inventory Traker</a>
</div>
</nav>
@@ -0,0 +1,3 @@
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
+36
View File
@@ -0,0 +1,36 @@
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="Microsoft.Web.Mvc" />
<add namespace="InventoryTraker.Web" />
<add namespace="InventoryTraker.Web.Controllers" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>