feature: custom device models
This commit is contained in:
@@ -58,7 +58,7 @@ namespace Disco.Data.Repository
|
||||
{
|
||||
if (Database.DeviceModels.Count() == 0)
|
||||
{
|
||||
Database.DeviceModels.Add(new DeviceModel { Manufacturer = "Unknown", Model = "Unknown", Description = "Unknown Device Model" });
|
||||
Database.DeviceModels.Add(new DeviceModel { Manufacturer = "Unknown", Model = "Unknown", Description = "Unknown Device Model", ModelType = "Unknown" });
|
||||
}
|
||||
UpdateDeviceModelConfiguration(Database);
|
||||
// Removed: 2013-01-14 G#
|
||||
|
||||
@@ -194,6 +194,7 @@
|
||||
<Compile Include="UI\Config\DeviceModel\ConfigDeviceModelIndexModelItem.cs" />
|
||||
<Compile Include="UI\Config\DeviceModel\ConfigDeviceModelComponentsModel.cs" />
|
||||
<Compile Include="UI\Config\DeviceModel\ConfigDeviceModelShowModel.cs" />
|
||||
<Compile Include="UI\Config\DeviceModel\ConfigDeviceModelCreateModel.cs" />
|
||||
<Compile Include="UI\Config\DeviceProfile\ConfigDeviceProfileCreateModel.cs" />
|
||||
<Compile Include="UI\Config\DeviceProfile\ConfigDeviceProfileDefaultsModel.cs" />
|
||||
<Compile Include="UI\Config\DeviceProfile\ConfigDeviceProfileIndexModel.cs" />
|
||||
|
||||
@@ -6,6 +6,8 @@ namespace Disco.Models.Repository
|
||||
{
|
||||
public class DeviceModel
|
||||
{
|
||||
public static readonly string CustomModelType = "Custom";
|
||||
|
||||
[Key]
|
||||
public int Id { get; set; }
|
||||
[StringLength(500)]
|
||||
@@ -17,11 +19,6 @@ namespace Disco.Models.Repository
|
||||
public string Model { get; set; }
|
||||
[StringLength(40)]
|
||||
public string ModelType { get; set; }
|
||||
|
||||
// Remove Reliance On!
|
||||
// Removed: 2013-01-14 G#
|
||||
//[Obsolete("Image to be removed from the Database")]
|
||||
//public byte[] Image { get; set; }
|
||||
|
||||
[DisplayFormat(ApplyFormatInEditMode = true, ConvertEmptyStringToNull = true, DataFormatString = "{0:yyyy/MM/dd}", HtmlEncode = false)]
|
||||
public DateTime? DefaultPurchaseDate { get; set; }
|
||||
@@ -40,11 +37,14 @@ namespace Disco.Models.Repository
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(this.Description))
|
||||
if (string.IsNullOrWhiteSpace(Description))
|
||||
{
|
||||
return string.Format("{0} {1}", this.Manufacturer, this.Model);
|
||||
return $"{Manufacturer} {Model}";
|
||||
}
|
||||
return this.Description;
|
||||
return Description;
|
||||
}
|
||||
|
||||
public bool IsCustomModel()
|
||||
=> CustomModelType.Equals(ModelType, StringComparison.Ordinal);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Disco.Models.UI.Config.DeviceModel
|
||||
{
|
||||
public interface ConfigDeviceModelCreateModel : BaseUIModel
|
||||
{
|
||||
string Description { get; set; }
|
||||
string Manufacturer { get; set; }
|
||||
string ManufacturerModel { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,7 @@ namespace Disco.Services.Authorization
|
||||
{ "Config.DeviceFlag.Show", new Tuple<Func<RoleClaims, bool>, Action<RoleClaims, bool>, string, string, bool>(c => c.Config.DeviceFlag.Show, (c, v) => c.Config.DeviceFlag.Show = v, "Show Device Flags", "Can show device flags", false) },
|
||||
{ "Config.DeviceModel.ConfigureComponents", new Tuple<Func<RoleClaims, bool>, Action<RoleClaims, bool>, string, string, bool>(c => c.Config.DeviceModel.ConfigureComponents, (c, v) => c.Config.DeviceModel.ConfigureComponents = v, "Configure Device Model Components", "Can configure device model components", false) },
|
||||
{ "Config.DeviceModel.Configure", new Tuple<Func<RoleClaims, bool>, Action<RoleClaims, bool>, string, string, bool>(c => c.Config.DeviceModel.Configure, (c, v) => c.Config.DeviceModel.Configure = v, "Configure Device Models", "Can configure device models", false) },
|
||||
{ "Config.DeviceModel.CreateCustom", new Tuple<Func<RoleClaims, bool>, Action<RoleClaims, bool>, string, string, bool>(c => c.Config.DeviceModel.CreateCustom, (c, v) => c.Config.DeviceModel.CreateCustom = v, "Create Custom Device Models", "Can create custom device models", false) },
|
||||
{ "Config.DeviceModel.Delete", new Tuple<Func<RoleClaims, bool>, Action<RoleClaims, bool>, string, string, bool>(c => c.Config.DeviceModel.Delete, (c, v) => c.Config.DeviceModel.Delete = v, "Delete Device Models", "Can delete device models", false) },
|
||||
{ "Config.DeviceModel.Show", new Tuple<Func<RoleClaims, bool>, Action<RoleClaims, bool>, string, string, bool>(c => c.Config.DeviceModel.Show, (c, v) => c.Config.DeviceModel.Show = v, "Show Device Models", "Can show device models", false) },
|
||||
{ "Config.DeviceProfile.ConfigureComputerNameTemplate", new Tuple<Func<RoleClaims, bool>, Action<RoleClaims, bool>, string, string, bool>(c => c.Config.DeviceProfile.ConfigureComputerNameTemplate, (c, v) => c.Config.DeviceProfile.ConfigureComputerNameTemplate = v, "Configure Computer Name Templates", "Can configure computer name templates for device profiles", false) },
|
||||
@@ -259,6 +260,7 @@ namespace Disco.Services.Authorization
|
||||
new ClaimNavigatorItem("Config.DeviceModel", "Device Models", "Permissions related to Device Models", false, new List<IClaimNavigatorItem>() {
|
||||
new ClaimNavigatorItem("Config.DeviceModel.ConfigureComponents", false),
|
||||
new ClaimNavigatorItem("Config.DeviceModel.Configure", false),
|
||||
new ClaimNavigatorItem("Config.DeviceModel.CreateCustom", false),
|
||||
new ClaimNavigatorItem("Config.DeviceModel.Delete", false),
|
||||
new ClaimNavigatorItem("Config.DeviceModel.Show", false)
|
||||
}),
|
||||
@@ -584,6 +586,7 @@ namespace Disco.Services.Authorization
|
||||
c.Config.DeviceFlag.Show = true;
|
||||
c.Config.DeviceModel.ConfigureComponents = true;
|
||||
c.Config.DeviceModel.Configure = true;
|
||||
c.Config.DeviceModel.CreateCustom = true;
|
||||
c.Config.DeviceModel.Delete = true;
|
||||
c.Config.DeviceModel.Show = true;
|
||||
c.Config.DeviceProfile.ConfigureComputerNameTemplate = true;
|
||||
@@ -914,6 +917,11 @@ namespace Disco.Services.Authorization
|
||||
/// </summary>
|
||||
public const string Configure = "Config.DeviceModel.Configure";
|
||||
|
||||
/// <summary>Create Custom Device Models
|
||||
/// <para>Can create custom device models</para>
|
||||
/// </summary>
|
||||
public const string CreateCustom = "Config.DeviceModel.CreateCustom";
|
||||
|
||||
/// <summary>Delete Device Models
|
||||
/// <para>Can delete device models</para>
|
||||
/// </summary>
|
||||
|
||||
+3
@@ -9,6 +9,9 @@
|
||||
[ClaimDetails("Configure Device Model Components", "Can configure device model components")]
|
||||
public bool ConfigureComponents { get; set; }
|
||||
|
||||
[ClaimDetails("Create Custom Device Models", "Can create custom device models")]
|
||||
public bool CreateCustom { get; set; }
|
||||
|
||||
[ClaimDetails("Delete Device Models", "Can delete device models")]
|
||||
public bool Delete { get; set; }
|
||||
|
||||
|
||||
@@ -77,14 +77,14 @@ namespace Disco.Services
|
||||
ModelType = ModelType.Trim();
|
||||
|
||||
// Already Exists?
|
||||
var deviceModel = DeviceModelsSet.FirstOrDefault(dm => dm.Manufacturer == Manufacturer && dm.Model == Model);
|
||||
var deviceModel = DeviceModelsSet.Where(dm => dm.ModelType != DeviceModel.CustomModelType).FirstOrDefault(dm => dm.Manufacturer == Manufacturer && dm.Model == Model);
|
||||
if (deviceModel == null)
|
||||
{
|
||||
// Ensure only one thread/request at a time
|
||||
lock (_CreateDeviceModelLock)
|
||||
{
|
||||
// Check again now that lock is enforced
|
||||
deviceModel = DeviceModelsSet.FirstOrDefault(dm => dm.Manufacturer == Manufacturer && dm.Model == Model);
|
||||
deviceModel = DeviceModelsSet.Where(dm => dm.ModelType != DeviceModel.CustomModelType).FirstOrDefault(dm => dm.Manufacturer == Manufacturer && dm.Model == Model);
|
||||
|
||||
if (deviceModel == null)
|
||||
{
|
||||
|
||||
@@ -116,5 +116,13 @@ namespace Disco
|
||||
.Select(s => s.Score(Test, Fuzziness))
|
||||
.Average();
|
||||
}
|
||||
|
||||
public static string NullOrTrimmed(this string value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
return null;
|
||||
else
|
||||
return value.Trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
{
|
||||
|
||||
const string pDescription = "description";
|
||||
const string pManufacturer = "manufacturer";
|
||||
const string pModel = "model";
|
||||
const string pDefaultPurchaseDate = "defaultpurchasedate";
|
||||
const string pDefaultWarrantyProvider = "defaultwarrantyprovider";
|
||||
const string pDefaultRepairProvider = "defaultrepairprovider";
|
||||
@@ -40,6 +42,12 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
case pDescription:
|
||||
UpdateDescription(deviceModel, value);
|
||||
break;
|
||||
case pManufacturer:
|
||||
UpdateManufacturer(deviceModel, value);
|
||||
break;
|
||||
case pModel:
|
||||
UpdateModel(deviceModel, value);
|
||||
break;
|
||||
case pDefaultPurchaseDate:
|
||||
UpdateDefaultPurchaseDate(deviceModel, value);
|
||||
break;
|
||||
@@ -72,13 +80,25 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
|
||||
#region Update Shortcut Methods
|
||||
|
||||
|
||||
[DiscoAuthorize(Claims.Config.DeviceModel.Configure)]
|
||||
public virtual ActionResult UpdateDescription(int id, string Description = null, bool redirect = false)
|
||||
{
|
||||
return Update(id, pDescription, Description, redirect);
|
||||
}
|
||||
|
||||
[DiscoAuthorize(Claims.Config.DeviceModel.Configure)]
|
||||
public virtual ActionResult UpdateManufacturer(int id, string manufacturer = null, bool redirect = false)
|
||||
{
|
||||
return Update(id, pManufacturer, manufacturer, redirect);
|
||||
}
|
||||
|
||||
[DiscoAuthorize(Claims.Config.DeviceModel.Configure)]
|
||||
public virtual ActionResult UpdateModel(int id, string model = null, bool redirect = false)
|
||||
{
|
||||
return Update(id, pModel, model, redirect);
|
||||
}
|
||||
|
||||
[DiscoAuthorize(Claims.Config.DeviceModel.Configure)]
|
||||
public virtual ActionResult UpdateDefaultPurchaseDate(int id, string DefaultPurchaseDate = null, bool redirect = false)
|
||||
{
|
||||
@@ -100,7 +120,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
#endregion
|
||||
|
||||
#region Update Properties
|
||||
private void UpdateDescription(Disco.Models.Repository.DeviceModel deviceModel, string Description)
|
||||
private void UpdateDescription(DeviceModel deviceModel, string Description)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(Description))
|
||||
deviceModel.Description = null;
|
||||
@@ -108,7 +128,29 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
deviceModel.Description = Description;
|
||||
Database.SaveChanges();
|
||||
}
|
||||
private void UpdateDefaultPurchaseDate(Disco.Models.Repository.DeviceModel deviceModel, string DefaultPurchaseDate)
|
||||
private void UpdateManufacturer(DeviceModel deviceModel, string manufacturer)
|
||||
{
|
||||
if (!deviceModel.IsCustomModel())
|
||||
throw new InvalidCastException("Cannot update Manufacturer for a non-custom device model.");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(manufacturer))
|
||||
deviceModel.Manufacturer = null;
|
||||
else
|
||||
deviceModel.Manufacturer = manufacturer;
|
||||
Database.SaveChanges();
|
||||
}
|
||||
private void UpdateModel(DeviceModel deviceModel, string model)
|
||||
{
|
||||
if (!deviceModel.IsCustomModel())
|
||||
throw new InvalidCastException("Cannot update Model for a non-custom device model.");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(model))
|
||||
deviceModel.Model = null;
|
||||
else
|
||||
deviceModel.Model = model;
|
||||
Database.SaveChanges();
|
||||
}
|
||||
private void UpdateDefaultPurchaseDate(DeviceModel deviceModel, string DefaultPurchaseDate)
|
||||
{
|
||||
if (string.IsNullOrEmpty(DefaultPurchaseDate))
|
||||
{
|
||||
@@ -128,7 +170,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
Database.SaveChanges();
|
||||
}
|
||||
private void UpdateDefaultWarrantyProvider(Disco.Models.Repository.DeviceModel deviceModel, string DefaultWarrantyProvider)
|
||||
private void UpdateDefaultWarrantyProvider(DeviceModel deviceModel, string DefaultWarrantyProvider)
|
||||
{
|
||||
if (string.IsNullOrEmpty(DefaultWarrantyProvider))
|
||||
{
|
||||
@@ -142,7 +184,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
Database.SaveChanges();
|
||||
}
|
||||
private void UpdateDefaultRepairProvider(Disco.Models.Repository.DeviceModel deviceModel, string DefaultRepairProvider)
|
||||
private void UpdateDefaultRepairProvider(DeviceModel deviceModel, string DefaultRepairProvider)
|
||||
{
|
||||
if (string.IsNullOrEmpty(DefaultRepairProvider))
|
||||
{
|
||||
@@ -192,7 +234,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
return File(Links.ClientSource.Style.Images.DeviceTypes.Unknown_png, "image/png");
|
||||
}
|
||||
|
||||
|
||||
[DiscoAuthorize(Claims.Config.DeviceModel.Configure), HttpPost]
|
||||
public virtual ActionResult Image(int id, bool redirect, HttpPostedFileBase Image)
|
||||
{
|
||||
@@ -232,7 +274,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
#region Actions
|
||||
|
||||
[DiscoAuthorize(Claims.Config.DeviceModel.Delete)]
|
||||
public virtual ActionResult Delete(int id, Nullable<bool> redirect = false)
|
||||
public virtual ActionResult Delete(int id, bool? redirect = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -292,7 +334,7 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
Cost = Cost.Substring(Cost.IndexOf("$") + 1);
|
||||
decimal.TryParse(Cost, out cost);
|
||||
|
||||
var dc = new Disco.Models.Repository.DeviceComponent()
|
||||
var dc = new DeviceComponent()
|
||||
{
|
||||
Description = Description,
|
||||
Cost = cost
|
||||
|
||||
@@ -19,6 +19,11 @@ namespace Disco.Web.Areas.Config
|
||||
"Config/DeviceModel/GenericComponents",
|
||||
new { controller = "DeviceModel", action = "GenericComponents" }
|
||||
);
|
||||
context.MapRoute(
|
||||
"Config_DeviceModel_Create",
|
||||
"Config/DeviceModel/Create",
|
||||
new { controller = "DeviceModel", action = "Create" }
|
||||
);
|
||||
context.MapRoute(
|
||||
"Config_DeviceModel",
|
||||
"Config/DeviceModel/{id}",
|
||||
@@ -27,7 +32,7 @@ namespace Disco.Web.Areas.Config
|
||||
context.MapRoute(
|
||||
"Config_DeviceBatch_Create",
|
||||
"Config/DeviceBatch/Create",
|
||||
new { controller = "DeviceBatch", action = "Create", id = UrlParameter.Optional }
|
||||
new { controller = "DeviceBatch", action = "Create" }
|
||||
);
|
||||
context.MapRoute(
|
||||
"Config_DeviceBatch_Timeline",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Disco.Models.UI.Config.DeviceModel;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Models.UI.Config.DeviceModel;
|
||||
using Disco.Services;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Plugins;
|
||||
@@ -36,7 +37,7 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
{
|
||||
DeviceModelId = m.DeviceModel.Id,
|
||||
DeviceComponents = Database.DeviceComponents.Include("JobSubTypes").Where(dc => dc.DeviceModelId == m.DeviceModel.Id).ToList(),
|
||||
JobSubTypes = Database.JobSubTypes.Where(jst => jst.JobTypeId == Disco.Models.Repository.JobType.JobTypeIds.HNWar).ToList()
|
||||
JobSubTypes = Database.JobSubTypes.Where(jst => jst.JobTypeId == JobType.JobTypeIds.HNWar).ToList()
|
||||
};
|
||||
|
||||
m.CanDelete = m.DeviceModel.CanDelete(Database);
|
||||
@@ -46,7 +47,7 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
m.BulkGenerateDocumentTemplates = Database.DocumentTemplates.Where(t => !t.IsHidden).ToList();
|
||||
|
||||
// UI Extensions
|
||||
UIExtensions.ExecuteExtensions<ConfigDeviceModelShowModel>(this.ControllerContext, m);
|
||||
UIExtensions.ExecuteExtensions<ConfigDeviceModelShowModel>(ControllerContext, m);
|
||||
|
||||
return View(MVC.Config.DeviceModel.Views.Show, m);
|
||||
}
|
||||
@@ -55,23 +56,60 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
var m = Models.DeviceModel.IndexModel.Build(Database);
|
||||
|
||||
// UI Extensions
|
||||
UIExtensions.ExecuteExtensions<ConfigDeviceModelIndexModel>(this.ControllerContext, m);
|
||||
UIExtensions.ExecuteExtensions<ConfigDeviceModelIndexModel>(ControllerContext, m);
|
||||
|
||||
return View(m);
|
||||
}
|
||||
}
|
||||
|
||||
[DiscoAuthorizeAll(Claims.Config.DeviceModel.CreateCustom, Claims.Config.DeviceModel.Configure)]
|
||||
[HttpGet]
|
||||
public virtual ActionResult Create()
|
||||
{
|
||||
var m = new Models.DeviceModel.CreateModel();
|
||||
|
||||
// UI Extensions
|
||||
UIExtensions.ExecuteExtensions<ConfigDeviceModelCreateModel>(ControllerContext, m);
|
||||
|
||||
return View(m);
|
||||
}
|
||||
|
||||
[DiscoAuthorizeAll(Claims.Config.DeviceModel.CreateCustom, Claims.Config.DeviceModel.Configure)]
|
||||
[HttpPost, ValidateAntiForgeryToken]
|
||||
public virtual ActionResult Create(Models.DeviceModel.CreateModel model)
|
||||
{
|
||||
if (ModelState.IsValid)
|
||||
{
|
||||
var deviceModel = new DeviceModel()
|
||||
{
|
||||
Description = model.Description.NullOrTrimmed(),
|
||||
Manufacturer = model.Manufacturer.NullOrTrimmed(),
|
||||
Model = model.ManufacturerModel.NullOrTrimmed(),
|
||||
ModelType = DeviceModel.CustomModelType,
|
||||
};
|
||||
|
||||
Database.DeviceModels.Add(deviceModel);
|
||||
Database.SaveChanges();
|
||||
return RedirectToAction(MVC.Config.DeviceModel.Index(deviceModel.Id));
|
||||
}
|
||||
|
||||
// UI Extensions
|
||||
UIExtensions.ExecuteExtensions<ConfigDeviceModelCreateModel>(ControllerContext, model);
|
||||
|
||||
return View(model);
|
||||
}
|
||||
|
||||
[DiscoAuthorize(Claims.Config.DeviceModel.Show)]
|
||||
public virtual ActionResult GenericComponents()
|
||||
{
|
||||
var m = new Models.DeviceModel.ComponentsModel()
|
||||
{
|
||||
DeviceComponents = Database.DeviceComponents.Include("JobSubTypes").Where(dc => !dc.DeviceModelId.HasValue).ToList(),
|
||||
JobSubTypes = Database.JobSubTypes.Where(jst => jst.JobTypeId == Disco.Models.Repository.JobType.JobTypeIds.HNWar).ToList()
|
||||
JobSubTypes = Database.JobSubTypes.Where(jst => jst.JobTypeId == JobType.JobTypeIds.HNWar).ToList()
|
||||
};
|
||||
|
||||
// UI Extensions
|
||||
UIExtensions.ExecuteExtensions<ConfigDeviceModelComponentsModel>(this.ControllerContext, m);
|
||||
UIExtensions.ExecuteExtensions<ConfigDeviceModelComponentsModel>(ControllerContext, m);
|
||||
|
||||
return View(m);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
using Disco.Models.UI.Config.DeviceModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Disco.Web.Areas.Config.Models.DeviceModel
|
||||
{
|
||||
public class CreateModel : ConfigDeviceModelCreateModel
|
||||
{
|
||||
[Required, StringLength(500)]
|
||||
public string Description { get; set; }
|
||||
[StringLength(200)]
|
||||
public string Manufacturer { get; set; }
|
||||
[StringLength(200)]
|
||||
public string ManufacturerModel { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
@model Disco.Web.Areas.Config.Models.DeviceModel.CreateModel
|
||||
@{
|
||||
Authorization.RequireAll(Claims.Config.DeviceModel.CreateCustom, Claims.Config.DeviceModel.Configure);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Device Models", MVC.Config.DeviceModel.Index(null), "Create Custom");
|
||||
}
|
||||
@using (Html.BeginForm())
|
||||
{
|
||||
@Html.AntiForgeryToken()
|
||||
<div class="form" style="width: 450px">
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Name / Description:
|
||||
</th>
|
||||
<td>
|
||||
@Html.TextBoxFor(model => model.Description)<br />@Html.ValidationMessageFor(model => model.Description)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Manufacturer:
|
||||
</th>
|
||||
<td>@Html.TextBoxFor(model => model.Manufacturer)<br />@Html.ValidationMessageFor(model => model.Manufacturer)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Model:
|
||||
</th>
|
||||
<td>@Html.TextBoxFor(model => model.ManufacturerModel)<br />@Html.ValidationMessageFor(model => model.ManufacturerModel)
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p class="actions">
|
||||
<input type="submit" class="button" value="Create Custom" />
|
||||
</p>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
$('#Description').focus().select();
|
||||
});
|
||||
</script>
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Config.Views.DeviceModel
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Services;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Web;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DeviceModel/Create.cshtml")]
|
||||
public partial class Create : Disco.Services.Web.WebViewPage<Disco.Web.Areas.Config.Models.DeviceModel.CreateModel>
|
||||
{
|
||||
public Create()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 2 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
|
||||
Authorization.RequireAll(Claims.Config.DeviceModel.CreateCustom, Claims.Config.DeviceModel.Configure);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Device Models", MVC.Config.DeviceModel.Index(null), "Create Custom");
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n");
|
||||
|
||||
|
||||
#line 7 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
using (Html.BeginForm())
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 9 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
Write(Html.AntiForgeryToken());
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 9 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <div");
|
||||
|
||||
WriteLiteral(" class=\"form\"");
|
||||
|
||||
WriteLiteral(" style=\"width: 450px\"");
|
||||
|
||||
WriteLiteral(">\r\n <table>\r\n <tr>\r\n <th>\r\n N" +
|
||||
"ame / Description:\r\n </th>\r\n <td>\r\n");
|
||||
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 17 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
Write(Html.TextBoxFor(model => model.Description));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("<br />");
|
||||
|
||||
|
||||
#line 17 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
Write(Html.ValidationMessageFor(model => model.Description));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
|
||||
">\r\n Manufacturer:\r\n </th>\r\n <td" +
|
||||
">");
|
||||
|
||||
|
||||
#line 24 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
Write(Html.TextBoxFor(model => model.Manufacturer));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("<br />");
|
||||
|
||||
|
||||
#line 24 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
Write(Html.ValidationMessageFor(model => model.Manufacturer));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n <tr>\r\n <th" +
|
||||
">\r\n Model:\r\n </th>\r\n <td>");
|
||||
|
||||
|
||||
#line 31 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
Write(Html.TextBoxFor(model => model.ManufacturerModel));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("<br />");
|
||||
|
||||
|
||||
#line 31 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
Write(Html.ValidationMessageFor(model => model.ManufacturerModel));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n </td>\r\n </tr>\r\n </table>\r\n <p");
|
||||
|
||||
WriteLiteral(" class=\"actions\"");
|
||||
|
||||
WriteLiteral(">\r\n <input");
|
||||
|
||||
WriteLiteral(" type=\"submit\"");
|
||||
|
||||
WriteLiteral(" class=\"button\"");
|
||||
|
||||
WriteLiteral(" value=\"Create Custom\"");
|
||||
|
||||
WriteLiteral(" />\r\n </p>\r\n </div>\r\n");
|
||||
|
||||
WriteLiteral(" <script");
|
||||
|
||||
WriteLiteral(" type=\"text/javascript\"");
|
||||
|
||||
WriteLiteral(">\r\n $(function () {\r\n $(\'#Description\').focus().select();\r\n " +
|
||||
" });\r\n </script>\r\n");
|
||||
|
||||
|
||||
#line 44 "..\..\Areas\Config\Views\DeviceModel\Create.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
@@ -64,4 +64,8 @@
|
||||
</table>
|
||||
<div class="actionBar">
|
||||
@Html.ActionLinkButton("Generic Components", MVC.Config.DeviceModel.GenericComponents())
|
||||
@if (Authorization.HasAll(Claims.Config.DeviceModel.CreateCustom, Claims.Config.DeviceModel.Configure))
|
||||
{
|
||||
@Html.ActionLinkButton("Create Custom Device Model", MVC.Config.DeviceModel.Create())
|
||||
}
|
||||
</div>
|
||||
@@ -304,7 +304,38 @@ Write(Html.ActionLinkButton("Generic Components", MVC.Config.DeviceModel.Generic
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n</div>");
|
||||
WriteLiteral("\r\n");
|
||||
|
||||
|
||||
#line 67 "..\..\Areas\Config\Views\DeviceModel\Index.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 67 "..\..\Areas\Config\Views\DeviceModel\Index.cshtml"
|
||||
if (Authorization.HasAll(Claims.Config.DeviceModel.CreateCustom, Claims.Config.DeviceModel.Configure))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 69 "..\..\Areas\Config\Views\DeviceModel\Index.cshtml"
|
||||
Write(Html.ActionLinkButton("Create Custom Device Model", MVC.Config.DeviceModel.Create()));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 69 "..\..\Areas\Config\Views\DeviceModel\Index.cshtml"
|
||||
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("</div>");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
var canConfig = Authorization.Has(Claims.Config.DeviceModel.Configure);
|
||||
var canViewPlugins = Authorization.Has(Claims.Config.Plugin.Install);
|
||||
var isCustom = Model.DeviceModel.IsCustomModel();
|
||||
|
||||
if (canConfig)
|
||||
{
|
||||
@@ -47,44 +48,82 @@
|
||||
{
|
||||
@Html.DisplayFor(model => model.DeviceModel.Description)
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Manufacturer:
|
||||
</th>
|
||||
<td>
|
||||
@Html.DisplayFor(model => model.DeviceModel.Manufacturer)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Model:
|
||||
</th>
|
||||
<td>
|
||||
@Html.DisplayFor(model => model.DeviceModel.Model)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Statistics</th>
|
||||
<td>
|
||||
<div><strong>@Model.DeviceCount.ToString("n0")</strong> @(Model.DeviceCount == 1 ? "devices is" : "devices are") of this model type.</div>
|
||||
@if (Model.DeviceDecommissionedCount > 0)
|
||||
{
|
||||
<div class="smallMessage">@Model.DeviceDecommissionedCount.ToString("n0") @(Model.DeviceDecommissionedCount == 1 ? "device is" : "devices are") decommissioned.</div>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Default Purchase Date:
|
||||
</th>
|
||||
<td>
|
||||
@if (canConfig)
|
||||
{
|
||||
@Html.EditorFor(model => model.DeviceModel.DefaultPurchaseDate)
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Manufacturer:
|
||||
</th>
|
||||
<td>
|
||||
@if (isCustom && canConfig)
|
||||
{
|
||||
@Html.EditorFor(model => model.DeviceModel.Manufacturer)
|
||||
@AjaxHelpers.AjaxSave()
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script>
|
||||
$(function () {
|
||||
document.DiscoFunctions.PropertyChangeHelper(
|
||||
$('#DeviceModel_Manufacturer'),
|
||||
'Manufacturer',
|
||||
'@Url.Action(MVC.API.DeviceModel.UpdateManufacturer(Model.DeviceModel.Id))',
|
||||
'manufacturer'
|
||||
);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
@Html.DisplayFor(model => model.DeviceModel.Manufacturer)
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Model:
|
||||
</th>
|
||||
<td>
|
||||
@if (isCustom && canConfig)
|
||||
{
|
||||
@Html.EditorFor(model => model.DeviceModel.Model)
|
||||
@AjaxHelpers.AjaxSave()
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script>
|
||||
$(function () {
|
||||
document.DiscoFunctions.PropertyChangeHelper(
|
||||
$('#DeviceModel_Model'),
|
||||
'Model',
|
||||
'@Url.Action(MVC.API.DeviceModel.UpdateModel(Model.DeviceModel.Id))',
|
||||
'model'
|
||||
);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
@Html.DisplayFor(model => model.DeviceModel.Model)
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Statistics</th>
|
||||
<td>
|
||||
<div><strong>@Model.DeviceCount.ToString("n0")</strong> @(Model.DeviceCount == 1 ? "devices is" : "devices are") of this model type.</div>
|
||||
@if (Model.DeviceDecommissionedCount > 0)
|
||||
{
|
||||
<div class="smallMessage">@Model.DeviceDecommissionedCount.ToString("n0") @(Model.DeviceDecommissionedCount == 1 ? "device is" : "devices are") decommissioned.</div>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Default Purchase Date:
|
||||
</th>
|
||||
<td>
|
||||
@if (canConfig)
|
||||
{
|
||||
@Html.EditorFor(model => model.DeviceModel.DefaultPurchaseDate)
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script>
|
||||
$(function () {
|
||||
var dateField = $('#DeviceModel_DefaultPurchaseDate');
|
||||
document.DiscoFunctions.DateChangeHelper(
|
||||
@@ -96,26 +135,26 @@
|
||||
true
|
||||
);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
@CommonHelpers.FriendlyDate(Model.DeviceModel.DefaultPurchaseDate, "Unknown")
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Default Warranty Provider:
|
||||
</th>
|
||||
<td>
|
||||
@if (canConfig)
|
||||
{
|
||||
if (Model.WarrantyProviders.Count > 0)
|
||||
{
|
||||
@Html.DropDownListFor(model => model.DeviceModel.DefaultWarrantyProvider, Model.WarrantyProviders.ToSelectListItems(Model.DeviceModel.DefaultWarrantyProvider, true, "None"))
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script>
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
@CommonHelpers.FriendlyDate(Model.DeviceModel.DefaultPurchaseDate, "Unknown")
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Default Warranty Provider:
|
||||
</th>
|
||||
<td>
|
||||
@if (canConfig)
|
||||
{
|
||||
if (Model.WarrantyProviders.Count > 0)
|
||||
{
|
||||
@Html.DropDownListFor(model => model.DeviceModel.DefaultWarrantyProvider, Model.WarrantyProviders.ToSelectListItems(Model.DeviceModel.DefaultWarrantyProvider, true, "None"))
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script>
|
||||
$(function () {
|
||||
document.DiscoFunctions.PropertyChangeHelper(
|
||||
$('#DeviceModel_DefaultWarrantyProvider'),
|
||||
@@ -124,54 +163,54 @@
|
||||
'DefaultWarrantyProvider'
|
||||
);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="smallMessage">No warranty provider plugins installed</span>
|
||||
}
|
||||
if (canViewPlugins)
|
||||
{
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>View the <a href="@(Url.Action(MVC.Config.Plugins.Install()))">Plugin Catalogue</a> to discover and install warranty provider plugins.
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Model.DeviceModel.DefaultWarrantyProvider == null)
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
var provider = Model.WarrantyProviders.FirstOrDefault(wp => wp.Id == Model.DeviceModel.DefaultWarrantyProvider);
|
||||
if (provider == null)
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="smallMessage">No warranty provider plugins installed</span>
|
||||
}
|
||||
if (canViewPlugins)
|
||||
{
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>View the <a href="@(Url.Action(MVC.Config.Plugins.Install()))">Plugin Catalogue</a> to discover and install warranty provider plugins.
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@provider.Name
|
||||
if (Model.DeviceModel.DefaultWarrantyProvider == null)
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
var provider = Model.WarrantyProviders.FirstOrDefault(wp => wp.Id == Model.DeviceModel.DefaultWarrantyProvider);
|
||||
if (provider == null)
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
@provider.Name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Default Repair Provider:
|
||||
</th>
|
||||
<td>
|
||||
@if (canConfig)
|
||||
{
|
||||
if (Model.RepairProviders.Count > 0)
|
||||
{
|
||||
@Html.DropDownListFor(model => model.DeviceModel.DefaultRepairProvider, Model.RepairProviders.ToSelectListItems(Model.DeviceModel.DefaultRepairProvider, true, "None"))
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Default Repair Provider:
|
||||
</th>
|
||||
<td>
|
||||
@if (canConfig)
|
||||
{
|
||||
if (Model.RepairProviders.Count > 0)
|
||||
{
|
||||
@Html.DropDownListFor(model => model.DeviceModel.DefaultRepairProvider, Model.RepairProviders.ToSelectListItems(Model.DeviceModel.DefaultRepairProvider, true, "None"))
|
||||
@AjaxHelpers.AjaxLoader()
|
||||
<script>
|
||||
$(function () {
|
||||
document.DiscoFunctions.PropertyChangeHelper(
|
||||
$('#DeviceModel_DefaultRepairProvider'),
|
||||
@@ -180,68 +219,68 @@
|
||||
'DefaultRepairProvider'
|
||||
);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div>No repair provider plugins installed</div>
|
||||
}
|
||||
if (canViewPlugins)
|
||||
{
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>View the <a href="@(Url.Action(MVC.Config.Plugins.Install()))">Plugin Catalogue</a> to discover and install repair provider plugins.
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Model.DeviceModel.DefaultRepairProvider == null)
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
var provider = Model.RepairProviders.FirstOrDefault(wp => wp.Id == Model.DeviceModel.DefaultRepairProvider);
|
||||
if (provider == null)
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div>No repair provider plugins installed</div>
|
||||
}
|
||||
if (canViewPlugins)
|
||||
{
|
||||
<div class="info-box">
|
||||
<p class="fa-p">
|
||||
<i class="fa fa-info-circle"></i>View the <a href="@(Url.Action(MVC.Config.Plugins.Install()))">Plugin Catalogue</a> to discover and install repair provider plugins.
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@provider.Name
|
||||
if (Model.DeviceModel.DefaultRepairProvider == null)
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
var provider = Model.RepairProviders.FirstOrDefault(wp => wp.Id == Model.DeviceModel.DefaultRepairProvider);
|
||||
if (provider == null)
|
||||
{
|
||||
<span class="smallMessage"><None Specified></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
@provider.Name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Type:
|
||||
</th>
|
||||
<td>
|
||||
@Html.DisplayFor(model => model.DeviceModel.ModelType)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Image:
|
||||
</th>
|
||||
<td>
|
||||
<img alt="Model Image" src="@Url.Action(MVC.API.DeviceModel.Image(Model.DeviceModel.Id, Model.DeviceModel.ImageHash()))" />
|
||||
@if (canConfig)
|
||||
{
|
||||
<hr />
|
||||
using (Html.BeginForm(MVC.API.DeviceModel.Image(Model.DeviceModel.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" }))
|
||||
{
|
||||
<input type="file" name="Image" id="Image" style="width: 220px;" />
|
||||
<input class="button small" type="submit" value="Upload Image" />
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Type:
|
||||
</th>
|
||||
<td>
|
||||
@Html.DisplayFor(model => model.DeviceModel.ModelType)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Image:
|
||||
</th>
|
||||
<td>
|
||||
<img alt="Model Image" src="@Url.Action(MVC.API.DeviceModel.Image(Model.DeviceModel.Id, Model.DeviceModel.ImageHash()))" />
|
||||
@if (canConfig)
|
||||
{
|
||||
<hr />
|
||||
using (Html.BeginForm(MVC.API.DeviceModel.Image(Model.DeviceModel.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" }))
|
||||
{
|
||||
<input type="file" name="Image" id="Image" style="width: 220px;" />
|
||||
<input class="button small" type="submit" value="Upload Image" />
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<h2>Components</h2>
|
||||
@Html.Partial(MVC.Config.DeviceModel.Views._DeviceComponentsTable, Model.DeviceComponentsModel)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -242,6 +242,7 @@
|
||||
<Compile Include="Areas\Config\Models\AuthorizationRole\IndexModel.cs" />
|
||||
<Compile Include="Areas\Config\Models\AuthorizationRole\ShowModel.cs" />
|
||||
<Compile Include="Areas\Config\Models\Config\IndexModel.cs" />
|
||||
<Compile Include="Areas\Config\Models\DeviceModel\CreateModel.cs" />
|
||||
<Compile Include="Areas\Config\Models\DocumentTemplate\BulkGenerateModel.cs" />
|
||||
<Compile Include="Areas\Config\Models\DocumentTemplate\CreatePackageModel.cs" />
|
||||
<Compile Include="Areas\Config\Models\DocumentTemplate\ExportModel.cs" />
|
||||
@@ -286,6 +287,11 @@
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="Areas\Config\Views\DeviceModel\Create.generated.cs">
|
||||
<DependentUpon>Create.cshtml</DependentUpon>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="Areas\Config\Views\DocumentTemplate\BulkGenerate.generated.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
@@ -1379,6 +1385,10 @@
|
||||
<Generator>RazorGenerator</Generator>
|
||||
<LastGenOutput>Show.generated.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Include="Areas\Config\Views\DeviceModel\Create.cshtml">
|
||||
<Generator>RazorGenerator</Generator>
|
||||
<LastGenOutput>Create.generated.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Include="Areas\Config\Views\DocumentTemplate\BulkGenerate.cshtml">
|
||||
<Generator>RazorGenerator</Generator>
|
||||
<LastGenOutput>BulkGenerate.generated.cs</LastGenOutput>
|
||||
@@ -1713,7 +1723,7 @@
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="ClientSource\Scripts\Modules\qrcode.min.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="ClientSource\Scripts\Modules\Shadowbox.js" />
|
||||
<Content Include="ClientSource\Scripts\Modules\Shadowbox.js" Condition=" '$(Configuration)' == 'Debug' " />
|
||||
|
||||
@@ -73,6 +73,18 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
}
|
||||
[NonAction]
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public virtual System.Web.Mvc.ActionResult UpdateManufacturer()
|
||||
{
|
||||
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateManufacturer);
|
||||
}
|
||||
[NonAction]
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public virtual System.Web.Mvc.ActionResult UpdateModel()
|
||||
{
|
||||
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateModel);
|
||||
}
|
||||
[NonAction]
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public virtual System.Web.Mvc.ActionResult UpdateDefaultPurchaseDate()
|
||||
{
|
||||
return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateDefaultPurchaseDate);
|
||||
@@ -149,6 +161,8 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
{
|
||||
public readonly string Update = "Update";
|
||||
public readonly string UpdateDescription = "UpdateDescription";
|
||||
public readonly string UpdateManufacturer = "UpdateManufacturer";
|
||||
public readonly string UpdateModel = "UpdateModel";
|
||||
public readonly string UpdateDefaultPurchaseDate = "UpdateDefaultPurchaseDate";
|
||||
public readonly string UpdateDefaultWarrantyProvider = "UpdateDefaultWarrantyProvider";
|
||||
public readonly string UpdateDefaultRepairProvider = "UpdateDefaultRepairProvider";
|
||||
@@ -167,6 +181,8 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
{
|
||||
public const string Update = "Update";
|
||||
public const string UpdateDescription = "UpdateDescription";
|
||||
public const string UpdateManufacturer = "UpdateManufacturer";
|
||||
public const string UpdateModel = "UpdateModel";
|
||||
public const string UpdateDefaultPurchaseDate = "UpdateDefaultPurchaseDate";
|
||||
public const string UpdateDefaultWarrantyProvider = "UpdateDefaultWarrantyProvider";
|
||||
public const string UpdateDefaultRepairProvider = "UpdateDefaultRepairProvider";
|
||||
@@ -202,6 +218,26 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
public readonly string Description = "Description";
|
||||
public readonly string redirect = "redirect";
|
||||
}
|
||||
static readonly ActionParamsClass_UpdateManufacturer s_params_UpdateManufacturer = new ActionParamsClass_UpdateManufacturer();
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public ActionParamsClass_UpdateManufacturer UpdateManufacturerParams { get { return s_params_UpdateManufacturer; } }
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public class ActionParamsClass_UpdateManufacturer
|
||||
{
|
||||
public readonly string id = "id";
|
||||
public readonly string manufacturer = "manufacturer";
|
||||
public readonly string redirect = "redirect";
|
||||
}
|
||||
static readonly ActionParamsClass_UpdateModel s_params_UpdateModel = new ActionParamsClass_UpdateModel();
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public ActionParamsClass_UpdateModel UpdateModelParams { get { return s_params_UpdateModel; } }
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public class ActionParamsClass_UpdateModel
|
||||
{
|
||||
public readonly string id = "id";
|
||||
public readonly string model = "model";
|
||||
public readonly string redirect = "redirect";
|
||||
}
|
||||
static readonly ActionParamsClass_UpdateDefaultPurchaseDate s_params_UpdateDefaultPurchaseDate = new ActionParamsClass_UpdateDefaultPurchaseDate();
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public ActionParamsClass_UpdateDefaultPurchaseDate UpdateDefaultPurchaseDateParams { get { return s_params_UpdateDefaultPurchaseDate; } }
|
||||
@@ -345,6 +381,34 @@ namespace Disco.Web.Areas.API.Controllers
|
||||
return callInfo;
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
partial void UpdateManufacturerOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int id, string manufacturer, bool redirect);
|
||||
|
||||
[NonAction]
|
||||
public override System.Web.Mvc.ActionResult UpdateManufacturer(int id, string manufacturer, bool redirect)
|
||||
{
|
||||
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateManufacturer);
|
||||
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
|
||||
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "manufacturer", manufacturer);
|
||||
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect);
|
||||
UpdateManufacturerOverride(callInfo, id, manufacturer, redirect);
|
||||
return callInfo;
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
partial void UpdateModelOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int id, string model, bool redirect);
|
||||
|
||||
[NonAction]
|
||||
public override System.Web.Mvc.ActionResult UpdateModel(int id, string model, bool redirect)
|
||||
{
|
||||
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.UpdateModel);
|
||||
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "id", id);
|
||||
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "model", model);
|
||||
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "redirect", redirect);
|
||||
UpdateModelOverride(callInfo, id, model, redirect);
|
||||
return callInfo;
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
partial void UpdateDefaultPurchaseDateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, int id, string DefaultPurchaseDate, bool redirect);
|
||||
|
||||
|
||||
@@ -82,6 +82,7 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
public class ActionNamesClass
|
||||
{
|
||||
public readonly string Index = "Index";
|
||||
public readonly string Create = "Create";
|
||||
public readonly string GenericComponents = "GenericComponents";
|
||||
}
|
||||
|
||||
@@ -89,6 +90,7 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
public class ActionNameConstants
|
||||
{
|
||||
public const string Index = "Index";
|
||||
public const string Create = "Create";
|
||||
public const string GenericComponents = "GenericComponents";
|
||||
}
|
||||
|
||||
@@ -101,6 +103,14 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
{
|
||||
public readonly string id = "id";
|
||||
}
|
||||
static readonly ActionParamsClass_Create s_params_Create = new ActionParamsClass_Create();
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public ActionParamsClass_Create CreateParams { get { return s_params_Create; } }
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public class ActionParamsClass_Create
|
||||
{
|
||||
public readonly string model = "model";
|
||||
}
|
||||
static readonly ViewsClass s_views = new ViewsClass();
|
||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||
public ViewsClass Views { get { return s_views; } }
|
||||
@@ -112,11 +122,13 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
public class _ViewNamesClass
|
||||
{
|
||||
public readonly string _DeviceComponentsTable = "_DeviceComponentsTable";
|
||||
public readonly string Create = "Create";
|
||||
public readonly string GenericComponents = "GenericComponents";
|
||||
public readonly string Index = "Index";
|
||||
public readonly string Show = "Show";
|
||||
}
|
||||
public readonly string _DeviceComponentsTable = "~/Areas/Config/Views/DeviceModel/_DeviceComponentsTable.cshtml";
|
||||
public readonly string Create = "~/Areas/Config/Views/DeviceModel/Create.cshtml";
|
||||
public readonly string GenericComponents = "~/Areas/Config/Views/DeviceModel/GenericComponents.cshtml";
|
||||
public readonly string Index = "~/Areas/Config/Views/DeviceModel/Index.cshtml";
|
||||
public readonly string Show = "~/Areas/Config/Views/DeviceModel/Show.cshtml";
|
||||
@@ -140,6 +152,29 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
return callInfo;
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
partial void CreateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo);
|
||||
|
||||
[NonAction]
|
||||
public override System.Web.Mvc.ActionResult Create()
|
||||
{
|
||||
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Create);
|
||||
CreateOverride(callInfo);
|
||||
return callInfo;
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
partial void CreateOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, Disco.Web.Areas.Config.Models.DeviceModel.CreateModel model);
|
||||
|
||||
[NonAction]
|
||||
public override System.Web.Mvc.ActionResult Create(Disco.Web.Areas.Config.Models.DeviceModel.CreateModel model)
|
||||
{
|
||||
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Create);
|
||||
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "model", model);
|
||||
CreateOverride(callInfo, model);
|
||||
return callInfo;
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
partial void GenericComponentsOverride(T4MVC_System_Web_Mvc_ActionResult callInfo);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user