Initial commit

This commit is contained in:
2020-04-12 20:52:03 -04:00
parent e750d2848a
commit 01e7627293
249 changed files with 9733 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
// Decompiled with JetBrains decompiler
// Type: PartSource.Controllers.BaseNexpartController
// Assembly: PartSource, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 9C95A003-DAA7-4079-9F59-D1FC80E1666C
// Assembly location: C:\Users\Tommy\Desktop\PS temp\PartSource.dll
using PartSource.Entities.Nexpart;
using PartSource.Entities.Nexpart.Interfaces;
using System;
using System.Net;
using System.Web.Http;
namespace PartSource.Controllers
{
public class BaseNexpartController : ApiController
{
public IHttpActionResult NexpartResponse<T, U>(T response) where T : IResponseElement<U>
{
try
{
Exceptions[] exceptions = response.PSResponseHeader.Exceptions;
if ((exceptions != null ? ((uint)exceptions.Length > 0U ? 1 : 0) : 0) == 0)
return Ok(new
{
Data = response.ResponseBody
});
string empty = string.Empty;
foreach (Exceptions exception in response.PSResponseHeader.Exceptions)
empty += string.Format("{0}\n", (object)exception.Value);
return (IHttpActionResult)this.Content(HttpStatusCode.BadRequest, new
{
Data = response.ResponseBody
});
}
catch (Exception ex)
{
return (IHttpActionResult)this.Content(HttpStatusCode.InternalServerError, new
{
Message = ex.Message
});
}
}
}
}

View File

@@ -0,0 +1,38 @@
using PartSource.Entities.Models;
using PartSource.Services;
using System.Net;
using System.Threading.Tasks;
using System.Web.Http;
namespace PartSource.Controllers
{
[RoutePrefix("inventory")]
public class InventoryController : BaseNexpartController
{
private readonly InventoryService _inventoryService;
public InventoryController(InventoryService inventoryService)
{
_inventoryService = inventoryService;
}
[HttpGet]
[Route("sku/{sku}/storeNumber/{storeNumber}")]
public async Task<IHttpActionResult> GetInventory(int sku, int storeNumber)
{
ps_parts_availability inventory = _inventoryService.GetInventory(sku, storeNumber);
return inventory == null
? Content(HttpStatusCode.NotFound, $"No part matching SKU {sku} was found.")
: (IHttpActionResult)Ok(new
{
data = new
{
StoreNumber = inventory.Store,
Sku = sku,
Quantity = inventory.QTY
}
});
}
}
}

View File

@@ -0,0 +1,71 @@
using PartSource.Entities.Nexpart;
using PartSource.Services;
using System.Threading.Tasks;
using System.Web.Http;
namespace PartSource.Controllers
{
[RoutePrefix("parts")]
public class PartsController : BaseNexpartController
{
private readonly NexpartService _nexpartService;
public PartsController(NexpartService nexpartService)
{
this._nexpartService = nexpartService;
}
[HttpGet]
[Route("PartNumber/{partNumber}/LineCode/{lineCode}")]
public IHttpActionResult GetPart(string partNumber, string lineCode)
{
new SmartPageDataSearch().Items = new Item[1]
{
new Item()
{
PartNumber = partNumber.ToUpperInvariant(),
MfrCode = lineCode.ToUpperInvariant()
}
};
return (IHttpActionResult)this.Ok();
}
[HttpGet]
[Route("search/basevehicleid/{baseVehicleId}")]
public async Task<IHttpActionResult> Search(uint baseVehicleId, [FromUri] string query)
{
PartsController partsController = this;
PartTypeSearch requestContent = new PartTypeSearch()
{
SearchString = query,
SearchType = "ALL",
SearchOptions = "PARTIAL_MATCH",
VehicleIdentifier = new VehicleIdentifier()
{
BaseVehicleId = baseVehicleId
}
};
PartTypeSearchResponse response = await partsController._nexpartService.SendRequest<PartTypeSearch, PartTypeSearchResponse>(requestContent);
return partsController.NexpartResponse<PartTypeSearchResponse, PartTypes>(response);
}
[HttpGet]
[Route("validate/partTypeId/{partTypeId}/baseVehicleId/{baseVehicleId}")]
public async Task<IHttpActionResult> ValidatePartFitment(uint partTypeId, uint baseVehicleId)
{
PartsController partsController = this;
PartTypesValidateLookup typesValidateLookup = new PartTypesValidateLookup();
typesValidateLookup.PartTypes = new PartType[1]
{
new PartType() { Id = partTypeId }
};
typesValidateLookup.VehicleIdentifier = new VehicleIdentifier()
{
BaseVehicleId = baseVehicleId
};
PartTypesValidateLookup requestContent = typesValidateLookup;
PartTypesValidateLookupResponse response = await partsController._nexpartService.SendRequest<PartTypesValidateLookup, PartTypesValidateLookupResponse>(requestContent);
return partsController.NexpartResponse<PartTypesValidateLookupResponse, PartTypes>(response);
}
}
}

