Merge pull request #237 from hargata/Hargata/plan.template
Planner Templates
This commit is contained in:
@@ -27,6 +27,7 @@ namespace CarCareTracker.Controllers
|
|||||||
private readonly IUpgradeRecordDataAccess _upgradeRecordDataAccess;
|
private readonly IUpgradeRecordDataAccess _upgradeRecordDataAccess;
|
||||||
private readonly ISupplyRecordDataAccess _supplyRecordDataAccess;
|
private readonly ISupplyRecordDataAccess _supplyRecordDataAccess;
|
||||||
private readonly IPlanRecordDataAccess _planRecordDataAccess;
|
private readonly IPlanRecordDataAccess _planRecordDataAccess;
|
||||||
|
private readonly IPlanRecordTemplateDataAccess _planRecordTemplateDataAccess;
|
||||||
private readonly IOdometerRecordDataAccess _odometerRecordDataAccess;
|
private readonly IOdometerRecordDataAccess _odometerRecordDataAccess;
|
||||||
private readonly IWebHostEnvironment _webEnv;
|
private readonly IWebHostEnvironment _webEnv;
|
||||||
private readonly IConfigHelper _config;
|
private readonly IConfigHelper _config;
|
||||||
@@ -51,6 +52,7 @@ namespace CarCareTracker.Controllers
|
|||||||
IUpgradeRecordDataAccess upgradeRecordDataAccess,
|
IUpgradeRecordDataAccess upgradeRecordDataAccess,
|
||||||
ISupplyRecordDataAccess supplyRecordDataAccess,
|
ISupplyRecordDataAccess supplyRecordDataAccess,
|
||||||
IPlanRecordDataAccess planRecordDataAccess,
|
IPlanRecordDataAccess planRecordDataAccess,
|
||||||
|
IPlanRecordTemplateDataAccess planRecordTemplateDataAccess,
|
||||||
IOdometerRecordDataAccess odometerRecordDataAccess,
|
IOdometerRecordDataAccess odometerRecordDataAccess,
|
||||||
IUserLogic userLogic,
|
IUserLogic userLogic,
|
||||||
IWebHostEnvironment webEnv,
|
IWebHostEnvironment webEnv,
|
||||||
@@ -71,6 +73,7 @@ namespace CarCareTracker.Controllers
|
|||||||
_upgradeRecordDataAccess = upgradeRecordDataAccess;
|
_upgradeRecordDataAccess = upgradeRecordDataAccess;
|
||||||
_supplyRecordDataAccess = supplyRecordDataAccess;
|
_supplyRecordDataAccess = supplyRecordDataAccess;
|
||||||
_planRecordDataAccess = planRecordDataAccess;
|
_planRecordDataAccess = planRecordDataAccess;
|
||||||
|
_planRecordTemplateDataAccess = planRecordTemplateDataAccess;
|
||||||
_odometerRecordDataAccess = odometerRecordDataAccess;
|
_odometerRecordDataAccess = odometerRecordDataAccess;
|
||||||
_userLogic = userLogic;
|
_userLogic = userLogic;
|
||||||
_webEnv = webEnv;
|
_webEnv = webEnv;
|
||||||
@@ -142,6 +145,7 @@ namespace CarCareTracker.Controllers
|
|||||||
_reminderRecordDataAccess.DeleteAllReminderRecordsByVehicleId(vehicleId) &&
|
_reminderRecordDataAccess.DeleteAllReminderRecordsByVehicleId(vehicleId) &&
|
||||||
_upgradeRecordDataAccess.DeleteAllUpgradeRecordsByVehicleId(vehicleId) &&
|
_upgradeRecordDataAccess.DeleteAllUpgradeRecordsByVehicleId(vehicleId) &&
|
||||||
_planRecordDataAccess.DeleteAllPlanRecordsByVehicleId(vehicleId) &&
|
_planRecordDataAccess.DeleteAllPlanRecordsByVehicleId(vehicleId) &&
|
||||||
|
_planRecordTemplateDataAccess.DeleteAllPlanRecordTemplatesByVehicleId(vehicleId) &&
|
||||||
_supplyRecordDataAccess.DeleteAllSupplyRecordsByVehicleId(vehicleId) &&
|
_supplyRecordDataAccess.DeleteAllSupplyRecordsByVehicleId(vehicleId) &&
|
||||||
_userLogic.DeleteAllAccessToVehicle(vehicleId) &&
|
_userLogic.DeleteAllAccessToVehicle(vehicleId) &&
|
||||||
_dataAccess.DeleteVehicle(vehicleId);
|
_dataAccess.DeleteVehicle(vehicleId);
|
||||||
@@ -1467,6 +1471,21 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region "Supply Records"
|
#region "Supply Records"
|
||||||
|
private List<string> CheckSupplyRecordsAvailability(List<SupplyUsage> supplyUsage)
|
||||||
|
{
|
||||||
|
//returns empty string if all supplies are available
|
||||||
|
var result = new List<string>();
|
||||||
|
foreach (SupplyUsage supply in supplyUsage)
|
||||||
|
{
|
||||||
|
//get supply record.
|
||||||
|
var supplyData = _supplyRecordDataAccess.GetSupplyRecordById(supply.SupplyId);
|
||||||
|
if (supply.Quantity > supplyData.Quantity)
|
||||||
|
{
|
||||||
|
result.Add($"Insufficient Quantity for {supplyData.Description}, need: {supply.Quantity}, available: {supplyData.Quantity}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
private void RequisitionSupplyRecordsByUsage(List<SupplyUsage> supplyUsage)
|
private void RequisitionSupplyRecordsByUsage(List<SupplyUsage> supplyUsage)
|
||||||
{
|
{
|
||||||
foreach(SupplyUsage supply in supplyUsage)
|
foreach(SupplyUsage supply in supplyUsage)
|
||||||
@@ -1581,6 +1600,60 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
return Json(result);
|
return Json(result);
|
||||||
}
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public IActionResult SavePlanRecordTemplateToVehicleId(PlanRecordInput planRecord)
|
||||||
|
{
|
||||||
|
//check if template name already taken.
|
||||||
|
var existingRecord = _planRecordTemplateDataAccess.GetPlanRecordTemplatesByVehicleId(planRecord.VehicleId).Where(x=>x.Description == planRecord.Description).Any();
|
||||||
|
if (existingRecord)
|
||||||
|
{
|
||||||
|
return Json(new OperationResponse { Success = false, Message = "A template with that description already exists for this vehicle"});
|
||||||
|
}
|
||||||
|
planRecord.Files = planRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
|
var result = _planRecordTemplateDataAccess.SavePlanRecordTemplateToVehicle(planRecord);
|
||||||
|
return Json(new OperationResponse { Success = result, Message = result ? "Template Added" : StaticHelper.GenericErrorMessage });
|
||||||
|
}
|
||||||
|
[TypeFilter(typeof(CollaboratorFilter))]
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult GetPlanRecordTemplatesForVehicleId(int vehicleId)
|
||||||
|
{
|
||||||
|
var result = _planRecordTemplateDataAccess.GetPlanRecordTemplatesByVehicleId(vehicleId);
|
||||||
|
return PartialView("_PlanRecordTemplateModal", result);
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public IActionResult DeletePlanRecordTemplateById(int planRecordTemplateId)
|
||||||
|
{
|
||||||
|
var result = _planRecordTemplateDataAccess.DeletePlanRecordTemplateById(planRecordTemplateId);
|
||||||
|
return Json(result);
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public IActionResult ConvertPlanRecordTemplateToPlanRecord(int planRecordTemplateId)
|
||||||
|
{
|
||||||
|
var existingRecord = _planRecordTemplateDataAccess.GetPlanRecordTemplateById(planRecordTemplateId);
|
||||||
|
if (existingRecord.Id == default)
|
||||||
|
{
|
||||||
|
return Json(new OperationResponse { Success = false, Message = "Unable to find template" });
|
||||||
|
}
|
||||||
|
if (existingRecord.Supplies.Any())
|
||||||
|
{
|
||||||
|
//check if all supplies are available
|
||||||
|
var supplyAvailability = CheckSupplyRecordsAvailability(existingRecord.Supplies);
|
||||||
|
if (supplyAvailability.Any())
|
||||||
|
{
|
||||||
|
return Json(new OperationResponse { Success = false, Message = string.Join("<br>", supplyAvailability) });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//populate createdDate
|
||||||
|
existingRecord.DateCreated = DateTime.Now.ToString("G");
|
||||||
|
existingRecord.DateModified = DateTime.Now.ToString("G");
|
||||||
|
existingRecord.Id = default;
|
||||||
|
var result = _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord.ToPlanRecord());
|
||||||
|
if (result && existingRecord.Supplies.Any())
|
||||||
|
{
|
||||||
|
RequisitionSupplyRecordsByUsage(existingRecord.Supplies);
|
||||||
|
}
|
||||||
|
return Json(new OperationResponse { Success = result, Message = result ? "Plan Record Added" : StaticHelper.GenericErrorMessage });
|
||||||
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetAddPlanRecordPartialView()
|
public IActionResult GetAddPlanRecordPartialView()
|
||||||
{
|
{
|
||||||
|
|||||||
57
External/Implementations/PlanRecordTemplateDataAccess.cs
vendored
Normal file
57
External/Implementations/PlanRecordTemplateDataAccess.cs
vendored
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
using CarCareTracker.External.Interfaces;
|
||||||
|
using CarCareTracker.Helper;
|
||||||
|
using CarCareTracker.Models;
|
||||||
|
using LiteDB;
|
||||||
|
|
||||||
|
namespace CarCareTracker.External.Implementations
|
||||||
|
{
|
||||||
|
public class PlanRecordTemplateDataAccess : IPlanRecordTemplateDataAccess
|
||||||
|
{
|
||||||
|
private static string dbName = StaticHelper.DbName;
|
||||||
|
private static string tableName = "planrecordtemplates";
|
||||||
|
public List<PlanRecordInput> GetPlanRecordTemplatesByVehicleId(int vehicleId)
|
||||||
|
{
|
||||||
|
using (var db = new LiteDatabase(dbName))
|
||||||
|
{
|
||||||
|
var table = db.GetCollection<PlanRecordInput>(tableName);
|
||||||
|
var planRecords = table.Find(Query.EQ(nameof(PlanRecordInput.VehicleId), vehicleId));
|
||||||
|
return planRecords.ToList() ?? new List<PlanRecordInput>();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public PlanRecordInput GetPlanRecordTemplateById(int planRecordId)
|
||||||
|
{
|
||||||
|
using (var db = new LiteDatabase(dbName))
|
||||||
|
{
|
||||||
|
var table = db.GetCollection<PlanRecordInput>(tableName);
|
||||||
|
return table.FindById(planRecordId);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public bool DeletePlanRecordTemplateById(int planRecordId)
|
||||||
|
{
|
||||||
|
using (var db = new LiteDatabase(dbName))
|
||||||
|
{
|
||||||
|
var table = db.GetCollection<PlanRecordInput>(tableName);
|
||||||
|
table.Delete(planRecordId);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public bool SavePlanRecordTemplateToVehicle(PlanRecordInput planRecord)
|
||||||
|
{
|
||||||
|
using (var db = new LiteDatabase(dbName))
|
||||||
|
{
|
||||||
|
var table = db.GetCollection<PlanRecordInput>(tableName);
|
||||||
|
table.Upsert(planRecord);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public bool DeleteAllPlanRecordTemplatesByVehicleId(int vehicleId)
|
||||||
|
{
|
||||||
|
using (var db = new LiteDatabase(dbName))
|
||||||
|
{
|
||||||
|
var table = db.GetCollection<PlanRecord>(tableName);
|
||||||
|
var planRecords = table.DeleteMany(Query.EQ(nameof(PlanRecordInput.VehicleId), vehicleId));
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
13
External/Interfaces/IPlanRecordTemplateDataAccess.cs
vendored
Normal file
13
External/Interfaces/IPlanRecordTemplateDataAccess.cs
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
using CarCareTracker.Models;
|
||||||
|
|
||||||
|
namespace CarCareTracker.External.Interfaces
|
||||||
|
{
|
||||||
|
public interface IPlanRecordTemplateDataAccess
|
||||||
|
{
|
||||||
|
public List<PlanRecordInput> GetPlanRecordTemplatesByVehicleId(int vehicleId);
|
||||||
|
public PlanRecordInput GetPlanRecordTemplateById(int planRecordId);
|
||||||
|
public bool DeletePlanRecordTemplateById(int planRecordId);
|
||||||
|
public bool SavePlanRecordTemplateToVehicle(PlanRecordInput planRecord);
|
||||||
|
public bool DeleteAllPlanRecordTemplatesByVehicleId(int vehicleId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,6 +26,7 @@ builder.Services.AddSingleton<IUserAccessDataAccess, UserAccessDataAccess>();
|
|||||||
builder.Services.AddSingleton<IUserConfigDataAccess, UserConfigDataAccess>();
|
builder.Services.AddSingleton<IUserConfigDataAccess, UserConfigDataAccess>();
|
||||||
builder.Services.AddSingleton<ISupplyRecordDataAccess, SupplyRecordDataAccess>();
|
builder.Services.AddSingleton<ISupplyRecordDataAccess, SupplyRecordDataAccess>();
|
||||||
builder.Services.AddSingleton<IPlanRecordDataAccess, PlanRecordDataAccess>();
|
builder.Services.AddSingleton<IPlanRecordDataAccess, PlanRecordDataAccess>();
|
||||||
|
builder.Services.AddSingleton<IPlanRecordTemplateDataAccess, PlanRecordTemplateDataAccess>();
|
||||||
builder.Services.AddSingleton<IOdometerRecordDataAccess, OdometerRecordDataAccess>();
|
builder.Services.AddSingleton<IOdometerRecordDataAccess, OdometerRecordDataAccess>();
|
||||||
|
|
||||||
//configure helpers
|
//configure helpers
|
||||||
|
|||||||
@@ -82,7 +82,16 @@
|
|||||||
<button type="button" class="btn btn-secondary" onclick="hideAddPlanRecordModal()">@translator.Translate(userLanguage, "Cancel")</button>
|
<button type="button" class="btn btn-secondary" onclick="hideAddPlanRecordModal()">@translator.Translate(userLanguage, "Cancel")</button>
|
||||||
@if (isNew)
|
@if (isNew)
|
||||||
{
|
{
|
||||||
<button type="button" class="btn btn-primary" onclick="savePlanRecordToVehicle()">@translator.Translate(userLanguage, "Add New Plan Record")</button>
|
<div class="btn-group">
|
||||||
|
<button onclick="savePlanRecordToVehicle()" class="btn btn-primary btn-md mt-1 mb-1"><i class="bi bi-pencil-square me-2"></i>@translator.Translate(userLanguage, "Add New Plan Record")</button>
|
||||||
|
<button type="button" class="btn btn-md btn-primary btn-md mt-1 mb-1 dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<span class="visually-hidden">Toggle Dropdown</span>
|
||||||
|
</button>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="savePlanRecordTemplate()">@translator.Translate(userLanguage, "Save as Template")</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="showPlanRecordTemplatesModal()">@translator.Translate(userLanguage, "View Templates")</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
else if (!isNew)
|
else if (!isNew)
|
||||||
{
|
{
|
||||||
|
|||||||
87
Views/Vehicle/_PlanRecordTemplateModal.cshtml
Normal file
87
Views/Vehicle/_PlanRecordTemplateModal.cshtml
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
@using CarCareTracker.Helper
|
||||||
|
@inject IConfigHelper config
|
||||||
|
@inject ITranslationHelper translator
|
||||||
|
@{
|
||||||
|
var userConfig = config.GetUserConfig(User);
|
||||||
|
var userLanguage = userConfig.UserLanguage;
|
||||||
|
}
|
||||||
|
@model List<PlanRecordInput>
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">@translator.Translate(userLanguage,"Select Template")</h5>
|
||||||
|
<button type="button" class="btn-close" onclick="hidePlanRecordTemplatesModal()" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
@if (Model.Any())
|
||||||
|
{
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12" style="max-height:50vh; overflow-y:auto;">
|
||||||
|
<table class="table table-hover">
|
||||||
|
<thead class="sticky-top">
|
||||||
|
<tr class="d-flex">
|
||||||
|
<th scope="col" class="col-8">@translator.Translate(userLanguage,"Description")</th>
|
||||||
|
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Use")</th>
|
||||||
|
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Delete")</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach (PlanRecordInput planRecordTemplate in Model)
|
||||||
|
{
|
||||||
|
<tr class="d-flex" id="supplyRows">
|
||||||
|
<td class="col-8 text-truncate">
|
||||||
|
@StaticHelper.TruncateStrings(planRecordTemplate.Description)
|
||||||
|
@if (planRecordTemplate.Files.Any())
|
||||||
|
{
|
||||||
|
<i class="bi bi-paperclip ms-2"></i>
|
||||||
|
}
|
||||||
|
@if (planRecordTemplate.Supplies.Any())
|
||||||
|
{
|
||||||
|
<i class="bi bi-shop ms-2"></i>
|
||||||
|
}
|
||||||
|
@if (planRecordTemplate.ImportMode == ImportMode.ServiceRecord)
|
||||||
|
{
|
||||||
|
<i class="bi bi-card-checklist ms-2"></i>
|
||||||
|
}
|
||||||
|
else if (planRecordTemplate.ImportMode == ImportMode.UpgradeRecord)
|
||||||
|
{
|
||||||
|
<i class="bi bi-wrench-adjustable ms-2"></i>
|
||||||
|
}
|
||||||
|
else if (planRecordTemplate.ImportMode == ImportMode.RepairRecord)
|
||||||
|
{
|
||||||
|
<i class="bi bi-exclamation-octagon ms-2"></i>
|
||||||
|
}
|
||||||
|
@if (planRecordTemplate.Priority == PlanPriority.Critical)
|
||||||
|
{
|
||||||
|
<i class="bi bi-fire ms-2"></i>
|
||||||
|
}
|
||||||
|
else if (planRecordTemplate.Priority == PlanPriority.Normal)
|
||||||
|
{
|
||||||
|
<i class="bi bi-water ms-2"></i>
|
||||||
|
}
|
||||||
|
else if (planRecordTemplate.Priority == PlanPriority.Low)
|
||||||
|
{
|
||||||
|
<i class="bi bi-snow ms-2"></i>
|
||||||
|
}
|
||||||
|
</td>
|
||||||
|
<td class="col-2"><button type="button" class="btn btn-primary" onclick="usePlannerRecordTemplate(@planRecordTemplate.Id)"><i class="bi bi-plus-square"></i></button></td>
|
||||||
|
<td class="col-2"><button type="button" class="btn btn-danger" onclick="deletePlannerRecordTemplate(@planRecordTemplate.Id)"><i class="bi bi-trash"></i></button></td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="text-center">
|
||||||
|
<h4>@translator.Translate(userLanguage, "No templates are found.")</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" onclick="hidePlanRecordTemplatesModal()">@translator.Translate(userLanguage, "Cancel")</button>
|
||||||
|
</div>
|
||||||
@@ -100,4 +100,11 @@
|
|||||||
<div class="modal-content" id="planRecordModalContent">
|
<div class="modal-content" id="planRecordModalContent">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal fade" data-bs-focus="false" id="planRecordTemplateModal" tabindex="-1" role="dialog" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false">
|
||||||
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
|
<div class="modal-content" id="planRecordTemplateModalContent">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
File diff suppressed because one or more lines are too long
@@ -74,6 +74,79 @@ function savePlanRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
function showPlanRecordTemplatesModal() {
|
||||||
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
|
$.get(`/Vehicle/GetPlanRecordTemplatesForVehicleId?vehicleId=${vehicleId}`, function (data) {
|
||||||
|
if (data) {
|
||||||
|
$("#planRecordTemplateModalContent").html(data);
|
||||||
|
hideAddPlanRecordModal();
|
||||||
|
$('#planRecordTemplateModal').modal('show');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function hidePlanRecordTemplatesModal() {
|
||||||
|
$('#planRecordTemplateModal').modal('hide');
|
||||||
|
$('#planRecordModal').modal('show');
|
||||||
|
}
|
||||||
|
function usePlannerRecordTemplate(planRecordTemplateId) {
|
||||||
|
$.post(`/Vehicle/ConvertPlanRecordTemplateToPlanRecord?planRecordTemplateId=${planRecordTemplateId}`, function (data) {
|
||||||
|
if (data.success) {
|
||||||
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
|
successToast(data.message);
|
||||||
|
$('#planRecordTemplateModal').modal('hide');
|
||||||
|
hideAddPlanRecordModal();
|
||||||
|
saveScrollPosition();
|
||||||
|
getVehiclePlanRecords(vehicleId);
|
||||||
|
} else {
|
||||||
|
errorToast(data.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function deletePlannerRecordTemplate(planRecordTemplateId) {
|
||||||
|
$("#workAroundInput").show();
|
||||||
|
Swal.fire({
|
||||||
|
title: "Confirm Deletion?",
|
||||||
|
text: "Deleted Plan Templates cannot be restored.",
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonText: "Delete",
|
||||||
|
confirmButtonColor: "#dc3545"
|
||||||
|
}).then((result) => {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
$.post(`/Vehicle/DeletePlanRecordTemplateById?planRecordTemplateId=${planRecordTemplateId}`, function (data) {
|
||||||
|
$("#workAroundInput").hide();
|
||||||
|
if (data) {
|
||||||
|
successToast("Template Deleted");
|
||||||
|
hidePlanRecordTemplatesModal();
|
||||||
|
} else {
|
||||||
|
errorToast(genericErrorMessage());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$("#workAroundInput").hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function savePlanRecordTemplate() {
|
||||||
|
//get values
|
||||||
|
var formValues = getAndValidatePlanRecordValues();
|
||||||
|
//validate
|
||||||
|
if (formValues.hasError) {
|
||||||
|
errorToast("Please check the form data");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//save to db.
|
||||||
|
$.post('/Vehicle/SavePlanRecordTemplateToVehicleId', { planRecord: formValues }, function (data) {
|
||||||
|
if (data.success) {
|
||||||
|
successToast(data.message);
|
||||||
|
hideAddPlanRecordModal();
|
||||||
|
saveScrollPosition();
|
||||||
|
getVehiclePlanRecords(formValues.vehicleId);
|
||||||
|
} else {
|
||||||
|
errorToast(data.message);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
function getAndValidatePlanRecordValues() {
|
function getAndValidatePlanRecordValues() {
|
||||||
var planDescription = $("#planRecordDescription").val();
|
var planDescription = $("#planRecordDescription").val();
|
||||||
var planCost = $("#planRecordCost").val();
|
var planCost = $("#planRecordCost").val();
|
||||||
|
|||||||
Reference in New Issue
Block a user