ASP.NET and jQuery: Bethesda Car Rental
ASP.NET and jQuery: Bethesda Car Rental
Introduction
ASP.NET MVC provides a good way to create a website and to add a database to the site. Where ASP.NET lacks some features, especially in the front-end, you can use a library, such as those available in JavaScript, to perform the necessary operations. In this exercise, we will use jQuery in an ASP.NET MVC website.
Practical Learning: Introducing the Entity Framework
body { background-color: white; } .bold { font-weight: 600; } .blue { color: #286090; } .top-padding { padding-top: 0.50em; } .containment { margin: auto; width: 500px; } .centralized { margin: auto; width: 780px; } .heading { color: white; background-color: steelblue; } #top-banner { top: 0; left: 0; right: 0; z-index: 1120; width: 100%; bottom: auto; position: fixed; height: 6.25em; background-color: #202460; } .push-down { margin-top: 8em; } .bordered { border: 1px solid black; } .parajust { text-align: justify; font-family: 'Times New Roman', Garamond, Georgia, serif; } .navbar-fixed-top { top: 6.25em; } .sect-title { font-weight: 600; font-size: 16px; color: maroon; padding-bottom: 5px; border-bottom: 2px dotted #0832a4; } .navbar-brand { height: 28px; font-size: 12px; line-height: 16px; } .navbar-inverse { background-color: #263b95; border-top: 3px solid #000; } .common-font { font-family: Georgia, Garamond, 'Times New Roman', serif; } .navbar-inverse .navbar-nav > li > a, .navbar-inverse .navbar-nav > li > a:link { font-size: 12px; line-height: 16px; color: #faf76f; } .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { font-size: 12px; line-height: 16px; background-color: #202460; color: lavender; }
using System.Web.Optimization;
namespace BethesdaCarRental1
{
public class BundleConfig
{
// For more information on bundling, visit https://go.microsoft.com/fwlink/?LinkId=301862
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
// Use the development version of Modernizr to develop with and learn from. Then, when you're
// ready for production, use the build tool at https://modernizr.com to pick only the tests you need.
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
"~/Scripts/bootstrap.js"));
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/site.css",
"~/Content/BethesdaCarRental.css"));
}
}
}
The Database
Our application will use a database. To create it, we will use the Entity Framework (EF). The EF provides many options to create or start a database. Microsoft Visual Studio makes it to choose the option that better suits you. You can then use a wizard to start, create, or setup your database.
Practical Learning: Creating a Database Controller
namespace BethesdaCarRental1.Models { using System; using System.Data.Entity; using System.ComponentModel.DataAnnotations; public class RentalManagementModel : DbContext { // Your context has been configured to use a 'RentalManagementModel' connection string from your application's // configuration file (App.config or Web.config). By default, this connection string targets the // 'BethesdaCarRental1.Models.RentalManagementModel' database on your LocalDb instance. // // If you wish to target a different database and/or database provider, modify the 'RentalManagementModel' // connection string in the application configuration file. public RentalManagementModel() : base("name=RentalManagementModel") { } // Add a DbSet for each entity type that you want to include in your model. For more information // on configuring and using a Code First model, see http://go.microsoft.com/fwlink/?LinkId=390109. public virtual DbSet<Employee> Employees { get; set; } public virtual DbSet<Car> Cars { get; set; } public virtual DbSet<RentalOrder> RentalOrders { get; set; } } public class Employee { [Display(Name = "Employee Id")] public int EmployeeId { get; set; } [Display(Name = "Employee #")] public string EmployeeNumber { get; set; } [Display(Name = "First Name")] public string FirstName { get; set; } [Display(Name = "Last Name")] public string LastName { get; set; } [Display(Name = "Employment Title")] public string EmploymentTitle { get; set; } } public class Car { [Display(Name = "Car Id")] public int CarId { get; set; } [Display(Name = "Tag #")] public string TagNumber { get; set; } public string Category { get; set; } public string Make { get; set; } public string Model { get; set; } public int Passengers { get; set; } public string Condition { get; set; } [Display(Name = "Availability Status")] public string AvailabilityStatus { get; set; } } public class RentalOrder { [Display(Name = "Rental Order Id")] public int RentalOrderId { get; set; } [Display(Name = "Processed By")] public string RentStartProcessedBy { get; set; } // EmployeeNumber [Display(Name = "Employee #")] public string RentReturnProcessedBy { get; set; } // EmployeeNumber [Display(Name = "Drv. Lic. #")] public string DriversLicenseNumber { get; set; } [Display(Name = "First Name")] public string FirstName { get; set; } [Display(Name = "Last Name")] public string LastName { get; set; } public string Address { get; set; } public string City { get; set; } public string County { get; set; } public string State { get; set; } [Display(Name = "ZIP Code")] public string ZIPCode { get; set; } [Display(Name = "Car Rented")] public string TagNumber { get; set; } [Display(Name = "Car Condition")] public string CarCondition { get; set; } [Display(Name = "Tank Level")] public string TankLevel { get; set; } [Display(Name = "Mileage Start")] public int MileageStart { get; set; } [Display(Name = "Mileage End")] public int MileageEnd { get; set; } [Display(Name = "Total Mileage")] public int MileageTotal { get; set; } [Display(Name = "Start Date")] public string StartDate { get; set; } [Display(Name = "End Date")] public string EndDate { get; set; } [Display(Name = "Total Days")] public int TotalDays { get; set; } [Display(Name = "Rate Applied")] public decimal RateApplied { get; set; } [Display(Name = "Sub-Total")] public decimal SubTotal { get; set; } [Display(Name = "Tax Rate")] public decimal TaxRate { get; set; } [Display(Name = "Tax Amount")] public decimal TaxAmount { get; set; } [Display(Name = "Order Total")] public decimal OrderTotal { get; set; } [Display(Name = "Payment Date")] public string PaymentDate { get; set; } [Display(Name = "Order Status")] public string OrderStatus { get; set; } } }
A Controller to Create and Manage Records
The entity framework makes it particularly easy to create views that are connected to the appropriate tables of a database. This is done by creating or generating a controller for each class that was created for the tables.
Employees
Our application will need employees in charge of all the manual operations of the program.
Practical Learning: Adding a Controller
@model BethesdaCarRental1.Models.Employee @{ ViewBag.Title = "Create Employee"; } <h2 class="common-font text-center bold blue">Employment Application</h2> <hr /> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="containment"> <div class="form-horizontal common-font"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.EmployeeNumber, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.EmployeeNumber, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.EmployeeNumber, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.EmploymentTitle, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.EmploymentTitle, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.EmploymentTitle, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <label class="col-md-6 control-label"> @Html.ActionLink("Employees - Staff Members", "Index") </label> <div class="col-md-6"> <input type="submit" value="Hire this Employee" class="btn btn-primary" /> </div> </div> </div> </div> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
@model BethesdaCarRental1.Models.Employee @{ ViewBag.Title = "Delete Employee"; } <h2 class="common-font text-center bold blue">Delete Employee</h2> <h3 class="common-font text-center bold blue">Are you sure you want to delete this employee's record?</h3> <hr /> <div class="containment"> <dl class="dl-horizontal common-font"> <dt>@Html.DisplayNameFor(model => model.EmployeeId)</dt> <dd>@Html.DisplayFor(model => model.EmployeeId)</dd> <dt>@Html.DisplayNameFor(model => model.EmployeeNumber)</dt> <dd>@Html.DisplayFor(model => model.EmployeeNumber)</dd> <dt>@Html.DisplayNameFor(model => model.FirstName)</dt> <dd>@Html.DisplayFor(model => model.FirstName)</dd> <dt>@Html.DisplayNameFor(model => model.LastName)</dt> <dd>@Html.DisplayFor(model => model.LastName)</dd> <dt>@Html.DisplayNameFor(model => model.EmploymentTitle)</dt> <dd>@Html.DisplayFor(model => model.EmploymentTitle)</dd> </dl> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-actions no-color"> <input type="submit" value="Delete Employee Record" class="btn btn-primary" /> :: @Html.ActionLink("Employees - Staff Members", "Index") </div> } </div>
@model BethesdaCarRental1.Models.Employee @{ ViewBag.Title = "Employee Details"; } <h2 class="common-font text-center bold blue">Employee Details</h2> <hr /> <div class="containment"> <dl class="dl-horizontal common-font"> <dt>@Html.DisplayNameFor(model => model.EmployeeId)</dt> <dd>@Html.DisplayFor(model => model.EmployeeId)</dd> <dt>@Html.DisplayNameFor(model => model.EmployeeNumber)</dt> <dd>@Html.DisplayFor(model => model.EmployeeNumber)</dd> <dt>@Html.DisplayNameFor(model => model.FirstName)</dt> <dd>@Html.DisplayFor(model => model.FirstName)</dd> <dt>@Html.DisplayNameFor(model => model.LastName)</dt> <dd>@Html.DisplayFor(model => model.LastName)</dd> <dt>@Html.DisplayNameFor(model => model.EmploymentTitle)</dt> <dd>@Html.DisplayFor(model => model.EmploymentTitle)</dd> </dl> </div> <p class="text-center"> @Html.ActionLink("Edit", "Edit", new { id = Model.EmployeeId }) :: @Html.ActionLink("Employees - Staff Members", "Index") </p>
@model BethesdaCarRental1.Models.Employee @{ ViewBag.Title = "Edit Employee"; } <h2 class="common-font text-center bold blue">Edit/Update Employee Details</h2> <hr /> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="containment"> <div class="form-horizontal"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) @Html.HiddenFor(model => model.EmployeeId) <div class="form-group"> @Html.LabelFor(model => model.EmployeeNumber, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.EmployeeNumber, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.EmployeeNumber, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.EmploymentTitle, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.EmploymentTitle, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.EmploymentTitle, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <label class="col-md-6 control-label"> @Html.ActionLink("Employees - Staff Members", "Index") </label> <div class="col-md-6"> <input type="submit" value="Update Employee Record" class="btn btn-primary" /> </div> </div> </div> </div> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
@model IEnumerable<BethesdaCarRental1.Models.Employee> @{ ViewBag.Title = "Employees"; } <h2 class="bold blue common-font text-center">Employees - Staff Members</h2> <table class="table table-striped common-font"> <tr> <th class="text-center">@Html.DisplayNameFor(model => model.EmployeeId)</th> <th class="text-center">@Html.DisplayNameFor(model => model.EmployeeNumber)</th> <th>@Html.DisplayNameFor(model => model.FirstName)</th> <th>@Html.DisplayNameFor(model => model.LastName)</th> <th>@Html.DisplayNameFor(model => model.EmploymentTitle)</th> <th>@Html.ActionLink("Hire New Employee", "Create")</th> </tr> @foreach (var item in Model) { <tr> <td class="text-center">@Html.DisplayFor(modelItem => item.EmployeeId)</td> <td class="text-center">@Html.DisplayFor(modelItem => item.EmployeeNumber)</td> <td>@Html.DisplayFor(modelItem => item.FirstName)</td> <td>@Html.DisplayFor(modelItem => item.LastName)</td> <td>@Html.DisplayFor(modelItem => item.EmploymentTitle)</td> <td> @Html.ActionLink("Edit", "Edit", new { id = item.EmployeeId }) :: @Html.ActionLink("Details", "Details", new { id = item.EmployeeId }) :: @Html.ActionLink("Delete", "Delete", new { id = item.EmployeeId }) </td> </tr> } </table>
Cars/Vehicles
Since the company must use cars to rent to customers, our application will need a table to track the vehicles and their status.
Practical Learning: Creating Cars
using BethesdaCarRental1.Models; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Net; using System.Web.Mvc; namespace BethesdaCarRental1.Controllers { public class CarsController : Controller { private RentalManagementModel db = new RentalManagementModel(); // GET: Cars public ActionResult Index() { return View(db.Cars.ToList()); } // GET: Cars/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Car car = db.Cars.Find(id); if (car == null) { return HttpNotFound(); } return View(car); } // GET: Cars/Create public ActionResult Create() { List<SelectListItem> types = new List<SelectListItem>(); List<SelectListItem> conditions = new List<SelectListItem>(); List<SelectListItem> availabilities = new List<SelectListItem>(); types.Add(new SelectListItem() { Text = "SUV", Value = "SUV" }); types.Add(new SelectListItem() { Text = "Compact", Value = "Compact" }); types.Add(new SelectListItem() { Text = "Economy", Value = "Economy" }); types.Add(new SelectListItem() { Text = "Mini Van", Value = "Mini Van" }); types.Add(new SelectListItem() { Text = "Standard", Value = "Standard" }); types.Add(new SelectListItem() { Text = "Full Size", Value = "Full Size" }); types.Add(new SelectListItem() { Text = "Pickup Truck", Value = "Pickup Truck" }); types.Add(new SelectListItem() { Text = "Passenger Van", Value = "Passenger Van" }); availabilities.Add(new SelectListItem() { Text = "Other", Value = "Other" }); availabilities.Add(new SelectListItem() { Text = "Rented", Value = "Rented" }); availabilities.Add(new SelectListItem() { Text = "Unknown", Value = "Unknown" }); availabilities.Add(new SelectListItem() { Text = "Available", Value = "Available" }); availabilities.Add(new SelectListItem() { Text = "Being Serviced", Value = "Being Serviced" }); conditions.Add(new SelectListItem() { Text = "Good", Value = "Good" }); conditions.Add(new SelectListItem() { Text = "Other", Value = "Other" }); conditions.Add(new SelectListItem() { Text = "Excellent", Value = "Excellent" }); conditions.Add(new SelectListItem() { Text = "Driveable", Value = "Driveable" }); conditions.Add(new SelectListItem() { Text = "Needs Service", Value = "Needs Service" }); ViewBag.Category = types; ViewBag.Condition = conditions; ViewBag.AvailabilityStatus = availabilities; return View(); } // POST: Cars/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see https://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "CarId,TagNumber,Category,Make,Model,Passengers,Condition,AvailabilityStatus")] Car car) { if (ModelState.IsValid) { db.Cars.Add(car); db.SaveChanges(); return RedirectToAction("Index"); } return View(car); } // GET: Cars/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Car car = db.Cars.Find(id); if (car == null) { return HttpNotFound(); } List<SelectListItem> types = new List<SelectListItem>(); List<SelectListItem> conditions = new List<SelectListItem>(); List<SelectListItem> availabilities = new List<SelectListItem>(); types.Add(new SelectListItem() { Text = "SUV", Value = "SUV", Selected = (car.Category == "SUV") }); types.Add(new SelectListItem() { Text = "Compact", Value = "Compact", Selected = (car.Category == "Compact") }); types.Add(new SelectListItem() { Text = "Economy", Value = "Economy", Selected = (car.Category == "Economy") }); types.Add(new SelectListItem() { Text = "Mini Van", Value = "Mini Van", Selected = (car.Category == "Mini Van") }); types.Add(new SelectListItem() { Text = "Category", Value = "Category", Selected = (car.Category == "Category") }); types.Add(new SelectListItem() { Text = "Standard", Value = "Standard", Selected = (car.Category == "Standard") }); types.Add(new SelectListItem() { Text = "Full Size", Value = "Full Size", Selected = (car.Category == "Full Size") }); types.Add(new SelectListItem() { Text = "Pickup Truck", Value = "Pickup Truck", Selected = (car.Category == "Pickup Truck") }); types.Add(new SelectListItem() { Text = "Passenger Van", Value = "Passenger Van", Selected = (car.Category == "Passenger Van") }); availabilities.Add(new SelectListItem() { Text = "Other", Value = "Other", Selected = (car.AvailabilityStatus == "Other") }); availabilities.Add(new SelectListItem() { Text = "Rented", Value = "Rented", Selected = (car.AvailabilityStatus == "Rented") }); availabilities.Add(new SelectListItem() { Text = "Unknown", Value = "Unknown", Selected = (car.AvailabilityStatus == "Unknown") }); availabilities.Add(new SelectListItem() { Text = "Available", Value = "Available", Selected = (car.AvailabilityStatus == "Available") }); availabilities.Add(new SelectListItem() { Text = "Being Serviced", Value = "Being Serviced", Selected = (car.AvailabilityStatus == "Being Serviced") }); conditions.Add(new SelectListItem() { Text = "Good", Value = "Good", Selected = (car.Condition == "Good") }); conditions.Add(new SelectListItem() { Text = "Other", Value = "Other", Selected = (car.Condition == "Other") }); conditions.Add(new SelectListItem() { Text = "Excellent", Value = "Excellent", Selected = (car.Condition == "Excellent") }); conditions.Add(new SelectListItem() { Text = "Driveable", Value = "Driveable", Selected = (car.Condition == "Driveable") }); conditions.Add(new SelectListItem() { Text = "Needs Service", Value = "Needs Service", Selected = (car.Condition == "Needs Service") }); ViewBag.Category = types; ViewBag.Condition = conditions; ViewBag.AvailabilityStatus = availabilities; return View(car); } // POST: Cars/Edit/5 // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see https://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include = "CarId,TagNumber,Category,Make,Model,Passengers,Condition,AvailabilityStatus")] Car car) { if (ModelState.IsValid) { db.Entry(car).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(car); } // GET: Cars/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Car car = db.Cars.Find(id); if (car == null) { return HttpNotFound(); } return View(car); } // POST: Cars/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { Car car = db.Cars.Find(id); db.Cars.Remove(car); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }
@model BethesdaCarRental1.Models.Car @{ ViewBag.Title = "Create Car"; } <h2 class="common-font text-center bold blue">Register a Car</h2> <hr /> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="containment"> <div class="form-horizontal common-font"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.TagNumber, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.TagNumber, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.TagNumber, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Make, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.Make, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Make, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Model, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.Model, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Model, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Passengers, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.Passengers, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Passengers, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Category, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.DropDownList("Category", ViewBag.Category as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.Category, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Condition, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.DropDownList("Condition", ViewBag.Condition as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.Condition, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.AvailabilityStatus, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.DropDownList("AvailabilityStatus", ViewBag.AvailabilityStatus as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.AvailabilityStatus, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <label class="col-md-6 control-label"> @Html.ActionLink("Cars/Vehicles", "Index") </label> <div class="col-md-6"> <input type="submit" value="Save Car Record" class="btn btn-primary" /> </div> </div> </div> </div> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
@model BethesdaCarRental1.Models.Car @{ ViewBag.Title = "Delete Car"; } <h2 class="common-font text-center bold blue">Delete Car/Vehicle</h2> <h3 class="common-font text-center bold blue">Are you sure you want to delete this car's registration?</h3> <hr /> <div class="containment"> <dl class="dl-horizontal common-font"> <dt>@Html.DisplayNameFor(model => model.CarId)</dt> <dd>@Html.DisplayFor(model => model.CarId)</dd> <dt>@Html.DisplayNameFor(model => model.TagNumber)</dt> <dd>@Html.DisplayFor(model => model.TagNumber)</dd> <dt>@Html.DisplayNameFor(model => model.Category)</dt> <dd>@Html.DisplayFor(model => model.Category)</dd> <dt>@Html.DisplayNameFor(model => model.Make)</dt> <dd>@Html.DisplayFor(model => model.Make)</dd> <dt>@Html.DisplayNameFor(model => model.Model)</dt> <dd>@Html.DisplayFor(model => model.Model)</dd> <dt>@Html.DisplayNameFor(model => model.Passengers)</dt> <dd>@Html.DisplayFor(model => model.Passengers)</dd> <dt>@Html.DisplayNameFor(model => model.Condition)</dt> <dd>@Html.DisplayFor(model => model.Condition)</dd> <dt>@Html.DisplayNameFor(model => model.AvailabilityStatus)</dt> <dd>@Html.DisplayFor(model => model.AvailabilityStatus)</dd> </dl> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-actions no-color"> <input type="submit" value="Delete" class="btn btn-primary" /> :: @Html.ActionLink("Cars/Vehicles", "Index") </div> } </div>
@model BethesdaCarRental1.Models.Car @{ ViewBag.Title = "Car Details"; } <h2 class="common-font text-center bold blue">Car/Vehicle Details</h2> <hr /> <div class="containment"> <dl class="dl-horizontal common-font"> <dt>@Html.DisplayNameFor(model => model.CarId)</dt> <dd>@Html.DisplayFor(model => model.CarId)</dd> <dt>@Html.DisplayNameFor(model => model.TagNumber)</dt> <dd>@Html.DisplayFor(model => model.TagNumber)</dd> <dt>@Html.DisplayNameFor(model => model.Category)</dt> <dd>@Html.DisplayFor(model => model.Category)</dd> <dt>@Html.DisplayNameFor(model => model.Make)</dt> <dd>@Html.DisplayFor(model => model.Make)</dd> <dt>@Html.DisplayNameFor(model => model.Model)</dt> <dd>@Html.DisplayFor(model => model.Model)</dd> <dt>@Html.DisplayNameFor(model => model.Passengers)</dt> <dd>@Html.DisplayFor(model => model.Passengers)</dd> <dt>@Html.DisplayNameFor(model => model.Condition)</dt> <dd>@Html.DisplayFor(model => model.Condition)</dd> <dt>@Html.DisplayNameFor(model => model.AvailabilityStatus)</dt> <dd>@Html.DisplayFor(model => model.AvailabilityStatus)</dd> </dl> </div> <p class="text-center"> @Html.ActionLink("Edit", "Edit", new { id = Model.CarId }) :: @Html.ActionLink("Cars/Vehicles", "Index") </p>
@model BethesdaCarRental1.Models.Car @{ ViewBag.Title = "Edit Car"; } <h2 class="common-font text-center bold blue">Edit/Update Car Information</h2> <hr /> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="containment"></div> <div class="form-horizontal"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) @Html.HiddenFor(model => model.CarId) <div class="form-group"> @Html.LabelFor(model => model.TagNumber, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.TagNumber, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.TagNumber, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Category, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.DropDownList("Category", ViewBag.Category as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.Category, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Make, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.Make, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Make, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Model, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.Model, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Model, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Passengers, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.EditorFor(model => model.Passengers, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Passengers, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Condition, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.DropDownList("Condition", ViewBag.Condition as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.Condition, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.AvailabilityStatus, htmlAttributes: new { @class = "control-label col-md-5" }) <div class="col-md-7"> @Html.DropDownList("AvailabilityStatus", ViewBag.AvailabilityStatus as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.AvailabilityStatus, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <label class="col-md-6 control-label"> @Html.ActionLink("Cars/Vehicles", "Index") </label> <div class="col-md-6"> <input type="submit" value="Save" class="btn btn-primary" /> </div> </div> </div> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
@model IEnumerable<BethesdaCarRental1.Models.Car> @{ ViewBag.Title = "Cars/Vehicles"; } <h2 class="bold blue common-font text-center">Cars/Vehicles</h2> <table class="table table-striped common-font"> <tr> <th class="text-center">@Html.DisplayNameFor(model => model.CarId)</th> <th class="text-center">@Html.DisplayNameFor(model => model.TagNumber)</th> <th>@Html.DisplayNameFor(model => model.Category)</th> <th>@Html.DisplayNameFor(model => model.Make)</th> <th>@Html.DisplayNameFor(model => model.Model)</th> <th class="text-center">@Html.DisplayNameFor(model => model.Passengers)</th> <th>@Html.DisplayNameFor(model => model.Condition)</th> <th>@Html.DisplayNameFor(model => model.AvailabilityStatus)</th> <th>@Html.ActionLink("New Car Setup", "Create")</th> </tr> @foreach (var item in Model) { <tr> <td class="text-center">@Html.DisplayFor(modelItem => item.CarId)</td> <td class="text-center">@Html.DisplayFor(modelItem => item.TagNumber)</td> <td>@Html.DisplayFor(modelItem => item.Category)</td> <td>@Html.DisplayFor(modelItem => item.Make)</td> <td>@Html.DisplayFor(modelItem => item.Model)</td> <td class="text-center">@Html.DisplayFor(modelItem => item.Passengers)</td> <td>@Html.DisplayFor(modelItem => item.Condition)</td> <td>@Html.DisplayFor(modelItem => item.AvailabilityStatus)</td> <td> @Html.ActionLink("Edit", "Edit", new { id = item.CarId }) :: @Html.ActionLink("Details", "Details", new { id = item.CarId }) :: @Html.ActionLink("Delete", "Delete", new { id = item.CarId }) </td> </tr> } </table>
A Web API Controller
Probably the most common way to use jQuery in an ASP.NET MVC application is to involve Web API. You don't have to create a Web API application in Microsoft Visual Studio. In most cases, at any time, you can create a class that supports Web API. Such a class is derived from ApiController.
Practical Learning: Using a Web API Controller
Rental Orders
When a company rentas a car to a customer, it must create a rental order or contract.
Practical Learning: Creating Rental Orders
using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Net; using System.Web; using System.Web.Mvc; using BethesdaCarRental1.Models; namespace BethesdaCarRental1.Controllers { public class RentalOrdersController : Controller { private RentalManagementModel db = new RentalManagementModel(); // GET: RentalOrders public ActionResult Index() { return View(db.RentalOrders.ToList()); } // GET: RentalOrders/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } RentalOrder rentalOrder = db.RentalOrders.Find(id); if (rentalOrder == null) { return HttpNotFound(); } return View(rentalOrder); } // GET: RentalOrders/Create public ActionResult Create() { List<SelectListItem> tanks = new List<SelectListItem>(); List<SelectListItem> status = new List<SelectListItem>(); List<SelectListItem> conditions = new List<SelectListItem>(); conditions.Add(new SelectListItem() { Text = "Other", Value = "Other" }); conditions.Add(new SelectListItem() { Text = "Excellent", Value = "Excellent" }); conditions.Add(new SelectListItem() { Text = "Driveable", Value = "Driveable" }); conditions.Add(new SelectListItem() { Text = "Needs Service", Value = "Needs Service" }); tanks.Add(new SelectListItem() { Text = "Empty", Value = "Empty" }); tanks.Add(new SelectListItem() { Text = "1/4 Empty", Value = "1/4 Empty" }); tanks.Add(new SelectListItem() { Text = "Half", Value = "Half" }); tanks.Add(new SelectListItem() { Text = "3/4 Full", Value = "3/4 Full" }); tanks.Add(new SelectListItem() { Text = "Full", Value = "Full" }); status.Add(new SelectListItem() { Text = "Other", Value = "Other" }); status.Add(new SelectListItem() { Text = "Ongoing", Value = "Ongoing" }); status.Add(new SelectListItem() { Text = "Order Reserved", Value = "Order Reserved" }); status.Add(new SelectListItem() { Text = "Order Completed", Value = "Order Completed" }); ViewData["TankLevel"] = tanks; ViewData["OrderStatus"] = status; ViewData["CarCondition"] = conditions; return View(); } // POST: RentalOrders/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see https://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "RentalOrderId,RentStartProcessedBy,RentReturnProcessedBy,DriversLicenseNumber,FirstName,LastName,Address,City,County,State,ZIPCode,TagNumber,CarCondition,TankLevel,MileageStart,MileageEnd,MileageTotal,StartDate,EndDate,TotalDays,RateApplied,SubTotal,TaxRate,TaxAmount,OrderTotal,PaymentDate,OrderStatus")] RentalOrder rentalOrder) { if (ModelState.IsValid) { db.RentalOrders.Add(rentalOrder); db.SaveChanges(); return RedirectToAction("Index"); } return View(rentalOrder); } // GET: RentalOrders/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } RentalOrder rentalOrder = db.RentalOrders.Find(id); if (rentalOrder == null) { return HttpNotFound(); } List<SelectListItem> tanks = new List<SelectListItem>(); List<SelectListItem> status = new List<SelectListItem>(); List<SelectListItem> conditions = new List<SelectListItem>(); conditions.Add(new SelectListItem() { Text = "Other", Value = "Other", Selected = (rentalOrder.CarCondition == "Other") }); conditions.Add(new SelectListItem() { Text = "Excellent", Value = "Excellent", Selected = (rentalOrder.CarCondition == "Excellent") }); conditions.Add(new SelectListItem() { Text = "Driveable", Value = "Driveable", Selected = (rentalOrder.CarCondition == "Driveable") }); conditions.Add(new SelectListItem() { Text = "Needs Service", Value = "Needs Service", Selected = (rentalOrder.CarCondition == "Needs Service") }); tanks.Add(new SelectListItem() { Text = "Empty", Value = "Empty", Selected = (rentalOrder.TankLevel == "Empty") }); tanks.Add(new SelectListItem() { Text = "1/4 Empty", Value = "1/4 Empty", Selected = (rentalOrder.TankLevel == "1/4 Empty") }); tanks.Add(new SelectListItem() { Text = "Half", Value = "Half", Selected = (rentalOrder.TankLevel == "Half") }); tanks.Add(new SelectListItem() { Text = "3/4 Full", Value = "3/4 Full", Selected = (rentalOrder.TankLevel == "3/4 Full") }); tanks.Add(new SelectListItem() { Text = "Full", Value = "Full", Selected = (rentalOrder.TankLevel == "Full") }); status.Add(new SelectListItem() { Text = "Other", Value = "Other", Selected = (rentalOrder.OrderStatus == "Other") }); status.Add(new SelectListItem() { Text = "Ongoing", Value = "Ongoing", Selected = (rentalOrder.OrderStatus == "Ongoing") }); status.Add(new SelectListItem() { Text = "Order Reserved", Value = "Order Reserved", Selected = (rentalOrder.OrderStatus == "Order Reserved") }); status.Add(new SelectListItem() { Text = "Order Completed", Value = "Order Completed", Selected = (rentalOrder.OrderStatus == "Order Completed") }); ViewData["TankLevel"] = tanks; ViewData["OrderStatus"] = status; ViewData["CarCondition"] = conditions; return View(rentalOrder); } // POST: RentalOrders/Edit/5 // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see https://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Include = "RentalOrderId,RentStartProcessedBy,RentReturnProcessedBy,DriversLicenseNumber,FirstName,LastName,Address,City,County,State,ZIPCode,TagNumber,CarCondition,TankLevel,MileageStart,MileageEnd,MileageTotal,StartDate,EndDate,TotalDays,RateApplied,SubTotal,TaxRate,TaxAmount,OrderTotal,PaymentDate,OrderStatus")] RentalOrder rentalOrder) { if (ModelState.IsValid) { db.Entry(rentalOrder).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(rentalOrder); } // GET: RentalOrders/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } RentalOrder rentalOrder = db.RentalOrders.Find(id); if (rentalOrder == null) { return HttpNotFound(); } return View(rentalOrder); } // POST: RentalOrders/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { RentalOrder rentalOrder = db.RentalOrders.Find(id); db.RentalOrders.Remove(rentalOrder); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }
@model BethesdaCarRental1.Models.RentalOrder @{ ViewBag.Title = "Rental Order Start-Up"; } <h2 class="common-font text-center bold blue">Rental Order Start-Up</h2> <hr /> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="containment"> <div class="form-horizontal common-font"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="heading"><p class="common-font text-center something">Rental Order Processed By</p></div> <div class="form-group"> <label for="rsProcessedBy" class="common-font control-label col-md-3">Employee #</label> <div class="col-md-3"> @Html.EditorFor(model => model.RentStartProcessedBy, new { htmlAttributes = new { @class = "form-control", id = "rsProcessedBy" } }) @Html.ValidationMessageFor(model => model.RentStartProcessedBy, "", new { @class = "text-danger" }) </div> <div class="common-font col-md-6"> <span id="employeeDetails"></span> </div> </div> <div class="heading"><p class="common-font text-center">Customer Information</p></div> <div class="form-group"> @Html.LabelFor(model => model.DriversLicenseNumber, htmlAttributes: new { @class = "common-font control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.DriversLicenseNumber, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.DriversLicenseNumber, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label common-font col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "common-font control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label common-font col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.City, htmlAttributes: new { @class = "common-font control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.City, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.City, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.County, htmlAttributes: new { @class = "control-label common-font col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.County, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.County, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.State, htmlAttributes: new { @class = "common-font control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.State, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.State, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.ZIPCode, htmlAttributes: new { @class = "common-font control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.ZIPCode, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.ZIPCode, "", new { @class = "text-danger" }) </div> </div> <div class="heading"><p class="common-font text-center">Car Selected</p></div> <div class="form-group"> @Html.LabelFor(model => model.TagNumber, htmlAttributes: new { @class = "control-label common-font col-md-3" }) <div class="col-md-3"> @Html.EditorFor(model => model.TagNumber, new { htmlAttributes = new { @class = "form-control", id = "tagNbr" } }) @Html.ValidationMessageFor(model => model.TagNumber, "", new { @class = "text-danger" }) </div> <div class="common-font col-md-6"> <span id="carDetails"></span> </div> </div> <div class="form-group"> @Html.LabelFor(model => model.CarCondition, htmlAttributes: new { @class = "common-font control-label col-md-3" }) <div class="col-md-7"> @Html.DropDownList("CarCondition", ViewData["CarCondition"] as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.CarCondition, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TankLevel, htmlAttributes: new { @class = "common-font control-label col-md-3" }) <div class="col-md-7"> @Html.DropDownList("TankLevel", ViewData["TankLevel"] as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.TankLevel, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.MileageStart, htmlAttributes: new { @class = "control-label common-font col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.MileageStart, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.MileageStart, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.StartDate, htmlAttributes: new { @class = "control-label col-md-3 common-font" }) <div class="col-md-7"> @Html.EditorFor(model => model.StartDate, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.StartDate, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.RateApplied, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.RateApplied, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.RateApplied, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TaxRate, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.TaxRate, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.TaxRate, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.OrderStatus, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.DropDownList("OrderStatus", ViewData["OrderStatus"] as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.OrderStatus, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <label class="col-md-6 control-label"> @Html.ActionLink("Rental Orders", "Index") </label> <div class="col-md-6"> <input type="submit" value="Save Rental Order" class="btn btn-primary" /> </div> </div> </div> </div> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") <script type="text/javascript"> $(document).ready(function () { $("#rsProcessedBy").blur(function () { $.ajax({ method: "GET", dataType: "json", url: "/api/Employees", success: function (data) { $.each(data, function (index, person) { if (person["EmployeeNumber"] === $("#rsProcessedBy").val()) { $("#employeeDetails").text(person["FirstName"] + " " + person["LastName"] + " (" + person["EmploymentTitle"] + ")"); } }); } }); }); $("#tagNbr").blur(function () { $.ajax({ method: "GET", dataType: "json", url: "/api/Cars", success: function (data) { $.each(data, function (index, car) { if (car["TagNumber"] === $("#tagNbr").val()) { $("#carDetails").text(car["Make"] + " " + car["Model"] + " (" + car["Passengers"] + " passengers)"); } }); } }); }); }); </script> }
@model BethesdaCarRental1.Models.RentalOrder @{ ViewBag.Title = "Delete Rental Order"; } <h2 class="common-font text-center bold blue">Delete Rental Order</h2> <h3 class="common-font text-center bold blue">Are you sure you want to delete or cancel this rental order?</h3> <hr /> <div class="containment"> <dl class="dl-horizontal common-font"> <dt>@Html.DisplayNameFor(model => model.RentalOrderId)</dt> <dd>@Html.DisplayFor(model => model.RentalOrderId)</dd> <dt>@Html.DisplayNameFor(model => model.RentStartProcessedBy)</dt> <dd>@Html.DisplayFor(model => model.RentStartProcessedBy)</dd> <dt>@Html.DisplayNameFor(model => model.RentReturnProcessedBy)</dt> <dd>@Html.DisplayFor(model => model.RentReturnProcessedBy)</dd> <dt>@Html.DisplayNameFor(model => model.DriversLicenseNumber)</dt> <dd>@Html.DisplayFor(model => model.DriversLicenseNumber)</dd> <dt>@Html.DisplayNameFor(model => model.FirstName)</dt> <dd>@Html.DisplayFor(model => model.FirstName)</dd> <dt>@Html.DisplayNameFor(model => model.LastName)</dt> <dd>@Html.DisplayFor(model => model.LastName)</dd> <dt>@Html.DisplayNameFor(model => model.Address)</dt> <dd>@Html.DisplayFor(model => model.Address)</dd> <dt>@Html.DisplayNameFor(model => model.City)</dt> <dd>@Html.DisplayFor(model => model.City)</dd> <dt>@Html.DisplayNameFor(model => model.County)</dt> <dd>@Html.DisplayFor(model => model.County)</dd> <dt>@Html.DisplayNameFor(model => model.State)</dt> <dd>@Html.DisplayFor(model => model.State)</dd> <dt>@Html.DisplayNameFor(model => model.ZIPCode)</dt> <dd>@Html.DisplayFor(model => model.ZIPCode)</dd> <dt>@Html.DisplayNameFor(model => model.TagNumber)</dt> <dd>@Html.DisplayFor(model => model.TagNumber)</dd> <dt>@Html.DisplayNameFor(model => model.CarCondition)</dt> <dd>@Html.DisplayFor(model => model.CarCondition)</dd> <dt>@Html.DisplayNameFor(model => model.TankLevel)</dt> <dd>@Html.DisplayFor(model => model.TankLevel)</dd> <dt>@Html.DisplayNameFor(model => model.MileageStart)</dt> <dd>@Html.DisplayFor(model => model.MileageStart)</dd> <dt>@Html.DisplayNameFor(model => model.MileageEnd)</dt> <dd>@Html.DisplayFor(model => model.MileageEnd)</dd> <dt>@Html.DisplayNameFor(model => model.MileageTotal)</dt> <dd>@Html.DisplayFor(model => model.MileageTotal)</dd> <dt>@Html.DisplayNameFor(model => model.StartDate)</dt> <dd>@Html.DisplayFor(model => model.StartDate)</dd> <dt>@Html.DisplayNameFor(model => model.EndDate)</dt> <dd>@Html.DisplayFor(model => model.EndDate)</dd> <dt>@Html.DisplayNameFor(model => model.TotalDays)</dt> <dd>@Html.DisplayFor(model => model.TotalDays)</dd> <dt>@Html.DisplayNameFor(model => model.RateApplied)</dt> <dd>@Html.DisplayFor(model => model.RateApplied)</dd> <dt>@Html.DisplayNameFor(model => model.SubTotal)</dt> <dd>@Html.DisplayFor(model => model.SubTotal)</dd> <dt>@Html.DisplayNameFor(model => model.TaxRate)</dt> <dd>@Html.DisplayFor(model => model.TaxRate)</dd> <dt>@Html.DisplayNameFor(model => model.TaxAmount)</dt> <dd>@Html.DisplayFor(model => model.TaxAmount)</dd> <dt>@Html.DisplayNameFor(model => model.OrderTotal)</dt> <dd>@Html.DisplayFor(model => model.OrderTotal)</dd> <dt>@Html.DisplayNameFor(model => model.PaymentDate)</dt> <dd>@Html.DisplayFor(model => model.PaymentDate)</dd> <dt>@Html.DisplayNameFor(model => model.OrderStatus)</dt> <dd>@Html.DisplayFor(model => model.OrderStatus)</dd> </dl> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-actions no-color"> <input type="submit" value="Delete this Rental Order" class="btn btn-primary" /> :: @Html.ActionLink("Rental Orders", "Index") </div> } </div>
@model BethesdaCarRental1.Models.RentalOrder @{ ViewBag.Title = "Rental Order Details"; } <h2 class="common-font text-center bold blue">Rental Order Details</h2> <hr /> <div class="containment"> <dl class="dl-horizontal common-font"> <dt>@Html.DisplayNameFor(model => model.RentalOrderId)</dt> <dt>@Html.DisplayNameFor(model => model.RentStartProcessedBy)</dt> <dd>@Html.DisplayFor(model => model.RentStartProcessedBy)</dd> <dt>@Html.DisplayNameFor(model => model.RentReturnProcessedBy)</dt> <dd>@Html.DisplayFor(model => model.RentReturnProcessedBy)</dd> <dt>@Html.DisplayNameFor(model => model.DriversLicenseNumber)</dt> <dd>@Html.DisplayFor(model => model.DriversLicenseNumber)</dd> <dt>@Html.DisplayNameFor(model => model.FirstName)</dt> <dd>@Html.DisplayFor(model => model.FirstName)</dd> <dt>@Html.DisplayNameFor(model => model.LastName)</dt> <dd>@Html.DisplayFor(model => model.LastName)</dd> <dt>@Html.DisplayNameFor(model => model.Address)</dt> <dd>@Html.DisplayFor(model => model.Address)</dd> <dt>@Html.DisplayNameFor(model => model.City)</dt> <dd>@Html.DisplayFor(model => model.City)</dd> <dt>@Html.DisplayNameFor(model => model.County)</dt> <dd>@Html.DisplayFor(model => model.County)</dd> <dt>@Html.DisplayNameFor(model => model.State)</dt> <dd>@Html.DisplayFor(model => model.State)</dd> <dt>@Html.DisplayNameFor(model => model.ZIPCode)</dt> <dd>@Html.DisplayFor(model => model.ZIPCode)</dd> <dt>@Html.DisplayNameFor(model => model.TagNumber)</dt> <dd>@Html.DisplayFor(model => model.TagNumber)</dd> <dt>@Html.DisplayNameFor(model => model.CarCondition)</dt> <dd>@Html.DisplayFor(model => model.CarCondition)</dd> <dt>@Html.DisplayNameFor(model => model.TankLevel)</dt> <dd>@Html.DisplayFor(model => model.TankLevel)</dd> <dt>@Html.DisplayNameFor(model => model.MileageStart)</dt> <dd>@Html.DisplayFor(model => model.MileageStart)</dd> <dt>@Html.DisplayNameFor(model => model.MileageEnd)</dt> <dd>@Html.DisplayFor(model => model.MileageEnd)</dd> <dt>@Html.DisplayNameFor(model => model.MileageTotal)</dt> <dd>@Html.DisplayFor(model => model.MileageTotal)</dd> <dt>@Html.DisplayNameFor(model => model.StartDate)</dt> <dd>@Html.DisplayFor(model => model.StartDate)</dd> <dt>@Html.DisplayNameFor(model => model.EndDate)</dt> <dd>@Html.DisplayFor(model => model.EndDate)</dd> <dt>@Html.DisplayNameFor(model => model.TotalDays)</dt> <dd>@Html.DisplayFor(model => model.TotalDays)</dd> <dt>@Html.DisplayNameFor(model => model.RateApplied)</dt> <dd>@Html.DisplayFor(model => model.RateApplied)</dd> <dt>@Html.DisplayNameFor(model => model.SubTotal)</dt> <dd>@Html.DisplayFor(model => model.SubTotal)</dd> <dt>@Html.DisplayNameFor(model => model.TaxRate)</dt> <dd>@Html.DisplayFor(model => model.TaxRate)</dd> <dt>@Html.DisplayNameFor(model => model.TaxAmount)</dt> <dd>@Html.DisplayFor(model => model.TaxAmount)</dd> <dt>@Html.DisplayNameFor(model => model.OrderTotal)</dt> <dd>@Html.DisplayFor(model => model.OrderTotal)</dd> <dt>@Html.DisplayNameFor(model => model.PaymentDate)</dt> <dd>@Html.DisplayFor(model => model.PaymentDate)</dd> <dt>@Html.DisplayNameFor(model => model.OrderStatus)</dt> <dd>@Html.DisplayFor(model => model.OrderStatus)</dd> </dl> </div> <p class="text-center"> @Html.ActionLink("Edit", "Edit", new { id = Model.RentalOrderId }) :: @Html.ActionLink("Rental Orders", "Index") </p>
@model BethesdaCarRental1.Models.RentalOrder @{ ViewBag.Title = "Edit Rental Order"; } <h2 class="common-font text-center bold blue">Rental Order Vehicle Return</h2> <hr /> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="containment"> <div class="form-horizontal common-font"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) @Html.HiddenFor(model => model.RentalOrderId) <div class="heading"><p class="common-font text-center something">Rental Order Startup Processed By</p></div> <div class="form-group"> <label for="rsProcessedBy" class="common-font control-label col-md-3">Employee #</label> <div class="col-md-3"> @Html.EditorFor(model => model.RentStartProcessedBy, new { htmlAttributes = new { @class = "form-control", id = "rsProcessedBy" } }) @Html.ValidationMessageFor(model => model.RentStartProcessedBy, "", new { @class = "text-danger" }) </div> <div class="common-font col-md-6"> <span id="rsEmployeeDetails"></span> </div> </div> <div class="heading"><p class="common-font text-center something">Rental Order Return Processed By</p></div> <div class="form-group"> @Html.LabelFor(model => model.RentReturnProcessedBy, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-3"> @Html.EditorFor(model => model.RentReturnProcessedBy, new { htmlAttributes = new { @class = "form-control", id = "rrProcessedBy" } }) @Html.ValidationMessageFor(model => model.RentReturnProcessedBy, "", new { @class = "text-danger" }) </div> <div class="common-font col-md-6"> <span id="rrEmployeeDetails"></span> </div> </div> <div class="form-group"> @Html.LabelFor(model => model.DriversLicenseNumber, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.DriversLicenseNumber, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.DriversLicenseNumber, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Address, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.City, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.City, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.City, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.County, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.County, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.County, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.State, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.State, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.State, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.ZIPCode, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.ZIPCode, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.ZIPCode, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TagNumber, htmlAttributes: new { @class = "control-label common-font col-md-3" }) <div class="col-md-3"> @Html.EditorFor(model => model.TagNumber, new { htmlAttributes = new { @class = "form-control", id = "tagNbr" } }) @Html.ValidationMessageFor(model => model.TagNumber, "", new { @class = "text-danger" }) </div> <div class="common-font col-md-6"> <span id="carDetails"></span> </div> </div> <div class="form-group"> @Html.LabelFor(model => model.CarCondition, htmlAttributes: new { @class = "common-font control-label col-md-3" }) <div class="col-md-7"> @Html.DropDownList("CarCondition", ViewData["CarCondition"] as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.CarCondition, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TankLevel, htmlAttributes: new { @class = "common-font control-label col-md-3" }) <div class="col-md-7"> @Html.DropDownList("TankLevel", ViewData["TankLevel"] as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.TankLevel, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.MileageStart, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.MileageStart, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.MileageStart, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.MileageEnd, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.MileageEnd, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.MileageEnd, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.MileageTotal, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.MileageTotal, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.MileageTotal, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.StartDate, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.StartDate, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.StartDate, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.EndDate, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.EndDate, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.EndDate, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TotalDays, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.TotalDays, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.TotalDays, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.RateApplied, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.RateApplied, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.RateApplied, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.SubTotal, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.SubTotal, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.SubTotal, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TaxRate, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.TaxRate, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.TaxRate, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TaxAmount, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.TaxAmount, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.TaxAmount, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.OrderTotal, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.OrderTotal, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.OrderTotal, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.PaymentDate, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.EditorFor(model => model.PaymentDate, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.PaymentDate, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.OrderStatus, htmlAttributes: new { @class = "control-label col-md-3" }) <div class="col-md-7"> @Html.DropDownList("OrderStatus", ViewData["OrderStatus"] as SelectList, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.OrderStatus, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <label class="col-md-6 control-label"> @Html.ActionLink("Rental Orders", "Index") </label> <div class="col-md-6"> <input type="submit" value="Save/Update Rental Order" class="btn btn-primary" /> </div> </div> </div> </div> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") <script type="text/javascript"> $(document).ready(function () { $.ajax({ method: "GET", dataType: "json", url: "/api/Employees", success: function (data) { $.each(data, function (index, person) { if (person["EmployeeNumber"] === $("#rsProcessedBy").val()) { $("#rsEmployeeDetails").text(person["FirstName"] + " " + person["LastName"] + " (" + person["EmploymentTitle"] + ")"); } }); } }); $.ajax({ method: "GET", dataType: "json", url: "/api/Cars", success: function (data) { $.each(data, function (index, car) { if (car["TagNumber"] === $("#tagNbr").val()) { $("#carDetails").text(car["Make"] + " " + car["Model"] + " (" + car["Passengers"] + " passengers)"); } }); } }); $("#rsProcessedBy").blur(function () { $.ajax({ method: "GET", dataType: "json", url: "/api/Employees", success: function (data) { $.each(data, function (index, person) { if (person["EmployeeNumber"] === $("#rsProcessedBy").val()) { $("#rsEmployeeDetails").text(person["FirstName"] + " " + person["LastName"] + " (" + person["EmploymentTitle"] + ")"); } }); } }); }); $("#rrProcessedBy").blur(function () { $.ajax({ method: "GET", dataType: "json", url: "/api/Employees", success: function (data) { $.each(data, function (index, person) { if (person["EmployeeNumber"] === $("#rrProcessedBy").val()) { $("#rrEmployeeDetails").text(person["FirstName"] + " " + person["LastName"] + " (" + person["EmploymentTitle"] + ")"); } }); } }); }); $("#tagNbr").blur(function () { $.ajax({ method: "GET", dataType: "json", url: "/api/Cars", success: function (data) { $.each(data, function (index, car) { if (car["TagNumber"] === $("#tagNbr").val()) { $("#carDetails").text(car["Make"] + " " + car["Model"] + " (" + car["Passengers"] + " passengers)"); } }); } }); }); }); </script> }
@model IEnumerable<BethesdaCarRental1.Models.RentalOrder> @{ ViewBag.Title = "Rental Orders"; } <h2 class="bold blue common-font text-center">Rental Orders</h2> <table class="table table-striped common-font"> <tr> <th class="text-center">@Html.DisplayNameFor(model => model.RentalOrderId)</th> <th>@Html.DisplayNameFor(model => model.RentStartProcessedBy)</th> <th>@Html.DisplayNameFor(model => model.RentReturnProcessedBy)</th> <th>@Html.DisplayNameFor(model => model.DriversLicenseNumber)</th> <th>@Html.DisplayNameFor(model => model.FirstName)</th> <th>@Html.DisplayNameFor(model => model.LastName)</th> <th>@Html.DisplayNameFor(model => model.Address)</th> <th>@Html.DisplayNameFor(model => model.City)</th> <th>@Html.DisplayNameFor(model => model.County)</th> <th>@Html.DisplayNameFor(model => model.State)</th> <th>@Html.DisplayNameFor(model => model.ZIPCode)</th> <th>@Html.DisplayNameFor(model => model.TagNumber)</th> <th>@Html.DisplayNameFor(model => model.CarCondition)</th> <th>@Html.DisplayNameFor(model => model.TankLevel)</th> <th>@Html.DisplayNameFor(model => model.MileageStart)</th> <th>@Html.DisplayNameFor(model => model.MileageEnd)</th> <th>@Html.DisplayNameFor(model => model.MileageTotal)</th> <th>@Html.DisplayNameFor(model => model.StartDate)</th> <th>@Html.DisplayNameFor(model => model.EndDate)</th> <th>@Html.DisplayNameFor(model => model.TotalDays)</th> <th>@Html.DisplayNameFor(model => model.RateApplied)</th> <th>@Html.DisplayNameFor(model => model.SubTotal)</th> <th>@Html.DisplayNameFor(model => model.TaxRate)</th> <th>@Html.DisplayNameFor(model => model.TaxAmount)</th> <th>@Html.DisplayNameFor(model => model.OrderTotal)</th> <th>@Html.DisplayNameFor(model => model.PaymentDate)</th> <th>@Html.DisplayNameFor(model => model.OrderStatus)</th> <th>Rental Orders</th> </tr> @foreach (var item in Model) { <tr> <td class="text-center">@Html.DisplayFor(modelItem => item.RentalOrderId)</td> <td>@Html.DisplayFor(modelItem => item.RentStartProcessedBy)</td> <td>@Html.DisplayFor(modelItem => item.RentReturnProcessedBy)</td> <td>@Html.DisplayFor(modelItem => item.DriversLicenseNumber)</td> <td>@Html.DisplayFor(modelItem => item.FirstName)</td> <td>@Html.DisplayFor(modelItem => item.LastName)</td> <td>@Html.DisplayFor(modelItem => item.Address)</td> <td>@Html.DisplayFor(modelItem => item.City)</td> <td>@Html.DisplayFor(modelItem => item.County)</td> <td>@Html.DisplayFor(modelItem => item.State)</td> <td>@Html.DisplayFor(modelItem => item.ZIPCode)</td> <td>@Html.DisplayFor(modelItem => item.TagNumber)</td> <td>@Html.DisplayFor(modelItem => item.CarCondition)</td> <td>@Html.DisplayFor(modelItem => item.TankLevel)</td> <td>@Html.DisplayFor(modelItem => item.MileageStart)</td> <td>@Html.DisplayFor(modelItem => item.MileageEnd)</td> <td>@Html.DisplayFor(modelItem => item.MileageTotal)</td> <td>@Html.DisplayFor(modelItem => item.StartDate)</td> <td>@Html.DisplayFor(modelItem => item.EndDate)</td> <td>@Html.DisplayFor(modelItem => item.TotalDays)</td> <td>@Html.DisplayFor(modelItem => item.RateApplied)</td> <td>@Html.DisplayFor(modelItem => item.SubTotal)</td> <td>@Html.DisplayFor(modelItem => item.TaxRate)</td> <td>@Html.DisplayFor(modelItem => item.TaxAmount)</td> <td>@Html.DisplayFor(modelItem => item.OrderTotal)</td> <td>@Html.DisplayFor(modelItem => item.PaymentDate)</td> <td>@Html.DisplayFor(modelItem => item.OrderStatus)</td> <td> @Html.ActionLink("Return", "Edit", new { id = item.RentalOrderId }) :: @Html.ActionLink("Details", "Details", new { id = item.RentalOrderId }) :: @Html.ActionLink("Delete", "Delete", new { id = item.RentalOrderId }) </td> </tr> } </table> <p class="text-center"> @Html.ActionLink("Start New Rental Order", "Create") </p>
Finalizing the Application
After creating the objects necessary for the application, we can visit the layout page and the Index document of the Home controoller.
Practical Learning: Finalizing the Application
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Bethesda Car Rental :: @ViewBag.Title</title> @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") </head> <body> <div id="top-banner"> <p class="text-center"><img src="~/Images/bcr1.png" alt="Bethesda Car Rental" width="638" height="85" /></p> </div> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="container centralized"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> @Html.ActionLink("BETHESDA CAR RENTAL", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li>@Html.ActionLink("EMPLOYEES", "Index", "Employees")</li> <li>@Html.ActionLink("CARS", "Index", "Cars")</li> <li>@Html.ActionLink("RENTAL ORDERS", "Index", "RentalOrders")</li> <li>@Html.ActionLink("ABOUT BCR", "About", "Home")</li> <li>@Html.ActionLink("CONTACT US", "Contact", "Home")</li> <li>@Html.ActionLink("API", "Index", "Help", new { area = "" }, null)</li> </ul> </div> </div> </div> <div class="container body-content push-down"> @RenderBody() <hr /> <footer> <p class="text-center common-font blue">© @DateTime.Now.Year - Bethesda Car Rental</p> </footer> </div> @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap") @RenderSection("scripts", required: false) </body> </html>
<div class="row"> <div class="col-md-6"> <div class="row"> <div class="col-md-4"> <p><img src="~/Images/bcr2.png" alt="Bethesda Car Rental - Chief Executive Officer Message" width="150" height="150" class="bordered" /></p> </div> <div class="col-md-8"> <p class="sect-title">CEO'S MESSAGE</p> <p class="parajust">Bethesda Car Rental is a medium-size business that provides cars in many category to address various needs for car rent or short-term lease. We provide small/compact/economic cars, convertibles, sport utilities, pick-up trucks, and passenger vans.</p> </div> </div> </div> <div class="col-md-6"> <div class="row"> <div class="col-md-4"> <p><img src="~/Images/bcr3.png" alt="Bethesda Car Rental - Chief Executive Officer Message" width="150" height="150" class="bordered" /></p> </div> <div class="col-md-8"> <p class="sect-title">CAREER/EMPLOYMENT</p> <p class="parajust">We are currently hiring in various categories in management, driving, maintenance, community service, public relations, research, and professional/technical writing, etc. You can apply to one or as many positions as you need.</p> </div> </div> </div> </div> <hr /> <div class="row"> <div class="col-md-6"> <div class="row"> <div class="col-md-4"> <p><img src="~/Images/bcr4.png" alt="Bethesda Car Rental - Chief Executive Officer Message" width="150" height="150" class="bordered" /></p> </div> <div class="col-md-8"> <p class="sect-title">OUR FLEET</p> <p class="parajust">Bethesda Car Rental has a large collection of cars to meet any need. Whether you need a simple ride for the weekend, a convenient solution to attend a conference, a means to visit the area, or a comfortable vehicle for a trip to the countryside, BCR will come to the rescue.</p> </div> </div> </div> <div class="col-md-6"> <div class="row"> <div class="col-md-4"> <p><img src="~/Images/bcr5.png" alt="Bethesda Car Rental - Chief Executive Officer Message" width="150" height="150" class="bordered" /></p> </div> <div class="col-md-8"> <p class="sect-title">RESERVATIONS</p> <ul> <li>@Html.ActionLink("Make a reservation", "Index", "Home")</li> <li>@Html.ActionLink("Check your reservation", "Index", "Home")</li> <li>@Html.ActionLink("Change your reservation", "Index", "Home")</li> <li>@Html.ActionLink("Cancel a reservation", "Index", "Home")</li> <li>@Html.ActionLink("Contact our Office", "Index", "Home")</li> </ul> </div> </div> </div> </div>
Employee # | First Name | Last Name | Employment Title |
92735 | Jeffrey | Leucart | General Manager |
29268 | Kathleen | Rawley | Technician |
73948 | Allison | Garlow | Accounts Associate |
40508 | David | Stillson | Accounts Manager |
24793 | Michelle | Taylor | Accounts Associate |
20480 | Peter | Futterman | Accounts Associate |
72084 | Georgia | Rosen | Customer Service Representative |
38408 | Karen | Blackney | Accounts Associate |
Tag # | Make | Model | Passengers | Category | Condition | Availability Status |
M297304 | Jeep | Wrangler Sahara | 4 | SUV | Excellent | Available |
1AD8049 | Dodge | Charger SXT | 4 | Standard | Driveable | Available |
DFP924 | Toyota | Sienna LE FWD | 8 | Passenger Van | Driveable | Available |
GTH295 | Kia | Rio LX | 4 | Economy | Excellent | Available |
2AL9485 | Chrysler | 200 | 2 | Compact | Needs Repair | Being Serviced |
BND927 | Ford | Fiesta SE | 4 | Economy | Excellent | Available |
9KM8206 | Honda | Accord EX | 4 | Standard | Good | Unknown |
8AE9294 | Lincoln | MKT 3.5L | 4 | Full Size | Excellent | Available |
M280360 | Toyota | Rav4 LE | 4 | SUV | Excellent | Being Serviced |
5MD2084 | Buick | Enclave | 4 | Mini Van | Driveable | Unknown |
2AT9274 | Ford | Focus SF | 4 | Compact | Excellent | Available |
6AD8274 | Mazda | CX-9 | 7 | Mini Van | Driveable | Available |
4AF9284 | Ford | F-150 Reg Cap 4X4 | 2 | Pickup Truck | Driveable | Available |
ADG279 | GMC | Acadia SLE | 5 | SUV | Excellent | Available |
8DN8604 | Toyota | Camry XSE | 4 | Standard | Excellent | Available |
4DP2731 | Buick | Lacrosse Avenir | 4 | Full Size | Other | Being Serviced |
Employee #: 20480 Drv. Lic. #: 293-84-9374 First Name: Marcel Last Name: Buhler Address: 6800 Haxell Crt City: Alexandria State: VA ZIP Code: 22314 Tag Number: DFP924 Car Condition: Excellent Tank Level: Half Mileage Start: 12728 Start Date: 12/10/2022 Rate Applied: 69.95 Tax Rate: 7.75 Order Status: Ongoing
Employee # | Drv. Lic. # | First Name | Last Name | Address | City | State | ZIP Code | Tag Number | Car Condition | Tank Level | Mileage Start | Start Date | Rate Applied | Tax Rate | Order Status |
24793 | 826-83-0479 | Joan | Altman | 3725 South Dakota Ave NW | Washington | DC | 20012 | 4AF9284 | Driveable | 1/4 Empty | 24715 | 12/10/2022 | 62.95 | 6.85 | Ongoing |
38408 | 958-27-4050 | Thomas | Filder | 4905 Herrenden St | Arlington | VA | 22204 | BND927 | Excellent | Full | 6064 | 12/12/2022 | 34.95 | 8.35 | Ongoing |
Rental Order Return Processed By: 40508 Mileage End: 6229 Total Mileage: 165 End Date: 12/16/2022 Total Days: 4 Sub-Total: 139.80 Tax Amount: 11.67 Order Total: 151.47 Payment Date: 12/16/2022 Order Status: Order Completed
Rental Order Return Processed By: 24793 Mileage End: 13022 Total Mileage: 302 End Date: 12/16/2022 Total Days: 5 Sub-Total: 349.75 Tax Amount: 27.11 Order Total: 376.86 Payment Date: 12/16/2022 Order Status: Order Completed
|
|||
Home | Copyright © 2017-2022, FunctionX | Wednesday 04 May 2022 | Home |
|