View File

@@ -0,0 +1,31 @@
using PartSource.Entities.Nexpart;
using PartSource.Services;
using System.Threading.Tasks;
using System.Web.Http;
namespace PartSource.Controllers
{
[RoutePrefix("search")]
public class SearchController : BaseNexpartController
{
private readonly NexpartService _nexpartService;
public SearchController()
{
this._nexpartService = new NexpartService();
}
[HttpGet]
[Route("makes/vehicletypeid/{vehicleTypeId}")]
public async Task<IHttpActionResult> GetMakes(uint vehicleTypeId)
{
SearchController searchController = this;
MakeSearch requestContent = new MakeSearch()
{
VehicleTypeId = new uint[1] { vehicleTypeId }
};
MakeSearchResponse response = await searchController._nexpartService.SendRequest<MakeSearch, MakeSearchResponse>(requestContent);
return searchController.NexpartResponse<MakeSearchResponse, Makes>(response);
}
}
}

View File

@@ -0,0 +1,46 @@
using PartSource.Entities.Models;
using PartSource.Services;
using System.Web.Http;
namespace PartSource.Controllers
{
[RoutePrefix("stores")]
public class StoresController : ApiController
{
private const int Count = 5;
private const int Page = 1;
private readonly LocationService _service;
public StoresController(LocationService service)
{
this._service = service;
}
[HttpGet]
[Route("nearest/{postal}")]
[Route("nearest/{postal}/count/{count}")]
[Route("nearest/{postal}/count/{count}/page/{page}")]
public IHttpActionResult GetNearestStores(string postal, int count = 5, int page = 1)
{
PostalCode postalCodeData = this._service.GetPostalCodeData(postal);
if (postalCodeData == null)
return (IHttpActionResult)this.BadRequest("Invalid postal code");
return (IHttpActionResult)this.Ok(new
{
Data = this._service.GetClosestLocations(postalCodeData, count, page)
});
}
[HttpGet]
[Route("nearest/{postal}/radius/{radius}")]
[Route("nearest/{postal}/radius/{radius}/count/{count}")]
[Route("nearest/{postal}/radius/{radius}/count/{count}/page/{page}")]
public IHttpActionResult GetNearestStores(string postal, double radius, int count = 5, int page = 1)
{
return (IHttpActionResult)this.Ok(new
{
Data = this._service.GetClosestLocations(this._service.GetPostalCodeData(postal), count, page, radius)
});
}
}
}

View File

