diff --git a/src/Maps/Controllers/RoadToCategoryController.cs b/src/Maps/Controllers/RoadToCategoryController.cs new file mode 100755 index 0000000..e9e3dbf --- /dev/null +++ b/src/Maps/Controllers/RoadToCategoryController.cs @@ -0,0 +1,104 @@ +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.EntityFrameworkCore; +using MapsDb; +using MapsDb.Interfaces; +using MapsDb.DataService; +using MapsModels.ViewModels; +using MapsModels.DsModels; +using System; + +namespace Maps.Controllers +{ + public class RoadToCategoryController : Controller + { + private readonly IRoadDs _roadDs; + private readonly IRegionDs _regionDs; + private readonly IRoadToCategoryDs _roadToCategoryDs; + private readonly IRoadCategoryDs _roadCategoryDs; + public RoadToCategoryController( + IRoadDs RoadDs, + IRegionDs RegionDs, + IRoadCategoryDs RoadCategoryDs, + IRoadToCategoryDs RoadToCategoryDs + ) + { + _roadDs = RoadDs; + _regionDs = RegionDs; + _roadCategoryDs = RoadCategoryDs; + _roadToCategoryDs = RoadToCategoryDs; + } + + // GET: BusStop + [HttpGet] + public async Task Index([FromQuery] PaginationDsM data) + { + + try + { + var Data = await _roadToCategoryDs.GetIndexListAsync(data); + + RoadToCategoryListVm vm = new RoadToCategoryListVm + { + RoadToCategoryEditDsM = Data.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 Road = await _roadDs.GetSelectListAsync(); + var Region = await _regionDs.GetSelectListAsync(); + var RoadCategory = await _roadCategoryDs.GetSelectListAsync(); + CatalogListVm vm = new CatalogListVm + { + RoadSelectListDsM = Road.ToList(), + RegionSelectListDsM = Region.ToList(), + RoadCategorySelectListDsM = RoadCategory.ToList() + }; + return Json(vm); + } + + + [HttpPost] + public async Task Create([FromBody] RoadToCategoryEditDsM data) + { + var result = await _roadToCategoryDs.CreateAsync(data); + return Json(result); + } + + [HttpPost] + public async Task Update(int id, [FromBody] RoadToCategoryEditDsM data){ + await _roadToCategoryDs.UpdateAsync(data,id); + return Json(String.Empty); + } + + + [HttpDelete] + public async Task Delete(int id) + { + try + { + int data = await _roadToCategoryDs.DeleteAsync(id); + return Json(data); + } + catch (ArgumentNullException ) + { + return NotFound(); + } + } + } +} diff --git a/src/Maps/Startup.cs b/src/Maps/Startup.cs index 90e749b..01016d1 100644 --- a/src/Maps/Startup.cs +++ b/src/Maps/Startup.cs @@ -55,6 +55,8 @@ namespace Maps cnf.CreateMap(); cnf.CreateMap(); cnf.CreateMap(); + cnf.CreateMap(); + cnf.CreateMap(); }); services.AddScoped(); @@ -77,6 +79,8 @@ namespace Maps services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); + services.AddScoped(); // Add framework services. services.AddApplicationInsightsTelemetry(Configuration); diff --git a/src/MapsDb/DataService/RoadCategoryDs.cs b/src/MapsDb/DataService/RoadCategoryDs.cs new file mode 100644 index 0000000..2acb406 --- /dev/null +++ b/src/MapsDb/DataService/RoadCategoryDs.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using MapsDb.Interfaces; +using MapsDb.Models; +using MapsModels.DsModels; +namespace MapsDb.DataService +{ + public class RoadCategoryDs : IRoadCategoryDs + { + private PostgresDbContext _context; + public RoadCategoryDs(){ + _context = new PostgresDbContext(); + } + public Task> GetSelectListAsync(){ + return Task.Factory.StartNew(GetSelectList); + } + private IList GetSelectList() + { + return _context.RoadCategory.Select(x => new RoadCategorySelectListDsM + { + RoadCategoryId = x.RoadCategoryId, + Value = x.Value + }).ToList(); + } + + } +} \ No newline at end of file diff --git a/src/MapsDb/DataService/RoadToCategoryDs.cs b/src/MapsDb/DataService/RoadToCategoryDs.cs new file mode 100644 index 0000000..1822ac9 --- /dev/null +++ b/src/MapsDb/DataService/RoadToCategoryDs.cs @@ -0,0 +1,73 @@ +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using MapsDb.Interfaces; +using MapsDb.Models; +using MapsModels.DsModels; +using Microsoft.EntityFrameworkCore; +using AutoMapper; +namespace MapsDb.DataService +{ + public class RoadToCategoryDs : IRoadToCategoryDs + { + private PostgresDbContext _context; + public RoadToCategoryDs(){ + _context = new PostgresDbContext(); + } + public Task> GetIndexListAsync(PaginationDsM pagination){ + return Task.Factory.StartNew(()=> { return GetAllRoadToCategory(pagination); }); + } + private IList GetAllRoadToCategory(PaginationDsM pagination) + { + var data = _context.RoadToCategory + .Select(RoadToCategory => Mapper.Map(RoadToCategory)) + .Skip(pagination.from).Take(pagination.perPage); + switch (pagination.orderType()) + { + case "ASC": + return data.OrderBy(i => i.GetType().GetProperty(pagination.sort).GetValue(i, null)).ToList(); + + case "DESC": + return data.OrderByDescending(i => i.GetType().GetProperty(pagination.sort).GetValue(i, null)).ToList(); + + default: + return data.OrderByDescending(i => i.Id).ToList(); + } + + } + + public Task CreateAsync(RoadToCategoryEditDsM data){ + return Task.Factory.StartNew(()=> { return Create(data); }); + } + private RoadToCategory Create(RoadToCategoryEditDsM data) + { + + RoadToCategory Model = InsertModel(data); + _context.RoadToCategory.Add(Model); + _context.SaveChanges(); + return Model; + } + public Task UpdateAsync(RoadToCategoryEditDsM data, int id){ + return Task.Factory.StartNew(()=> { return Update(data, id); }); + } + private RoadToCategory Update(RoadToCategoryEditDsM data, int id) + { + RoadToCategory Model = InsertModel(data); + Model.Id = id; + _context.RoadToCategory.Update(Model); + _context.SaveChanges(); + return Model; + } + public RoadToCategory InsertModel(RoadToCategoryEditDsM data){ + RoadToCategory Model = Mapper.Map(data); + return Model; + } + public async Task DeleteAsync(int Id) + { + var RoadToCategory = await _context.RoadToCategory.SingleOrDefaultAsync(x => x.Id == Id); + _context.RoadToCategory.Remove(RoadToCategory); + return await _context.SaveChangesAsync(); + } + } +} \ No newline at end of file diff --git a/src/MapsDb/Interfaces/IRoadCategoryDs.cs b/src/MapsDb/Interfaces/IRoadCategoryDs.cs new file mode 100644 index 0000000..714b009 --- /dev/null +++ b/src/MapsDb/Interfaces/IRoadCategoryDs.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using MapsModels.DsModels; +using MapsDb.Models; +namespace MapsDb.Interfaces +{ + public interface IRoadCategoryDs + { + Task> GetSelectListAsync(); + } +} \ No newline at end of file diff --git a/src/MapsDb/Interfaces/IRoadToCategoryDs.cs b/src/MapsDb/Interfaces/IRoadToCategoryDs.cs new file mode 100644 index 0000000..1137907 --- /dev/null +++ b/src/MapsDb/Interfaces/IRoadToCategoryDs.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using MapsModels.DsModels; +using MapsDb.Models; +namespace MapsDb.Interfaces +{ + public interface IRoadToCategoryDs + { + Task> GetIndexListAsync(PaginationDsM pagination); + Task CreateAsync(RoadToCategoryEditDsM data); + Task UpdateAsync(RoadToCategoryEditDsM data, int id); + Task DeleteAsync(int Id); + } +} \ No newline at end of file diff --git a/src/MapsModels/DsModels/RoadCategorySelectListDsM.cs b/src/MapsModels/DsModels/RoadCategorySelectListDsM.cs new file mode 100644 index 0000000..125cbf6 --- /dev/null +++ b/src/MapsModels/DsModels/RoadCategorySelectListDsM.cs @@ -0,0 +1,8 @@ +namespace MapsModels.DsModels +{ + public class RoadCategorySelectListDsM + { + public int RoadCategoryId { get; set; } + public string Value { get; set; } + } +} \ No newline at end of file diff --git a/src/MapsModels/DsModels/RoadToCategoryEditDsM.cs b/src/MapsModels/DsModels/RoadToCategoryEditDsM.cs new file mode 100644 index 0000000..18c5f42 --- /dev/null +++ b/src/MapsModels/DsModels/RoadToCategoryEditDsM.cs @@ -0,0 +1,14 @@ +namespace MapsModels.DsModels +{ + public class RoadToCategoryEditDsM + { + public int Id { get; set; } + public int? RegionId { get; set; } + public int? RoadId { get; set; } + public double? Begin { get; set; } + public double? End { get; set; } + public double? Distance { get; set; } + public int? RoadCategoryId { get; set; } + + } +} \ No newline at end of file diff --git a/src/MapsModels/ViewModels/CatalogListVm.cs b/src/MapsModels/ViewModels/CatalogListVm.cs index 7af4bad..b24489f 100644 --- a/src/MapsModels/ViewModels/CatalogListVm.cs +++ b/src/MapsModels/ViewModels/CatalogListVm.cs @@ -17,5 +17,6 @@ namespace MapsModels.ViewModels public List RoadTypeSelectListDsM { get; set; } public List OrganizationSelectListDsM { get; set; } public List SettlementLocationSelectListDsM { get; set; } + public List RoadCategorySelectListDsM { get; set; } } } diff --git a/src/MapsModels/ViewModels/RoadToCategoryListVm.cs b/src/MapsModels/ViewModels/RoadToCategoryListVm.cs new file mode 100644 index 0000000..5d6b6ff --- /dev/null +++ b/src/MapsModels/ViewModels/RoadToCategoryListVm.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using MapsModels.DsModels; + +namespace MapsModels.ViewModels +{ + public class RoadToCategoryListVm + { + public List RoadToCategoryEditDsM { get; set; } + } +} -- libgit2 0.21.4