Assignment for Location Calculation
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.9 KiB

  1. using Microsoft.AspNetCore.Cors;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.Extensions.Logging;
  4. using POCDistance.Models;
  5. using POCDistance.Service;
  6. using System;
  7. using System.Net;
  8. namespace POCDistance.Controllers
  9. {
  10. [EnableCors(SecurityPolicy.SiteCorsPolicy)]
  11. [ApiController]
  12. [Route("api/[controller]")]
  13. public class DistanceController : ControllerBase
  14. {
  15. private readonly ILogger<DistanceController> _logger;
  16. private readonly ILocationService _locationService;
  17. public ErrorModel errorModel;
  18. public DistanceController(ILogger<DistanceController> logger, ILocationService locationService)
  19. {
  20. _logger = logger;
  21. _locationService = locationService;
  22. }
  23. [Route("GetDistance")]
  24. [HttpGet]
  25. public ActionResult GetDistance(string travelFrom, string travelTo)
  26. {
  27. var vResult = new ErrorModel();
  28. var model = _locationService.GetDistanceByZipCode(travelFrom, travelTo);
  29. if (!string.IsNullOrEmpty(model.Distance))
  30. {
  31. return Ok(model);
  32. }
  33. else
  34. {
  35. vResult.Status = Convert.ToInt32(HttpStatusCode.BadRequest);
  36. vResult.Message = "Postal code(s) not found!";
  37. return BadRequest(vResult);
  38. }
  39. }
  40. [Route("GetZipCode")]
  41. [HttpGet]
  42. public ActionResult GetZipCode(string zipCode)
  43. {
  44. var vResult = new ErrorModel();
  45. var model = _locationService.GetManyByZipCode(zipCode);
  46. if (model.Count > 0)
  47. {
  48. return Ok(model);
  49. }
  50. else
  51. {
  52. vResult.Status = Convert.ToInt32(HttpStatusCode.BadRequest);
  53. vResult.Message = "Zip code not found";
  54. return BadRequest(vResult);
  55. }
  56. }
  57. }
  58. }