mirror of
https://github.com/hargata/lubelog.git
synced 2025-12-10 00:46:08 -06:00
Compare commits
8 Commits
d09d10a5b3
...
d23b16da67
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d23b16da67 | ||
|
|
5bb0170011 | ||
|
|
07d1f5cd86 | ||
|
|
61bbfb8b1e | ||
|
|
1a805ada8e | ||
|
|
6065c14f3b | ||
|
|
76d9be7ee5 | ||
|
|
5f6b77648d |
@ -175,7 +175,7 @@ namespace CarCareTracker.Controllers
|
|||||||
List<Vehicle> vehicles = new List<Vehicle>();
|
List<Vehicle> vehicles = new List<Vehicle>();
|
||||||
if (vehicleId != default)
|
if (vehicleId != default)
|
||||||
{
|
{
|
||||||
if (_userLogic.UserCanEditVehicle(GetUserID(), vehicleId))
|
if (_userLogic.UserCanEditVehicle(GetUserID(), vehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
vehicles.Add(_dataAccess.GetVehicleById(vehicleId));
|
vehicles.Add(_dataAccess.GetVehicleById(vehicleId));
|
||||||
} else
|
} else
|
||||||
@ -351,7 +351,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed("Invalid Record Id"));
|
return Json(OperationResponse.Failed("Invalid Record Id"));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -419,7 +419,7 @@ namespace CarCareTracker.Controllers
|
|||||||
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
||||||
{
|
{
|
||||||
//check if user has access to the vehicleId
|
//check if user has access to the vehicleId
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -567,7 +567,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed("Invalid Record Id"));
|
return Json(OperationResponse.Failed("Invalid Record Id"));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -616,7 +616,7 @@ namespace CarCareTracker.Controllers
|
|||||||
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
||||||
{
|
{
|
||||||
//check if user has access to the vehicleId
|
//check if user has access to the vehicleId
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -764,7 +764,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed("Invalid Record Id"));
|
return Json(OperationResponse.Failed("Invalid Record Id"));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -813,7 +813,7 @@ namespace CarCareTracker.Controllers
|
|||||||
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
||||||
{
|
{
|
||||||
//check if user has access to the vehicleId
|
//check if user has access to the vehicleId
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -961,7 +961,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed("Invalid Record Id"));
|
return Json(OperationResponse.Failed("Invalid Record Id"));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -1010,7 +1010,7 @@ namespace CarCareTracker.Controllers
|
|||||||
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
||||||
{
|
{
|
||||||
//check if user has access to the vehicleId
|
//check if user has access to the vehicleId
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -1180,7 +1180,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed("Invalid Record Id"));
|
return Json(OperationResponse.Failed("Invalid Record Id"));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -1223,7 +1223,7 @@ namespace CarCareTracker.Controllers
|
|||||||
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
||||||
{
|
{
|
||||||
//check if user has access to the vehicleId
|
//check if user has access to the vehicleId
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -1373,7 +1373,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed("Invalid Record Id"));
|
return Json(OperationResponse.Failed("Invalid Record Id"));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -1416,7 +1416,7 @@ namespace CarCareTracker.Controllers
|
|||||||
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
||||||
{
|
{
|
||||||
//check if user has access to the vehicleId
|
//check if user has access to the vehicleId
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -1583,7 +1583,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed("Invalid Record Id"));
|
return Json(OperationResponse.Failed("Invalid Record Id"));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -1629,7 +1629,7 @@ namespace CarCareTracker.Controllers
|
|||||||
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
||||||
{
|
{
|
||||||
//check if user has access to the vehicleId
|
//check if user has access to the vehicleId
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -1823,7 +1823,7 @@ namespace CarCareTracker.Controllers
|
|||||||
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
if (existingRecord != null && existingRecord.Id == int.Parse(input.Id))
|
||||||
{
|
{
|
||||||
//check if user has access to the vehicleId
|
//check if user has access to the vehicleId
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
@ -1861,7 +1861,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed("Invalid Record Id"));
|
return Json(OperationResponse.Failed("Invalid Record Id"));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
Response.StatusCode = 401;
|
Response.StatusCode = 401;
|
||||||
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
return Json(OperationResponse.Failed("Access Denied, you don't have access to this vehicle."));
|
||||||
|
|||||||
@ -104,5 +104,11 @@ namespace CarCareTracker.Controllers
|
|||||||
var result = _userLogic.AddUserToHousehold(parentUserId, username);
|
var result = _userLogic.AddUserToHousehold(parentUserId, username);
|
||||||
return Json(result);
|
return Json(result);
|
||||||
}
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public IActionResult ModifyUserHouseholdPermissions(int parentUserId, int childUserId, List<HouseholdPermission> permissions)
|
||||||
|
{
|
||||||
|
var result = _userLogic.UpdateUserHousehold(parentUserId, childUserId, permissions);
|
||||||
|
return Json(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -302,6 +302,12 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(result);
|
return Json(result);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
public IActionResult ModifyUserHouseholdPermissions(int userId, List<HouseholdPermission> permissions)
|
||||||
|
{
|
||||||
|
var result = _userLogic.UpdateUserHousehold(GetUserID(), userId, permissions);
|
||||||
|
return Json(result);
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
public IActionResult AddUserToHousehold(string username)
|
public IActionResult AddUserToHousehold(string username)
|
||||||
{
|
{
|
||||||
var result = _userLogic.AddUserToHousehold(GetUserID(), username);
|
var result = _userLogic.AddUserToHousehold(GetUserID(), username);
|
||||||
|
|||||||
@ -55,7 +55,7 @@ namespace CarCareTracker.Controllers
|
|||||||
"CREATE TABLE IF NOT EXISTS app.extrafields (id INT primary key, data jsonb not null)",
|
"CREATE TABLE IF NOT EXISTS app.extrafields (id INT primary key, data jsonb not null)",
|
||||||
"CREATE TABLE IF NOT EXISTS app.inspectionrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)",
|
"CREATE TABLE IF NOT EXISTS app.inspectionrecords (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)",
|
||||||
"CREATE TABLE IF NOT EXISTS app.inspectionrecordtemplates (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)",
|
"CREATE TABLE IF NOT EXISTS app.inspectionrecordtemplates (id INT GENERATED BY DEFAULT AS IDENTITY primary key, vehicleId INT not null, data jsonb not null)",
|
||||||
"CREATE TABLE IF NOT EXISTS app.userhouseholdrecords (parentUserId INT, childUserId INT, PRIMARY KEY(parentUserId, childUserId))"
|
"CREATE TABLE IF NOT EXISTS app.userhouseholdrecords (parentUserId INT, childUserId INT, data jsonb not null, PRIMARY KEY(parentUserId, childUserId))"
|
||||||
};
|
};
|
||||||
foreach(string cmd in cmds)
|
foreach(string cmd in cmds)
|
||||||
{
|
{
|
||||||
@ -457,20 +457,13 @@ namespace CarCareTracker.Controllers
|
|||||||
table.Upsert(record);
|
table.Upsert(record);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
cmd = $"SELECT parentUserId, childUserId FROM app.userhouseholdrecords";
|
cmd = $"SELECT data FROM app.userhouseholdrecords";
|
||||||
using (var ctext = pgDataSource.CreateCommand(cmd))
|
using (var ctext = pgDataSource.CreateCommand(cmd))
|
||||||
{
|
{
|
||||||
using (NpgsqlDataReader reader = ctext.ExecuteReader())
|
using (NpgsqlDataReader reader = ctext.ExecuteReader())
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
UserHousehold result = new UserHousehold()
|
UserHousehold result = JsonSerializer.Deserialize<UserHousehold>(reader["data"] as string);
|
||||||
{
|
|
||||||
Id = new HouseholdAccess
|
|
||||||
{
|
|
||||||
ParentUserId = int.Parse(reader["parentUserId"].ToString()),
|
|
||||||
ChildUserId = int.Parse(reader["childUserId"].ToString())
|
|
||||||
}
|
|
||||||
};
|
|
||||||
userhouseholdrecords.Add(result);
|
userhouseholdrecords.Add(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -853,11 +846,12 @@ namespace CarCareTracker.Controllers
|
|||||||
;
|
;
|
||||||
foreach (var record in userhouseholdrecords)
|
foreach (var record in userhouseholdrecords)
|
||||||
{
|
{
|
||||||
string cmd = $"INSERT INTO app.userhouseholdrecords (parentUserId, childUserId) VALUES(@parentUserId, @childUserId)";
|
string cmd = $"INSERT INTO app.userhouseholdrecords (parentUserId, childUserId, data) VALUES(@parentUserId, @childUserId, CAST(@data AS jsonb))";
|
||||||
using (var ctext = pgDataSource.CreateCommand(cmd))
|
using (var ctext = pgDataSource.CreateCommand(cmd))
|
||||||
{
|
{
|
||||||
ctext.Parameters.AddWithValue("parentUserId", record.Id.ParentUserId);
|
ctext.Parameters.AddWithValue("parentUserId", record.Id.ParentUserId);
|
||||||
ctext.Parameters.AddWithValue("childUserId", record.Id.ChildUserId);
|
ctext.Parameters.AddWithValue("childUserId", record.Id.ChildUserId);
|
||||||
|
ctext.Parameters.AddWithValue("data", JsonSerializer.Serialize(record));
|
||||||
ctext.ExecuteNonQuery();
|
ctext.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,9 +36,9 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult SaveGasRecordToVehicleId(GasRecordInput gasRecord)
|
public IActionResult SaveGasRecordToVehicleId(GasRecordInput gasRecord)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), gasRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), gasRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
gasRecord.Files = gasRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
gasRecord.Files = gasRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
var convertedRecord = gasRecord.ToGasRecord();
|
var convertedRecord = gasRecord.ToGasRecord();
|
||||||
@ -58,7 +58,7 @@ namespace CarCareTracker.Controllers
|
|||||||
Files = StaticHelper.CreateAttachmentFromRecord(ImportMode.GasRecord, convertedRecord.Id, $"Gas Record - {gasRecord.Mileage.ToString()}")
|
Files = StaticHelper.CreateAttachmentFromRecord(ImportMode.GasRecord, convertedRecord.Id, $"Gas Record - {gasRecord.Mileage.ToString()}")
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
[TypeFilter(typeof(CollaboratorFilter))]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
@ -74,7 +74,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var result = _gasRecordDataAccess.GetGasRecordById(gasRecordId);
|
var result = _gasRecordDataAccess.GetGasRecordById(gasRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Redirect("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
@ -104,20 +104,20 @@ namespace CarCareTracker.Controllers
|
|||||||
};
|
};
|
||||||
return PartialView("Gas/_GasModal", viewModel);
|
return PartialView("Gas/_GasModal", viewModel);
|
||||||
}
|
}
|
||||||
private bool DeleteGasRecordWithChecks(int gasRecordId)
|
private OperationResponse DeleteGasRecordWithChecks(int gasRecordId)
|
||||||
{
|
{
|
||||||
var existingRecord = _gasRecordDataAccess.GetGasRecordById(gasRecordId);
|
var existingRecord = _gasRecordDataAccess.GetGasRecordById(gasRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
var result = _gasRecordDataAccess.DeleteGasRecordById(existingRecord.Id);
|
var result = _gasRecordDataAccess.DeleteGasRecordById(existingRecord.Id);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGasRecord(existingRecord, "gasrecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGasRecord(existingRecord, "gasrecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DeleteGasRecordById(int gasRecordId)
|
public IActionResult DeleteGasRecordById(int gasRecordId)
|
||||||
@ -163,6 +163,11 @@ namespace CarCareTracker.Controllers
|
|||||||
foreach (int recordId in editModel.RecordIds)
|
foreach (int recordId in editModel.RecordIds)
|
||||||
{
|
{
|
||||||
var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId);
|
var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
if (dateIsEdited)
|
if (dateIsEdited)
|
||||||
{
|
{
|
||||||
existingRecord.Date = editModel.EditRecord.Date;
|
existingRecord.Date = editModel.EditRecord.Date;
|
||||||
@ -205,7 +210,7 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
result = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord);
|
result = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord);
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -186,7 +186,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed($"An error has occurred while generating CSV sample: {ex.Message}"));
|
return Json(OperationResponse.Failed($"An error has occurred while generating CSV sample: {ex.Message}"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
[TypeFilter(typeof(CollaboratorFilter), Arguments = new object[] { false, true, HouseholdPermission.View })]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult ExportFromVehicleToCsv(int vehicleId, ImportMode mode)
|
public IActionResult ExportFromVehicleToCsv(int vehicleId, ImportMode mode)
|
||||||
{
|
{
|
||||||
@ -408,9 +408,9 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
return Json($"/{fileNameToExport}");
|
return Json($"/{fileNameToExport}");
|
||||||
}
|
}
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed(StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
[TypeFilter(typeof(CollaboratorFilter), Arguments = new object[] { false, true, HouseholdPermission.Edit })]
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, string fileName)
|
public IActionResult ImportToVehicleIdFromCsv(int vehicleId, ImportMode mode, string fileName)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -40,7 +40,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var existingRecord = _inspectionRecordTemplateDataAccess.GetInspectionRecordTemplateById(inspectionRecordTemplateId);
|
var existingRecord = _inspectionRecordTemplateDataAccess.GetInspectionRecordTemplateById(inspectionRecordTemplateId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Redirect("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
@ -82,38 +82,38 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult SaveInspectionRecordTemplateToVehicleId(InspectionRecordInput inspectionRecordTemplate)
|
public IActionResult SaveInspectionRecordTemplateToVehicleId(InspectionRecordInput inspectionRecordTemplate)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), inspectionRecordTemplate.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), inspectionRecordTemplate.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(false);
|
||||||
}
|
}
|
||||||
var result = _inspectionRecordTemplateDataAccess.SaveInspectionReportTemplateToVehicle(inspectionRecordTemplate);
|
var result = _inspectionRecordTemplateDataAccess.SaveInspectionReportTemplateToVehicle(inspectionRecordTemplate);
|
||||||
return Json(result);
|
return Json(result);
|
||||||
}
|
}
|
||||||
private bool DeleteInspectionRecordTemplateWithChecks(int inspectionRecordTemplateId)
|
private OperationResponse DeleteInspectionRecordTemplateWithChecks(int inspectionRecordTemplateId)
|
||||||
{
|
{
|
||||||
var existingRecord = _inspectionRecordTemplateDataAccess.GetInspectionRecordTemplateById(inspectionRecordTemplateId);
|
var existingRecord = _inspectionRecordTemplateDataAccess.GetInspectionRecordTemplateById(inspectionRecordTemplateId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
var result = _inspectionRecordTemplateDataAccess.DeleteInspectionRecordTemplateById(existingRecord.Id);
|
var result = _inspectionRecordTemplateDataAccess.DeleteInspectionRecordTemplateById(existingRecord.Id);
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
private bool DeleteInspectionRecordWithChecks(int inspectionRecordId)
|
private OperationResponse DeleteInspectionRecordWithChecks(int inspectionRecordId)
|
||||||
{
|
{
|
||||||
var existingRecord = _inspectionRecordDataAccess.GetInspectionRecordById(inspectionRecordId);
|
var existingRecord = _inspectionRecordDataAccess.GetInspectionRecordById(inspectionRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
var result = _inspectionRecordDataAccess.DeleteInspectionRecordById(existingRecord.Id);
|
var result = _inspectionRecordDataAccess.DeleteInspectionRecordById(existingRecord.Id);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromInspectionRecord(existingRecord, "inspectionrecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromInspectionRecord(existingRecord, "inspectionrecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DeleteInspectionRecordTemplateById(int inspectionRecordTemplateId)
|
public IActionResult DeleteInspectionRecordTemplateById(int inspectionRecordTemplateId)
|
||||||
@ -132,9 +132,9 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var existingRecord = _inspectionRecordTemplateDataAccess.GetInspectionRecordTemplateById(inspectionRecordTemplateId);
|
var existingRecord = _inspectionRecordTemplateDataAccess.GetInspectionRecordTemplateById(inspectionRecordTemplateId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
//populate date
|
//populate date
|
||||||
existingRecord.Date = DateTime.Now.ToShortDateString();
|
existingRecord.Date = DateTime.Now.ToShortDateString();
|
||||||
@ -164,9 +164,9 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var result = _inspectionRecordDataAccess.GetInspectionRecordById(inspectionRecordId);
|
var result = _inspectionRecordDataAccess.GetInspectionRecordById(inspectionRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
return PartialView("Inspection/_InspectionRecordViewModal", result);
|
return PartialView("Inspection/_InspectionRecordViewModal", result);
|
||||||
}
|
}
|
||||||
@ -174,9 +174,9 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult SaveInspectionRecordToVehicleId(InspectionRecordInput inspectionRecord)
|
public IActionResult SaveInspectionRecordToVehicleId(InspectionRecordInput inspectionRecord)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), inspectionRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), inspectionRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
//move files from temp.
|
//move files from temp.
|
||||||
inspectionRecord.Files = inspectionRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
inspectionRecord.Files = inspectionRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
@ -246,16 +246,16 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult UpdateInspectionRecord(InspectionRecordInput inspectionRecord)
|
public IActionResult UpdateInspectionRecord(InspectionRecordInput inspectionRecord)
|
||||||
{
|
{
|
||||||
var existingRecord = _inspectionRecordDataAccess.GetInspectionRecordById(inspectionRecord.Id);
|
var existingRecord = _inspectionRecordDataAccess.GetInspectionRecordById(inspectionRecord.Id);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
existingRecord.Tags = inspectionRecord.Tags;
|
existingRecord.Tags = inspectionRecord.Tags;
|
||||||
existingRecord.Files = inspectionRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
existingRecord.Files = inspectionRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
@ -264,7 +264,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromInspectionRecord(existingRecord, "inspectionrecord.update", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromInspectionRecord(existingRecord, "inspectionrecord.update", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,9 +27,9 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult SaveNoteToVehicleId(Note note)
|
public IActionResult SaveNoteToVehicleId(Note note)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), note.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), note.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
note.Files = note.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
note.Files = note.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
bool isCreate = note.Id == default; //needed here since Notes don't use an input object.
|
bool isCreate = note.Id == default; //needed here since Notes don't use an input object.
|
||||||
@ -38,7 +38,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromNoteRecord(note, isCreate ? "noterecord.add" : "noterecord.update", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromNoteRecord(note, isCreate ? "noterecord.add" : "noterecord.update", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetAddNotePartialView()
|
public IActionResult GetAddNotePartialView()
|
||||||
@ -52,26 +52,26 @@ namespace CarCareTracker.Controllers
|
|||||||
var result = _noteDataAccess.GetNoteById(noteId);
|
var result = _noteDataAccess.GetNoteById(noteId);
|
||||||
result.ExtraFields = StaticHelper.AddExtraFields(result.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.NoteRecord).ExtraFields);
|
result.ExtraFields = StaticHelper.AddExtraFields(result.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.NoteRecord).ExtraFields);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Redirect("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
return PartialView("Note/_NoteModal", result);
|
return PartialView("Note/_NoteModal", result);
|
||||||
}
|
}
|
||||||
private bool DeleteNoteWithChecks(int noteId)
|
private OperationResponse DeleteNoteWithChecks(int noteId)
|
||||||
{
|
{
|
||||||
var existingRecord = _noteDataAccess.GetNoteById(noteId);
|
var existingRecord = _noteDataAccess.GetNoteById(noteId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
var result = _noteDataAccess.DeleteNoteById(existingRecord.Id);
|
var result = _noteDataAccess.DeleteNoteById(existingRecord.Id);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromNoteRecord(existingRecord, "noterecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromNoteRecord(existingRecord, "noterecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DeleteNoteById(int noteId)
|
public IActionResult DeleteNoteById(int noteId)
|
||||||
@ -86,6 +86,10 @@ namespace CarCareTracker.Controllers
|
|||||||
foreach (int noteId in noteIds)
|
foreach (int noteId in noteIds)
|
||||||
{
|
{
|
||||||
var existingNote = _noteDataAccess.GetNoteById(noteId);
|
var existingNote = _noteDataAccess.GetNoteById(noteId);
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingNote.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
if (isToggle)
|
if (isToggle)
|
||||||
{
|
{
|
||||||
existingNote.Pinned = !existingNote.Pinned;
|
existingNote.Pinned = !existingNote.Pinned;
|
||||||
@ -96,7 +100,7 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
result = _noteDataAccess.SaveNoteToVehicle(existingNote);
|
result = _noteDataAccess.SaveNoteToVehicle(existingNote);
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,13 +7,17 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
public partial class VehicleController
|
public partial class VehicleController
|
||||||
{
|
{
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult ForceRecalculateDistanceByVehicleId(int vehicleId)
|
public IActionResult ForceRecalculateDistanceByVehicleId(int vehicleId)
|
||||||
{
|
{
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), vehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
var result = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId);
|
var result = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId);
|
||||||
result = _odometerLogic.AutoConvertOdometerRecord(result);
|
result = _odometerLogic.AutoConvertOdometerRecord(result);
|
||||||
return Json(result.Any());
|
return Json(OperationResponse.Conditional(result.Any(), string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
[TypeFilter(typeof(CollaboratorFilter))]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
@ -40,9 +44,9 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult SaveOdometerRecordToVehicleId(OdometerRecordInput odometerRecord)
|
public IActionResult SaveOdometerRecordToVehicleId(OdometerRecordInput odometerRecord)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), odometerRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), odometerRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
//move files from temp.
|
//move files from temp.
|
||||||
odometerRecord.Files = odometerRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
odometerRecord.Files = odometerRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
@ -52,7 +56,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromOdometerRecord(convertedRecord, odometerRecord.Id == default ? "odometerrecord.add" : "odometerrecord.update", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromOdometerRecord(convertedRecord, odometerRecord.Id == default ? "odometerrecord.add" : "odometerrecord.update", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
[TypeFilter(typeof(CollaboratorFilter))]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
@ -88,6 +92,11 @@ namespace CarCareTracker.Controllers
|
|||||||
foreach (int recordId in editModel.RecordIds)
|
foreach (int recordId in editModel.RecordIds)
|
||||||
{
|
{
|
||||||
var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(recordId);
|
var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
if (dateIsEdited)
|
if (dateIsEdited)
|
||||||
{
|
{
|
||||||
existingRecord.Date = editModel.EditRecord.Date;
|
existingRecord.Date = editModel.EditRecord.Date;
|
||||||
@ -126,14 +135,14 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord);
|
result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord);
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetOdometerRecordForEditById(int odometerRecordId)
|
public IActionResult GetOdometerRecordForEditById(int odometerRecordId)
|
||||||
{
|
{
|
||||||
var result = _odometerRecordDataAccess.GetOdometerRecordById(odometerRecordId);
|
var result = _odometerRecordDataAccess.GetOdometerRecordById(odometerRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Redirect("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
@ -152,20 +161,20 @@ namespace CarCareTracker.Controllers
|
|||||||
};
|
};
|
||||||
return PartialView("Odometer/_OdometerRecordModal", convertedResult);
|
return PartialView("Odometer/_OdometerRecordModal", convertedResult);
|
||||||
}
|
}
|
||||||
private bool DeleteOdometerRecordWithChecks(int odometerRecordId)
|
private OperationResponse DeleteOdometerRecordWithChecks(int odometerRecordId)
|
||||||
{
|
{
|
||||||
var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(odometerRecordId);
|
var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(odometerRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
var result = _odometerRecordDataAccess.DeleteOdometerRecordById(existingRecord.Id);
|
var result = _odometerRecordDataAccess.DeleteOdometerRecordById(existingRecord.Id);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromOdometerRecord(existingRecord, "odometerrecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromOdometerRecord(existingRecord, "odometerrecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DeleteOdometerRecordById(int odometerRecordId)
|
public IActionResult DeleteOdometerRecordById(int odometerRecordId)
|
||||||
|
|||||||
@ -18,9 +18,9 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult SavePlanRecordToVehicleId(PlanRecordInput planRecord)
|
public IActionResult SavePlanRecordToVehicleId(PlanRecordInput planRecord)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), planRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), planRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
//populate createdDate
|
//populate createdDate
|
||||||
if (planRecord.Id == default)
|
if (planRecord.Id == default)
|
||||||
@ -47,13 +47,13 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromPlanRecord(planRecord.ToPlanRecord(), planRecord.Id == default ? "planrecord.add" : "planrecord.update", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromPlanRecord(planRecord.ToPlanRecord(), planRecord.Id == default ? "planrecord.add" : "planrecord.update", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult SavePlanRecordTemplateToVehicleId(PlanRecordInput planRecord)
|
public IActionResult SavePlanRecordTemplateToVehicleId(PlanRecordInput planRecord)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), planRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), planRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(OperationResponse.Failed("Access Denied"));
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
@ -65,7 +65,7 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
planRecord.Files = planRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
planRecord.Files = planRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
var result = _planRecordTemplateDataAccess.SavePlanRecordTemplateToVehicle(planRecord);
|
var result = _planRecordTemplateDataAccess.SavePlanRecordTemplateToVehicle(planRecord);
|
||||||
return Json(OperationResponse.Conditional(result, "Template Added", string.Empty));
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
[TypeFilter(typeof(CollaboratorFilter))]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
@ -80,15 +80,15 @@ namespace CarCareTracker.Controllers
|
|||||||
var existingRecord = _planRecordTemplateDataAccess.GetPlanRecordTemplateById(planRecordTemplateId);
|
var existingRecord = _planRecordTemplateDataAccess.GetPlanRecordTemplateById(planRecordTemplateId);
|
||||||
if (existingRecord.Id == default)
|
if (existingRecord.Id == default)
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed(StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
var result = _planRecordTemplateDataAccess.DeletePlanRecordTemplateById(planRecordTemplateId);
|
var result = _planRecordTemplateDataAccess.DeletePlanRecordTemplateById(planRecordTemplateId);
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult OrderPlanSupplies(int planRecordTemplateId)
|
public IActionResult OrderPlanSupplies(int planRecordTemplateId)
|
||||||
@ -99,7 +99,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed("Unable to find template"));
|
return Json(OperationResponse.Failed("Unable to find template"));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Json(OperationResponse.Failed("Access Denied"));
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
@ -122,7 +122,7 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(OperationResponse.Failed("Unable to find template"));
|
return Json(OperationResponse.Failed("Unable to find template"));
|
||||||
}
|
}
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(OperationResponse.Failed("Access Denied"));
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
@ -161,7 +161,7 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
var result = _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord.ToPlanRecord());
|
var result = _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord.ToPlanRecord());
|
||||||
return Json(OperationResponse.Conditional(result, "Plan Record Added", string.Empty));
|
return Json(OperationResponse.Conditional(result, "Plan Record Added", StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetAddPlanRecordPartialView()
|
public IActionResult GetAddPlanRecordPartialView()
|
||||||
@ -183,13 +183,13 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
if (planRecordId == default)
|
if (planRecordId == default)
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed(StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
var existingRecord = _planRecordDataAccess.GetPlanRecordById(planRecordId);
|
var existingRecord = _planRecordDataAccess.GetPlanRecordById(planRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
existingRecord.Progress = planProgress;
|
existingRecord.Progress = planProgress;
|
||||||
existingRecord.DateModified = DateTime.Now;
|
existingRecord.DateModified = DateTime.Now;
|
||||||
@ -267,12 +267,17 @@ namespace CarCareTracker.Controllers
|
|||||||
PushbackRecurringReminderRecordWithChecks(existingRecord.ReminderRecordId, DateTime.Now, odometer);
|
PushbackRecurringReminderRecordWithChecks(existingRecord.ReminderRecordId, DateTime.Now, odometer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetPlanRecordTemplateForEditById(int planRecordTemplateId)
|
public IActionResult GetPlanRecordTemplateForEditById(int planRecordTemplateId)
|
||||||
{
|
{
|
||||||
var result = _planRecordTemplateDataAccess.GetPlanRecordTemplateById(planRecordTemplateId);
|
var result = _planRecordTemplateDataAccess.GetPlanRecordTemplateById(planRecordTemplateId);
|
||||||
|
//security check.
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
|
{
|
||||||
|
return Redirect("/Error/Unauthorized");
|
||||||
|
}
|
||||||
return PartialView("Plan/_PlanRecordTemplateEditModal", result);
|
return PartialView("Plan/_PlanRecordTemplateEditModal", result);
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
@ -280,7 +285,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var result = _planRecordDataAccess.GetPlanRecordById(planRecordId);
|
var result = _planRecordDataAccess.GetPlanRecordById(planRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Redirect("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
@ -309,9 +314,9 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var existingRecord = _planRecordDataAccess.GetPlanRecordById(planRecordId);
|
var existingRecord = _planRecordDataAccess.GetPlanRecordById(planRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
//restore any requisitioned supplies if it has not been converted to other record types.
|
//restore any requisitioned supplies if it has not been converted to other record types.
|
||||||
if (existingRecord.RequisitionHistory.Any() && existingRecord.Progress != PlanProgress.Done)
|
if (existingRecord.RequisitionHistory.Any() && existingRecord.Progress != PlanProgress.Done)
|
||||||
@ -323,7 +328,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromPlanRecord(existingRecord, "planrecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromPlanRecord(existingRecord, "planrecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var result = GetRemindersAndUrgency(vehicleId, DateTime.Now);
|
var result = GetRemindersAndUrgency(vehicleId, DateTime.Now);
|
||||||
//check if user wants auto-refresh past-due reminders
|
//check if user wants auto-refresh past-due reminders
|
||||||
if (_config.GetUserConfig(User).EnableAutoReminderRefresh)
|
if (_config.GetUserConfig(User).EnableAutoReminderRefresh && _userLogic.UserCanEditVehicle(GetUserID(), vehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
//check for past due reminders that are eligible for recurring.
|
//check for past due reminders that are eligible for recurring.
|
||||||
var pastDueAndRecurring = result.Where(x => x.Urgency == ReminderUrgency.PastDue && x.IsRecurring);
|
var pastDueAndRecurring = result.Where(x => x.Urgency == ReminderUrgency.PastDue && x.IsRecurring);
|
||||||
@ -75,7 +75,7 @@ namespace CarCareTracker.Controllers
|
|||||||
var result = PushbackRecurringReminderRecordWithChecks(reminderRecordId, null, null);
|
var result = PushbackRecurringReminderRecordWithChecks(reminderRecordId, null, null);
|
||||||
return Json(result);
|
return Json(result);
|
||||||
}
|
}
|
||||||
private bool PushbackRecurringReminderRecordWithChecks(int reminderRecordId, DateTime? currentDate, int? currentMileage)
|
private OperationResponse PushbackRecurringReminderRecordWithChecks(int reminderRecordId, DateTime? currentDate, int? currentMileage)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -83,9 +83,9 @@ namespace CarCareTracker.Controllers
|
|||||||
if (existingReminder is not null && existingReminder.Id != default && existingReminder.IsRecurring)
|
if (existingReminder is not null && existingReminder.Id != default && existingReminder.IsRecurring)
|
||||||
{
|
{
|
||||||
//security check
|
//security check
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingReminder.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingReminder.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
existingReminder = _reminderHelper.GetUpdatedRecurringReminderRecord(existingReminder, currentDate, currentMileage);
|
existingReminder = _reminderHelper.GetUpdatedRecurringReminderRecord(existingReminder, currentDate, currentMileage);
|
||||||
//save to db.
|
//save to db.
|
||||||
@ -93,36 +93,36 @@ namespace CarCareTracker.Controllers
|
|||||||
if (!reminderUpdateResult)
|
if (!reminderUpdateResult)
|
||||||
{
|
{
|
||||||
_logger.LogError("Unable to update reminder either because the reminder no longer exists or is no longer recurring");
|
_logger.LogError("Unable to update reminder either because the reminder no longer exists or is no longer recurring");
|
||||||
return false;
|
return OperationResponse.Failed("Unable to update reminder either because the reminder no longer exists or is no longer recurring");
|
||||||
}
|
}
|
||||||
return true;
|
return OperationResponse.Succeed();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_logger.LogError("Unable to update reminder because it no longer exists.");
|
_logger.LogError("Unable to update reminder because it no longer exists.");
|
||||||
return false;
|
return OperationResponse.Failed("Unable to update reminder because it no longer exists.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.LogError(ex.Message);
|
_logger.LogError(ex.Message);
|
||||||
return false;
|
return OperationResponse.Failed(StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult SaveReminderRecordToVehicleId(ReminderRecordInput reminderRecord)
|
public IActionResult SaveReminderRecordToVehicleId(ReminderRecordInput reminderRecord)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), reminderRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), reminderRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
var result = _reminderRecordDataAccess.SaveReminderRecordToVehicle(reminderRecord.ToReminderRecord());
|
var result = _reminderRecordDataAccess.SaveReminderRecordToVehicle(reminderRecord.ToReminderRecord());
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromReminderRecord(reminderRecord.ToReminderRecord(), reminderRecord.Id == default ? "reminderrecord.add" : "reminderrecord.update", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromReminderRecord(reminderRecord.ToReminderRecord(), reminderRecord.Id == default ? "reminderrecord.add" : "reminderrecord.update", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult GetAddReminderRecordPartialView(ReminderRecordInput? reminderModel)
|
public IActionResult GetAddReminderRecordPartialView(ReminderRecordInput? reminderModel)
|
||||||
@ -141,7 +141,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var result = _reminderRecordDataAccess.GetReminderRecordById(reminderRecordId);
|
var result = _reminderRecordDataAccess.GetReminderRecordById(reminderRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Redirect("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
@ -168,20 +168,20 @@ namespace CarCareTracker.Controllers
|
|||||||
};
|
};
|
||||||
return PartialView("Reminder/_ReminderRecordModal", convertedResult);
|
return PartialView("Reminder/_ReminderRecordModal", convertedResult);
|
||||||
}
|
}
|
||||||
private bool DeleteReminderRecordWithChecks(int reminderRecordId)
|
private OperationResponse DeleteReminderRecordWithChecks(int reminderRecordId)
|
||||||
{
|
{
|
||||||
var existingRecord = _reminderRecordDataAccess.GetReminderRecordById(reminderRecordId);
|
var existingRecord = _reminderRecordDataAccess.GetReminderRecordById(reminderRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
var result = _reminderRecordDataAccess.DeleteReminderRecordById(existingRecord.Id);
|
var result = _reminderRecordDataAccess.DeleteReminderRecordById(existingRecord.Id);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromReminderRecord(existingRecord, "reminderrecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromReminderRecord(existingRecord, "reminderrecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DeleteReminderRecordById(int reminderRecordId)
|
public IActionResult DeleteReminderRecordById(int reminderRecordId)
|
||||||
|
|||||||
@ -27,9 +27,9 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult SaveCollisionRecordToVehicleId(CollisionRecordInput collisionRecord)
|
public IActionResult SaveCollisionRecordToVehicleId(CollisionRecordInput collisionRecord)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), collisionRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), collisionRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
//move files from temp.
|
//move files from temp.
|
||||||
collisionRecord.Files = collisionRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
collisionRecord.Files = collisionRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
@ -70,7 +70,7 @@ namespace CarCareTracker.Controllers
|
|||||||
Files = StaticHelper.CreateAttachmentFromRecord(ImportMode.RepairRecord, convertedRecord.Id, convertedRecord.Description)
|
Files = StaticHelper.CreateAttachmentFromRecord(ImportMode.RepairRecord, convertedRecord.Id, convertedRecord.Description)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetAddCollisionRecordPartialView()
|
public IActionResult GetAddCollisionRecordPartialView()
|
||||||
@ -82,7 +82,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var result = _collisionRecordDataAccess.GetCollisionRecordById(collisionRecordId);
|
var result = _collisionRecordDataAccess.GetCollisionRecordById(collisionRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Redirect("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
@ -103,13 +103,13 @@ namespace CarCareTracker.Controllers
|
|||||||
};
|
};
|
||||||
return PartialView("Collision/_CollisionRecordModal", convertedResult);
|
return PartialView("Collision/_CollisionRecordModal", convertedResult);
|
||||||
}
|
}
|
||||||
private bool DeleteCollisionRecordWithChecks(int collisionRecordId)
|
private OperationResponse DeleteCollisionRecordWithChecks(int collisionRecordId)
|
||||||
{
|
{
|
||||||
var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(collisionRecordId);
|
var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(collisionRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
//restore any requisitioned supplies.
|
//restore any requisitioned supplies.
|
||||||
if (existingRecord.RequisitionHistory.Any())
|
if (existingRecord.RequisitionHistory.Any())
|
||||||
@ -121,7 +121,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "repairrecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "repairrecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DeleteCollisionRecordById(int collisionRecordId)
|
public IActionResult DeleteCollisionRecordById(int collisionRecordId)
|
||||||
|
|||||||
@ -27,9 +27,9 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult SaveServiceRecordToVehicleId(ServiceRecordInput serviceRecord)
|
public IActionResult SaveServiceRecordToVehicleId(ServiceRecordInput serviceRecord)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), serviceRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), serviceRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
//move files from temp.
|
//move files from temp.
|
||||||
serviceRecord.Files = serviceRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
serviceRecord.Files = serviceRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
@ -70,7 +70,7 @@ namespace CarCareTracker.Controllers
|
|||||||
Files = StaticHelper.CreateAttachmentFromRecord(ImportMode.ServiceRecord, convertedRecord.Id, convertedRecord.Description)
|
Files = StaticHelper.CreateAttachmentFromRecord(ImportMode.ServiceRecord, convertedRecord.Id, convertedRecord.Description)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetAddServiceRecordPartialView()
|
public IActionResult GetAddServiceRecordPartialView()
|
||||||
@ -82,7 +82,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var result = _serviceRecordDataAccess.GetServiceRecordById(serviceRecordId);
|
var result = _serviceRecordDataAccess.GetServiceRecordById(serviceRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Redirect("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
@ -103,13 +103,13 @@ namespace CarCareTracker.Controllers
|
|||||||
};
|
};
|
||||||
return PartialView("Service/_ServiceRecordModal", convertedResult);
|
return PartialView("Service/_ServiceRecordModal", convertedResult);
|
||||||
}
|
}
|
||||||
private bool DeleteServiceRecordWithChecks(int serviceRecordId)
|
private OperationResponse DeleteServiceRecordWithChecks(int serviceRecordId)
|
||||||
{
|
{
|
||||||
var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(serviceRecordId);
|
var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(serviceRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
//restore any requisitioned supplies.
|
//restore any requisitioned supplies.
|
||||||
if (existingRecord.RequisitionHistory.Any())
|
if (existingRecord.RequisitionHistory.Any())
|
||||||
@ -121,7 +121,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "servicerecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "servicerecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DeleteServiceRecordById(int serviceRecordId)
|
public IActionResult DeleteServiceRecordById(int serviceRecordId)
|
||||||
|
|||||||
@ -145,6 +145,14 @@ namespace CarCareTracker.Controllers
|
|||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult SaveSupplyRecordToVehicleId(SupplyRecordInput supplyRecord)
|
public IActionResult SaveSupplyRecordToVehicleId(SupplyRecordInput supplyRecord)
|
||||||
{
|
{
|
||||||
|
if (supplyRecord.VehicleId != default)
|
||||||
|
{
|
||||||
|
//security check only if not editing shop supply.
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), supplyRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
|
}
|
||||||
//move files from temp.
|
//move files from temp.
|
||||||
supplyRecord.Files = supplyRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
supplyRecord.Files = supplyRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
var result = _supplyRecordDataAccess.SaveSupplyRecordToVehicle(supplyRecord.ToSupplyRecord());
|
var result = _supplyRecordDataAccess.SaveSupplyRecordToVehicle(supplyRecord.ToSupplyRecord());
|
||||||
@ -152,7 +160,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromSupplyRecord(supplyRecord.ToSupplyRecord(), supplyRecord.Id == default ? "supplyrecord.add" : "supplyrecord.update", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromSupplyRecord(supplyRecord.ToSupplyRecord(), supplyRecord.Id == default ? "supplyrecord.add" : "supplyrecord.update", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetAddSupplyRecordPartialView()
|
public IActionResult GetAddSupplyRecordPartialView()
|
||||||
@ -163,6 +171,14 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult GetSupplyRecordForEditById(int supplyRecordId)
|
public IActionResult GetSupplyRecordForEditById(int supplyRecordId)
|
||||||
{
|
{
|
||||||
var result = _supplyRecordDataAccess.GetSupplyRecordById(supplyRecordId);
|
var result = _supplyRecordDataAccess.GetSupplyRecordById(supplyRecordId);
|
||||||
|
if (result.VehicleId != default)
|
||||||
|
{
|
||||||
|
//security check only if not editing shop supply.
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
|
{
|
||||||
|
return Redirect("/Error/Unauthorized");
|
||||||
|
}
|
||||||
|
}
|
||||||
if (result.RequisitionHistory.Any())
|
if (result.RequisitionHistory.Any())
|
||||||
{
|
{
|
||||||
//requisition history when viewed through the supply is always immutable.
|
//requisition history when viewed through the supply is always immutable.
|
||||||
@ -187,15 +203,15 @@ namespace CarCareTracker.Controllers
|
|||||||
};
|
};
|
||||||
return PartialView("Supply/_SupplyRecordModal", convertedResult);
|
return PartialView("Supply/_SupplyRecordModal", convertedResult);
|
||||||
}
|
}
|
||||||
private bool DeleteSupplyRecordWithChecks(int supplyRecordId)
|
private OperationResponse DeleteSupplyRecordWithChecks(int supplyRecordId)
|
||||||
{
|
{
|
||||||
var existingRecord = _supplyRecordDataAccess.GetSupplyRecordById(supplyRecordId);
|
var existingRecord = _supplyRecordDataAccess.GetSupplyRecordById(supplyRecordId);
|
||||||
if (existingRecord.VehicleId != default)
|
if (existingRecord.VehicleId != default)
|
||||||
{
|
{
|
||||||
//security check only if not editing shop supply.
|
//security check only if not editing shop supply.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var result = _supplyRecordDataAccess.DeleteSupplyRecordById(existingRecord.Id);
|
var result = _supplyRecordDataAccess.DeleteSupplyRecordById(existingRecord.Id);
|
||||||
@ -203,7 +219,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromSupplyRecord(existingRecord, "supplyrecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromSupplyRecord(existingRecord, "supplyrecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DeleteSupplyRecordById(int supplyRecordId)
|
public IActionResult DeleteSupplyRecordById(int supplyRecordId)
|
||||||
|
|||||||
@ -42,9 +42,9 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult SaveTaxRecordToVehicleId(TaxRecordInput taxRecord)
|
public IActionResult SaveTaxRecordToVehicleId(TaxRecordInput taxRecord)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), taxRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), taxRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
//move files from temp.
|
//move files from temp.
|
||||||
taxRecord.Files = taxRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
taxRecord.Files = taxRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
@ -62,7 +62,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromTaxRecord(taxRecord.ToTaxRecord(), taxRecord.Id == default ? "taxrecord.add" : "taxrecord.update", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromTaxRecord(taxRecord.ToTaxRecord(), taxRecord.Id == default ? "taxrecord.add" : "taxrecord.update", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetAddTaxRecordPartialView()
|
public IActionResult GetAddTaxRecordPartialView()
|
||||||
@ -74,7 +74,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var result = _taxRecordDataAccess.GetTaxRecordById(taxRecordId);
|
var result = _taxRecordDataAccess.GetTaxRecordById(taxRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Redirect("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
@ -97,20 +97,20 @@ namespace CarCareTracker.Controllers
|
|||||||
};
|
};
|
||||||
return PartialView("Tax/_TaxRecordModal", convertedResult);
|
return PartialView("Tax/_TaxRecordModal", convertedResult);
|
||||||
}
|
}
|
||||||
private bool DeleteTaxRecordWithChecks(int taxRecordId)
|
private OperationResponse DeleteTaxRecordWithChecks(int taxRecordId)
|
||||||
{
|
{
|
||||||
var existingRecord = _taxRecordDataAccess.GetTaxRecordById(taxRecordId);
|
var existingRecord = _taxRecordDataAccess.GetTaxRecordById(taxRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
var result = _taxRecordDataAccess.DeleteTaxRecordById(existingRecord.Id);
|
var result = _taxRecordDataAccess.DeleteTaxRecordById(existingRecord.Id);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromTaxRecord(existingRecord, "taxrecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromTaxRecord(existingRecord, "taxrecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DeleteTaxRecordById(int taxRecordId)
|
public IActionResult DeleteTaxRecordById(int taxRecordId)
|
||||||
|
|||||||
@ -27,9 +27,9 @@ namespace CarCareTracker.Controllers
|
|||||||
public IActionResult SaveUpgradeRecordToVehicleId(UpgradeRecordInput upgradeRecord)
|
public IActionResult SaveUpgradeRecordToVehicleId(UpgradeRecordInput upgradeRecord)
|
||||||
{
|
{
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), upgradeRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), upgradeRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
//move files from temp.
|
//move files from temp.
|
||||||
upgradeRecord.Files = upgradeRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
upgradeRecord.Files = upgradeRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList();
|
||||||
@ -70,7 +70,7 @@ namespace CarCareTracker.Controllers
|
|||||||
Files = StaticHelper.CreateAttachmentFromRecord(ImportMode.UpgradeRecord, convertedRecord.Id, convertedRecord.Description)
|
Files = StaticHelper.CreateAttachmentFromRecord(ImportMode.UpgradeRecord, convertedRecord.Id, convertedRecord.Description)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetAddUpgradeRecordPartialView()
|
public IActionResult GetAddUpgradeRecordPartialView()
|
||||||
@ -82,7 +82,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
var result = _upgradeRecordDataAccess.GetUpgradeRecordById(upgradeRecordId);
|
var result = _upgradeRecordDataAccess.GetUpgradeRecordById(upgradeRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), result.VehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
return Redirect("/Error/Unauthorized");
|
return Redirect("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
@ -103,13 +103,13 @@ namespace CarCareTracker.Controllers
|
|||||||
};
|
};
|
||||||
return PartialView("Upgrade/_UpgradeRecordModal", convertedResult);
|
return PartialView("Upgrade/_UpgradeRecordModal", convertedResult);
|
||||||
}
|
}
|
||||||
private bool DeleteUpgradeRecordWithChecks(int upgradeRecordId)
|
private OperationResponse DeleteUpgradeRecordWithChecks(int upgradeRecordId)
|
||||||
{
|
{
|
||||||
var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(upgradeRecordId);
|
var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(upgradeRecordId);
|
||||||
//security check.
|
//security check.
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Delete))
|
||||||
{
|
{
|
||||||
return false;
|
return OperationResponse.Failed("Access Denied");
|
||||||
}
|
}
|
||||||
//restore any requisitioned supplies.
|
//restore any requisitioned supplies.
|
||||||
if (existingRecord.RequisitionHistory.Any())
|
if (existingRecord.RequisitionHistory.Any())
|
||||||
@ -121,7 +121,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "upgraderecord.delete", User.Identity.Name));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.FromGenericRecord(existingRecord, "upgraderecord.delete", User.Identity.Name));
|
||||||
}
|
}
|
||||||
return result;
|
return OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DeleteUpgradeRecordById(int upgradeRecordId)
|
public IActionResult DeleteUpgradeRecordById(int upgradeRecordId)
|
||||||
|
|||||||
@ -124,9 +124,9 @@ namespace CarCareTracker.Controllers
|
|||||||
bool isNewAddition = vehicleInput.Id == default;
|
bool isNewAddition = vehicleInput.Id == default;
|
||||||
if (!isNewAddition)
|
if (!isNewAddition)
|
||||||
{
|
{
|
||||||
if (!_userLogic.UserCanEditVehicle(GetUserID(), vehicleInput.Id))
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), vehicleInput.Id, HouseholdPermission.Edit))
|
||||||
{
|
{
|
||||||
return View("401");
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//move image from temp folder to images folder.
|
//move image from temp folder to images folder.
|
||||||
@ -143,12 +143,12 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Updated Vehicle {vehicleInput.Year} {vehicleInput.Make} {vehicleInput.Model}({StaticHelper.GetVehicleIdentifier(vehicleInput)})", "vehicle.update", User.Identity.Name, vehicleInput.Id.ToString()));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Updated Vehicle {vehicleInput.Year} {vehicleInput.Make} {vehicleInput.Model}({StaticHelper.GetVehicleIdentifier(vehicleInput)})", "vehicle.update", User.Identity.Name, vehicleInput.Id.ToString()));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.LogError(ex, "Error Saving Vehicle");
|
_logger.LogError(ex, "Error Saving Vehicle");
|
||||||
return Json(false);
|
return Json(OperationResponse.Failed(StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
@ -206,7 +206,7 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
results.Add(result);
|
results.Add(result);
|
||||||
}
|
}
|
||||||
return Json(OperationResponse.Conditional(results.Any() && results.All(x => x), "", StaticHelper.GenericErrorMessage));
|
return Json(OperationResponse.Conditional(results.Any() && results.All(x => x), string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[TypeFilter(typeof(StrictCollaboratorFilter), Arguments = new object[] { true, true })]
|
[TypeFilter(typeof(StrictCollaboratorFilter), Arguments = new object[] { true, true })]
|
||||||
@ -216,7 +216,7 @@ namespace CarCareTracker.Controllers
|
|||||||
if (vehicleIds.Count() == 1)
|
if (vehicleIds.Count() == 1)
|
||||||
{
|
{
|
||||||
//only one vehicle to manage
|
//only one vehicle to manage
|
||||||
if (_userLogic.UserCanEditVehicle(GetUserID(), vehicleIds.First()))
|
if (_userLogic.UserCanEditVehicle(GetUserID(), vehicleIds.First(), HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
viewModel.CommonCollaborators = _userLogic.GetCollaboratorsForVehicle(vehicleIds.First()).Select(x => x.UserName).ToList();
|
viewModel.CommonCollaborators = _userLogic.GetCollaboratorsForVehicle(vehicleIds.First()).Select(x => x.UserName).ToList();
|
||||||
viewModel.VehicleIds.Add(vehicleIds.First());
|
viewModel.VehicleIds.Add(vehicleIds.First());
|
||||||
@ -227,7 +227,7 @@ namespace CarCareTracker.Controllers
|
|||||||
List<UserCollaborator> allCollaborators = new List<UserCollaborator>();
|
List<UserCollaborator> allCollaborators = new List<UserCollaborator>();
|
||||||
foreach (int vehicleId in vehicleIds)
|
foreach (int vehicleId in vehicleIds)
|
||||||
{
|
{
|
||||||
if (_userLogic.UserCanEditVehicle(GetUserID(), vehicleId))
|
if (_userLogic.UserCanEditVehicle(GetUserID(), vehicleId, HouseholdPermission.View))
|
||||||
{
|
{
|
||||||
var vehicleCollaborators = _userLogic.GetCollaboratorsForVehicle(vehicleId);
|
var vehicleCollaborators = _userLogic.GetCollaboratorsForVehicle(vehicleId);
|
||||||
allCollaborators.AddRange(vehicleCollaborators);
|
allCollaborators.AddRange(vehicleCollaborators);
|
||||||
@ -631,6 +631,11 @@ namespace CarCareTracker.Controllers
|
|||||||
genericRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
genericRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), genericRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
//save
|
//save
|
||||||
switch (destination)
|
switch (destination)
|
||||||
{
|
{
|
||||||
@ -681,6 +686,11 @@ namespace CarCareTracker.Controllers
|
|||||||
genericRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
genericRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), genericRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
//save
|
//save
|
||||||
switch (destination)
|
switch (destination)
|
||||||
{
|
{
|
||||||
@ -715,11 +725,11 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Moved multiple {source.ToString()} to {destination.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.move", User.Identity.Name, string.Empty));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Moved multiple {source.ToString()} to {destination.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.move", User.Identity.Name, string.Empty));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
public IActionResult DeleteRecords(List<int> recordIds, ImportMode importMode)
|
public IActionResult DeleteRecords(List<int> recordIds, ImportMode importMode)
|
||||||
{
|
{
|
||||||
bool result = false;
|
OperationResponse result = OperationResponse.Failed(StaticHelper.GenericErrorMessage);
|
||||||
foreach (int recordId in recordIds)
|
foreach (int recordId in recordIds)
|
||||||
{
|
{
|
||||||
switch (importMode)
|
switch (importMode)
|
||||||
@ -756,14 +766,14 @@ namespace CarCareTracker.Controllers
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (result)
|
if (result.Success)
|
||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Deleted multiple {importMode.ToString()} - Ids: {string.Join(", ", recordIds)}", "bulk.delete", User.Identity.Name, string.Empty));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Deleted multiple {importMode.ToString()} - Ids: {string.Join(", ", recordIds)}", "bulk.delete", User.Identity.Name, string.Empty));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(result);
|
||||||
}
|
}
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
[TypeFilter(typeof(CollaboratorFilter), Arguments = new object[] {false, true, HouseholdPermission.Edit})]
|
||||||
public IActionResult AdjustRecordsOdometer(List<int> recordIds, int vehicleId, ImportMode importMode)
|
public IActionResult AdjustRecordsOdometer(List<int> recordIds, int vehicleId, ImportMode importMode)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
@ -819,7 +829,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Adjusted odometer for multiple {importMode.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.odometer.adjust", User.Identity.Name, string.Empty));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Adjusted odometer for multiple {importMode.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.odometer.adjust", User.Identity.Name, string.Empty));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult DuplicateRecords(List<int> recordIds, ImportMode importMode)
|
public IActionResult DuplicateRecords(List<int> recordIds, ImportMode importMode)
|
||||||
@ -832,6 +842,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.ServiceRecord:
|
case ImportMode.ServiceRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId);
|
var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
existingRecord.RequisitionHistory = new List<SupplyUsageHistory>();
|
existingRecord.RequisitionHistory = new List<SupplyUsageHistory>();
|
||||||
result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord);
|
result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord);
|
||||||
@ -840,6 +855,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.RepairRecord:
|
case ImportMode.RepairRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId);
|
var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
existingRecord.RequisitionHistory = new List<SupplyUsageHistory>();
|
existingRecord.RequisitionHistory = new List<SupplyUsageHistory>();
|
||||||
result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(existingRecord);
|
result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(existingRecord);
|
||||||
@ -848,6 +868,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.UpgradeRecord:
|
case ImportMode.UpgradeRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
existingRecord.RequisitionHistory = new List<SupplyUsageHistory>();
|
existingRecord.RequisitionHistory = new List<SupplyUsageHistory>();
|
||||||
result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(existingRecord);
|
result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(existingRecord);
|
||||||
@ -856,6 +881,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.GasRecord:
|
case ImportMode.GasRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId);
|
var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
result = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord);
|
result = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord);
|
||||||
}
|
}
|
||||||
@ -863,6 +893,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.TaxRecord:
|
case ImportMode.TaxRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _taxRecordDataAccess.GetTaxRecordById(recordId);
|
var existingRecord = _taxRecordDataAccess.GetTaxRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
result = _taxRecordDataAccess.SaveTaxRecordToVehicle(existingRecord);
|
result = _taxRecordDataAccess.SaveTaxRecordToVehicle(existingRecord);
|
||||||
}
|
}
|
||||||
@ -870,6 +905,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.SupplyRecord:
|
case ImportMode.SupplyRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _supplyRecordDataAccess.GetSupplyRecordById(recordId);
|
var existingRecord = _supplyRecordDataAccess.GetSupplyRecordById(recordId);
|
||||||
|
//security check if not shop supply
|
||||||
|
if (existingRecord.VehicleId != default && !_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
existingRecord.RequisitionHistory = new List<SupplyUsageHistory>();
|
existingRecord.RequisitionHistory = new List<SupplyUsageHistory>();
|
||||||
result = _supplyRecordDataAccess.SaveSupplyRecordToVehicle(existingRecord);
|
result = _supplyRecordDataAccess.SaveSupplyRecordToVehicle(existingRecord);
|
||||||
@ -878,6 +918,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.NoteRecord:
|
case ImportMode.NoteRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _noteDataAccess.GetNoteById(recordId);
|
var existingRecord = _noteDataAccess.GetNoteById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
result = _noteDataAccess.SaveNoteToVehicle(existingRecord);
|
result = _noteDataAccess.SaveNoteToVehicle(existingRecord);
|
||||||
}
|
}
|
||||||
@ -885,6 +930,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.OdometerRecord:
|
case ImportMode.OdometerRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(recordId);
|
var existingRecord = _odometerRecordDataAccess.GetOdometerRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord);
|
result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord);
|
||||||
}
|
}
|
||||||
@ -892,6 +942,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.ReminderRecord:
|
case ImportMode.ReminderRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _reminderRecordDataAccess.GetReminderRecordById(recordId);
|
var existingRecord = _reminderRecordDataAccess.GetReminderRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
result = _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingRecord);
|
result = _reminderRecordDataAccess.SaveReminderRecordToVehicle(existingRecord);
|
||||||
}
|
}
|
||||||
@ -899,6 +954,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.PlanRecord:
|
case ImportMode.PlanRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _planRecordDataAccess.GetPlanRecordById(recordId);
|
var existingRecord = _planRecordDataAccess.GetPlanRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
existingRecord.ReminderRecordId = default;
|
existingRecord.ReminderRecordId = default;
|
||||||
existingRecord.RequisitionHistory = new List<SupplyUsageHistory>();
|
existingRecord.RequisitionHistory = new List<SupplyUsageHistory>();
|
||||||
@ -908,6 +968,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.InspectionRecord:
|
case ImportMode.InspectionRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _inspectionRecordTemplateDataAccess.GetInspectionRecordTemplateById(recordId);
|
var existingRecord = _inspectionRecordTemplateDataAccess.GetInspectionRecordTemplateById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
existingRecord.Id = default;
|
existingRecord.Id = default;
|
||||||
existingRecord.ReminderRecordId = new List<int>();
|
existingRecord.ReminderRecordId = new List<int>();
|
||||||
result = _inspectionRecordTemplateDataAccess.SaveInspectionReportTemplateToVehicle(existingRecord);
|
result = _inspectionRecordTemplateDataAccess.SaveInspectionReportTemplateToVehicle(existingRecord);
|
||||||
@ -919,9 +984,10 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Duplicated multiple {importMode.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.duplicate", User.Identity.Name, string.Empty));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Duplicated multiple {importMode.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.duplicate", User.Identity.Name, string.Empty));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
[TypeFilter(typeof(CollaboratorFilter), Arguments = new object[] { true, true, HouseholdPermission.Edit })]
|
||||||
public IActionResult DuplicateRecordsToOtherVehicles(List<int> recordIds, List<int> vehicleIds, ImportMode importMode)
|
public IActionResult DuplicateRecordsToOtherVehicles(List<int> recordIds, List<int> vehicleIds, ImportMode importMode)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
@ -1066,7 +1132,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Duplicated multiple {importMode.ToString()} - Ids: {string.Join(",", recordIds)} - to Vehicle Ids: {string.Join(",", vehicleIds)}", "bulk.duplicate.to.vehicles", User.Identity.Name, string.Join(",", vehicleIds)));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Duplicated multiple {importMode.ToString()} - Ids: {string.Join(",", recordIds)} - to Vehicle Ids: {string.Join(",", vehicleIds)}", "bulk.duplicate.to.vehicles", User.Identity.Name, string.Join(",", vehicleIds)));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult BulkCreateOdometerRecords(List<int> recordIds, ImportMode importMode)
|
public IActionResult BulkCreateOdometerRecords(List<int> recordIds, ImportMode importMode)
|
||||||
@ -1079,6 +1145,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.ServiceRecord:
|
case ImportMode.ServiceRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId);
|
var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord
|
result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord
|
||||||
{
|
{
|
||||||
Date = existingRecord.Date,
|
Date = existingRecord.Date,
|
||||||
@ -1092,6 +1163,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.RepairRecord:
|
case ImportMode.RepairRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId);
|
var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord
|
result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord
|
||||||
{
|
{
|
||||||
Date = existingRecord.Date,
|
Date = existingRecord.Date,
|
||||||
@ -1105,6 +1181,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.UpgradeRecord:
|
case ImportMode.UpgradeRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord
|
result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord
|
||||||
{
|
{
|
||||||
Date = existingRecord.Date,
|
Date = existingRecord.Date,
|
||||||
@ -1118,6 +1199,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.GasRecord:
|
case ImportMode.GasRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId);
|
var existingRecord = _gasRecordDataAccess.GetGasRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord
|
result = _odometerLogic.AutoInsertOdometerRecord(new OdometerRecord
|
||||||
{
|
{
|
||||||
Date = existingRecord.Date,
|
Date = existingRecord.Date,
|
||||||
@ -1134,7 +1220,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Created Odometer Records based on {importMode.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.odometer.insert", User.Identity.Name, string.Empty));
|
StaticHelper.NotifyAsync(_config.GetWebHookUrl(), WebHookPayload.Generic($"Created Odometer Records based on {importMode.ToString()} - Ids: {string.Join(",", recordIds)}", "bulk.odometer.insert", User.Identity.Name, string.Empty));
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult GetGenericRecordModal(List<int> recordIds, ImportMode dataType)
|
public IActionResult GetGenericRecordModal(List<int> recordIds, ImportMode dataType)
|
||||||
@ -1169,6 +1255,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.ServiceRecord:
|
case ImportMode.ServiceRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId);
|
var existingRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
if (dateIsEdited)
|
if (dateIsEdited)
|
||||||
{
|
{
|
||||||
existingRecord.Date = genericRecordEditModel.EditRecord.Date;
|
existingRecord.Date = genericRecordEditModel.EditRecord.Date;
|
||||||
@ -1215,6 +1306,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.RepairRecord:
|
case ImportMode.RepairRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId);
|
var existingRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
if (dateIsEdited)
|
if (dateIsEdited)
|
||||||
{
|
{
|
||||||
existingRecord.Date = genericRecordEditModel.EditRecord.Date;
|
existingRecord.Date = genericRecordEditModel.EditRecord.Date;
|
||||||
@ -1261,6 +1357,11 @@ namespace CarCareTracker.Controllers
|
|||||||
case ImportMode.UpgradeRecord:
|
case ImportMode.UpgradeRecord:
|
||||||
{
|
{
|
||||||
var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
var existingRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId);
|
||||||
|
//security check
|
||||||
|
if (!_userLogic.UserCanEditVehicle(GetUserID(), existingRecord.VehicleId, HouseholdPermission.Edit))
|
||||||
|
{
|
||||||
|
return Json(OperationResponse.Failed("Access Denied"));
|
||||||
|
}
|
||||||
if (dateIsEdited)
|
if (dateIsEdited)
|
||||||
{
|
{
|
||||||
existingRecord.Date = genericRecordEditModel.EditRecord.Date;
|
existingRecord.Date = genericRecordEditModel.EditRecord.Date;
|
||||||
@ -1306,9 +1407,10 @@ namespace CarCareTracker.Controllers
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Conditional(result, string.Empty, StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
[TypeFilter(typeof(CollaboratorFilter), Arguments = new object[] { false, true, HouseholdPermission.View })]
|
||||||
public IActionResult PrintRecordStickers(int vehicleId, List<int> recordIds, ImportMode importMode)
|
public IActionResult PrintRecordStickers(int vehicleId, List<int> recordIds, ImportMode importMode)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
@ -1475,7 +1577,7 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
return PartialView("_Stickers", stickerViewModel);
|
return PartialView("_Stickers", stickerViewModel);
|
||||||
}
|
}
|
||||||
return Json(result);
|
return Json(OperationResponse.Failed(StaticHelper.GenericErrorMessage));
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public IActionResult SaveUserColumnPreferences(UserColumnPreference columnPreference)
|
public IActionResult SaveUserColumnPreferences(UserColumnPreference columnPreference)
|
||||||
|
|||||||
9
Enum/HouseholdPermission.cs
Normal file
9
Enum/HouseholdPermission.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace CarCareTracker.Models
|
||||||
|
{
|
||||||
|
public enum HouseholdPermission
|
||||||
|
{
|
||||||
|
View = 0,
|
||||||
|
Edit = 1,
|
||||||
|
Delete = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,6 +1,7 @@
|
|||||||
using CarCareTracker.External.Interfaces;
|
using CarCareTracker.External.Interfaces;
|
||||||
using CarCareTracker.Models;
|
using CarCareTracker.Models;
|
||||||
using Npgsql;
|
using Npgsql;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace CarCareTracker.External.Implementations
|
namespace CarCareTracker.External.Implementations
|
||||||
{
|
{
|
||||||
@ -16,7 +17,7 @@ namespace CarCareTracker.External.Implementations
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
//create table if not exist.
|
//create table if not exist.
|
||||||
string initCMD = $"CREATE SCHEMA IF NOT EXISTS app; CREATE TABLE IF NOT EXISTS app.{tableName} (parentUserId INT, childUserId INT, PRIMARY KEY(parentUserId, childUserId))";
|
string initCMD = $"CREATE SCHEMA IF NOT EXISTS app; CREATE TABLE IF NOT EXISTS app.{tableName} (parentUserId INT, childUserId INT, data jsonb not null, PRIMARY KEY(parentUserId, childUserId))";
|
||||||
using (var ctext = pgDataSource.CreateCommand(initCMD))
|
using (var ctext = pgDataSource.CreateCommand(initCMD))
|
||||||
{
|
{
|
||||||
ctext.ExecuteNonQuery();
|
ctext.ExecuteNonQuery();
|
||||||
@ -31,7 +32,7 @@ namespace CarCareTracker.External.Implementations
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string cmd = $"SELECT parentUserId, childUserId FROM app.{tableName} WHERE parentUserId = @parentUserId";
|
string cmd = $"SELECT data FROM app.{tableName} WHERE parentUserId = @parentUserId";
|
||||||
var results = new List<UserHousehold>();
|
var results = new List<UserHousehold>();
|
||||||
using (var ctext = pgDataSource.CreateCommand(cmd))
|
using (var ctext = pgDataSource.CreateCommand(cmd))
|
||||||
{
|
{
|
||||||
@ -39,14 +40,7 @@ namespace CarCareTracker.External.Implementations
|
|||||||
using (NpgsqlDataReader reader = ctext.ExecuteReader())
|
using (NpgsqlDataReader reader = ctext.ExecuteReader())
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
UserHousehold result = new UserHousehold()
|
UserHousehold result = JsonSerializer.Deserialize<UserHousehold>(reader["data"] as string);
|
||||||
{
|
|
||||||
Id = new HouseholdAccess
|
|
||||||
{
|
|
||||||
ParentUserId = int.Parse(reader["parentUserId"].ToString()),
|
|
||||||
ChildUserId = int.Parse(reader["childUserId"].ToString())
|
|
||||||
}
|
|
||||||
};
|
|
||||||
results.Add(result);
|
results.Add(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -62,7 +56,7 @@ namespace CarCareTracker.External.Implementations
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string cmd = $"SELECT parentUserId, childUserId FROM app.{tableName} WHERE childUserId = @childUserId";
|
string cmd = $"SELECT data FROM app.{tableName} WHERE childUserId = @childUserId";
|
||||||
var results = new List<UserHousehold>();
|
var results = new List<UserHousehold>();
|
||||||
using (var ctext = pgDataSource.CreateCommand(cmd))
|
using (var ctext = pgDataSource.CreateCommand(cmd))
|
||||||
{
|
{
|
||||||
@ -70,14 +64,7 @@ namespace CarCareTracker.External.Implementations
|
|||||||
using (NpgsqlDataReader reader = ctext.ExecuteReader())
|
using (NpgsqlDataReader reader = ctext.ExecuteReader())
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
UserHousehold result = new UserHousehold()
|
UserHousehold result = JsonSerializer.Deserialize<UserHousehold>(reader["data"] as string);
|
||||||
{
|
|
||||||
Id = new HouseholdAccess
|
|
||||||
{
|
|
||||||
ParentUserId = int.Parse(reader["parentUserId"].ToString()),
|
|
||||||
ChildUserId = int.Parse(reader["childUserId"].ToString())
|
|
||||||
}
|
|
||||||
};
|
|
||||||
results.Add(result);
|
results.Add(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,7 +80,7 @@ namespace CarCareTracker.External.Implementations
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string cmd = $"SELECT parentUserId, childUserId FROM app.{tableName} WHERE parentUserId = @parentUserId AND childUserId = @childUserId";
|
string cmd = $"SELECT data FROM app.{tableName} WHERE parentUserId = @parentUserId AND childUserId = @childUserId";
|
||||||
UserHousehold result = null;
|
UserHousehold result = null;
|
||||||
using (var ctext = pgDataSource.CreateCommand(cmd))
|
using (var ctext = pgDataSource.CreateCommand(cmd))
|
||||||
{
|
{
|
||||||
@ -102,14 +89,7 @@ namespace CarCareTracker.External.Implementations
|
|||||||
using (NpgsqlDataReader reader = ctext.ExecuteReader())
|
using (NpgsqlDataReader reader = ctext.ExecuteReader())
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
result = new UserHousehold()
|
result = JsonSerializer.Deserialize<UserHousehold>(reader["data"] as string);
|
||||||
{
|
|
||||||
Id = new HouseholdAccess
|
|
||||||
{
|
|
||||||
ParentUserId = int.Parse(reader["parentUserId"].ToString()),
|
|
||||||
ChildUserId = int.Parse(reader["childUserId"].ToString())
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -125,11 +105,13 @@ namespace CarCareTracker.External.Implementations
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string cmd = $"INSERT INTO app.{tableName} (parentUserId, childUserId) VALUES(@parentUserId, @childUserId)";
|
string cmd = $"INSERT INTO app.{tableName} (parentUserId, childUserId, data) VALUES(@parentUserId, @childUserId, CAST(@data AS jsonb)) ON CONFLICT(parentUserId, childUserId) DO UPDATE SET data = CAST(@data AS jsonb)";
|
||||||
using (var ctext = pgDataSource.CreateCommand(cmd))
|
using (var ctext = pgDataSource.CreateCommand(cmd))
|
||||||
{
|
{
|
||||||
|
var serializedData = JsonSerializer.Serialize(userHousehold);
|
||||||
ctext.Parameters.AddWithValue("parentUserId", userHousehold.Id.ParentUserId);
|
ctext.Parameters.AddWithValue("parentUserId", userHousehold.Id.ParentUserId);
|
||||||
ctext.Parameters.AddWithValue("childUserId", userHousehold.Id.ChildUserId);
|
ctext.Parameters.AddWithValue("childUserId", userHousehold.Id.ChildUserId);
|
||||||
|
ctext.Parameters.AddWithValue("data", serializedData);
|
||||||
return ctext.ExecuteNonQuery() > 0;
|
return ctext.ExecuteNonQuery() > 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,42 +11,58 @@ namespace CarCareTracker.Filter
|
|||||||
{
|
{
|
||||||
private readonly IUserLogic _userLogic;
|
private readonly IUserLogic _userLogic;
|
||||||
private readonly IConfigHelper _config;
|
private readonly IConfigHelper _config;
|
||||||
public CollaboratorFilter(IUserLogic userLogic, IConfigHelper config) {
|
private readonly bool _multiple;
|
||||||
|
private readonly bool _jsonResponse;
|
||||||
|
private readonly HouseholdPermission _permission;
|
||||||
|
public CollaboratorFilter(IUserLogic userLogic, IConfigHelper config, bool? multiple = false, bool? jsonResponse = false, HouseholdPermission? permission = HouseholdPermission.View) {
|
||||||
_userLogic = userLogic;
|
_userLogic = userLogic;
|
||||||
_config = config;
|
_config = config;
|
||||||
|
_multiple = multiple ?? false; ;
|
||||||
|
_jsonResponse = jsonResponse ?? false;
|
||||||
|
_permission = permission ?? HouseholdPermission.View;
|
||||||
}
|
}
|
||||||
public override void OnActionExecuting(ActionExecutingContext filterContext)
|
public override void OnActionExecuting(ActionExecutingContext filterContext)
|
||||||
{
|
{
|
||||||
if (!filterContext.HttpContext.User.IsInRole(nameof(UserData.IsRootUser)))
|
if (!filterContext.HttpContext.User.IsInRole(nameof(UserData.IsRootUser)))
|
||||||
{
|
{
|
||||||
if (filterContext.ActionArguments.ContainsKey("vehicleId"))
|
List<int> vehicleIds = new List<int>();
|
||||||
|
if (!_multiple && filterContext.ActionArguments.ContainsKey("vehicleId"))
|
||||||
|
{
|
||||||
|
vehicleIds.Add(int.Parse(filterContext.ActionArguments["vehicleId"].ToString()));
|
||||||
|
}
|
||||||
|
else if (_multiple && filterContext.ActionArguments.ContainsKey("vehicleIds"))
|
||||||
|
{
|
||||||
|
vehicleIds.AddRange(filterContext.ActionArguments["vehicleIds"] as List<int>);
|
||||||
|
}
|
||||||
|
if (vehicleIds.Any())
|
||||||
|
{
|
||||||
|
foreach(int vehicleId in vehicleIds)
|
||||||
{
|
{
|
||||||
var vehicleId = int.Parse(filterContext.ActionArguments["vehicleId"].ToString());
|
|
||||||
if (vehicleId != default)
|
if (vehicleId != default)
|
||||||
{
|
{
|
||||||
var userId = int.Parse(filterContext.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier));
|
var userId = int.Parse(filterContext.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier));
|
||||||
if (!_userLogic.UserCanEditVehicle(userId, vehicleId))
|
if (!_userLogic.UserCanEditVehicle(userId, vehicleId, _permission))
|
||||||
{
|
{
|
||||||
filterContext.Result = new RedirectResult("/Error/Unauthorized");
|
filterContext.Result = _jsonResponse ? new JsonResult(OperationResponse.Failed("Access Denied")) : new RedirectResult("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var shopSupplyEndpoints = new List<string> { "ImportToVehicleIdFromCsv", "GetSupplyRecordsByVehicleId", "ExportFromVehicleToCsv" };
|
if (StaticHelper.IsShopSupplyEndpoint(filterContext.RouteData.Values["action"].ToString()) && !_config.GetServerEnableShopSupplies())
|
||||||
if (shopSupplyEndpoints.Contains(filterContext.RouteData.Values["action"].ToString()) && !_config.GetServerEnableShopSupplies())
|
|
||||||
{
|
{
|
||||||
//user trying to access shop supplies but shop supplies is not enabled by root user.
|
//user trying to access shop supplies but shop supplies is not enabled by root user.
|
||||||
filterContext.Result = new RedirectResult("/Error/Unauthorized");
|
filterContext.Result = _jsonResponse ? new JsonResult(OperationResponse.Failed("Access Denied")) : new RedirectResult("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
else if (!shopSupplyEndpoints.Contains(filterContext.RouteData.Values["action"].ToString()))
|
else if (!StaticHelper.IsShopSupplyEndpoint(filterContext.RouteData.Values["action"].ToString()))
|
||||||
{
|
{
|
||||||
//user trying to access any other endpoints using 0 as vehicle id.
|
//user trying to access any other endpoints using 0 as vehicle id.
|
||||||
filterContext.Result = new RedirectResult("/Error/Unauthorized");
|
filterContext.Result = _jsonResponse ? new JsonResult(OperationResponse.Failed("Access Denied")) : new RedirectResult("/Error/Unauthorized");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
filterContext.Result = new RedirectResult("/Error/Unauthorized");
|
filterContext.Result = _jsonResponse ? new JsonResult(OperationResponse.Failed("Access Denied")) : new RedirectResult("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,13 +47,12 @@ namespace CarCareTracker.Filter
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var shopSupplyEndpoints = new List<string> { "ImportToVehicleIdFromCsv", "GetSupplyRecordsByVehicleId", "ExportFromVehicleToCsv" };
|
if (StaticHelper.IsShopSupplyEndpoint(filterContext.RouteData.Values["action"].ToString()) && !_config.GetServerEnableShopSupplies())
|
||||||
if (shopSupplyEndpoints.Contains(filterContext.RouteData.Values["action"].ToString()) && !_config.GetServerEnableShopSupplies())
|
|
||||||
{
|
{
|
||||||
//user trying to access shop supplies but shop supplies is not enabled by root user.
|
//user trying to access shop supplies but shop supplies is not enabled by root user.
|
||||||
filterContext.Result = _jsonResponse ? new JsonResult(OperationResponse.Failed("Access Denied")) : new RedirectResult("/Error/Unauthorized");
|
filterContext.Result = _jsonResponse ? new JsonResult(OperationResponse.Failed("Access Denied")) : new RedirectResult("/Error/Unauthorized");
|
||||||
}
|
}
|
||||||
else if (!shopSupplyEndpoints.Contains(filterContext.RouteData.Values["action"].ToString()))
|
else if (!StaticHelper.IsShopSupplyEndpoint(filterContext.RouteData.Values["action"].ToString()))
|
||||||
{
|
{
|
||||||
//user trying to access any other endpoints using 0 as vehicle id.
|
//user trying to access any other endpoints using 0 as vehicle id.
|
||||||
filterContext.Result = _jsonResponse ? new JsonResult(OperationResponse.Failed("Access Denied")) : new RedirectResult("/Error/Unauthorized");
|
filterContext.Result = _jsonResponse ? new JsonResult(OperationResponse.Failed("Access Denied")) : new RedirectResult("/Error/Unauthorized");
|
||||||
|
|||||||
@ -935,5 +935,10 @@ namespace CarCareTracker.Helper
|
|||||||
|
|
||||||
return Convert.ToDecimal(goodNormalizedStep * stepPower);
|
return Convert.ToDecimal(goodNormalizedStep * stepPower);
|
||||||
}
|
}
|
||||||
|
public static bool IsShopSupplyEndpoint(string endpoint)
|
||||||
|
{
|
||||||
|
var shopSupplyEndpoints = new List<string> { "ImportToVehicleIdFromCsv", "GetSupplyRecordsByVehicleId", "ExportFromVehicleToCsv", "DuplicateRecordsToOtherVehicles", "PrintRecordStickers" };
|
||||||
|
return shopSupplyEndpoints.Contains(endpoint);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,12 +11,13 @@ namespace CarCareTracker.Logic
|
|||||||
OperationResponse DeleteCollaboratorFromVehicle(int vehicleId, string username);
|
OperationResponse DeleteCollaboratorFromVehicle(int vehicleId, string username);
|
||||||
OperationResponse AddCollaboratorToVehicle(int vehicleId, string username);
|
OperationResponse AddCollaboratorToVehicle(int vehicleId, string username);
|
||||||
List<Vehicle> FilterUserVehicles(List<Vehicle> results, int userId);
|
List<Vehicle> FilterUserVehicles(List<Vehicle> results, int userId);
|
||||||
bool UserCanEditVehicle(int userId, int vehicleId);
|
bool UserCanEditVehicle(int userId, int vehicleId, HouseholdPermission permission);
|
||||||
bool UserCanDirectlyEditVehicle(int userId, int vehicleId);
|
bool UserCanDirectlyEditVehicle(int userId, int vehicleId);
|
||||||
bool DeleteAllAccessToVehicle(int vehicleId);
|
bool DeleteAllAccessToVehicle(int vehicleId);
|
||||||
bool DeleteAllAccessToUser(int userId);
|
bool DeleteAllAccessToUser(int userId);
|
||||||
List<UserHouseholdViewModel> GetHouseholdForParentUserId(int parentUserId);
|
List<UserHouseholdViewModel> GetHouseholdForParentUserId(int parentUserId);
|
||||||
OperationResponse AddUserToHousehold(int parentUserId, string childUsername);
|
OperationResponse AddUserToHousehold(int parentUserId, string childUsername);
|
||||||
|
bool UpdateUserHousehold(int parentUserId, int childUserId, List<HouseholdPermission> permissions);
|
||||||
bool DeleteUserFromHousehold(int parentUserId, int childUserId);
|
bool DeleteUserFromHousehold(int parentUserId, int childUserId);
|
||||||
bool DeleteAllHouseholdByParentUserId(int parentUserId);
|
bool DeleteAllHouseholdByParentUserId(int parentUserId);
|
||||||
bool DeleteAllHouseholdByChildUserId(int childUserId);
|
bool DeleteAllHouseholdByChildUserId(int childUserId);
|
||||||
@ -141,27 +142,29 @@ namespace CarCareTracker.Logic
|
|||||||
return new List<Vehicle>();
|
return new List<Vehicle>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public bool UserCanEditVehicle(int userId, int vehicleId)
|
public bool UserCanEditVehicle(int userId, int vehicleId, HouseholdPermission permission)
|
||||||
{
|
{
|
||||||
if (userId == -1)
|
//check if user is full collaborator or root user
|
||||||
|
if (UserCanDirectlyEditVehicle(userId, vehicleId))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
List<int> userIds = new List<int> { userId };
|
//user is not a full collaborator, check households
|
||||||
|
List<int> userIds = new List<int>();
|
||||||
var userHouseholds = _userHouseholdData.GetUserHouseholdByChildUserId(userId);
|
var userHouseholds = _userHouseholdData.GetUserHouseholdByChildUserId(userId);
|
||||||
if (userHouseholds.Any())
|
foreach (UserHousehold userHousehold in userHouseholds)
|
||||||
{
|
{
|
||||||
//add parent's user ids
|
//check if the direct parents have access to the vehicle
|
||||||
userIds.AddRange(userHouseholds.Select(x => x.Id.ParentUserId));
|
var userAccess = _userAccess.GetUserAccessByVehicleAndUserId(userHousehold.Id.ParentUserId, vehicleId);
|
||||||
}
|
if (userAccess != null && userAccess.Id.UserId == userHousehold.Id.ParentUserId && userAccess.Id.VehicleId == vehicleId)
|
||||||
foreach (int userIdToCheck in userIds)
|
|
||||||
{
|
{
|
||||||
var userAccess = _userAccess.GetUserAccessByVehicleAndUserId(userIdToCheck, vehicleId);
|
//every member in a household has permission to view vehicles
|
||||||
if (userAccess != null && userAccess.Id.UserId == userIdToCheck && userAccess.Id.VehicleId == vehicleId)
|
if (permission == HouseholdPermission.View || userHousehold.Permissions.Contains(permission))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public bool UserCanDirectlyEditVehicle(int userId, int vehicleId)
|
public bool UserCanDirectlyEditVehicle(int userId, int vehicleId)
|
||||||
@ -197,7 +200,7 @@ namespace CarCareTracker.Logic
|
|||||||
var userCollaborator = new UserHouseholdViewModel
|
var userCollaborator = new UserHouseholdViewModel
|
||||||
{
|
{
|
||||||
UserName = _userData.GetUserRecordById(userHouseholdAccess.Id.ChildUserId).UserName,
|
UserName = _userData.GetUserRecordById(userHouseholdAccess.Id.ChildUserId).UserName,
|
||||||
UserHousehold = userHouseholdAccess.Id
|
UserHousehold = userHouseholdAccess
|
||||||
};
|
};
|
||||||
convertedResult.Add(userCollaborator);
|
convertedResult.Add(userCollaborator);
|
||||||
}
|
}
|
||||||
@ -241,6 +244,17 @@ namespace CarCareTracker.Logic
|
|||||||
}
|
}
|
||||||
return OperationResponse.Failed($"Unable to find user {childUsername} in the system");
|
return OperationResponse.Failed($"Unable to find user {childUsername} in the system");
|
||||||
}
|
}
|
||||||
|
public bool UpdateUserHousehold(int parentUserId, int childUserId, List<HouseholdPermission> permissions)
|
||||||
|
{
|
||||||
|
var existingHousehold = _userHouseholdData.GetUserHouseholdByParentAndChildUserId(parentUserId, childUserId);
|
||||||
|
if (existingHousehold != null && existingHousehold.Id.ChildUserId == childUserId && existingHousehold.Id.ParentUserId == parentUserId)
|
||||||
|
{
|
||||||
|
existingHousehold.Permissions = permissions;
|
||||||
|
var result = _userHouseholdData.SaveUserHousehold(existingHousehold);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
public bool DeleteUserFromHousehold(int parentUserId, int childUserId)
|
public bool DeleteUserFromHousehold(int parentUserId, int childUserId)
|
||||||
{
|
{
|
||||||
var result = _userHouseholdData.DeleteUserHousehold(parentUserId, childUserId);
|
var result = _userHouseholdData.DeleteUserHousehold(parentUserId, childUserId);
|
||||||
|
|||||||
@ -8,5 +8,6 @@
|
|||||||
public class UserHousehold
|
public class UserHousehold
|
||||||
{
|
{
|
||||||
public HouseholdAccess Id { get; set; }
|
public HouseholdAccess Id { get; set; }
|
||||||
|
public List<HouseholdPermission> Permissions { get; set; } = new List<HouseholdPermission>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,6 @@
|
|||||||
public class UserHouseholdViewModel
|
public class UserHouseholdViewModel
|
||||||
{
|
{
|
||||||
public string UserName { get; set; }
|
public string UserName { get; set; }
|
||||||
public HouseholdAccess UserHousehold { get; set; }
|
public UserHousehold UserHousehold { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -209,6 +209,20 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function adminUpdateUserHousehold(parentUserId, childUserId, e){
|
||||||
|
let selectedChecks = $(e).closest('tr').find(':checked');
|
||||||
|
let permissions = selectedChecks.map((y, x) => {
|
||||||
|
return x.value;
|
||||||
|
});
|
||||||
|
$.post('/Admin/ModifyUserHouseholdPermissions', {parentUserId: parentUserId, childUserId: childUserId, permissions: permissions.toArray()}, function(data){
|
||||||
|
if (data) {
|
||||||
|
successToast('Household Updated');
|
||||||
|
loadUserHousehold(parentUserId);
|
||||||
|
} else {
|
||||||
|
errorToast(genericErrorMessage())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
function adminAddUserToHousehold(parentUserId){
|
function adminAddUserToHousehold(parentUserId){
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
title: 'Add User',
|
title: 'Add User',
|
||||||
|
|||||||
@ -21,17 +21,21 @@
|
|||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead class="sticky-top">
|
<thead class="sticky-top">
|
||||||
<tr class="d-flex">
|
<tr class="d-flex">
|
||||||
<th scope="col" class="col-10">@translator.Translate(userLanguage, "Username")</th>
|
<th scope="col" class="col-6">@translator.Translate(userLanguage, "Username")</th>
|
||||||
|
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Edit")</th>
|
||||||
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Delete")</th>
|
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Delete")</th>
|
||||||
|
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Remove")</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="tokenTable">
|
<tbody id="tokenTable">
|
||||||
@foreach(UserHouseholdViewModel viewModel in Model.Households)
|
@foreach(UserHouseholdViewModel viewModel in Model.Households)
|
||||||
{
|
{
|
||||||
<tr class="d-flex">
|
<tr class="d-flex">
|
||||||
<td class="col-10">@viewModel.UserName</td>
|
<td class="col-6">@viewModel.UserName</td>
|
||||||
|
<td class="col-2 d-flex align-items-center"><input class="form-check-input" type="checkbox" value="Edit" onchange="adminUpdateUserHousehold(@viewModel.UserHousehold.Id.ParentUserId, @viewModel.UserHousehold.Id.ChildUserId, this)" @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Edit) ? "checked" : "") /></td>
|
||||||
|
<td class="col-2 d-flex align-items-center"><input class="form-check-input" type="checkbox" value="Delete" onchange="adminUpdateUserHousehold(@viewModel.UserHousehold.Id.ParentUserId, @viewModel.UserHousehold.Id.ChildUserId, this)" @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Delete) ? "checked" : "") /></td>
|
||||||
<td class="col-2">
|
<td class="col-2">
|
||||||
<button type="button" class="btn btn-danger" onclick="adminRemoveUserFromHousehold(@viewModel.UserHousehold.ParentUserId, @viewModel.UserHousehold.ChildUserId)"><i class="bi bi-trash"></i></button>
|
<button type="button" class="btn btn-danger" onclick="adminRemoveUserFromHousehold(@viewModel.UserHousehold.Id.ParentUserId, @viewModel.UserHousehold.Id.ChildUserId)"><i class="bi bi-trash"></i></button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,17 +21,21 @@
|
|||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead class="sticky-top">
|
<thead class="sticky-top">
|
||||||
<tr class="d-flex">
|
<tr class="d-flex">
|
||||||
<th scope="col" class="col-10">@translator.Translate(userLanguage, "Username")</th>
|
<th scope="col" class="col-6">@translator.Translate(userLanguage, "Username")</th>
|
||||||
|
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Edit")</th>
|
||||||
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Delete")</th>
|
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Delete")</th>
|
||||||
|
<th scope="col" class="col-2">@translator.Translate(userLanguage, "Remove")</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="tokenTable">
|
<tbody id="tokenTable">
|
||||||
@foreach(UserHouseholdViewModel viewModel in Model)
|
@foreach(UserHouseholdViewModel viewModel in Model)
|
||||||
{
|
{
|
||||||
<tr class="d-flex">
|
<tr class="d-flex">
|
||||||
<td class="col-10">@viewModel.UserName</td>
|
<td class="col-6">@viewModel.UserName</td>
|
||||||
|
<td class="col-2 d-flex align-items-center"><input class="form-check-input" type="checkbox" value="Edit" onchange="modifyUserHousehold(@viewModel.UserHousehold.Id.ChildUserId, this)" @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Edit) ? "checked" : "") /></td>
|
||||||
|
<td class="col-2 d-flex align-items-center"><input class="form-check-input" type="checkbox" value="Delete" onchange="modifyUserHousehold(@viewModel.UserHousehold.Id.ChildUserId, this)" @(viewModel.UserHousehold.Permissions.Contains(HouseholdPermission.Delete) ? "checked" : "") /></td>
|
||||||
<td class="col-2">
|
<td class="col-2">
|
||||||
<button type="button" class="btn btn-danger" onclick="removeUserFromHousehold(@viewModel.UserHousehold.ChildUserId, this)"><i class="bi bi-trash"></i></button>
|
<button type="button" class="btn btn-danger" onclick="removeUserFromHousehold(@viewModel.UserHousehold.Id.ChildUserId, this)"><i class="bi bi-trash"></i></button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,7 +45,10 @@
|
|||||||
sloader.show();
|
sloader.show();
|
||||||
$.post('/Vehicle/ImportToVehicleIdFromCsv', { vehicleId: vehicleId, mode: mode, fileName: uploadedFile }, function (data) {
|
$.post('/Vehicle/ImportToVehicleIdFromCsv', { vehicleId: vehicleId, mode: mode, fileName: uploadedFile }, function (data) {
|
||||||
sloader.hide();
|
sloader.hide();
|
||||||
if (data) {
|
if (isOperationResponse(data)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (data) {
|
||||||
successToast("Data Imported Successfully");
|
successToast("Data Imported Successfully");
|
||||||
hideBulkImportModal();
|
hideBulkImportModal();
|
||||||
if (mode == "GasRecord") {
|
if (mode == "GasRecord") {
|
||||||
|
|||||||
@ -32,7 +32,7 @@
|
|||||||
"UseUnitForFuelCost": false,
|
"UseUnitForFuelCost": false,
|
||||||
"PreferredGasUnit": "",
|
"PreferredGasUnit": "",
|
||||||
"UserLanguage": "en_US",
|
"UserLanguage": "en_US",
|
||||||
"VisibleTabs": [ 0, 1, 4, 2, 3, 6, 5, 8 ],
|
"VisibleTabs": [ 8 ],
|
||||||
"TabOrder": [ 8, 9, 10, 0, 1, 4, 2, 7, 3, 6, 12, 5 ],
|
"TabOrder": [ 8, 9, 10, 0, 1, 4, 2, 7, 3, 6, 12, 5 ],
|
||||||
"DefaultTab": 8,
|
"DefaultTab": 8,
|
||||||
"UserNameHash": "",
|
"UserNameHash": "",
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -52,13 +52,14 @@ function deleteCollisionRecord(collisionRecordId) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteCollisionRecordById?collisionRecordId=${collisionRecordId}`, function (data) {
|
$.post(`/Vehicle/DeleteCollisionRecordById?collisionRecordId=${collisionRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideAddCollisionRecordModal();
|
hideAddCollisionRecordModal();
|
||||||
successToast("Repair Record Deleted");
|
successToast("Repair Record Deleted");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehicleCollisionRecords(vehicleId);
|
getVehicleCollisionRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -76,7 +77,7 @@ function saveCollisionRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/SaveCollisionRecordToVehicleId', { collisionRecord: formValues }, function (data) {
|
$.post('/Vehicle/SaveCollisionRecordToVehicleId', { collisionRecord: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(isEdit ? "Repair Record Updated" : "Repair Record Added.");
|
successToast(isEdit ? "Repair Record Updated" : "Repair Record Added.");
|
||||||
hideAddCollisionRecordModal();
|
hideAddCollisionRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
@ -85,7 +86,7 @@ function saveCollisionRecordToVehicle(isEdit) {
|
|||||||
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -116,12 +116,12 @@ function generateReminderItem(id, urgency, description) {
|
|||||||
function markDoneCalendarReminderRecord(reminderRecordId, e) {
|
function markDoneCalendarReminderRecord(reminderRecordId, e) {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
$.post(`/Vehicle/PushbackRecurringReminderRecord?reminderRecordId=${reminderRecordId}`, function (data) {
|
$.post(`/Vehicle/PushbackRecurringReminderRecord?reminderRecordId=${reminderRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideCalendarReminderModal();
|
hideCalendarReminderModal();
|
||||||
successToast("Reminder Updated");
|
successToast("Reminder Updated");
|
||||||
getVehicleCalendarEvents();
|
getVehicleCalendarEvents();
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -139,12 +139,13 @@ function deleteCalendarReminderRecord(reminderRecordId, e) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteReminderRecordById?reminderRecordId=${reminderRecordId}`, function (data) {
|
$.post(`/Vehicle/DeleteReminderRecordById?reminderRecordId=${reminderRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideCalendarReminderModal();
|
hideCalendarReminderModal();
|
||||||
successToast("Reminder Deleted");
|
successToast("Reminder Deleted");
|
||||||
getVehicleCalendarEvents();
|
getVehicleCalendarEvents();
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -600,6 +601,20 @@ function removeUserFromHousehold(userId) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
function modifyUserHousehold(userId, e) {
|
||||||
|
let selectedChecks = $(e).closest('tr').find(':checked');
|
||||||
|
let permissions = selectedChecks.map((y, x) => {
|
||||||
|
return x.value;
|
||||||
|
});
|
||||||
|
$.post('/Home/ModifyUserHouseholdPermissions', { userId: userId, permissions: permissions.toArray() }, function (data) {
|
||||||
|
if (data) {
|
||||||
|
successToast('Household Updated');
|
||||||
|
showHouseholdModal();
|
||||||
|
} else {
|
||||||
|
errorToast(genericErrorMessage())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
function addUserToHousehold() {
|
function addUserToHousehold() {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
title: 'Add User',
|
title: 'Add User',
|
||||||
|
|||||||
@ -52,13 +52,14 @@ function deleteGasRecord(gasRecordId) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteGasRecordById?gasRecordId=${gasRecordId}`, function (data) {
|
$.post(`/Vehicle/DeleteGasRecordById?gasRecordId=${gasRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideAddGasRecordModal();
|
hideAddGasRecordModal();
|
||||||
successToast("Gas Record deleted");
|
successToast("Gas Record deleted");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehicleGasRecords(vehicleId);
|
getVehicleGasRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -76,13 +77,13 @@ function saveGasRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/SaveGasRecordToVehicleId', { gasRecord: formValues }, function (data) {
|
$.post('/Vehicle/SaveGasRecordToVehicleId', { gasRecord: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(isEdit ? "Gas Record Updated" : "Gas Record Added.");
|
successToast(isEdit ? "Gas Record Updated" : "Gas Record Added.");
|
||||||
hideAddGasRecordModal();
|
hideAddGasRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
getVehicleGasRecords(formValues.vehicleId);
|
getVehicleGasRecords(formValues.vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -486,13 +487,13 @@ function saveMultipleGasRecordsToVehicle() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$.post('/Vehicle/SaveMultipleGasRecords', { editModel: formValues }, function (data) {
|
$.post('/Vehicle/SaveMultipleGasRecords', { editModel: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast("Gas Records Updated");
|
successToast("Gas Records Updated");
|
||||||
hideAddGasRecordModal();
|
hideAddGasRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
getVehicleGasRecords(GetVehicleId().vehicleId);
|
getVehicleGasRecords(GetVehicleId().vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -201,11 +201,12 @@ function deleteInspectionRecordTemplate(inspectionRecordTemplateId) {
|
|||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteInspectionRecordTemplateById?inspectionRecordTemplateId=${inspectionRecordTemplateId}`, function (data) {
|
$.post(`/Vehicle/DeleteInspectionRecordTemplateById?inspectionRecordTemplateId=${inspectionRecordTemplateId}`, function (data) {
|
||||||
$("#workAroundInput").hide();
|
$("#workAroundInput").hide();
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast("Inspection Template Deleted");
|
successToast("Inspection Template Deleted");
|
||||||
hideInspectionRecordTemplateModal();
|
hideInspectionRecordTemplateModal();
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -215,7 +216,10 @@ function deleteInspectionRecordTemplate(inspectionRecordTemplateId) {
|
|||||||
}
|
}
|
||||||
function useInspectionRecordTemplate(inspectionRecordTemplateId) {
|
function useInspectionRecordTemplate(inspectionRecordTemplateId) {
|
||||||
$.get(`/Vehicle/GetAddInspectionRecordPartialView?inspectionRecordTemplateId=${inspectionRecordTemplateId}`, function (data) {
|
$.get(`/Vehicle/GetAddInspectionRecordPartialView?inspectionRecordTemplateId=${inspectionRecordTemplateId}`, function (data) {
|
||||||
if (data) {
|
if (isOperationResponse(data)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (data) {
|
||||||
$("#inspectionRecordModalContent").html(data);
|
$("#inspectionRecordModalContent").html(data);
|
||||||
hideInspectionRecordTemplateSelectorModal();
|
hideInspectionRecordTemplateSelectorModal();
|
||||||
//initiate datepicker
|
//initiate datepicker
|
||||||
@ -359,7 +363,7 @@ function saveinspectionRecordToVehicle() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$.post('/Vehicle/SaveInspectionRecordToVehicleId', { inspectionRecord: formValues }, function (data) {
|
$.post('/Vehicle/SaveInspectionRecordToVehicleId', { inspectionRecord: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast("Inspection Record Added.");
|
successToast("Inspection Record Added.");
|
||||||
hideAddInspectionRecordModal();
|
hideAddInspectionRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
@ -368,7 +372,7 @@ function saveinspectionRecordToVehicle() {
|
|||||||
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -381,19 +385,22 @@ function updateInspectionRecord(recordId) {
|
|||||||
}
|
}
|
||||||
let vehicleId = GetVehicleId().vehicleId;
|
let vehicleId = GetVehicleId().vehicleId;
|
||||||
$.post('/Vehicle/UpdateInspectionRecord', { inspectionRecord: inspectionRecord }, function (data) {
|
$.post('/Vehicle/UpdateInspectionRecord', { inspectionRecord: inspectionRecord }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast("Inspection Record Updated.");
|
successToast("Inspection Record Updated.");
|
||||||
hideAddInspectionRecordModal();
|
hideAddInspectionRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
getVehicleInspectionRecords(vehicleId);
|
getVehicleInspectionRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
function showEditInspectionRecordModal(inspectionRecordId) {
|
function showEditInspectionRecordModal(inspectionRecordId) {
|
||||||
$.get(`/Vehicle/GetViewInspectionRecordPartialView?inspectionRecordId=${inspectionRecordId}`, function (data) {
|
$.get(`/Vehicle/GetViewInspectionRecordPartialView?inspectionRecordId=${inspectionRecordId}`, function (data) {
|
||||||
if (data) {
|
if (isOperationResponse(data)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (data) {
|
||||||
$("#inspectionRecordModalContent").html(data);
|
$("#inspectionRecordModalContent").html(data);
|
||||||
//initiate tag selector
|
//initiate tag selector
|
||||||
initTagSelector($("#inspectionRecordTag"));
|
initTagSelector($("#inspectionRecordTag"));
|
||||||
@ -415,13 +422,14 @@ function deleteInspectionRecord(inspectionRecordId) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteInspectionRecordById?inspectionRecordId=${inspectionRecordId}`, function (data) {
|
$.post(`/Vehicle/DeleteInspectionRecordById?inspectionRecordId=${inspectionRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideAddInspectionRecordModal();
|
hideAddInspectionRecordModal();
|
||||||
successToast("Inspection Record Deleted");
|
successToast("Inspection Record Deleted");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehicleInspectionRecords(vehicleId);
|
getVehicleInspectionRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -48,13 +48,14 @@ function deleteNote(noteId) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteNoteById?noteId=${noteId}`, function (data) {
|
$.post(`/Vehicle/DeleteNoteById?noteId=${noteId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideAddNoteModal();
|
hideAddNoteModal();
|
||||||
successToast("Note Deleted");
|
successToast("Note Deleted");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehicleNotes(vehicleId);
|
getVehicleNotes(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -72,13 +73,13 @@ function saveNoteToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/SaveNoteToVehicleId', { note: formValues }, function (data) {
|
$.post('/Vehicle/SaveNoteToVehicleId', { note: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(isEdit ? "Note Updated" : "Note Added.");
|
successToast(isEdit ? "Note Updated" : "Note Added.");
|
||||||
hideAddNoteModal();
|
hideAddNoteModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
getVehicleNotes(formValues.vehicleId);
|
getVehicleNotes(formValues.vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -121,9 +122,11 @@ function getAndValidateNoteValues() {
|
|||||||
}
|
}
|
||||||
function pinNotes(ids, toggle, pinStatus) {
|
function pinNotes(ids, toggle, pinStatus) {
|
||||||
$.post('/Vehicle/PinNotes', { noteIds: ids, isToggle: toggle, pinStatus: pinStatus }, function (data) {
|
$.post('/Vehicle/PinNotes', { noteIds: ids, isToggle: toggle, pinStatus: pinStatus }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(ids.length > 1 ? `${ids.length} Notes Updated` : "Note Updated.");
|
successToast(ids.length > 1 ? `${ids.length} Notes Updated` : "Note Updated.");
|
||||||
getVehicleNotes(GetVehicleId().vehicleId);
|
getVehicleNotes(GetVehicleId().vehicleId);
|
||||||
|
} else {
|
||||||
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -52,13 +52,14 @@ function deleteOdometerRecord(odometerRecordId) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteOdometerRecordById?odometerRecordId=${odometerRecordId}`, function (data) {
|
$.post(`/Vehicle/DeleteOdometerRecordById?odometerRecordId=${odometerRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideAddOdometerRecordModal();
|
hideAddOdometerRecordModal();
|
||||||
successToast("Odometer Record Deleted");
|
successToast("Odometer Record Deleted");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehicleOdometerRecords(vehicleId);
|
getVehicleOdometerRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -76,7 +77,7 @@ function saveOdometerRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/SaveOdometerRecordToVehicleId', { odometerRecord: formValues }, function (data) {
|
$.post('/Vehicle/SaveOdometerRecordToVehicleId', { odometerRecord: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(isEdit ? "Odometer Record Updated" : "Odometer Record Added.");
|
successToast(isEdit ? "Odometer Record Updated" : "Odometer Record Added.");
|
||||||
hideAddOdometerRecordModal();
|
hideAddOdometerRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
@ -85,7 +86,7 @@ function saveOdometerRecordToVehicle(isEdit) {
|
|||||||
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -142,11 +143,11 @@ function recalculateDistance() {
|
|||||||
//reserved for when data is incoherent with negative distances due to non-chronological order of odometer records.
|
//reserved for when data is incoherent with negative distances due to non-chronological order of odometer records.
|
||||||
var vehicleId = GetVehicleId().vehicleId
|
var vehicleId = GetVehicleId().vehicleId
|
||||||
$.post(`/Vehicle/ForceRecalculateDistanceByVehicleId?vehicleId=${vehicleId}`, function (data) {
|
$.post(`/Vehicle/ForceRecalculateDistanceByVehicleId?vehicleId=${vehicleId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast("Odometer Records Updated")
|
successToast("Odometer Records Updated")
|
||||||
getVehicleOdometerRecords(vehicleId);
|
getVehicleOdometerRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -204,13 +205,13 @@ function saveMultipleOdometerRecordsToVehicle() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$.post('/Vehicle/SaveMultipleOdometerRecords', { editModel: formValues }, function (data) {
|
$.post('/Vehicle/SaveMultipleOdometerRecords', { editModel: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast("Odometer Records Updated");
|
successToast("Odometer Records Updated");
|
||||||
hideAddOdometerRecordModal();
|
hideAddOdometerRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
getVehicleOdometerRecords(GetVehicleId().vehicleId);
|
getVehicleOdometerRecords(GetVehicleId().vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -88,7 +88,7 @@ function deletePlanRecord(planRecordId, noModal) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeletePlanRecordById?planRecordId=${planRecordId}`, function (data) {
|
$.post(`/Vehicle/DeletePlanRecordById?planRecordId=${planRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
if (!noModal) {
|
if (!noModal) {
|
||||||
hideAddPlanRecordModal();
|
hideAddPlanRecordModal();
|
||||||
}
|
}
|
||||||
@ -96,7 +96,8 @@ function deletePlanRecord(planRecordId, noModal) {
|
|||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehiclePlanRecords(vehicleId);
|
getVehiclePlanRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -114,7 +115,7 @@ function savePlanRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/SavePlanRecordToVehicleId', { planRecord: formValues }, function (data) {
|
$.post('/Vehicle/SavePlanRecordToVehicleId', { planRecord: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(isEdit ? "Plan Record Updated" : "Plan Record Added.");
|
successToast(isEdit ? "Plan Record Updated" : "Plan Record Added.");
|
||||||
hideAddPlanRecordModal();
|
hideAddPlanRecordModal();
|
||||||
if (!getPlanRecordModelData().createdFromReminder) {
|
if (!getPlanRecordModelData().createdFromReminder) {
|
||||||
@ -125,7 +126,7 @@ function savePlanRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -170,11 +171,12 @@ function deletePlannerRecordTemplate(planRecordTemplateId) {
|
|||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeletePlanRecordTemplateById?planRecordTemplateId=${planRecordTemplateId}`, function (data) {
|
$.post(`/Vehicle/DeletePlanRecordTemplateById?planRecordTemplateId=${planRecordTemplateId}`, function (data) {
|
||||||
$("#workAroundInput").hide();
|
$("#workAroundInput").hide();
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast("Plan Template Deleted");
|
successToast("Plan Template Deleted");
|
||||||
hideAddPlanRecordModal();
|
hideAddPlanRecordModal();
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -309,12 +311,12 @@ function updatePlanRecordProgress(newProgress) {
|
|||||||
//Odometer Adjustments
|
//Odometer Adjustments
|
||||||
var adjustedOdometer = GetAdjustedOdometer(0, result.value.odometer);
|
var adjustedOdometer = GetAdjustedOdometer(0, result.value.odometer);
|
||||||
$.post('/Vehicle/UpdatePlanRecordProgress', { planRecordId: draggedId, planProgress: newProgress, odometer: adjustedOdometer }, function (data) {
|
$.post('/Vehicle/UpdatePlanRecordProgress', { planRecordId: draggedId, planProgress: newProgress, odometer: adjustedOdometer }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast("Plan Progress Updated");
|
successToast("Plan Progress Updated");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehiclePlanRecords(vehicleId);
|
getVehiclePlanRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -322,12 +324,12 @@ function updatePlanRecordProgress(newProgress) {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
$.post('/Vehicle/UpdatePlanRecordProgress', { planRecordId: draggedId, planProgress: newProgress }, function (data) {
|
$.post('/Vehicle/UpdatePlanRecordProgress', { planRecordId: draggedId, planProgress: newProgress }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast("Plan Progress Updated");
|
successToast("Plan Progress Updated");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehiclePlanRecords(vehicleId);
|
getVehiclePlanRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
draggedId = 0;
|
draggedId = 0;
|
||||||
|
|||||||
@ -94,13 +94,14 @@ function deleteReminderRecord(reminderRecordId, e) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteReminderRecordById?reminderRecordId=${reminderRecordId}`, function (data) {
|
$.post(`/Vehicle/DeleteReminderRecordById?reminderRecordId=${reminderRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideAddReminderRecordModal();
|
hideAddReminderRecordModal();
|
||||||
successToast("Reminder Deleted");
|
successToast("Reminder Deleted");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehicleReminders(vehicleId);
|
getVehicleReminders(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -126,7 +127,7 @@ function saveReminderRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/SaveReminderRecordToVehicleId', { reminderRecord: formValues }, function (data) {
|
$.post('/Vehicle/SaveReminderRecordToVehicleId', { reminderRecord: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(isEdit ? "Reminder Updated" : "Reminder Added.");
|
successToast(isEdit ? "Reminder Updated" : "Reminder Added.");
|
||||||
hideAddReminderRecordModal();
|
hideAddReminderRecordModal();
|
||||||
if (!getReminderRecordModelData().createdFromRecord) {
|
if (!getReminderRecordModelData().createdFromRecord) {
|
||||||
@ -136,7 +137,7 @@ function saveReminderRecordToVehicle(isEdit) {
|
|||||||
getVehicleHaveImportantReminders(formValues.vehicleId);
|
getVehicleHaveImportantReminders(formValues.vehicleId);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -181,11 +182,11 @@ function markDoneReminderRecord(reminderRecordId, e) {
|
|||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
$.post(`/Vehicle/PushbackRecurringReminderRecord?reminderRecordId=${reminderRecordId}`, function (data) {
|
$.post(`/Vehicle/PushbackRecurringReminderRecord?reminderRecordId=${reminderRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast("Reminder Updated");
|
successToast("Reminder Updated");
|
||||||
getVehicleReminders(vehicleId);
|
getVehicleReminders(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,13 +52,14 @@ function deleteServiceRecord(serviceRecordId) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteServiceRecordById?serviceRecordId=${serviceRecordId}`, function (data) {
|
$.post(`/Vehicle/DeleteServiceRecordById?serviceRecordId=${serviceRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideAddServiceRecordModal();
|
hideAddServiceRecordModal();
|
||||||
successToast("Service Record Deleted");
|
successToast("Service Record Deleted");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehicleServiceRecords(vehicleId);
|
getVehicleServiceRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -76,7 +77,7 @@ function saveServiceRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/SaveServiceRecordToVehicleId', { serviceRecord: formValues }, function (data) {
|
$.post('/Vehicle/SaveServiceRecordToVehicleId', { serviceRecord: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(isEdit ? "Service Record Updated" : "Service Record Added.");
|
successToast(isEdit ? "Service Record Updated" : "Service Record Added.");
|
||||||
hideAddServiceRecordModal();
|
hideAddServiceRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
@ -85,7 +86,7 @@ function saveServiceRecordToVehicle(isEdit) {
|
|||||||
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -178,7 +178,7 @@ function saveVehicle(isEdit) {
|
|||||||
dashboardMetrics: vehicleDashboardMetrics,
|
dashboardMetrics: vehicleDashboardMetrics,
|
||||||
vehicleIdentifier: vehicleIdentifier
|
vehicleIdentifier: vehicleIdentifier
|
||||||
}, function (data) {
|
}, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
if (!isEdit) {
|
if (!isEdit) {
|
||||||
successToast("Vehicle Added");
|
successToast("Vehicle Added");
|
||||||
hideAddVehicleModal();
|
hideAddVehicleModal();
|
||||||
@ -190,7 +190,7 @@ function saveVehicle(isEdit) {
|
|||||||
viewVehicle(vehicleId);
|
viewVehicle(vehicleId);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -756,7 +756,10 @@ function printTabStickers(ids, source) {
|
|||||||
recordIds: ids,
|
recordIds: ids,
|
||||||
importMode: source
|
importMode: source
|
||||||
}, function (data) {
|
}, function (data) {
|
||||||
if (data) {
|
if (isOperationResponse(data)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (data) {
|
||||||
printContainer(data);
|
printContainer(data);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -764,9 +767,10 @@ function printTabStickers(ids, source) {
|
|||||||
function exportVehicleData(mode) {
|
function exportVehicleData(mode) {
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
$.get('/Vehicle/ExportFromVehicleToCsv', { vehicleId: vehicleId, mode: mode }, function (data) {
|
$.get('/Vehicle/ExportFromVehicleToCsv', { vehicleId: vehicleId, mode: mode }, function (data) {
|
||||||
if (!data) {
|
if (isOperationResponse(data)) {
|
||||||
errorToast(genericErrorMessage());
|
return;
|
||||||
} else {
|
}
|
||||||
|
else if (data) {
|
||||||
window.location.href = data;
|
window.location.href = data;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -857,12 +861,13 @@ function moveRecords(ids, source, dest) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post('/Vehicle/MoveRecords', { recordIds: ids, source: source, destination: dest }, function (data) {
|
$.post('/Vehicle/MoveRecords', { recordIds: ids, source: source, destination: dest }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(`${ids.length} Record(s) Moved`);
|
successToast(`${ids.length} Record(s) Moved`);
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
refreshDataCallBack(vehicleId);
|
refreshDataCallBack(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -929,12 +934,13 @@ function deleteRecords(ids, source) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post('/Vehicle/DeleteRecords', { recordIds: ids, importMode: source }, function (data) {
|
$.post('/Vehicle/DeleteRecords', { recordIds: ids, importMode: source }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(`${ids.length} Record(s) Deleted`);
|
successToast(`${ids.length} Record(s) Deleted`);
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
refreshDataCallBack(vehicleId);
|
refreshDataCallBack(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -1005,12 +1011,13 @@ function duplicateRecords(ids, source) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post('/Vehicle/DuplicateRecords', { recordIds: ids, importMode: source }, function (data) {
|
$.post('/Vehicle/DuplicateRecords', { recordIds: ids, importMode: source }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(`${ids.length} Record(s) Duplicated`);
|
successToast(`${ids.length} Record(s) Duplicated`);
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
refreshDataCallBack(vehicleId);
|
refreshDataCallBack(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -1091,10 +1098,10 @@ function duplicateRecordsToOtherVehicles(ids, source) {
|
|||||||
}).then(function (result) {
|
}).then(function (result) {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post('/Vehicle/DuplicateRecordsToOtherVehicles', { recordIds: ids, vehicleIds: result.value.selectedVehicleData.ids, importMode: source}, function (data) {
|
$.post('/Vehicle/DuplicateRecordsToOtherVehicles', { recordIds: ids, vehicleIds: result.value.selectedVehicleData.ids, importMode: source}, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(`${ids.length} Record(s) Duplicated`);
|
successToast(`${ids.length} Record(s) Duplicated`);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -1140,12 +1147,13 @@ function insertOdometer(ids, source) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post('/Vehicle/BulkCreateOdometerRecords', { recordIds: ids, importMode: source }, function (data) {
|
$.post('/Vehicle/BulkCreateOdometerRecords', { recordIds: ids, importMode: source }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(`${ids.length} Odometer Record(s) Created`);
|
successToast(`${ids.length} Odometer Record(s) Created`);
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
refreshDataCallBack(vehicleId);
|
refreshDataCallBack(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -52,13 +52,14 @@ function deleteSupplyRecord(supplyRecordId) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteSupplyRecordById?supplyRecordId=${supplyRecordId}`, function (data) {
|
$.post(`/Vehicle/DeleteSupplyRecordById?supplyRecordId=${supplyRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideAddSupplyRecordModal();
|
hideAddSupplyRecordModal();
|
||||||
successToast("Supply Record Deleted");
|
successToast("Supply Record Deleted");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehicleSupplyRecords(vehicleId);
|
getVehicleSupplyRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -76,7 +77,7 @@ function saveSupplyRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/SaveSupplyRecordToVehicleId', { supplyRecord: formValues }, function (data) {
|
$.post('/Vehicle/SaveSupplyRecordToVehicleId', { supplyRecord: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(isEdit ? "Supply Record Updated" : "Supply Record Added.");
|
successToast(isEdit ? "Supply Record Updated" : "Supply Record Added.");
|
||||||
hideAddSupplyRecordModal();
|
hideAddSupplyRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
@ -85,7 +86,7 @@ function saveSupplyRecordToVehicle(isEdit) {
|
|||||||
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -60,13 +60,14 @@ function deleteTaxRecord(taxRecordId) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteTaxRecordById?taxRecordId=${taxRecordId}`, function (data) {
|
$.post(`/Vehicle/DeleteTaxRecordById?taxRecordId=${taxRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideAddTaxRecordModal();
|
hideAddTaxRecordModal();
|
||||||
successToast("Tax Record Deleted");
|
successToast("Tax Record Deleted");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehicleTaxRecords(vehicleId);
|
getVehicleTaxRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -84,7 +85,7 @@ function saveTaxRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/SaveTaxRecordToVehicleId', { taxRecord: formValues }, function (data) {
|
$.post('/Vehicle/SaveTaxRecordToVehicleId', { taxRecord: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(isEdit ? "Tax Record Updated" : "Tax Record Added.");
|
successToast(isEdit ? "Tax Record Updated" : "Tax Record Added.");
|
||||||
hideAddTaxRecordModal();
|
hideAddTaxRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
@ -93,7 +94,7 @@ function saveTaxRecordToVehicle(isEdit) {
|
|||||||
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,13 +52,14 @@ function deleteUpgradeRecord(upgradeRecordId) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post(`/Vehicle/DeleteUpgradeRecordById?upgradeRecordId=${upgradeRecordId}`, function (data) {
|
$.post(`/Vehicle/DeleteUpgradeRecordById?upgradeRecordId=${upgradeRecordId}`, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideAddUpgradeRecordModal();
|
hideAddUpgradeRecordModal();
|
||||||
successToast("Upgrade Record Deleted");
|
successToast("Upgrade Record Deleted");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
getVehicleUpgradeRecords(vehicleId);
|
getVehicleUpgradeRecords(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -76,7 +77,7 @@ function saveUpgradeRecordToVehicle(isEdit) {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/SaveUpgradeRecordToVehicleId', { upgradeRecord: formValues }, function (data) {
|
$.post('/Vehicle/SaveUpgradeRecordToVehicleId', { upgradeRecord: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(isEdit ? "Upgrade Record Updated" : "Upgrade Record Added.");
|
successToast(isEdit ? "Upgrade Record Updated" : "Upgrade Record Added.");
|
||||||
hideAddUpgradeRecordModal();
|
hideAddUpgradeRecordModal();
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
@ -85,7 +86,7 @@ function saveUpgradeRecordToVehicle(isEdit) {
|
|||||||
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
setTimeout(function () { showAddReminderModal(formValues); }, 500);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -306,13 +306,14 @@ function moveRecord(recordId, source, dest) {
|
|||||||
}).then((result) => {
|
}).then((result) => {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
$.post('/Vehicle/MoveRecord', { recordId: recordId, source: source, destination: dest }, function (data) {
|
$.post('/Vehicle/MoveRecord', { recordId: recordId, source: source, destination: dest }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
hideModalCallBack();
|
hideModalCallBack();
|
||||||
successToast("Record Moved");
|
successToast("Record Moved");
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
refreshDataCallBack(vehicleId);
|
refreshDataCallBack(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -414,12 +415,12 @@ function saveGenericRecord() {
|
|||||||
}
|
}
|
||||||
//save to db.
|
//save to db.
|
||||||
$.post('/Vehicle/EditMultipleRecords', { genericRecordEditModel: formValues }, function (data) {
|
$.post('/Vehicle/EditMultipleRecords', { genericRecordEditModel: formValues }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(formValues.recordIds.length > 1 ? "Records Updated" : "Record Updated.");
|
successToast(formValues.recordIds.length > 1 ? "Records Updated" : "Record Updated.");
|
||||||
hideGenericRecordModal();
|
hideGenericRecordModal();
|
||||||
refreshDataCallBack(GetVehicleId().vehicleId);
|
refreshDataCallBack(GetVehicleId().vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -563,12 +564,13 @@ function adjustRecordsOdometer(ids, source) {
|
|||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
saveScrollPosition();
|
saveScrollPosition();
|
||||||
$.post('/Vehicle/AdjustRecordsOdometer', { recordIds: ids, vehicleId: GetVehicleId().vehicleId, importMode: source }, function (data) {
|
$.post('/Vehicle/AdjustRecordsOdometer', { recordIds: ids, vehicleId: GetVehicleId().vehicleId, importMode: source }, function (data) {
|
||||||
if (data) {
|
if (data.success) {
|
||||||
successToast(`${ids.length} Record(s) Updated`);
|
successToast(`${ids.length} Record(s) Updated`);
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
refreshDataCallBack(vehicleId);
|
refreshDataCallBack(vehicleId);
|
||||||
} else {
|
} else {
|
||||||
errorToast(genericErrorMessage());
|
errorToast(data.message);
|
||||||
|
$("#workAroundInput").hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user