Files
SkydiveLogs/Back/skydiveLogs-api.DomainBusiness/DropZoneService.cs
2021-03-25 16:57:30 +01:00

95 lines
2.9 KiB
C#

using System;
using System.Collections.Generic;
using skydiveLogs_api.DomainBusiness.Interfaces;
using skydiveLogs_api.DomainService.Repositories;
using skydiveLogs_api.Domain;
using System.Linq;
namespace skydiveLogs_api.DomainBusiness
{
public class DropZoneService : IDropZoneService
{
public DropZoneService(IDropZoneRepository dropZoneRepository,
IFavoriteDropZoneRepository favoriteDropZoneRepository)
{
_dropZoneRepository = dropZoneRepository;
_favoriteDropZoneRepository = favoriteDropZoneRepository;
}
public void AddNewDz(DropZone newdropZone)
{
_dropZoneRepository.Add(newdropZone);
}
public void DeleteDzById(int id)
{
throw new NotImplementedException();
}
public IEnumerable<DropZone> GetAllDzs(User connectedUser)
{
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.Id equals favorite.DropZone.Id 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)
{
return _dropZoneRepository.GetById(id);
}
public bool UpdateDz(int id, DropZone dropZone)
{
dropZone.Id = id;
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 IFavoriteDropZoneRepository _favoriteDropZoneRepository;
}
}