Implementation to have a favorite DZ by user.
This commit is contained in:
9
Back/skydiveLogs-api.Domain/FavoriteDropZone.cs
Normal file
9
Back/skydiveLogs-api.Domain/FavoriteDropZone.cs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
namespace skydiveLogs_api.Domain
|
||||||
|
{
|
||||||
|
public class FavoriteDropZone
|
||||||
|
{
|
||||||
|
public DropZone DropZone { get; set; }
|
||||||
|
|
||||||
|
public User User { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v5.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v5.0": {
|
|
||||||
"skydiveLogs-api.Domain/1.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"skydiveLogs-api.Domain.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"skydiveLogs-api.Domain/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,15 +4,17 @@ using System.Collections.Generic;
|
|||||||
using skydiveLogs_api.DomainBusiness.Interfaces;
|
using skydiveLogs_api.DomainBusiness.Interfaces;
|
||||||
using skydiveLogs_api.DomainService.Repositories;
|
using skydiveLogs_api.DomainService.Repositories;
|
||||||
using skydiveLogs_api.Domain;
|
using skydiveLogs_api.Domain;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace skydiveLogs_api.DomainBusiness
|
namespace skydiveLogs_api.DomainBusiness
|
||||||
{
|
{
|
||||||
public class DropZoneService : IDropZoneService
|
public class DropZoneService : IDropZoneService
|
||||||
{
|
{
|
||||||
public DropZoneService(IDropZoneRepository dropZoneRepository)
|
public DropZoneService(IDropZoneRepository dropZoneRepository,
|
||||||
|
IFavoriteDropZoneRepository favoriteDropZoneRepository)
|
||||||
{
|
{
|
||||||
_dropZoneRepository = dropZoneRepository;
|
_dropZoneRepository = dropZoneRepository;
|
||||||
|
_favoriteDropZoneRepository = favoriteDropZoneRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddNewDz(DropZone newdropZone)
|
public void AddNewDz(DropZone newdropZone)
|
||||||
@@ -25,9 +27,31 @@ namespace skydiveLogs_api.DomainBusiness
|
|||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<DropZone> GetAllDzs()
|
public IEnumerable<DropZone> GetAllDzs(User connectedUser)
|
||||||
{
|
{
|
||||||
return _dropZoneRepository.GetAll();
|
var results = Enumerable.Empty<DropZone>();
|
||||||
|
|
||||||
|
var dropzones = _dropZoneRepository.GetAll();
|
||||||
|
var favorites = _favoriteDropZoneRepository.GetAll(connectedUser);
|
||||||
|
|
||||||
|
|
||||||
|
results = from dropZone in dropzones
|
||||||
|
join favorite in favorites on dropZone equals favorite.DropZone into tmp
|
||||||
|
from favoriteDz in tmp.DefaultIfEmpty()
|
||||||
|
select new DropZone
|
||||||
|
{
|
||||||
|
Id = dropZone.Id,
|
||||||
|
Address = dropZone.Address,
|
||||||
|
Email = dropZone.Email,
|
||||||
|
Latitude = dropZone.Latitude,
|
||||||
|
Longitude = dropZone.Longitude,
|
||||||
|
Name = dropZone.Name,
|
||||||
|
Type = dropZone.Type,
|
||||||
|
Website = dropZone.Website,
|
||||||
|
IsFavorite = !(favoriteDz == null)
|
||||||
|
};
|
||||||
|
|
||||||
|
return results.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public DropZone GetDzById(int id)
|
public DropZone GetDzById(int id)
|
||||||
@@ -42,6 +66,30 @@ namespace skydiveLogs_api.DomainBusiness
|
|||||||
return _dropZoneRepository.Update(dropZone);
|
return _dropZoneRepository.Update(dropZone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool AddToFavorite(int dzId, User connectedUser)
|
||||||
|
{
|
||||||
|
var dzToAddToFavorite = GetDzById(dzId);
|
||||||
|
|
||||||
|
var favoriteDz = new FavoriteDropZone
|
||||||
|
{
|
||||||
|
DropZone = dzToAddToFavorite,
|
||||||
|
User = connectedUser
|
||||||
|
};
|
||||||
|
|
||||||
|
var result = _favoriteDropZoneRepository.Add(favoriteDz);
|
||||||
|
|
||||||
|
return result > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool RemoveToFavorite(int dzId, User connectedUser)
|
||||||
|
{
|
||||||
|
var result = _favoriteDropZoneRepository.Delete(dzId, connectedUser.Id);
|
||||||
|
|
||||||
|
return result > 0;
|
||||||
|
}
|
||||||
|
|
||||||
private readonly IDropZoneRepository _dropZoneRepository;
|
private readonly IDropZoneRepository _dropZoneRepository;
|
||||||
|
|
||||||
|
private readonly IFavoriteDropZoneRepository _favoriteDropZoneRepository;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces
|
|||||||
{
|
{
|
||||||
public interface IDropZoneService
|
public interface IDropZoneService
|
||||||
{
|
{
|
||||||
IEnumerable<DropZone> GetAllDzs();
|
IEnumerable<DropZone> GetAllDzs(User connectedUser);
|
||||||
|
|
||||||
DropZone GetDzById(int id);
|
DropZone GetDzById(int id);
|
||||||
|
|
||||||
@@ -16,5 +16,9 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces
|
|||||||
bool UpdateDz(int id, DropZone dropZone);
|
bool UpdateDz(int id, DropZone dropZone);
|
||||||
|
|
||||||
void AddNewDz(DropZone dropZone);
|
void AddNewDz(DropZone dropZone);
|
||||||
|
|
||||||
|
bool AddToFavorite(int dzId, User connectedUser);
|
||||||
|
|
||||||
|
bool RemoveToFavorite(int dzId, User connectedUser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
using skydiveLogs_api.Domain;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace skydiveLogs_api.DomainService.Repositories
|
||||||
|
{
|
||||||
|
public interface IFavoriteDropZoneRepository : IRepository<FavoriteDropZone>
|
||||||
|
{
|
||||||
|
int Delete(int dropZoneId, int userId);
|
||||||
|
|
||||||
|
IEnumerable<FavoriteDropZone> GetAll(User user);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\skydiveLogs-api.Model\skydiveLogs-api.Domain.csproj" />
|
<ProjectReference Include="..\skydiveLogs-api.Domain\skydiveLogs-api.Domain.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
using LiteDB;
|
||||||
|
|
||||||
|
using skydiveLogs_api.Domain;
|
||||||
|
using skydiveLogs_api.DomainService.Repositories;
|
||||||
|
using skydiveLogs_api.Infrastructure.Interfaces;
|
||||||
|
|
||||||
|
|
||||||
|
namespace skydiveLogs_api.Infrastructure
|
||||||
|
{
|
||||||
|
public class FavoriteDropZoneRepository : IFavoriteDropZoneRepository
|
||||||
|
{
|
||||||
|
public FavoriteDropZoneRepository(IDataProvider dataProvider)
|
||||||
|
{
|
||||||
|
_dataProvider = dataProvider;
|
||||||
|
_col = _dataProvider.CollOfFavoriteDropZone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Delete(int dropZoneId, int userId)
|
||||||
|
{
|
||||||
|
return _col.DeleteMany(d => d.DropZone.Id == dropZoneId && d.User.Id == userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Add(FavoriteDropZone favoriteToAdd)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var tmp = _col.Insert(favoriteToAdd);
|
||||||
|
result = tmp.AsInt32;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
result = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<FavoriteDropZone> GetAll(User user)
|
||||||
|
{
|
||||||
|
return _col.Query()
|
||||||
|
.Where(j => j.User.Id == user.Id)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public FavoriteDropZone GetById(int id)
|
||||||
|
{
|
||||||
|
throw new System.NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Update(FavoriteDropZone updated)
|
||||||
|
{
|
||||||
|
throw new System.NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<FavoriteDropZone> GetAll()
|
||||||
|
{
|
||||||
|
throw new System.NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly IDataProvider _dataProvider;
|
||||||
|
|
||||||
|
private readonly ILiteCollection<FavoriteDropZone> _col;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,5 +24,7 @@ namespace skydiveLogs_api.Infrastructure.Interfaces
|
|||||||
ILiteCollection<User> CollOfUser { get; }
|
ILiteCollection<User> CollOfUser { get; }
|
||||||
|
|
||||||
ILiteCollection<UserImage> CollOfImage { get; }
|
ILiteCollection<UserImage> CollOfImage { get; }
|
||||||
|
|
||||||
|
ILiteCollection<FavoriteDropZone> CollOfFavoriteDropZone { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace skydiveLogs_api.Infrastructure
|
|||||||
.Include(x => x.DropZone)
|
.Include(x => x.DropZone)
|
||||||
.Include(x => x.Gear)
|
.Include(x => x.Gear)
|
||||||
.Include(x => x.JumpType)
|
.Include(x => x.JumpType)
|
||||||
.Include(x => x.User)
|
//.Include(x => x.User)
|
||||||
.Query()
|
.Query()
|
||||||
.Where(j => j.User.Id == user.Id)
|
.Where(j => j.User.Id == user.Id)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ namespace skydiveLogs_api.Infrastructure
|
|||||||
BsonMapper.Global.Entity<UserImage>().DbRef(x => x.User, "User");
|
BsonMapper.Global.Entity<UserImage>().DbRef(x => x.User, "User");
|
||||||
|
|
||||||
BsonMapper.Global.Entity<Gear>().DbRef(x => x.User, "User");
|
BsonMapper.Global.Entity<Gear>().DbRef(x => x.User, "User");
|
||||||
|
|
||||||
|
BsonMapper.Global.Entity<FavoriteDropZone>().DbRef(x => x.User, "User");
|
||||||
|
BsonMapper.Global.Entity<FavoriteDropZone>().DbRef(x => x.DropZone, "DropZone");
|
||||||
}
|
}
|
||||||
|
|
||||||
public ILiteCollection<T> GetCollection<T>()
|
public ILiteCollection<T> GetCollection<T>()
|
||||||
@@ -48,5 +51,7 @@ namespace skydiveLogs_api.Infrastructure
|
|||||||
public ILiteCollection<User> CollOfUser => _db.GetCollection<User>();
|
public ILiteCollection<User> CollOfUser => _db.GetCollection<User>();
|
||||||
|
|
||||||
public ILiteCollection<UserImage> CollOfImage => _db.GetCollection<UserImage>();
|
public ILiteCollection<UserImage> CollOfImage => _db.GetCollection<UserImage>();
|
||||||
|
|
||||||
|
public ILiteCollection<FavoriteDropZone> CollOfFavoriteDropZone => _db.GetCollection<FavoriteDropZone>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace skydiveLogs_api.Controllers
|
|||||||
[EnableCors]
|
[EnableCors]
|
||||||
public IEnumerable<DropZoneResp> Get()
|
public IEnumerable<DropZoneResp> Get()
|
||||||
{
|
{
|
||||||
var result = _dropZoneService.GetAllDzs();
|
var result = _dropZoneService.GetAllDzs(ConnectedUser);
|
||||||
|
|
||||||
return _mapper.Map<IEnumerable<DropZoneResp>>(result);
|
return _mapper.Map<IEnumerable<DropZoneResp>>(result);
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,7 @@ namespace skydiveLogs_api.Controllers
|
|||||||
return _dropZoneService.UpdateDz(id, _mapper.Map<DropZone>(value));
|
return _dropZoneService.UpdateDz(id, _mapper.Map<DropZone>(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
// DELETE: api/ApiWithActions/5
|
// DELETE: api/ApiWithActions
|
||||||
[HttpDelete("{id}")]
|
[HttpDelete("{id}")]
|
||||||
[EnableCors]
|
[EnableCors]
|
||||||
public void Delete(int id)
|
public void Delete(int id)
|
||||||
@@ -64,6 +64,22 @@ namespace skydiveLogs_api.Controllers
|
|||||||
_dropZoneService.DeleteDzById(id);
|
_dropZoneService.DeleteDzById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PUT: api/DropZone/AddToFavorite/5
|
||||||
|
[HttpPut("{id}")]
|
||||||
|
[EnableCors]
|
||||||
|
public bool AddToFavorite(int id)
|
||||||
|
{
|
||||||
|
return _dropZoneService.AddToFavorite(id, ConnectedUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
// PUT: api/DropZone/RemoveToFavorite/15
|
||||||
|
[HttpPut("{id}")]
|
||||||
|
[EnableCors]
|
||||||
|
public bool RemoveToFavorite(int id)
|
||||||
|
{
|
||||||
|
return _dropZoneService.RemoveToFavorite(id, ConnectedUser);
|
||||||
|
}
|
||||||
|
|
||||||
private readonly IDropZoneService _dropZoneService;
|
private readonly IDropZoneService _dropZoneService;
|
||||||
private readonly IMapper _mapper;
|
private readonly IMapper _mapper;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,7 @@
|
|||||||
"email": "contact@iflyaixmarseille.fr",
|
"email": "contact@iflyaixmarseille.fr",
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
@@ -22,8 +21,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 4,
|
"id": 4,
|
||||||
@@ -35,8 +33,7 @@
|
|||||||
"email": "indoorskydiving@ice-mountain.com",
|
"email": "indoorskydiving@ice-mountain.com",
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 5,
|
"id": 5,
|
||||||
@@ -48,8 +45,7 @@
|
|||||||
"email": "cepnc1@gmail.com",
|
"email": "cepnc1@gmail.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 6,
|
"id": 6,
|
||||||
@@ -61,8 +57,7 @@
|
|||||||
"email": "info@skydivepujaut.com",
|
"email": "info@skydivepujaut.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 7,
|
"id": 7,
|
||||||
@@ -74,8 +69,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 8,
|
"id": 8,
|
||||||
@@ -87,8 +81,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 9,
|
"id": 9,
|
||||||
@@ -100,8 +93,7 @@
|
|||||||
"email": "contact@rock-drop.com",
|
"email": "contact@rock-drop.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 10,
|
"id": 10,
|
||||||
@@ -113,8 +105,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 11,
|
"id": 11,
|
||||||
@@ -126,8 +117,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12,
|
"id": 12,
|
||||||
@@ -139,8 +129,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 13,
|
"id": 13,
|
||||||
@@ -152,8 +141,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 14,
|
"id": 14,
|
||||||
@@ -165,8 +153,7 @@
|
|||||||
"email": "cepb65@gmail.com",
|
"email": "cepb65@gmail.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 15,
|
"id": 15,
|
||||||
@@ -178,8 +165,7 @@
|
|||||||
"email": "contact@sauterenparachute.com",
|
"email": "contact@sauterenparachute.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 16,
|
"id": 16,
|
||||||
@@ -189,8 +175,7 @@
|
|||||||
"address": "Aéroport de Dijon Bourgogne</br>1925 Rue de l'aviation</br>21600 Ouges",
|
"address": "Aéroport de Dijon Bourgogne</br>1925 Rue de l'aviation</br>21600 Ouges",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 17,
|
"id": 17,
|
||||||
@@ -202,8 +187,7 @@
|
|||||||
"email": "info@skydivecorsica.com",
|
"email": "info@skydivecorsica.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 18,
|
"id": 18,
|
||||||
@@ -215,8 +199,7 @@
|
|||||||
"email": "contact@cieldav.com",
|
"email": "contact@cieldav.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 19,
|
"id": 19,
|
||||||
@@ -228,8 +211,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 20,
|
"id": 20,
|
||||||
@@ -241,8 +223,7 @@
|
|||||||
"email": "contact@paradise64.fr",
|
"email": "contact@paradise64.fr",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 21,
|
"id": 21,
|
||||||
@@ -254,8 +235,7 @@
|
|||||||
"email": "max@parachutisme.nc",
|
"email": "max@parachutisme.nc",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 22,
|
"id": 22,
|
||||||
@@ -267,8 +247,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 23,
|
"id": 23,
|
||||||
@@ -280,8 +259,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 24,
|
"id": 24,
|
||||||
@@ -293,8 +271,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 25,
|
"id": 25,
|
||||||
@@ -306,8 +283,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 26,
|
"id": 26,
|
||||||
@@ -319,8 +295,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 27,
|
"id": 27,
|
||||||
@@ -332,8 +307,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 28,
|
"id": 28,
|
||||||
@@ -345,8 +319,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 29,
|
"id": 29,
|
||||||
@@ -358,8 +331,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 30,
|
"id": 30,
|
||||||
@@ -371,8 +343,7 @@
|
|||||||
"email": "Proflyer@windoor-realfly.com",
|
"email": "Proflyer@windoor-realfly.com",
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 31,
|
"id": 31,
|
||||||
@@ -384,8 +355,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 32,
|
"id": 32,
|
||||||
@@ -397,8 +367,7 @@
|
|||||||
"email": "info@weembi.com",
|
"email": "info@weembi.com",
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 33,
|
"id": 33,
|
||||||
@@ -410,8 +379,7 @@
|
|||||||
"email": "info.lyon@iflyworld.com",
|
"email": "info.lyon@iflyworld.com",
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 34,
|
"id": 34,
|
||||||
@@ -423,8 +391,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 35,
|
"id": 35,
|
||||||
@@ -436,8 +403,7 @@
|
|||||||
"email": "accueil@parachutisme-vannes.fr",
|
"email": "accueil@parachutisme-vannes.fr",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 36,
|
"id": 36,
|
||||||
@@ -449,8 +415,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 37,
|
"id": 37,
|
||||||
@@ -462,8 +427,7 @@
|
|||||||
"email": "info@alsace-para.com",
|
"email": "info@alsace-para.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 38,
|
"id": 38,
|
||||||
@@ -475,8 +439,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 39,
|
"id": 39,
|
||||||
@@ -488,8 +451,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 40,
|
"id": 40,
|
||||||
@@ -501,8 +463,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 41,
|
"id": 41,
|
||||||
@@ -514,8 +475,7 @@
|
|||||||
"email": "info@skydiveroanne.fr",
|
"email": "info@skydiveroanne.fr",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 42,
|
"id": 42,
|
||||||
@@ -527,8 +487,7 @@
|
|||||||
"email": "skydive.peronne@gmail.com",
|
"email": "skydive.peronne@gmail.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 43,
|
"id": 43,
|
||||||
@@ -540,8 +499,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 44,
|
"id": 44,
|
||||||
@@ -553,8 +511,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 45,
|
"id": 45,
|
||||||
@@ -566,8 +523,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 46,
|
"id": 46,
|
||||||
@@ -579,8 +535,7 @@
|
|||||||
"email": "contact@demencielparachutisme.com",
|
"email": "contact@demencielparachutisme.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 47,
|
"id": 47,
|
||||||
@@ -592,8 +547,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 48,
|
"id": 48,
|
||||||
@@ -605,8 +559,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 49,
|
"id": 49,
|
||||||
@@ -618,8 +571,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 50,
|
"id": 50,
|
||||||
@@ -631,8 +583,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 51,
|
"id": 51,
|
||||||
@@ -644,8 +595,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 52,
|
"id": 52,
|
||||||
@@ -657,8 +607,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 53,
|
"id": 53,
|
||||||
@@ -670,8 +619,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 54,
|
"id": 54,
|
||||||
@@ -683,8 +631,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 55,
|
"id": 55,
|
||||||
@@ -696,8 +643,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 56,
|
"id": 56,
|
||||||
@@ -709,8 +655,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 57,
|
"id": 57,
|
||||||
@@ -722,8 +667,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 58,
|
"id": 58,
|
||||||
@@ -735,8 +679,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 59,
|
"id": 59,
|
||||||
@@ -748,8 +691,7 @@
|
|||||||
"email": "info@efpleblanc.com",
|
"email": "info@efpleblanc.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 60,
|
"id": 60,
|
||||||
@@ -761,8 +703,7 @@
|
|||||||
"email": "vendeechutelibre@orange.fr",
|
"email": "vendeechutelibre@orange.fr",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 61,
|
"id": 61,
|
||||||
@@ -774,8 +715,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 62,
|
"id": 62,
|
||||||
@@ -787,8 +727,7 @@
|
|||||||
"email": "epbaguiscriff@gmail.com",
|
"email": "epbaguiscriff@gmail.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 63,
|
"id": 63,
|
||||||
@@ -800,8 +739,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 64,
|
"id": 64,
|
||||||
@@ -813,8 +751,7 @@
|
|||||||
"email": "contact@skydivefretoy.com",
|
"email": "contact@skydivefretoy.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 65,
|
"id": 65,
|
||||||
@@ -826,8 +763,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 66,
|
"id": 66,
|
||||||
@@ -839,8 +775,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 67,
|
"id": 67,
|
||||||
@@ -851,8 +786,7 @@
|
|||||||
"website": "www.parachutisme71.com",
|
"website": "www.parachutisme71.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": true
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 68,
|
"id": 68,
|
||||||
@@ -864,8 +798,7 @@
|
|||||||
"email": "cep46@wanadoo.fr",
|
"email": "cep46@wanadoo.fr",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 69,
|
"id": 69,
|
||||||
@@ -877,8 +810,7 @@
|
|||||||
"email": "infos@air65.fr",
|
"email": "infos@air65.fr",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 70,
|
"id": 70,
|
||||||
@@ -890,8 +822,7 @@
|
|||||||
"email": "accueil@bouloc-skydive.com",
|
"email": "accueil@bouloc-skydive.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 71,
|
"id": 71,
|
||||||
@@ -903,8 +834,7 @@
|
|||||||
"email": "contact@parachutisme-lille.fr",
|
"email": "contact@parachutisme-lille.fr",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 72,
|
"id": 72,
|
||||||
@@ -916,8 +846,7 @@
|
|||||||
"email": "para.besac@wanadoo.fr",
|
"email": "para.besac@wanadoo.fr",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 73,
|
"id": 73,
|
||||||
@@ -929,8 +858,7 @@
|
|||||||
"email": "info@arcachon-parachutisme.fr",
|
"email": "info@arcachon-parachutisme.fr",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 74,
|
"id": 74,
|
||||||
@@ -942,8 +870,7 @@
|
|||||||
"email": "info@parachutisme74.com",
|
"email": "info@parachutisme74.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 75,
|
"id": 75,
|
||||||
@@ -955,8 +882,7 @@
|
|||||||
"email": "info.paris@iflyworld.com",
|
"email": "info.paris@iflyworld.com",
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 76,
|
"id": 76,
|
||||||
@@ -968,8 +894,7 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 77,
|
"id": 77,
|
||||||
@@ -981,8 +906,7 @@
|
|||||||
"email": "contact@onairtunnel.com",
|
"email": "contact@onairtunnel.com",
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 78,
|
"id": 78,
|
||||||
@@ -994,8 +918,7 @@
|
|||||||
"email": "planning@aerokart.com",
|
"email": "planning@aerokart.com",
|
||||||
"type": [
|
"type": [
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 79,
|
"id": 79,
|
||||||
@@ -1008,8 +931,7 @@
|
|||||||
"type": [
|
"type": [
|
||||||
"dz",
|
"dz",
|
||||||
"tunnel"
|
"tunnel"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 80,
|
"id": 80,
|
||||||
@@ -1021,8 +943,7 @@
|
|||||||
"email": "cepcaleluc@gmail.com",
|
"email": "cepcaleluc@gmail.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 81,
|
"id": 81,
|
||||||
@@ -1034,8 +955,7 @@
|
|||||||
"email": "resa@parachutisme-nord.com",
|
"email": "resa@parachutisme-nord.com",
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 82,
|
"id": 82,
|
||||||
@@ -1047,7 +967,6 @@
|
|||||||
"email": null,
|
"email": null,
|
||||||
"type": [
|
"type": [
|
||||||
"dz"
|
"dz"
|
||||||
],
|
]
|
||||||
"isFavorite": false
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
Reference in New Issue
Block a user