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
{
#region Public Constructors
public CacheService()
{
_memoryCache = MemoryCache.Default;
}
#endregion Public Constructors
#region Private Fields
private readonly MemoryCache _memoryCache;
#endregion Private Fields
#region Public Methods
public bool Contains(CacheType type, int userId = 0)
{
var key = GetKey(userId, type);
return MemoryCache.Default[key.ToString()] != null;
return _memoryCache.Contains(key.ToString());
}
public void Delete(CacheType type, int userId = 0)
{
var key = GetKey(userId, type);
MemoryCache.Default.Remove(key.ToString());
_memoryCache.Remove(key.ToString());
}
public T Get<T>(CacheType type, int userId = 0)
{
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)
@@ -38,7 +53,7 @@ namespace skydiveLogs_api.DomainBusiness
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)

View File

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

View File

@@ -63,6 +63,16 @@ namespace skydiveLogs_api.DomainBusiness
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)
{
var myJump = GetJumpById(id);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -56,11 +56,35 @@ namespace skydiveLogs_api.Infrastructure
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)
{
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)
{
return _col.Update(updatedJump);

View File

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

View File

@@ -55,6 +55,11 @@ namespace skydiveLogs_api.Infrastructure
return _col.FindById(new BsonValue(id));
}
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(UserImage 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);
}
public int GetCount()
{
throw new System.NotImplementedException();
}
public bool Update(User updated)
{
throw new NotImplementedException();

View File

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

View File

@@ -5,6 +5,7 @@ using skydiveLogs_api.DataContract;
using skydiveLogs_api.Domain;
using skydiveLogs_api.DomainBusiness.Interfaces;
using System.Collections.Generic;
using System.Linq;
namespace skydiveLogs_api.Controllers
{
@@ -34,11 +35,32 @@ namespace skydiveLogs_api.Controllers
// GET: api/Jump
[HttpGet]
[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

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
}
}