Add an endpoint to call the lof of jumps by page.

This commit is contained in:
Sébastien André
2022-05-08 16:42:04 +02:00
parent 0745943c5b
commit 9e18b7708a
16 changed files with 142 additions and 7 deletions

View File

@@ -7,24 +7,39 @@ namespace skydiveLogs_api.DomainBusiness
{ {
public class CacheService : ICacheService public class CacheService : ICacheService
{ {
#region Public Constructors
public CacheService()
{
_memoryCache = MemoryCache.Default;
}
#endregion Public Constructors
#region Private Fields
private readonly MemoryCache _memoryCache;
#endregion Private Fields
#region Public Methods #region Public Methods
public bool Contains(CacheType type, int userId = 0) public bool Contains(CacheType type, int userId = 0)
{ {
var key = GetKey(userId, type); var key = GetKey(userId, type);
return MemoryCache.Default[key.ToString()] != null; return _memoryCache.Contains(key.ToString());
} }
public void Delete(CacheType type, int userId = 0) public void Delete(CacheType type, int userId = 0)
{ {
var key = GetKey(userId, type); var key = GetKey(userId, type);
MemoryCache.Default.Remove(key.ToString()); _memoryCache.Remove(key.ToString());
} }
public T Get<T>(CacheType type, int userId = 0) public T Get<T>(CacheType type, int userId = 0)
{ {
var key = GetKey(userId, type); var key = GetKey(userId, type);
return (T)MemoryCache.Default[key.ToString()]; return (T)_memoryCache.Get(key.ToString());
} }
public void Put(CacheType type, object value, int duration, int userId = 0) public void Put(CacheType type, object value, int duration, int userId = 0)
@@ -38,7 +53,7 @@ namespace skydiveLogs_api.DomainBusiness
AbsoluteExpiration = DateTime.Now.AddMilliseconds(duration) AbsoluteExpiration = DateTime.Now.AddMilliseconds(duration)
}; };
MemoryCache.Default.Set(key.ToString(), value, policy); _memoryCache.Set(key.ToString(), value, policy);
} }
private string GetKey(int userId, CacheType type) private string GetKey(int userId, CacheType type)

View File

@@ -19,6 +19,10 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces
Jump GetJumpById(int id); Jump GetJumpById(int id);
int GetJumpCount();
IEnumerable<Jump> GetJumpsByIndexes(int beginIndex, int endIndex);
void UpdateJump(int id, Jump jump); void UpdateJump(int id, Jump jump);
#endregion Public Methods #endregion Public Methods

View File

@@ -63,6 +63,16 @@ namespace skydiveLogs_api.DomainBusiness
return _jumpRepository.GetById(id); return _jumpRepository.GetById(id);
} }
public int GetJumpCount()
{
return _jumpRepository.GetCount(_identityService.ConnectedUser);
}
public IEnumerable<Jump> GetJumpsByIndexes(int beginIndex, int endIndex)
{
return _jumpRepository.GetBetweenIndex(_identityService.ConnectedUser, beginIndex, endIndex);
}
public void UpdateJump(int id, Jump updatedJump) public void UpdateJump(int id, Jump updatedJump)
{ {
var myJump = GetJumpById(id); var myJump = GetJumpById(id);

View File

@@ -11,6 +11,10 @@ namespace skydiveLogs_api.DomainService.Repositories
IEnumerable<Jump> GetAll(User user); IEnumerable<Jump> GetAll(User user);
IEnumerable<Jump> GetBetweenIndex(User user, int beginIndex, int endIndex);
int GetCount(User user);
#endregion Public Methods #endregion Public Methods
} }
} }

View File

@@ -12,6 +12,8 @@ namespace skydiveLogs_api.DomainService.Repositories
T GetById(int id); T GetById(int id);
int GetCount();
bool Update(T updated); bool Update(T updated);
#endregion Public Methods #endregion Public Methods

View File

