using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using MapsDb.Interfaces; using MapsModels.ViewModels; using MapsModels.DsModels; using System; using System.Collections.Generic; namespace Maps.Controllers { public class RoadController : Controller { private readonly IRoadDs _roadDs; private readonly IRoadTypeDs _roadTypeDs; public RoadController(IRoadDs RoadDs, IRoadTypeDs RoadTypeDs) { _roadDs = RoadDs; _roadTypeDs = RoadTypeDs; } // GET: Road [HttpGet] public async Task Index([FromQuery] PaginationDsM data) { try { var roads = await _roadDs.GetIndexListAsync(data); RoadListVm vm = new RoadListVm { RoadEditDsM = roads.ToList() }; return Json(vm); } catch (NullReferenceException) { Response.StatusCode = 400; return Json("There is no field with name " + data.sort); } catch (Exception) { return NotFound(); } } [HttpGet] public async Task Directory(){ var RoadTypes = await _roadTypeDs.GetSelectListAsync(); CatalogListVm vm = new CatalogListVm { RoadTypeSelectListDsM = RoadTypes.ToList() }; return Json(vm); } [HttpPost] public async Task Create([FromBody] RoadEditDsM data) { var result = await _roadDs.CreateAsync(data); return Json(result); } [HttpPost] public async Task Update(int id, [FromBody] RoadEditDsM data){ await _roadDs.UpdateAsync(data,id); return Json(String.Empty); } [HttpDelete] public async Task Delete(int id) { try { int road = await _roadDs.DeleteAsync(id); return Json(road); } catch (ArgumentNullException ) { return NotFound(); } } [HttpGet] public async Task Relation(int Id) { List result = _roadDs.GetRelationAsync(Id); return Json(result); } [HttpGet] public async Task RoadByWay(int Id) { RoadVm result = _roadDs.GetByWay(Id); if (result == null) { return NotFound(); } else { return Json(result); } } [HttpGet] public async Task RoadByNode(int Id) { RoadVm result = _roadDs.GetByNode(Id); if (result == null) { return NotFound(); } else { return Json(result); } } } }