==========Problem==========
Cannot add functions to Next previous last first for create action using repository
pattern based on EmployeeId field
==========Example==========
Employee Id : 5 as last record
IF create action view get loaded it must show max+1 for Employee Id meaning it will show 6
IF Click NextButton become 6
IF Click previousButton become 4 and get another data related as name age,etc...
IF Click LastButton become 5 and get another data related as name age,etc...
IF Click FirstButton become 1 and get another data related as name age,etc...
=======technology Used============
I work in visual studio 2017 asp.net core 2.1 sql server 2012 using repository pattern generic
What I have tried:
===========Employee Controller Have Create Action=====
public class EmployeesController : Controller
{
private readonly IEmployees _context;
public EmployeesController(IEmployees context)
{
_context = context;
}
public IActionResult Create()
{
How to call functions below
getNext()
getprevious()
getlast()
getfirst()
return View();
}
===============Generic Repository Pattern(required function I dont know======
public class EFRepository<T> : IRepository<T> where T : class
{
protected TabDbContext _context { get; set; }
public EFRepository(TabDbContext context)
{
_context = context;
}
getNext(){
what implementation write
}
getprevious()
{
what implementation write
}
getlast()
{
what implementation write
}
getfirst()
{
what implementation write
}
public IQueryable<T> GetAll()
{
return _context.Set<T>();
}
public virtual async Task<ICollection<T>> GetAllAsyn()
{
return await _context.Set<T>().ToListAsync();
}
public virtual T Get(int id)
{
return _context.Set<T>().Find(id);
}
public virtual async Task<T> GetAsync(int id)
{
return await _context.Set<T>().FindAsync(id);
}
public virtual T Find(Expression<Func<T, bool>> match)
{
return _context.Set<T>().SingleOrDefault(match);
}
public virtual async Task<T> FindAsync(Expression<Func<T, bool>> match)
{
return await _context.Set<T>().SingleOrDefaultAsync(match);
}
public ICollection<T> FindAll(Expression<Func<T, bool>> match)
{
return _context.Set<T>().Where(match).ToList();
}
public async Task<ICollection<T>> FindAllAsync(Expression<Func<T, bool>> match)
{
return await _context.Set<T>().Where(match).ToListAsync();
}
}
=====Buttons Navigation on Create View Of Employee Controller====
<div class="title_of_div">
<button id="BtnFirst" style="display:inline">First</button>
<button id="BtnNext" style="display:inline">Next</button>
<button id="BtnPrevious" style="display: inline">Previous</button>
<button id="BtnLast" style="display: inline">Last</button>
</div>
view create controlls
===========Create Action Get==========
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="EmployeeId" class="control-label"></label>
<input asp-for="EmployeeId" class="form-control" />
<span asp-validation-for="EmployeeId" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="BranchCode" class="control-label"></label>
<input asp-for="BranchCode" class="form-control" />
<span asp-validation-for="BranchCode" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="EmployeeName" class="control-label"></label>
<input asp-for="EmployeeName" class="form-control" />
<span asp-validation-for="EmployeeName" class="text-danger"></span>
</div>
</form>
</div>
</div>
============Model related data=============
public class Employee
{
[Key]
public int EmployeeId { get; set; }
public int BranchCode { get; set; }
public string EmployeeName { get; set; }
}