@@ -48,6 +48,11 @@ namespace skydiveLogs_api.Infrastructure
return _col.FindById(new BsonValue(id)); return _col.FindById(new BsonValue(id));
} }
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(Aircraft aircraft) public bool Update(Aircraft aircraft)
{ {
return _col.Update(aircraft); return _col.Update(aircraft);

View File

@@ -48,6 +48,11 @@ namespace skydiveLogs_api.Infrastructure
return _col.FindById(new BsonValue(id)); return _col.FindById(new BsonValue(id));
} }
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(DropZone updatedDz) public bool Update(DropZone updatedDz)
{ {
return _col.Update(updatedDz); return _col.Update(updatedDz);

View File

@@ -59,6 +59,11 @@ namespace skydiveLogs_api.Infrastructure
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(FavoriteDropZone updated) public bool Update(FavoriteDropZone updated)
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();

View File

@@ -55,6 +55,11 @@ namespace skydiveLogs_api.Infrastructure
return _col.FindById(new BsonValue(id)); return _col.FindById(new BsonValue(id));
} }
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(Gear updatedGear) public bool Update(Gear updatedGear)
{ {
return _col.Update(updatedGear); return _col.Update(updatedGear);

View File

@@ -56,11 +56,35 @@ namespace skydiveLogs_api.Infrastructure
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
public IEnumerable<Jump> GetBetweenIndex(User user, int beginIndex, int endIndex)
{
return _col.Include(x => x.Aircraft)
.Include(x => x.DropZone)
.Include(x => x.Gear)
.Include(x => x.JumpType)
.Query()
.OrderByDescending(j => j.JumpDate)
.Where(j => j.User.Id == user.Id)
.Limit(endIndex - beginIndex)
.Offset(beginIndex)
.ToList();
}
public Jump GetById(int id) public Jump GetById(int id)
{ {
return _col.FindById(new BsonValue(id)); return _col.FindById(new BsonValue(id));
} }
public int GetCount(User user)
{
return _col.Count(j => j.User.Id == user.Id);
}
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(Jump updatedJump) public bool Update(Jump updatedJump)
{ {
return _col.Update(updatedJump); return _col.Update(updatedJump);

View File

@@ -48,6 +48,11 @@ namespace skydiveLogs_api.Infrastructure
return _col.FindById(new BsonValue(id)); return _col.FindById(new BsonValue(id));
} }
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(JumpType updatedJumpType) public bool Update(JumpType updatedJumpType)
{ {
return _col.Update(updatedJumpType); return _col.Update(updatedJumpType);

View File

@@ -55,6 +55,11 @@ namespace skydiveLogs_api.Infrastructure
return _col.FindById(new BsonValue(id)); return _col.FindById(new BsonValue(id));
} }
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(UserImage image) public bool Update(UserImage image)
{ {
return _col.Update(image); return _col.Update(image);

View File

@@ -53,6 +53,11 @@ namespace skydiveLogs_api.Infrastructure
return _col.FindOne(u => u.Login == login && u.Password == password); return _col.FindOne(u => u.Login == login && u.Password == password);
} }
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(User updated) public bool Update(User updated)
{ {
throw new NotImplementedException(); throw new NotImplementedException();

View File

@@ -55,6 +55,11 @@ namespace skydiveLogs_api.Infrastructure
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(UserStats stats) public bool Update(UserStats stats)
{ {
//col.UpdateMany(x => new Customer { Name //col.UpdateMany(x => new Customer { Name

View File

@@ -5,6 +5,7 @@ using skydiveLogs_api.DataContract;
using skydiveLogs_api.Domain; using skydiveLogs_api.Domain;
using skydiveLogs_api.DomainBusiness.Interfaces; using skydiveLogs_api.DomainBusiness.Interfaces;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
namespace skydiveLogs_api.Controllers namespace skydiveLogs_api.Controllers
{ {
@@ -34,11 +35,32 @@ namespace skydiveLogs_api.Controllers
// GET: api/Jump // GET: api/Jump
[HttpGet] [HttpGet]
[EnableCors] [EnableCors]
public IEnumerable<JumpResp> Get() public JumpListResp Get()
{ {
var result = _jumpService.GetAllJumps(); var tmp = _jumpService.GetAllJumps();
var result = new JumpListResp
{
Rows = _mapper.Map<IEnumerable<JumpResp>>(tmp),
Count = tmp.Count()
};
return _mapper.Map<IEnumerable<JumpResp>>(result); return result;
}
// GET: api/Jump/5/10
[HttpGet("{beginJumpIndex}/{endJumpIndex}")]
[EnableCors]
public JumpListResp Get(int beginJumpIndex, int endJumpIndex)
{
var totalJumps = _jumpService.GetJumpCount();
var tmp = _jumpService.GetJumpsByIndexes(beginJumpIndex, endJumpIndex);
var result = new JumpListResp
{
Rows = _mapper.Map<IEnumerable<JumpResp>>(tmp),
Count = totalJumps
};
return result;
} }
// GET: api/Jump/5 // GET: api/Jump/5

View File

@@ -0,0 +1,14 @@
using System.Collections.Generic;
namespace skydiveLogs_api.DataContract
{
public class JumpListResp
{
#region Public Properties
public int Count { get; set; }
public IEnumerable<JumpResp> Rows { get; set; }
#endregion Public Properties
}
}