128 lines
4.8 KiB
C#
128 lines
4.8 KiB
C#
using skydiveLogs_api.Domain;
|
|
using skydiveLogs_api.DomainBusiness.Interfaces;
|
|
using skydiveLogs_api.DomainService.Repositories;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace skydiveLogs_api.DomainBusiness
|
|
{
|
|
public class TunnelFlightService : ITunnelFlightService
|
|
{
|
|
#region Public Constructors
|
|
|
|
public TunnelFlightService(IJumpTypeService jumpTypeService,
|
|
ITunnelFlightRepository tunnelFlightRepository,
|
|
IDropZoneService dropZoneService,
|
|
IIdentityService identityService)
|
|
{
|
|
_dropZoneService = dropZoneService;
|
|
_jumpTypeService = jumpTypeService;
|
|
_identityService = identityService;
|
|
_tunnelFlightRepository = tunnelFlightRepository;
|
|
}
|
|
|
|
#endregion Public Constructors
|
|
|
|
#region Public Methods
|
|
|
|
public IEnumerable<TunnelFlight> GetAllTunnelFlights()
|
|
{
|
|
return _tunnelFlightRepository.GetAll(_identityService.ConnectedUser);
|
|
}
|
|
|
|
public TunnelFlight GetTunnelFlightById(int id)
|
|
{
|
|
return _tunnelFlightRepository.GetById(id);
|
|
}
|
|
|
|
public int GetTunnelFlightCount()
|
|
{
|
|
return _tunnelFlightRepository.GetCount(_identityService.ConnectedUser);
|
|
}
|
|
|
|
public IEnumerable<TunnelFlight> GetTunnelFlightsByIndexes(int beginIndex, int endIndex)
|
|
{
|
|
return _tunnelFlightRepository.GetBetweenIndex(_identityService.ConnectedUser, beginIndex, endIndex);
|
|
}
|
|
|
|
public IEnumerable<Statistic> GetTunnelFlightGroupByMonth(string beginDate, string endDate)
|
|
{
|
|
var convertedBeginDate = Convert.ToDateTime(beginDate);
|
|
var convertedEndDate = Convert.ToDateTime(endDate);
|
|
|
|
var allTunnelFlights = _tunnelFlightRepository.GetBetweenDate(_identityService.ConnectedUser, convertedBeginDate, convertedEndDate);
|
|
var results = Enumerable.Empty<Statistic>();
|
|
|
|
if (allTunnelFlights.Any())
|
|
{
|
|
results = allTunnelFlights.GroupBy(j => new { FlightDate = j.FlightDate.ToString("yy-MM"), j.JumpType },
|
|
j => j,
|
|
(groupby, tunnelFlights) => new Statistic
|
|
{
|
|
Label = groupby.FlightDate,
|
|
Label2 = groupby.JumpType.Name,
|
|
Nb = tunnelFlights.Sum(t => t.NbMinutes)
|
|
})
|
|
.ToList();
|
|
}
|
|
|
|
return results;
|
|
}
|
|
public IEnumerable<TunnelFlight> GetTunnelFlightByDates(string beginDate, string endDate)
|
|
{
|
|
var convertedBeginDate = Convert.ToDateTime(beginDate);
|
|
var convertedEndDate = Convert.ToDateTime(endDate);
|
|
|
|
return _tunnelFlightRepository.GetBetweenDate(_identityService.ConnectedUser, convertedBeginDate, convertedEndDate);
|
|
}
|
|
|
|
public void AddNewFlight(int tunnelId, int jumpTypeId, TunnelFlight newFlight)
|
|
{
|
|
var tmp = _dropZoneService.GetDzById(tunnelId);
|
|
var selectedTunnel = new Tunnel
|
|
{
|
|
Id = tmp.Id,
|
|
Name = tmp.Name,
|
|
Website = tmp.Website,
|
|
Address = tmp.Address,
|
|
Email = tmp.Email,
|
|
Latitude = tmp.Latitude,
|
|
Longitude = tmp.Longitude
|
|
};
|
|
|
|
var selectedJumpType = _jumpTypeService.GetJumpTypeById(jumpTypeId);
|
|
|
|
|
|
newFlight.Tunnel = selectedTunnel;
|
|
newFlight.JumpType = selectedJumpType;
|
|
_tunnelFlightRepository.Add(newFlight);
|
|
}
|
|
|
|
public void DeleteTunnelFlightById(int id)
|
|
{
|
|
_tunnelFlightRepository.DeleteById(id);
|
|
}
|
|
|
|
public void UpdateTunnelFlight(int id, TunnelFlight updatedTunnelFlight)
|
|
{
|
|
var myTunnelFlight = GetTunnelFlightById(id);
|
|
myTunnelFlight.FlightDate = updatedTunnelFlight.FlightDate;
|
|
myTunnelFlight.NbMinutes = updatedTunnelFlight.NbMinutes;
|
|
myTunnelFlight.Notes = updatedTunnelFlight.Notes;
|
|
|
|
_tunnelFlightRepository.Update(myTunnelFlight);
|
|
}
|
|
|
|
#endregion Public Methods
|
|
|
|
#region Private Fields
|
|
|
|
private readonly IDropZoneService _dropZoneService;
|
|
private readonly IJumpTypeService _jumpTypeService;
|
|
private readonly ITunnelFlightRepository _tunnelFlightRepository;
|
|
private readonly IIdentityService _identityService;
|
|
|
|
#endregion Private Fields
|
|
}
|
|
} |