Commit db607025a1a1700e16d22a77022da9c0b539c27e
1 parent
e02ee314
add pagination
Showing
8 changed files
with
64 additions
and
18 deletions
Show diff stats
src/Maps/Controllers/BusStopController.cs
| @@ -33,16 +33,30 @@ namespace Maps.Controllers | @@ -33,16 +33,30 @@ namespace Maps.Controllers | ||
| 33 | 33 | ||
| 34 | // GET: BusStop | 34 | // GET: BusStop |
| 35 | [HttpGet] | 35 | [HttpGet] |
| 36 | - public async Task<IActionResult> Index() | 36 | + public async Task<IActionResult> Index([FromQuery] PaginationDsM data) |
| 37 | { | 37 | { |
| 38 | - var busStops = await _busStopDs.GetIndexListAsync(); | 38 | + try |
| 39 | + { | ||
| 40 | + var busStops = await _busStopDs.GetIndexListAsync(data); | ||
| 41 | + | ||
| 42 | + BusStopListVm vm = new BusStopListVm | ||
| 43 | + { | ||
| 44 | + BusStopEditDsM = busStops.ToList() | ||
| 45 | + }; | ||
| 39 | 46 | ||
| 40 | - BusStopListVm vm = new BusStopListVm | 47 | + return Json(vm); |
| 48 | + } | ||
| 49 | + catch (NullReferenceException e) | ||
| 41 | { | 50 | { |
| 42 | - BusStopEditDsM = busStops.ToList() | ||
| 43 | - }; | 51 | + Response.StatusCode = 400; |
| 52 | + return Json("There is no field with name " + data.sort); | ||
| 53 | + } | ||
| 54 | + catch (Exception e) | ||
| 55 | + { | ||
| 56 | + return NotFound(); | ||
| 57 | + } | ||
| 58 | + | ||
| 44 | 59 | ||
| 45 | - return Json(vm); | ||
| 46 | } | 60 | } |
| 47 | 61 | ||
| 48 | [HttpGet] | 62 | [HttpGet] |
src/Maps/project.json
| @@ -24,6 +24,7 @@ | @@ -24,6 +24,7 @@ | ||
| 24 | "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", | 24 | "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", |
| 25 | "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", | 25 | "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", |
| 26 | "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview4-final", | 26 | "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview4-final", |
| 27 | + "System.Reflection.TypeExtensions": "4.3.0-preview1-24530-04", | ||
| 27 | "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { | 28 | "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { |
| 28 | "version": "1.0.0-preview2-final", | 29 | "version": "1.0.0-preview2-final", |
| 29 | "type": "build" | 30 | "type": "build" |
src/MapsDb/DataService/BusStopDs.cs
| 1 | using System.Collections.Generic; | 1 | using System.Collections.Generic; |
| 2 | using System.Linq; | 2 | using System.Linq; |
| 3 | +using System.Reflection; | ||
| 3 | using System.Threading.Tasks; | 4 | using System.Threading.Tasks; |
| 4 | using MapsDb.Interfaces; | 5 | using MapsDb.Interfaces; |
| 5 | using MapsDb.Models; | 6 | using MapsDb.Models; |
| @@ -13,14 +14,14 @@ namespace MapsDb.DataService | @@ -13,14 +14,14 @@ namespace MapsDb.DataService | ||
| 13 | public BusStopDs(){ | 14 | public BusStopDs(){ |
| 14 | _context = new PostgresDbContext(); | 15 | _context = new PostgresDbContext(); |
| 15 | } | 16 | } |
| 16 | - public Task<IList<BusStopEditDsM>> GetIndexListAsync(){ | ||
| 17 | - return Task.Factory.StartNew(GetAllBusStop); | 17 | + public Task<IList<BusStopEditDsM>> GetIndexListAsync(PaginationDsM pagination){ |
| 18 | + return Task.Factory.StartNew(()=> { return GetAllBusStop(pagination); }); | ||
| 18 | } | 19 | } |
| 19 | - private IList<BusStopEditDsM> GetAllBusStop() | 20 | + private IList<BusStopEditDsM> GetAllBusStop(PaginationDsM pagination) |
| 20 | { | 21 | { |
| 21 | - return _context.BusStop.Select(busStop => new BusStopEditDsM | 22 | + var data = _context.BusStop.Select(busStop => new BusStopEditDsM |
| 22 | { | 23 | { |
| 23 | - BusStopId = busStop.BusStopId, | 24 | + Id = busStop.Id, |
| 24 | RoadId = busStop.RoadId, | 25 | RoadId = busStop.RoadId, |
| 25 | RegionId = busStop.RegionId, | 26 | RegionId = busStop.RegionId, |
| 26 | SettlementId = busStop.SettlementId, | 27 | SettlementId = busStop.SettlementId, |
| @@ -34,7 +35,19 @@ namespace MapsDb.DataService | @@ -34,7 +35,19 @@ namespace MapsDb.DataService | ||
| 34 | YearBuild = busStop.YearBuild, | 35 | YearBuild = busStop.YearBuild, |
| 35 | YearRepair = busStop.YearRepair, | 36 | YearRepair = busStop.YearRepair, |
| 36 | StateCommonId = busStop.StateCommonId | 37 | StateCommonId = busStop.StateCommonId |
| 37 | - }).OrderByDescending(BusStop => BusStop.BusStopId).ToList(); | 38 | + }).Skip(pagination.from).Take(pagination.perPage); |
| 39 | + switch (pagination.orderType()) | ||
| 40 | + { | ||
| 41 | + case "ASC": | ||
| 42 | + return data.OrderBy(i => i.GetType().GetProperty(pagination.sort).GetValue(i, null)).ToList(); | ||
| 43 | + | ||
| 44 | + case "DESC": | ||
| 45 | + return data.OrderByDescending(i => i.GetType().GetProperty(pagination.sort).GetValue(i, null)).ToList(); | ||
| 46 | + | ||
| 47 | + default: | ||
| 48 | + return data.OrderBy(i => i.GetType().GetProperty(pagination.sort).GetValue(i, null)).ToList(); | ||
| 49 | + } | ||
| 50 | + | ||
| 38 | } | 51 | } |
| 39 | 52 | ||
| 40 | public Task<BusStop> CreateAsync(BusStopEditDsM data){ | 53 | public Task<BusStop> CreateAsync(BusStopEditDsM data){ |
| @@ -54,7 +67,7 @@ namespace MapsDb.DataService | @@ -54,7 +67,7 @@ namespace MapsDb.DataService | ||
| 54 | private BusStop Update(BusStopEditDsM data, int id) | 67 | private BusStop Update(BusStopEditDsM data, int id) |
| 55 | { | 68 | { |
| 56 | BusStop Model = InsertModel(data); | 69 | BusStop Model = InsertModel(data); |
| 57 | - Model.BusStopId = id; | 70 | + Model.Id = id; |
| 58 | _context.BusStop.Update(Model); | 71 | _context.BusStop.Update(Model); |
| 59 | _context.SaveChanges(); | 72 | _context.SaveChanges(); |
| 60 | return Model; | 73 | return Model; |
| @@ -79,7 +92,7 @@ namespace MapsDb.DataService | @@ -79,7 +92,7 @@ namespace MapsDb.DataService | ||
| 79 | } | 92 | } |
| 80 | public async Task<int> DeleteAsync(int Id) | 93 | public async Task<int> DeleteAsync(int Id) |
| 81 | { | 94 | { |
| 82 | - var busStop = await _context.BusStop.SingleOrDefaultAsync(x => x.BusStopId == Id); | 95 | + var busStop = await _context.BusStop.SingleOrDefaultAsync(x => x.Id == Id); |
| 83 | _context.BusStop.Remove(busStop); | 96 | _context.BusStop.Remove(busStop); |
| 84 | return await _context.SaveChangesAsync(); | 97 | return await _context.SaveChangesAsync(); |
| 85 | } | 98 | } |
src/MapsDb/Interfaces/IBusStopDs.cs
| @@ -6,7 +6,7 @@ namespace MapsDb.Interfaces | @@ -6,7 +6,7 @@ namespace MapsDb.Interfaces | ||
| 6 | { | 6 | { |
| 7 | public interface IBusStopDs | 7 | public interface IBusStopDs |
| 8 | { | 8 | { |
| 9 | - Task<IList<BusStopEditDsM>> GetIndexListAsync(); | 9 | + Task<IList<BusStopEditDsM>> GetIndexListAsync(PaginationDsM pagination); |
| 10 | Task<BusStop> CreateAsync(BusStopEditDsM busStop); | 10 | Task<BusStop> CreateAsync(BusStopEditDsM busStop); |
| 11 | Task<BusStop> UpdateAsync(BusStopEditDsM busStop, int id); | 11 | Task<BusStop> UpdateAsync(BusStopEditDsM busStop, int id); |
| 12 | Task<int> DeleteAsync(int Id); | 12 | Task<int> DeleteAsync(int Id); |
src/MapsDb/Models/BusStop.cs
| @@ -5,7 +5,7 @@ namespace MapsDb.Models | @@ -5,7 +5,7 @@ namespace MapsDb.Models | ||
| 5 | { | 5 | { |
| 6 | public partial class BusStop | 6 | public partial class BusStop |
| 7 | { | 7 | { |
| 8 | - public int BusStopId { get; set; } | 8 | + public int Id { get; set; } |
| 9 | public int? RoadId { get; set; } | 9 | public int? RoadId { get; set; } |
| 10 | public int? RegionId { get; set; } | 10 | public int? RegionId { get; set; } |
| 11 | public int? SettlementId { get; set; } | 11 | public int? SettlementId { get; set; } |
src/MapsDb/PostgresDbContext.cs
| @@ -18,7 +18,7 @@ namespace MapsDb | @@ -18,7 +18,7 @@ namespace MapsDb | ||
| 18 | { | 18 | { |
| 19 | entity.ToTable("bus_stop"); | 19 | entity.ToTable("bus_stop"); |
| 20 | 20 | ||
| 21 | - entity.Property(e => e.BusStopId).HasColumnName("bus_stop_id"); | 21 | + entity.Property(e => e.Id).HasColumnName("id"); |
| 22 | 22 | ||
| 23 | entity.Property(e => e.AreaLandAvailability).HasColumnName("area_land_availability"); | 23 | entity.Property(e => e.AreaLandAvailability).HasColumnName("area_land_availability"); |
| 24 | 24 |
src/MapsModels/DsModels/BusStopEditDsM.cs
| @@ -2,7 +2,7 @@ namespace MapsModels.DsModels | @@ -2,7 +2,7 @@ namespace MapsModels.DsModels | ||
| 2 | { | 2 | { |
| 3 | public class BusStopEditDsM | 3 | public class BusStopEditDsM |
| 4 | { | 4 | { |
| 5 | - public int? BusStopId { get; set; } | 5 | + public int? Id { get; set; } |
| 6 | public int? RoadId { get; set; } | 6 | public int? RoadId { get; set; } |
| 7 | public int? RegionId { get; set; } | 7 | public int? RegionId { get; set; } |
| 8 | public int? SettlementId { get; set; } | 8 | public int? SettlementId { get; set; } |
| 1 | +namespace MapsModels.DsModels | ||
| 2 | +{ | ||
| 3 | + public class PaginationDsM | ||
| 4 | + { | ||
| 5 | + public const string ASC = "ASC"; | ||
| 6 | + public const string DESC = "DESC"; | ||
| 7 | + public int from { get; set; } | ||
| 8 | + public int perPage { get; set; } | ||
| 9 | + public string sort { get; set; } | ||
| 10 | + public string orderType(){ | ||
| 11 | + if(sort.StartsWith("-")){ | ||
| 12 | + sort = sort.Substring(1); | ||
| 13 | + return DESC; | ||
| 14 | + } | ||
| 15 | + return ASC; | ||
| 16 | + } | ||
| 17 | + } | ||
| 18 | +} | ||
| 0 | \ No newline at end of file | 19 | \ No newline at end of file |