Add functionality to duplicate records to other vehicles.
This commit is contained in:
@@ -505,6 +505,24 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(new OperationResponse() { Success = false, Message = StaticHelper.GenericErrorMessage });
|
return Json(new OperationResponse() { Success = false, Message = StaticHelper.GenericErrorMessage });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public ActionResult GetVehicleSelector(int vehicleId)
|
||||||
|
{
|
||||||
|
var vehiclesStored = _dataAccess.GetVehicles();
|
||||||
|
if (!User.IsInRole(nameof(UserData.IsRootUser)))
|
||||||
|
{
|
||||||
|
vehiclesStored = _userLogic.FilterUserVehicles(vehiclesStored, GetUserID());
|
||||||
|
}
|
||||||
|
if (vehicleId != default)
|
||||||
|
{
|
||||||
|
vehiclesStored.RemoveAll(x => x.Id == vehicleId);
|
||||||
|
}
|
||||||
|
var userConfig = _config.GetUserConfig(User);
|
||||||
|
if (userConfig.HideSoldVehicles)
|
||||||
|
{
|
||||||
|
vehiclesStored.RemoveAll(x => !string.IsNullOrWhiteSpace(x.SoldDate));
|
||||||
|
}
|
||||||
|
return PartialView("_VehicleSelector", vehiclesStored);
|
||||||
|
}
|
||||||
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
||||||
public IActionResult Error()
|
public IActionResult Error()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -494,6 +494,7 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
return Json(result);
|
return Json(result);
|
||||||
}
|
}
|
||||||
|
[HttpPost]
|
||||||
public IActionResult DuplicateRecords(List<int> recordIds, ImportMode importMode)
|
public IActionResult DuplicateRecords(List<int> recordIds, ImportMode importMode)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
@@ -573,6 +574,125 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(result);
|
return Json(result);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
public IActionResult DuplicateRecordsToOtherVehicles(List<int> recordIds, List<int> vehicleIds, ImportMode importMode)
|
||||||
|
{
|
||||||
|
bool result = false;
|
||||||
|
if (!recordIds.Any() || !vehicleIds.Any())
|
||||||
|
{
|
||||||
|
return Json(result);
|
||||||
|
}
|
||||||
|
foreach (int recordId in recordIds)
|
||||||
|
{
|
||||||
|
switch (importMode)
|
||||||
|
{
|
||||||
|
case ImportMode.ServiceRecord:
|
||||||
|
{
|
||||||
|
var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId);
|
||||||
|
existingRecord.Id = default;
|
||||||
|
foreach(int vehicleId in vehicleIds)
|
||||||
|
{
|
||||||
|
existingRecord.VehicleId = vehicleId;
|
||||||
|
result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ImportMode.RepairRecord:
|
||||||
|
{
|
||||||
|
var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId);
|
||||||
|
existingRecord.Id = default;
|
||||||
|
foreach (int vehicleId in vehicleIds)
|
||||||
|
{
|
||||||
|
existingRecord.VehicleId = vehicleId;
|
||||||
|
result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(existingRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ImportMode.UpgradeRecord:
|
||||||
|
{
|
||||||
|
var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
||||||
|
existingRecord.Id = default;
|
||||||
|
foreach (int vehicleId in vehicleIds)
|
||||||
|
{
|
||||||
|
existingRecord.VehicleId = vehicleId;
|
||||||
|
result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(existingRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ImportMode.GasRecord:
|
||||||
|
{
|
||||||
|
var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId);
|
||||||
|
existingRecord.Id = default;
|
||||||
|
foreach (int vehicleId in vehicleIds)
|
||||||
|
{
|
||||||
|
existingRecord.VehicleId = vehicleId;
|
||||||
|
result = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ImportMode.TaxRecord:
|
||||||
|
{
|
||||||
|
var existingRecord = _taxRecordDataAccess.GetTaxRecordById(recordId);
|
||||||
|
existingRecord.Id = default;
|
||||||
|
foreach (int vehicleId in vehicleIds)
|
||||||
|
{
|
||||||
|
existingRecord.VehicleId = vehicleId;
|
||||||
|
result = _taxRecordDataAccess.SaveTaxRecordToVehicle(existingRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ImportMode.SupplyRecord:
|
||||||
|
{
|
||||||
|
var existingRecord = _supplyRecordDataAccess.GetSupplyRecordById(recordId);
|
||||||
|
existingRecord.Id = default;
|
||||||
|
foreach (int vehicleId in vehicleIds)
|
||||||
|
{
|
||||||
|
existingRecord.VehicleId = vehicleId;
|
||||||
|
result = _supplyRecordDataAccess.SaveSupplyRecordToVehicle(existingRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ImportMode.NoteRecord:
|
||||||
|
{
|
||||||
|
var existingRecord = _noteDataAccess.GetNoteById(recordId);
|
||||||
|
existingRecord.Id = default;
|
||||||
|
foreach (int vehicleId in vehicleIds)
|
||||||
|
{
|
||||||
|
existingRecord.VehicleId = vehicleId;
|
||||||
|
result = _noteDataAccess.SaveNoteToVehicle(existingRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ImportMode.OdometerRecord:
|
||||||
|
{
|
||||||
|
var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(recordId);
|
||||||
|
existingRecord.Id = default;
|
||||||
|
foreach (int vehicleId in vehicleIds)
|
||||||
|
{
|
||||||
|
existingRecord.VehicleId = vehicleId;
|
||||||
|
result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ImportMode.ReminderRecord:
|
||||||
|
{
|
||||||
|
var existingRecord = _reminderRecordDataAccess.GetReminderRecordById(recordId);
|
||||||
|
existingRecord.Id = default;
|
||||||
|
foreach (int vehicleId in vehicleIds)
|
||||||
|
{
|
||||||
|
existingRecord.VehicleId = vehicleId;
|
||||||
|
result = _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), 0, User.Identity.Name, $"Duplicated multiple {importMode.ToString()} - Ids: {string.Join(",", recordIds)} - to Vehicle Ids: {string.Join(",", vehicleIds)}");
|
||||||
|
}
|
||||||
|
return Json(result);
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
public IActionResult GetGenericRecordModal(List<int> recordIds, ImportMode dataType)
|
public IActionResult GetGenericRecordModal(List<int> recordIds, ImportMode dataType)
|
||||||
{
|
{
|
||||||
var extraFields = _extraFieldDataAccess.GetExtraFieldsById((int)dataType).ExtraFields;
|
var extraFields = _extraFieldDataAccess.GetExtraFieldsById((int)dataType).ExtraFields;
|
||||||
|
|||||||
19
Views/Home/_VehicleSelector.cshtml
Normal file
19
Views/Home/_VehicleSelector.cshtml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
@using CarCareTracker.Helper
|
||||||
|
@model List<Vehicle>
|
||||||
|
@if (Model.Any())
|
||||||
|
{
|
||||||
|
<div id="vehicleSelector">
|
||||||
|
<ul class="list-group">
|
||||||
|
@foreach (Vehicle vehicle in Model)
|
||||||
|
{
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="@vehicle.Id" id="vehicleCheck_@vehicle.Id">
|
||||||
|
<label class="form-check-label stretched-link" for="vehicleCheck_@vehicle.Id">@($"{vehicle.Year} {vehicle.Make} {vehicle.Model} ({StaticHelper.GetVehicleIdentifier(vehicle)})")</label>
|
||||||
|
</li>
|
||||||
|
}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
<div id="vehicleSelector"><span class="lead">No Vehicles Available</span></div>
|
||||||
|
}
|
||||||
@@ -168,6 +168,7 @@
|
|||||||
<li><a class="dropdown-item" href="#" onclick="moveRecords(selectedRow, 'RepairRecord', 'UpgradeRecord')">@translator.Translate(userLanguage, "Upgrades")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="moveRecords(selectedRow, 'RepairRecord', 'UpgradeRecord')">@translator.Translate(userLanguage, "Upgrades")</a></li>
|
||||||
<li><hr class="dropdown-divider"></li>
|
<li><hr class="dropdown-divider"></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'RepairRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'RepairRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecordsToOtherVehicles(selectedRow, 'RepairRecord')">@translator.Translate(userLanguage, "Duplicate To Vehicle")</a></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'RepairRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'RepairRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
||||||
<li><hr class="context-menu-active-multiple dropdown-divider"></li>
|
<li><hr class="context-menu-active-multiple dropdown-divider"></li>
|
||||||
<li><a class="context-menu-active-multiple dropdown-item" href="#" onclick="getRecordsDeltaStats(selectedRow)">@translator.Translate(userLanguage, "Statistics")</a></li>
|
<li><a class="context-menu-active-multiple dropdown-item" href="#" onclick="getRecordsDeltaStats(selectedRow)">@translator.Translate(userLanguage, "Statistics")</a></li>
|
||||||
|
|||||||
@@ -234,6 +234,7 @@
|
|||||||
<li><a class="context-menu-active-multiple dropdown-item" href="#" onclick="editMultipleGasRecords(selectedRow)">@translator.Translate(userLanguage, "Edit Multiple")</a></li>
|
<li><a class="context-menu-active-multiple dropdown-item" href="#" onclick="editMultipleGasRecords(selectedRow)">@translator.Translate(userLanguage, "Edit Multiple")</a></li>
|
||||||
<li><hr class="context-menu-multiple dropdown-divider"></li>
|
<li><hr class="context-menu-multiple dropdown-divider"></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'GasRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'GasRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecordsToOtherVehicles(selectedRow, 'GasRecord')">@translator.Translate(userLanguage, "Duplicate To Vehicle")</a></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'GasRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'GasRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
||||||
<li><hr class="context-menu-odometer-adjustment dropdown-divider"></li>
|
<li><hr class="context-menu-odometer-adjustment dropdown-divider"></li>
|
||||||
<li><a class="context-menu-odometer-adjustment dropdown-item" href="#" onclick="adjustRecordsOdometer(selectedRow, 'GasRecord')">@translator.Translate(userLanguage, "Adjust Odometer")</a></li>
|
<li><a class="context-menu-odometer-adjustment dropdown-item" href="#" onclick="adjustRecordsOdometer(selectedRow, 'GasRecord')">@translator.Translate(userLanguage, "Adjust Odometer")</a></li>
|
||||||
|
|||||||
@@ -77,5 +77,6 @@
|
|||||||
<li><a class="dropdown-item" href="#" onclick="pinNotes(selectedRow, false, false)">@translator.Translate(userLanguage, "Unpin")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="pinNotes(selectedRow, false, false)">@translator.Translate(userLanguage, "Unpin")</a></li>
|
||||||
<li><hr class="dropdown-divider"></li>
|
<li><hr class="dropdown-divider"></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'NoteRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'NoteRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecordsToOtherVehicles(selectedRow, 'NoteRecord')">@translator.Translate(userLanguage, "Duplicate To Vehicle")</a></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'NoteRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'NoteRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -166,6 +166,7 @@
|
|||||||
<li><a class="context-menu-multiple context-menu-deselect-all dropdown-item" href="#" onclick="recalculateDistance()">@translator.Translate(userLanguage, "Recalculate Distance")</a></li>
|
<li><a class="context-menu-multiple context-menu-deselect-all dropdown-item" href="#" onclick="recalculateDistance()">@translator.Translate(userLanguage, "Recalculate Distance")</a></li>
|
||||||
<li><hr class="context-menu-multiple dropdown-divider"></li>
|
<li><hr class="context-menu-multiple dropdown-divider"></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'OdometerRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'OdometerRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecordsToOtherVehicles(selectedRow, 'OdometerRecord')">@translator.Translate(userLanguage, "Duplicate To Vehicle")</a></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'OdometerRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'OdometerRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
||||||
<li><hr class="context-menu-odometer-adjustment dropdown-divider"></li>
|
<li><hr class="context-menu-odometer-adjustment dropdown-divider"></li>
|
||||||
<li><a class="context-menu-odometer-adjustment dropdown-item" href="#" onclick="adjustRecordsOdometer(selectedRow, 'OdometerRecord')">@translator.Translate(userLanguage, "Adjust Odometer")</a></li>
|
<li><a class="context-menu-odometer-adjustment dropdown-item" href="#" onclick="adjustRecordsOdometer(selectedRow, 'OdometerRecord')">@translator.Translate(userLanguage, "Adjust Odometer")</a></li>
|
||||||
|
|||||||
@@ -121,6 +121,7 @@
|
|||||||
<li><a class="context-menu-multiple context-menu-deselect-all dropdown-item" href="#" onclick="clearSelectedRows()">@translator.Translate(userLanguage, "Deselect All")</a></li>
|
<li><a class="context-menu-multiple context-menu-deselect-all dropdown-item" href="#" onclick="clearSelectedRows()">@translator.Translate(userLanguage, "Deselect All")</a></li>
|
||||||
<li><hr class="context-menu-multiple dropdown-divider"></li>
|
<li><hr class="context-menu-multiple dropdown-divider"></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'ReminderRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'ReminderRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecordsToOtherVehicles(selectedRow, 'ReminderRecord')">@translator.Translate(userLanguage, "Duplicate To Vehicle")</a></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'ReminderRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'ReminderRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|||||||
@@ -166,6 +166,7 @@
|
|||||||
<li><a class="dropdown-item" href="#" onclick="moveRecords(selectedRow, 'ServiceRecord', 'UpgradeRecord')">@translator.Translate(userLanguage, "Upgrades")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="moveRecords(selectedRow, 'ServiceRecord', 'UpgradeRecord')">@translator.Translate(userLanguage, "Upgrades")</a></li>
|
||||||
<li><hr class="dropdown-divider"></li>
|
<li><hr class="dropdown-divider"></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'ServiceRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'ServiceRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecordsToOtherVehicles(selectedRow, 'ServiceRecord')">@translator.Translate(userLanguage, "Duplicate To Vehicle")</a></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'ServiceRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'ServiceRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
||||||
<li><hr class="context-menu-active-multiple dropdown-divider"></li>
|
<li><hr class="context-menu-active-multiple dropdown-divider"></li>
|
||||||
<li><a class="context-menu-active-multiple dropdown-item" href="#" onclick="getRecordsDeltaStats(selectedRow)">@translator.Translate(userLanguage, "Statistics")</a></li>
|
<li><a class="context-menu-active-multiple dropdown-item" href="#" onclick="getRecordsDeltaStats(selectedRow)">@translator.Translate(userLanguage, "Statistics")</a></li>
|
||||||
|
|||||||
@@ -179,6 +179,7 @@
|
|||||||
<li><a class="context-menu-multiple context-menu-deselect-all dropdown-item" href="#" onclick="clearSelectedRows()">@translator.Translate(userLanguage, "Deselect All")</a></li>
|
<li><a class="context-menu-multiple context-menu-deselect-all dropdown-item" href="#" onclick="clearSelectedRows()">@translator.Translate(userLanguage, "Deselect All")</a></li>
|
||||||
<li><hr class="context-menu-multiple dropdown-divider"></li>
|
<li><hr class="context-menu-multiple dropdown-divider"></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'SupplyRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'SupplyRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecordsToOtherVehicles(selectedRow, 'SupplyRecord')">@translator.Translate(userLanguage, "Duplicate To Vehicle")</a></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'SupplyRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'SupplyRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@if (userColumnPreferences.Any())
|
@if (userColumnPreferences.Any())
|
||||||
|
|||||||
@@ -155,6 +155,7 @@
|
|||||||
<li><a class="context-menu-multiple context-menu-deselect-all dropdown-item" href="#" onclick="clearSelectedRows()">@translator.Translate(userLanguage, "Deselect All")</a></li>
|
<li><a class="context-menu-multiple context-menu-deselect-all dropdown-item" href="#" onclick="clearSelectedRows()">@translator.Translate(userLanguage, "Deselect All")</a></li>
|
||||||
<li><hr class="context-menu-multiple dropdown-divider"></li>
|
<li><hr class="context-menu-multiple dropdown-divider"></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'TaxRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'TaxRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecordsToOtherVehicles(selectedRow, 'TaxRecord')">@translator.Translate(userLanguage, "Duplicate To Vehicle")</a></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'TaxRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'TaxRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@if (userColumnPreferences.Any())
|
@if (userColumnPreferences.Any())
|
||||||
|
|||||||
@@ -167,6 +167,7 @@
|
|||||||
<li><a class="dropdown-item" href="#" onclick="moveRecords(selectedRow, 'UpgradeRecord', 'RepairRecord')">@translator.Translate(userLanguage, "Repairs")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="moveRecords(selectedRow, 'UpgradeRecord', 'RepairRecord')">@translator.Translate(userLanguage, "Repairs")</a></li>
|
||||||
<li><hr class="dropdown-divider"></li>
|
<li><hr class="dropdown-divider"></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'UpgradeRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'UpgradeRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#" onclick="duplicateRecordsToOtherVehicles(selectedRow, 'UpgradeRecord')">@translator.Translate(userLanguage, "Duplicate To Vehicle")</a></li>
|
||||||
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'UpgradeRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'UpgradeRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
|
||||||
<li><hr class="context-menu-active-multiple dropdown-divider"></li>
|
<li><hr class="context-menu-active-multiple dropdown-divider"></li>
|
||||||
<li><a class="context-menu-active-multiple dropdown-item" href="#" onclick="getRecordsDeltaStats(selectedRow)">@translator.Translate(userLanguage, "Statistics")</a></li>
|
<li><a class="context-menu-active-multiple dropdown-item" href="#" onclick="getRecordsDeltaStats(selectedRow)">@translator.Translate(userLanguage, "Statistics")</a></li>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -849,6 +849,85 @@ function duplicateRecords(ids, source) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function duplicateRecordsToOtherVehicles(ids, source) {
|
||||||
|
if (ids.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$("#workAroundInput").show();
|
||||||
|
var friendlySource = "";
|
||||||
|
var refreshDataCallBack;
|
||||||
|
var recordVerbiage = ids.length > 1 ? `these ${ids.length} records` : "this record";
|
||||||
|
switch (source) {
|
||||||
|
case "ServiceRecord":
|
||||||
|
friendlySource = "Service Records";
|
||||||
|
refreshDataCallBack = getVehicleServiceRecords;
|
||||||
|
break;
|
||||||
|
case "RepairRecord":
|
||||||
|
friendlySource = "Repairs";
|
||||||
|
refreshDataCallBack = getVehicleCollisionRecords;
|
||||||
|
break;
|
||||||
|
case "UpgradeRecord":
|
||||||
|
friendlySource = "Upgrades";
|
||||||
|
refreshDataCallBack = getVehicleUpgradeRecords;
|
||||||
|
break;
|
||||||
|
case "TaxRecord":
|
||||||
|
friendlySource = "Taxes";
|
||||||
|
refreshDataCallBack = getVehicleTaxRecords;
|
||||||
|
break;
|
||||||
|
case "SupplyRecord":
|
||||||
|
friendlySource = "Supplies";
|
||||||
|
refreshDataCallBack = getVehicleSupplyRecords;
|
||||||
|
break;
|
||||||
|
case "NoteRecord":
|
||||||
|
friendlySource = "Notes";
|
||||||
|
refreshDataCallBack = getVehicleNotes;
|
||||||
|
break;
|
||||||
|
case "OdometerRecord":
|
||||||
|
friendlySource = "Odometer Records";
|
||||||
|
refreshDataCallBack = getVehicleOdometerRecords;
|
||||||
|
break;
|
||||||
|
case "ReminderRecord":
|
||||||
|
friendlySource = "Reminders";
|
||||||
|
refreshDataCallBack = getVehicleReminders;
|
||||||
|
break;
|
||||||
|
case "GasRecord":
|
||||||
|
friendlySource = "Fuel Records";
|
||||||
|
refreshDataCallBack = getVehicleGasRecords;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$.get(`/Home/GetVehicleSelector?vehicleId=${GetVehicleId().vehicleId}`, function (data) {
|
||||||
|
if (data) {
|
||||||
|
//prompt user to select a vehicle
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Duplicate to Vehicle(s)',
|
||||||
|
html: data,
|
||||||
|
confirmButtonText: 'Duplicate',
|
||||||
|
focusConfirm: false,
|
||||||
|
preConfirm: () => {
|
||||||
|
//validate
|
||||||
|
var selectedVehicleData = getAndValidateSelectedVehicle();
|
||||||
|
if (selectedVehicleData.hasError) {
|
||||||
|
Swal.showValidationMessage(`You must select a vehicle`);
|
||||||
|
}
|
||||||
|
return { selectedVehicleData }
|
||||||
|
},
|
||||||
|
}).then(function (result) {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
$.post('/Vehicle/DuplicateRecordsToOtherVehicles', { recordIds: ids, vehicleIds: result.value.selectedVehicleData.ids, importMode: source}, function (data) {
|
||||||
|
if (data) {
|
||||||
|
successToast(`${ids.length} Record(s) Duplicated`);
|
||||||
|
} else {
|
||||||
|
errorToast(genericErrorMessage());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
errorToast(genericErrorMessage());
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
var selectedRow = [];
|
var selectedRow = [];
|
||||||
var isDragging = false;
|
var isDragging = false;
|
||||||
$(window).on('mouseup', function (e) {
|
$(window).on('mouseup', function (e) {
|
||||||
|
|||||||
@@ -572,6 +572,23 @@ function showMultipleRemindersSelector() {
|
|||||||
$("#recurringReminderInput").show();
|
$("#recurringReminderInput").show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function getAndValidateSelectedVehicle() {
|
||||||
|
var selectedVehiclesArray = [];
|
||||||
|
$("#vehicleSelector :checked").map(function () {
|
||||||
|
selectedVehiclesArray.push(this.value);
|
||||||
|
});
|
||||||
|
if (selectedVehiclesArray.length == 0) {
|
||||||
|
return {
|
||||||
|
hasError: true,
|
||||||
|
ids: []
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
hasError: false,
|
||||||
|
ids: selectedVehiclesArray
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
function getAndValidateSelectedRecurringReminder() {
|
function getAndValidateSelectedRecurringReminder() {
|
||||||
if ($("#multipleRemindersCheck").is(":checked")) {
|
if ($("#multipleRemindersCheck").is(":checked")) {
|
||||||
//validate multiple reminders
|
//validate multiple reminders
|
||||||
|
|||||||
Reference in New Issue
Block a user