using System.Collections;
using System.Collections.Generic;
using Syncfusion.Blazor;
using Newtonsoft.Json;
using System.Linq;
using System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using EmulatorDatabase.Shared.Models;
namespace EmulatorDatabase.Server.Controllers
{
public class EmuTypeController : ControllerBase
{
private readonly EmuDbContext db;
public EmuTypeController(EmuDbContext _db)
{
db = _db;
}
public DbSet<EmuType> GetAll()
{
try
{
return db.EmuType;
}
catch
{
throw;
}
}
// POST api/<controller>
[HttpPost]
[Route("api/[controller]")]
public Object Post([FromBody]DataManagerRequest dm)
{
IEnumerable DataSource = GetAll().ToList();
if (dm.Search != null && dm.Search.Count > 0)
{
DataSource = DataOperations.PerformSearching(DataSource, dm.Search); //Search
}
if (dm.Sorted != null && dm.Sorted.Count > 0) //Sorting
{
DataSource = DataOperations.PerformSorting(DataSource, dm.Sorted);
}
if (dm.Where != null && dm.Where.Count > 0) //Filtering
{
DataSource = DataOperations.PerformFiltering(DataSource, dm.Where, dm.Where[0].Operator);
}
int count = DataSource.Cast<EmuType>().Count();
if (dm.Skip != 0)
{
DataSource = DataOperations.PerformSkip(DataSource, dm.Skip); //Paging
}
if (dm.Take != 0)
{
DataSource = DataOperations.PerformTake(DataSource, dm.Take);
}
return dm.RequiresCounts ? new { result = DataSource, count = count } : DataSource as object;
}
[HttpPost]
[Route("api/EmuType/Insert")]
public void Insert([FromBody]CRUDModel<EmuType> EmuType)
{
try
{
db.EmuType.Add(EmuType.Value);
db.SaveChanges();
}
catch
{
throw;
}
}
[HttpPost]
[Route("api/EmuType/Update")]
public void UpdateOrder([FromBody]CRUDModel<EmuType> EmuType)
{
try
{
db.Entry(EmuType.Value).State = EntityState.Modified;
db.SaveChanges();
}
catch
{
throw;
}
}
public class CRUDModel<T> where T : class
{
[JsonProperty("action")]
public string Action { get; set; }
[JsonProperty("table")]
public string Table { get; set; }
[JsonProperty("keyColumn")]
public string KeyColumn { get; set; }
[JsonProperty("key")]
public object Key { get; set; }
[JsonProperty("value")]
public T Value { get; set; }
[JsonProperty("added")]
public List<T> Added { get; set; }
[JsonProperty("changed")]
public List<T> Changed { get; set; }
[JsonProperty("deleted")]
public List<T> Deleted { get; set; }
[JsonProperty("params")]
public IDictionary<string, object> Params { get; set; }
}
}
}