mirror of
https://github.com/hargata/lubelog.git
synced 2025-12-10 00:46:08 -06:00
Added API Get Params for querying.
This commit is contained in:
parent
4206c02618
commit
bd6cb94ccd
@ -212,15 +212,27 @@ namespace CarCareTracker.Controllers
|
||||
[TypeFilter(typeof(CollaboratorFilter))]
|
||||
[HttpGet]
|
||||
[Route("/api/vehicle/planrecords")]
|
||||
public IActionResult PlanRecords(int vehicleId)
|
||||
public IActionResult PlanRecords(MethodParameter parameters)
|
||||
{
|
||||
if (vehicleId == default)
|
||||
if (parameters.VehicleId == default)
|
||||
{
|
||||
var response = OperationResponse.Failed("Must provide a valid vehicle id");
|
||||
Response.StatusCode = 400;
|
||||
return Json(response);
|
||||
}
|
||||
var vehicleRecords = _planRecordDataAccess.GetPlanRecordsByVehicleId(vehicleId);
|
||||
var vehicleRecords = _planRecordDataAccess.GetPlanRecordsByVehicleId(parameters.VehicleId);
|
||||
if (parameters.Id != default)
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Id != parameters.Id);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.StartDate) && DateTime.TryParse(parameters.StartDate, out DateTime startDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.DateCreated < startDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.EndDate) && DateTime.TryParse(parameters.EndDate, out DateTime endDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.DateCreated > endDate);
|
||||
}
|
||||
var result = vehicleRecords.Select(x => new PlanRecordExportModel {
|
||||
Id = x.Id.ToString(),
|
||||
DateCreated = x.DateCreated.ToShortDateString(),
|
||||
@ -433,15 +445,32 @@ namespace CarCareTracker.Controllers
|
||||
[TypeFilter(typeof(CollaboratorFilter))]
|
||||
[HttpGet]
|
||||
[Route("/api/vehicle/servicerecords")]
|
||||
public IActionResult ServiceRecords(int vehicleId)
|
||||
public IActionResult ServiceRecords(MethodParameter parameters)
|
||||
{
|
||||
if (vehicleId == default)
|
||||
if (parameters.VehicleId == default)
|
||||
{
|
||||
var response = OperationResponse.Failed("Must provide a valid vehicle id");
|
||||
Response.StatusCode = 400;
|
||||
return Json(response);
|
||||
}
|
||||
var vehicleRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId);
|
||||
var vehicleRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(parameters.VehicleId);
|
||||
if (parameters.Id != default)
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Id != parameters.Id);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.StartDate) && DateTime.TryParse(parameters.StartDate, out DateTime startDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Date < startDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.EndDate) && DateTime.TryParse(parameters.EndDate, out DateTime endDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Date > endDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.Tags))
|
||||
{
|
||||
var tagsFilter = parameters.Tags.Split(' ').Distinct();
|
||||
vehicleRecords.RemoveAll(x => !x.Tags.Any(y => tagsFilter.Contains(y)));
|
||||
}
|
||||
var result = vehicleRecords.Select(x => new GenericRecordExportModel { Id = x.Id.ToString(), Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, Odometer = x.Mileage.ToString(), ExtraFields = x.ExtraFields, Files = x.Files, Tags = string.Join(' ', x.Tags) });
|
||||
if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant"))
|
||||
{
|
||||
@ -610,15 +639,32 @@ namespace CarCareTracker.Controllers
|
||||
[TypeFilter(typeof(CollaboratorFilter))]
|
||||
[HttpGet]
|
||||
[Route("/api/vehicle/repairrecords")]
|
||||
public IActionResult RepairRecords(int vehicleId)
|
||||
public IActionResult RepairRecords(MethodParameter parameters)
|
||||
{
|
||||
if (vehicleId == default)
|
||||
if (parameters.VehicleId == default)
|
||||
{
|
||||
var response = OperationResponse.Failed("Must provide a valid vehicle id");
|
||||
Response.StatusCode = 400;
|
||||
return Json(response);
|
||||
}
|
||||
var vehicleRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId);
|
||||
var vehicleRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(parameters.VehicleId);
|
||||
if (parameters.Id != default)
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Id != parameters.Id);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.StartDate) && DateTime.TryParse(parameters.StartDate, out DateTime startDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Date < startDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.EndDate) && DateTime.TryParse(parameters.EndDate, out DateTime endDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Date > endDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.Tags))
|
||||
{
|
||||
var tagsFilter = parameters.Tags.Split(' ').Distinct();
|
||||
vehicleRecords.RemoveAll(x => !x.Tags.Any(y => tagsFilter.Contains(y)));
|
||||
}
|
||||
var result = vehicleRecords.Select(x => new GenericRecordExportModel { Id = x.Id.ToString(), Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, Odometer = x.Mileage.ToString(), ExtraFields = x.ExtraFields, Files = x.Files, Tags = string.Join(' ', x.Tags) });
|
||||
if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant"))
|
||||
{
|
||||
@ -790,15 +836,32 @@ namespace CarCareTracker.Controllers
|
||||
[TypeFilter(typeof(CollaboratorFilter))]
|
||||
[HttpGet]
|
||||
[Route("/api/vehicle/upgraderecords")]
|
||||
public IActionResult UpgradeRecords(int vehicleId)
|
||||
public IActionResult UpgradeRecords(MethodParameter parameters)
|
||||
{
|
||||
if (vehicleId == default)
|
||||
if (parameters.VehicleId == default)
|
||||
{
|
||||
var response = OperationResponse.Failed("Must provide a valid vehicle id");
|
||||
Response.StatusCode = 400;
|
||||
return Json(response);
|
||||
}
|
||||
var vehicleRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId);
|
||||
var vehicleRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(parameters.VehicleId);
|
||||
if (parameters.Id != default)
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Id != parameters.Id);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.StartDate) && DateTime.TryParse(parameters.StartDate, out DateTime startDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Date < startDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.EndDate) && DateTime.TryParse(parameters.EndDate, out DateTime endDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Date > endDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.Tags))
|
||||
{
|
||||
var tagsFilter = parameters.Tags.Split(' ').Distinct();
|
||||
vehicleRecords.RemoveAll(x => !x.Tags.Any(y => tagsFilter.Contains(y)));
|
||||
}
|
||||
var result = vehicleRecords.Select(x => new GenericRecordExportModel { Id = x.Id.ToString(), Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, Odometer = x.Mileage.ToString(), ExtraFields = x.ExtraFields, Files = x.Files, Tags = string.Join(' ', x.Tags) });
|
||||
if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant"))
|
||||
{
|
||||
@ -969,15 +1032,33 @@ namespace CarCareTracker.Controllers
|
||||
[TypeFilter(typeof(CollaboratorFilter))]
|
||||
[HttpGet]
|
||||
[Route("/api/vehicle/taxrecords")]
|
||||
public IActionResult TaxRecords(int vehicleId)
|
||||
public IActionResult TaxRecords(MethodParameter parameters)
|
||||
{
|
||||
if (vehicleId == default)
|
||||
if (parameters.VehicleId == default)
|
||||
{
|
||||
var response = OperationResponse.Failed("Must provide a valid vehicle id");
|
||||
Response.StatusCode = 400;
|
||||
return Json(response);
|
||||
}
|
||||
var result = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId).Select(x => new TaxRecordExportModel { Id = x.Id.ToString(), Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, ExtraFields = x.ExtraFields, Files = x.Files, Tags = string.Join(' ', x.Tags) });
|
||||
var vehicleRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(parameters.VehicleId);
|
||||
if (parameters.Id != default)
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Id != parameters.Id);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.StartDate) && DateTime.TryParse(parameters.StartDate, out DateTime startDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Date < startDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.EndDate) && DateTime.TryParse(parameters.EndDate, out DateTime endDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Date > endDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.Tags))
|
||||
{
|
||||
var tagsFilter = parameters.Tags.Split(' ').Distinct();
|
||||
vehicleRecords.RemoveAll(x => !x.Tags.Any(y => tagsFilter.Contains(y)));
|
||||
}
|
||||
var result = vehicleRecords.Select(x => new TaxRecordExportModel { Id = x.Id.ToString(), Date = x.Date.ToShortDateString(), Description = x.Description, Cost = x.Cost.ToString(), Notes = x.Notes, ExtraFields = x.ExtraFields, Files = x.Files, Tags = string.Join(' ', x.Tags) });
|
||||
if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant"))
|
||||
{
|
||||
return Json(result, StaticHelper.GetInvariantOption());
|
||||
@ -1177,20 +1258,37 @@ namespace CarCareTracker.Controllers
|
||||
[TypeFilter(typeof(CollaboratorFilter))]
|
||||
[HttpGet]
|
||||
[Route("/api/vehicle/odometerrecords")]
|
||||
public IActionResult OdometerRecords(int vehicleId)
|
||||
public IActionResult OdometerRecords(MethodParameter parameters)
|
||||
{
|
||||
if (vehicleId == default)
|
||||
if (parameters.VehicleId == default)
|
||||
{
|
||||
var response = OperationResponse.Failed("Must provide a valid vehicle id");
|
||||
Response.StatusCode = 400;
|
||||
return Json(response);
|
||||
}
|
||||
var vehicleRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId);
|
||||
var vehicleRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(parameters.VehicleId);
|
||||
//determine if conversion is needed.
|
||||
if (vehicleRecords.All(x => x.InitialMileage == default))
|
||||
{
|
||||
vehicleRecords = _odometerLogic.AutoConvertOdometerRecord(vehicleRecords);
|
||||
}
|
||||
if (parameters.Id != default)
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Id != parameters.Id);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.StartDate) && DateTime.TryParse(parameters.StartDate, out DateTime startDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Date < startDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.EndDate) && DateTime.TryParse(parameters.EndDate, out DateTime endDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Date > endDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.Tags))
|
||||
{
|
||||
var tagsFilter = parameters.Tags.Split(' ').Distinct();
|
||||
vehicleRecords.RemoveAll(x => !x.Tags.Any(y => tagsFilter.Contains(y)));
|
||||
}
|
||||
var result = vehicleRecords.Select(x => new OdometerRecordExportModel { Id = x.Id.ToString(), Date = x.Date.ToShortDateString(), InitialOdometer = x.InitialMileage.ToString(), Odometer = x.Mileage.ToString(), Notes = x.Notes, ExtraFields = x.ExtraFields, Files = x.Files, Tags = string.Join(' ', x.Tags) });
|
||||
if (_config.GetInvariantApi() || Request.Headers.ContainsKey("culture-invariant"))
|
||||
{
|
||||
@ -1339,16 +1437,34 @@ namespace CarCareTracker.Controllers
|
||||
[TypeFilter(typeof(CollaboratorFilter))]
|
||||
[HttpGet]
|
||||
[Route("/api/vehicle/gasrecords")]
|
||||
public IActionResult GasRecords(int vehicleId, bool useMPG, bool useUKMPG)
|
||||
public IActionResult GasRecords(MethodParameter parameters)
|
||||
{
|
||||
if (vehicleId == default)
|
||||
if (parameters.VehicleId == default)
|
||||
{
|
||||
var response = OperationResponse.Failed("Must provide a valid vehicle id");
|
||||
Response.StatusCode = 400;
|
||||
return Json(response);
|
||||
}
|
||||
var vehicleRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId);
|
||||
var result = _gasHelper.GetGasRecordViewModels(vehicleRecords, useMPG, useUKMPG)
|
||||
var rawVehicleRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(parameters.VehicleId);
|
||||
var vehicleRecords = _gasHelper.GetGasRecordViewModels(rawVehicleRecords, parameters.UseMPG, parameters.UseUKMPG);
|
||||
if (parameters.Id != default)
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => x.Id != parameters.Id);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.StartDate) && DateTime.TryParse(parameters.StartDate, out DateTime startDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => DateTime.Parse(x.Date) < startDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.EndDate) && DateTime.TryParse(parameters.EndDate, out DateTime endDate))
|
||||
{
|
||||
vehicleRecords.RemoveAll(x => DateTime.Parse(x.Date) > endDate);
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(parameters.Tags))
|
||||
{
|
||||
var tagsFilter = parameters.Tags.Split(' ').Distinct();
|
||||
vehicleRecords.RemoveAll(x => !x.Tags.Any(y => tagsFilter.Contains(y)));
|
||||
}
|
||||
var result = vehicleRecords
|
||||
.Select(x => new GasRecordExportModel {
|
||||
Id = x.Id.ToString(),
|
||||
Date = x.Date,
|
||||
|
||||
17
Models/API/MethodParameter.cs
Normal file
17
Models/API/MethodParameter.cs
Normal file
@ -0,0 +1,17 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace CarCareTracker.Models
|
||||
{
|
||||
public class MethodParameter
|
||||
{
|
||||
public int VehicleId { get; set; }
|
||||
public int Id { get; set; }
|
||||
[JsonConverter(typeof(FromDateOptional))]
|
||||
public string StartDate { get; set; }
|
||||
[JsonConverter(typeof(FromDateOptional))]
|
||||
public string EndDate { get; set; }
|
||||
public string Tags { get; set; }
|
||||
public bool UseMPG { get; set; }
|
||||
public bool UseUKMPG { get; set; }
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user