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(ITunnelFlightRepository tunnelFlightRepository, IDropZoneService dropZoneService, IIdentityService identityService) { _dropZoneService = dropZoneService; _identityService = identityService; _tunnelFlightRepository = tunnelFlightRepository; } #endregion Public Constructors #region Public Methods public IEnumerable 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 GetTunnelFlightsByIndexes(int beginIndex, int endIndex) { return _tunnelFlightRepository.GetBetweenIndex(_identityService.ConnectedUser, beginIndex, endIndex); } public IEnumerable 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(); if (allTunnelFlights.Any()) { results = allTunnelFlights.GroupBy(j => j.FlightDate.ToString("yy-MM"), j => j, (groupby, tunnelFlights) => new Statistic { Label = groupby.ToString(), Nb = tunnelFlights.Sum(t => t.NbMinutes) }) .ToList(); } return results; } public IEnumerable 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, 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 }; newFlight.Tunnel = selectedTunnel; _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 ITunnelFlightRepository _tunnelFlightRepository; private readonly IIdentityService _identityService; #endregion Private Fields } }