Blame view

src/MapsDb/DataService/BusStopDs.cs 8.79 KB
21446fef   Administrator   add marge commit
1
  using System;
32912d0b   Administrator   first commit
2
3
  using System.Collections.Generic;
  using System.Linq;
db607025   Administrator   add pagination
4
  using System.Reflection;
21446fef   Administrator   add marge commit
5
  using System.Text.RegularExpressions;
32912d0b   Administrator   first commit
6
  using System.Threading.Tasks;
4f948d42   Yarik   Mapper
7
  using AutoMapper;
b9b3b8dd   Administrator   add deteils and c...
8
  using MapsDb.Interfaces;
32912d0b   Administrator   first commit
9
10
  using MapsDb.Models;
  using MapsModels.DsModels;
94ffda14   Yarik   Delete action
11
  using Microsoft.EntityFrameworkCore;
4f948d42   Yarik   Mapper
12
  
32912d0b   Administrator   first commit
13
14
15
16
17
18
19
  namespace MapsDb.DataService
  {
      public class BusStopDs : IBusStopDs
      {
          private PostgresDbContext _context;
          public BusStopDs(){
              _context = new PostgresDbContext();
32912d0b   Administrator   first commit
20
          }
db607025   Administrator   add pagination
21
22
          public Task<IList<BusStopEditDsM>> GetIndexListAsync(PaginationDsM pagination){
              return Task.Factory.StartNew(()=> { return GetAllBusStop(pagination); });
32912d0b   Administrator   first commit
23
          }
db607025   Administrator   add pagination
24
          private IList<BusStopEditDsM> GetAllBusStop(PaginationDsM pagination)
32912d0b   Administrator   first commit
25
          {
21446fef   Administrator   add marge commit
26
27
28
29
30
31
32
33
  
              var filter =  pagination.filter;
  
              IQueryable<BusStop> data = _context.BusStop
              .Include(d=>d.Road)
              .Include(d=>d.Region)
              .Include(d=>d.SurfaceType)
              .Include(d=>d.StateCommon);
bce5562a   Administrator   add filter to bus...
34
  
21446fef   Administrator   add marge commit
35
36
37
38
39
40
41
42
              data = Filtering(pagination.filter, data);
              //.Where(d => d.Region.Name == filter);
  
              IQueryable<BusStopEditDsM> result = data
              .Select(BusStop => Mapper.Map<BusStopEditDsM>(BusStop))
              .Skip(pagination.from)
              .Take(pagination.perPage);
  
db607025   Administrator   add pagination
43
44
45
              switch (pagination.orderType())
              {
                  case "ASC":
21446fef   Administrator   add marge commit
46
                      return result.OrderBy(i => i.GetType().GetProperty(pagination.sort).GetValue(i, null)).ToList();
db607025   Administrator   add pagination
47
48
            
                  case "DESC":
21446fef   Administrator   add marge commit
49
                      return result.OrderByDescending(i => i.GetType().GetProperty(pagination.sort).GetValue(i, null)).ToList();
db607025   Administrator   add pagination
50
51
              
                  default:
21446fef   Administrator   add marge commit
52
                      return result.OrderByDescending(i => i.Id).ToList();
db607025   Administrator   add pagination
53
54
              }     
              
32912d0b   Administrator   first commit
55
56
          }
  
e02ee314   Administrator   add update and cr...
57
58
          public Task<BusStop> CreateAsync(BusStopEditDsM data){
                return Task.Factory.StartNew(()=> { return Create(data); });
32912d0b   Administrator   first commit
59
          }
e02ee314   Administrator   add update and cr...
60
          private BusStop Create(BusStopEditDsM data)
abec55bf   Administrator   Finish busStop mo...
61
          {   
e02ee314   Administrator   add update and cr...
62
63
64
              
              BusStop Model = InsertModel(data);
              _context.BusStop.Add(Model);
abec55bf   Administrator   Finish busStop mo...
65
              _context.SaveChanges();
e02ee314   Administrator   add update and cr...
66
67
68
69
70
71
72
73
              return Model;
          }
          public Task<BusStop> UpdateAsync(BusStopEditDsM data, int id){
              return Task.Factory.StartNew(()=> { return Update(data, id); });
          }
          private BusStop Update(BusStopEditDsM data, int id)
          {   
              BusStop Model = InsertModel(data);
db607025   Administrator   add pagination
74
              Model.Id = id;
e02ee314   Administrator   add update and cr...
75
76
77
78
79
              _context.BusStop.Update(Model);
              _context.SaveChanges();
              return Model;
          }
          public BusStop InsertModel(BusStopEditDsM data){
4f948d42   Yarik   Mapper
80
              BusStop Model = Mapper.Map<BusStop>(data);
e02ee314   Administrator   add update and cr...
81
              return Model;
32912d0b   Administrator   first commit
82
          }
21446fef   Administrator   add marge commit
83
84
85
86
87
88
89
90
91
          public IQueryable<BusStop> Filtering(string filters, IQueryable<BusStop> data){
              if(filters != null){
                 string[] FilterWords = filters.Split(';').Where(x => !string.IsNullOrEmpty(x)).ToArray();
                  foreach(string word in FilterWords){
                      string[] filter = Regex.Split(word.Substring(1), "(.*)_(.*)");
                      if(filter.Length < 3 ){
                          continue;
                      }
                      string field = char.ToUpper(filter[1][0]) + filter[1].Substring(1);
bce5562a   Administrator   add filter to bus...
92
                      string param = filter[2].ToLower();
21446fef   Administrator   add marge commit
93
                      if(word.StartsWith("$")){
bce5562a   Administrator   add filter to bus...
94
                          data = FilterByEndWith(field, param, data);
21446fef   Administrator   add marge commit
95
96
                      }
                      else if(word.StartsWith("^")){
bce5562a   Administrator   add filter to bus...
97
                          data = FilterByStartWith(field, param, data);
21446fef   Administrator   add marge commit
98
99
                      }
                      else if(word.StartsWith("*")){
bce5562a   Administrator   add filter to bus...
100
                          data = FilterByComtains(field, param, data);
21446fef   Administrator   add marge commit
101
102
                      }
                      else if(word.StartsWith("!")){
bce5562a   Administrator   add filter to bus...
103
                          data = FilterByNotEquals(field, param, data);
21446fef   Administrator   add marge commit
104
105
                      }
                      else if(word.StartsWith("=")){
bce5562a   Administrator   add filter to bus...
106
                          data = FilterByEquals(field, param, data);
21446fef   Administrator   add marge commit
107
108
109
110
111
112
113
114
115
                      }
                  }
              
              }
              return data;
          }
          public IQueryable<BusStop> FilterByComtains(string field, string param, IQueryable<BusStop> data){
              switch(field){
                  case "RoadId":
bce5562a   Administrator   add filter to bus...
116
                      return data.Where(i => i.Road.Name != null && i.Road.Name.ToLower().Contains(param) );
21446fef   Administrator   add marge commit
117
                  case "RegionId":
bce5562a   Administrator   add filter to bus...
118
                      return data.Where(i => i.Region.Name != null && i.Region.Name.ToLower().Contains(param) );
21446fef   Administrator   add marge commit
119
                  case "SurfaceTypeId":
bce5562a   Administrator   add filter to bus...
120
                      return data.Where(i => i.SurfaceType.Name != null && i.SurfaceType.Name.ToLower().Contains(param) );
21446fef   Administrator   add marge commit
121
                  case "StateCommonId":
bce5562a   Administrator   add filter to bus...
122
                      return data.Where(i => i.StateCommon.Value != null && i.StateCommon.Value.ToLower().Contains(param) );
21446fef   Administrator   add marge commit
123
                  default:
bce5562a   Administrator   add filter to bus...
124
                      return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).ToLower().Contains(param) );
21446fef   Administrator   add marge commit
125
126
127
128
129
              }
          }
          public IQueryable<BusStop> FilterByEquals(string field, string param, IQueryable<BusStop> data){
              switch(field){
                  case "RoadId":
bce5562a   Administrator   add filter to bus...
130
                      return data.Where(i => i.Road.Name != null && i.Road.Name.ToLower() == param );
21446fef   Administrator   add marge commit
131
                  case "RegionId":
bce5562a   Administrator   add filter to bus...
132
                      return data.Where(i => i.Region.Name != null && i.Region.Name.ToLower() == param );
21446fef   Administrator   add marge commit
133
                  case "SurfaceTypeId":
bce5562a   Administrator   add filter to bus...
134
                      return data.Where(i => i.SurfaceType.Name != null && i.SurfaceType.Name.ToLower() == param );
21446fef   Administrator   add marge commit
135
                  case "StateCommonId":
bce5562a   Administrator   add filter to bus...
136
                      return data.Where(i => i.StateCommon.Value != null && i.StateCommon.Value.ToLower() == param );
21446fef   Administrator   add marge commit
137
                  default:
bce5562a   Administrator   add filter to bus...
138
                  return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).ToLower() == param );
