using gehGassi.Core.Interfaces; using gehGassi.Domain.Walks; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassi.Domain.Dogs; using Microsoft.EntityFrameworkCore; namespace gehGassi.Core.Services { /// /// Service der die Verwaltung von Walking-Schedules ermöglicht. /// Das bedeutet die einstellung an welchen Wochentagen ein Walker zu welchen Zeiten zur Verfügung steht /// public class WalkingTimeService : ServiceBase, IWalkingTimeService { /// /// Erstellt eine Instanz /// /// Instanz eines IUnitOfWork public WalkingTimeService(IUnitOfWork unitOfWork) : base(unitOfWork) { } /// /// Erstellt eine Walkingtime Einstellung /// /// Id des Dogwalkers /// WalkingTime public WalkingTime Create(string dogWalkerId) { var walk = new WalkingTime() { Id = Guid.NewGuid().ToString("N"), DogWalkerId = dogWalkerId }; return walk; } /// /// Gibt eine Liste der Walkintimes eines Benutzers für das Syncing mit der App zurück. /// /// Id des DogWalkers /// Letztes Update /// Liste der öffentlichen Anfragen public async Task> GetForSyncAppAsync(string dogWalkerId, DateTimeOffset? lastUpdate) { var query = Repository.Query(c => c.DogWalkerId == dogWalkerId); if (lastUpdate.HasValue) query = query.Where(c => c.UpdatedAt > lastUpdate); return await query.ToListAsync().ConfigureAwait(false); } /// /// Gibt eine Liste der Walkintimes eines Benutzers zurück. /// /// Id des DogWalkers /// Liste der öffentlichen Anfragen public async Task> GetAllAsync(string dogWalkerId) { var query = Repository.Query(c => c.DogWalkerId == dogWalkerId && c.Deleted == false); return await query.OrderBy(c => c.Day).ThenBy(c => c.Start).ToListAsync().ConfigureAwait(false); } } }