public GridResponse GridDelete([FromGridRequest] string requestString) { try { var request = GridRequest.Deserialize(requestString); var range = dbContext.Employee.Where(e => request.Selected.Contains(e.Id)); dbContext.Employee.RemoveRange(range); dbContext.SaveChanges(); return(GridResponse.Success); } catch (Exception ex) { return(GridResponse.Error(GetMessage(ex))); } }
public GridResponse GridSave([FromGridRequest] string requestString) { try { var request = GridRequest.Deserialize(requestString); //var records = new List<object>(); foreach (var change in request.Changes) { var id = Convert.ToInt32(change[Columns.ID.field]); var employee = dbContext.Employee.Find(id); if (employee != null) { var viewModel = GetEmployeeViewModel(employee); if (change.TryGetValue(Columns.Name.field, out object name)) { viewModel.Name = name.ToString(); } if (change.TryGetValue(Columns.Employed.field, out object employed)) { viewModel.Employed = Convert.ToInt16(employed); } if (change.TryGetValue(Columns.Rating.field, out object rating)) { viewModel.Rating = Convert.ToSingle(rating); } if (change.TryGetValue(Columns.RatingYear.field, out object ratingYear)) { viewModel.RatingYear = Convert.ToInt32(ratingYear); } UpdateEmployeeFromView(employee, viewModel); } //records.Add(ToGridRecord(employee)); } dbContext.SaveChanges(); //return new GridResponse { records = records }; return(GridResponse.Success); // The grid seems to just reload anyway. } catch (Exception ex) { return(GridResponse.Error(GetMessage(ex))); } }
public async Task <string> GridGet([FromGridRequest] string requestString) { try { var request = GridRequest.Deserialize(requestString); IQueryable <Employee> query = dbContext.Employee; // https://github.com/dotnet/efcore/issues/11488 //foreach (var search in request.Search) //{ // if (search.value == null) continue; // Func<string, bool> containsFunc = ...; // if (search.field == Columns.Name.field) // query = query.Where(e => containsFunc(e.Name)); //} var count = query.CountAsync(); IEnumerable <Employee> records = await query .OrderByDescending(e => e.Employed + e.YearsEmployed) .OrderByDescending(e => e.Employed) .Skip(request.Offset).Take(request.Limit) .Include(e => e.Position) .ToListAsync(); return(new GridResponse { total = await count, records = records.Select(ToGridRecord) }.Serialize()); } catch (Exception ex) { return(GridResponse.Error(ex.Message).Serialize()); } }