21446fef   Administrator   add marge commit
139
140
141
142
143
144
              }
  
          }
          public IQueryable<BusStop> FilterByNotEquals(string field, string param, IQueryable<BusStop> data){
             switch(field){
                  case "RoadId":
bce5562a   Administrator   add filter to bus...
145
                      return data.Where(i => i.Road.Name != null && i.Road.Name.ToLower() != param );
21446fef   Administrator   add marge commit
146
                  case "RegionId":
bce5562a   Administrator   add filter to bus...
147
                      return data.Where(i => i.Region.Name != null && i.Region.Name.ToLower() != param );
21446fef   Administrator   add marge commit
148
                  case "SurfaceTypeId":
bce5562a   Administrator   add filter to bus...
149
                      return data.Where(i => i.SurfaceType.Name != null && i.SurfaceType.Name.ToLower() != param );
21446fef   Administrator   add marge commit
150
                  case "StateCommonId":
bce5562a   Administrator   add filter to bus...
151
                      return data.Where(i => i.StateCommon.Value != null && i.StateCommon.Value.ToLower() != param );
21446fef   Administrator   add marge commit
152
                  default:
bce5562a   Administrator   add filter to bus...
153
                  return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).ToLower() != param );
21446fef   Administrator   add marge commit
154
155
156
157
158
              }
          }
          public IQueryable<BusStop> FilterByStartWith(string field, string param, IQueryable<BusStop> data){
              switch(field){
                  case "RoadId":
bce5562a   Administrator   add filter to bus...
159
                      return data.Where(i => i.Road.Name != null && i.Road.Name.ToLower().StartsWith(param) );
21446fef   Administrator   add marge commit
160
                  case "RegionId":
bce5562a   Administrator   add filter to bus...
161
                      return data.Where(i => i.Region.Name != null && i.Region.Name.ToLower().StartsWith(param) );
21446fef   Administrator   add marge commit
162
                  case "SurfaceTypeId":
bce5562a   Administrator   add filter to bus...
163
                      return data.Where(i => i.SurfaceType.Name != null && i.SurfaceType.Name.ToLower().StartsWith(param) );
21446fef   Administrator   add marge commit
164
                  case "StateCommonId":
bce5562a   Administrator   add filter to bus...
165
                      return data.Where(i => i.StateCommon.Value != null && i.StateCommon.Value.ToLower().StartsWith(param) );
21446fef   Administrator   add marge commit
166
                  default:
bce5562a   Administrator   add filter to bus...
167
                  return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).ToLower().StartsWith(param) );