@@ -0,0 +1,114 @@
using PartSource.Entities.Nexpart;
using PartSource.Services;
using System.Threading.Tasks;
using System.Web.Http;
namespace PartSource.Controllers
{
[RoutePrefix("vehicles")]
public class VehiclesController : BaseNexpartController
{
private readonly NexpartService _nexpartService;
public VehiclesController(NexpartService nexpartService)
{
this._nexpartService = nexpartService;
}
[HttpGet]
[Route("types")]
public async Task<IHttpActionResult> GetVehicleTypes()
{
VehiclesController vehiclesController = this;
VehicleTypesGetResponse response = await vehiclesController._nexpartService.SendRequest<VehicleTypesGet, VehicleTypesGetResponse>(new VehicleTypesGet());
return vehiclesController.NexpartResponse<VehicleTypesGetResponse, VehicleTypes>(response);
}
[HttpGet]
[Route("makes")]
public async Task<IHttpActionResult> GetMakes()
{
VehiclesController vehiclesController = this;
MakeSearch requestContent = new MakeSearch()
{
VehicleTypeId = new uint[3] { 5U, 6U, 7U }
};
MakeSearchResponse response = await vehiclesController._nexpartService.SendRequest<MakeSearch, MakeSearchResponse>(requestContent);
return vehiclesController.NexpartResponse<MakeSearchResponse, Makes>(response);
}
[HttpGet]
[Route("makes/vehicletypeid/{vehicleTypeId}")]
public async Task<IHttpActionResult> GetMakes(uint vehicleTypeId)
{
VehiclesController vehiclesController = this;
MakeSearch requestContent = new MakeSearch()
{
VehicleTypeId = new uint[1] { vehicleTypeId }
};
MakeSearchResponse response = await vehiclesController._nexpartService.SendRequest<MakeSearch, MakeSearchResponse>(requestContent);
return vehiclesController.NexpartResponse<MakeSearchResponse, Makes>(response);
}
[HttpGet]
[Route("models/makeid/{makeId}/modelyear/{year}")]
public async Task<IHttpActionResult> GetModels(uint makeId, uint year)
{
VehiclesController vehiclesController = this;
ModelSearch requestContent = new ModelSearch()
{
MakeId = makeId,
Year = year,
VehicleTypeId = new uint[3] { 5U, 6U, 7U }
};
ModelSearchResponse response = await vehiclesController._nexpartService.SendRequest<ModelSearch, ModelSearchResponse>(requestContent);
return vehiclesController.NexpartResponse<ModelSearchResponse, Models[]>(response);
}
[HttpGet]
[Route("models/makeid/{makeId}/modelyear/{year}/vehicletypeid/{vehicleTypeId}")]
public async Task<IHttpActionResult> GetModels(uint makeId, uint year, uint vehicleTypeId)
{
VehiclesController vehiclesController = this;
ModelSearch requestContent = new ModelSearch()
{
MakeId = makeId,
Year = year,
VehicleTypeId = new uint[1] { vehicleTypeId }
};
ModelSearchResponse response = await vehiclesController._nexpartService.SendRequest<ModelSearch, ModelSearchResponse>(requestContent);
return vehiclesController.NexpartResponse<ModelSearchResponse, Models[]>(response);
}
[HttpGet]
[Route("basevehicle/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")]
public async Task<IHttpActionResult> GetBaseVehicle(uint makeId, uint modelId, uint year)
{
VehiclesController vehiclesController = this;
BaseVehicleDetailLookup requestContent = new BaseVehicleDetailLookup()
{
MakeId = makeId,
ModelId = modelId,
Year = year
};
BaseVehicleDetailLookupResponse response = await vehiclesController._nexpartService.SendRequest<BaseVehicleDetailLookup, BaseVehicleDetailLookupResponse>(requestContent);
return vehiclesController.NexpartResponse<BaseVehicleDetailLookupResponse, BaseVehicleDetail>(response);
}
[HttpGet]
[Route("engines/basevehicleid/{baseVehicleId}")]
public async Task<IHttpActionResult> GetEngines(uint baseVehicleId)
{
VehiclesController vehiclesController = this;
EngineSearch requestContent = new EngineSearch()
{
VehicleIdentifier = new VehicleIdentifier()
{
BaseVehicleId = baseVehicleId
}
};
EngineSearchResponse response = await vehiclesController._nexpartService.SendRequest<EngineSearch, EngineSearchResponse>(requestContent);
return vehiclesController.NexpartResponse<EngineSearchResponse, Engines>(response);
}
}
}