21446fef   Administrator   add marge commit
168
169
170
171
172
              }
          }
          public IQueryable<BusStop> FilterByEndWith(string field, string param, IQueryable<BusStop> data){
            switch(field){
                  case "RoadId":
bce5562a   Administrator   add filter to bus...
173
                      return data.Where(i => i.Road.Name != null && i.Road.Name.ToLower().EndsWith(param) );
21446fef   Administrator   add marge commit
174
                  case "RegionId":
bce5562a   Administrator   add filter to bus...
175
                      return data.Where(i => i.Region.Name != null && i.Region.Name.ToLower().EndsWith(param) );
21446fef   Administrator   add marge commit
176
                  case "SurfaceTypeId":
bce5562a   Administrator   add filter to bus...
177
                      return data.Where(i => i.SurfaceType.Name != null && i.SurfaceType.Name.ToLower().EndsWith(param) );
21446fef   Administrator   add marge commit
178
                  case "StateCommonId":
bce5562a   Administrator   add filter to bus...
179
                      return data.Where(i => i.StateCommon.Value != null && i.StateCommon.Value.ToLower().EndsWith(param) );
21446fef   Administrator   add marge commit
180
                  default:
bce5562a   Administrator   add filter to bus...
181
                  return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).ToLower().EndsWith(param) );
21446fef   Administrator   add marge commit
182
183
              }
          }
e02ee314   Administrator   add update and cr...
184
          public async Task<int> DeleteAsync(int Id)
94ffda14   Yarik   Delete action
185
          {
db607025   Administrator   add pagination
186
              var busStop = await _context.BusStop.SingleOrDefaultAsync(x => x.Id == Id);
94ffda14   Yarik   Delete action
187
188
189
              _context.BusStop.Remove(busStop);
              return await _context.SaveChangesAsync();
          }
32912d0b   Administrator   first commit
190
191
      }
  }