71 lines
2.5 KiB
C#
71 lines
2.5 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 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
|
|
/// </summary>
|
|
public class WalkingTimeService : ServiceBase<WalkingTime>, IWalkingTimeService
|
|
{
|
|
/// <summary>
|
|
/// Erstellt eine Instanz
|
|
/// </summary>
|
|
/// <param name="unitOfWork">Instanz eines IUnitOfWork</param>
|
|
public WalkingTimeService(IUnitOfWork unitOfWork) : base(unitOfWork)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Erstellt eine Walkingtime Einstellung
|
|
/// </summary>
|
|
/// <param name="dogWalkerId">Id des Dogwalkers</param>
|
|
/// <returns>WalkingTime</returns>
|
|
public WalkingTime Create(string dogWalkerId)
|
|
{
|
|
var walk = new WalkingTime()
|
|
{
|
|
Id = Guid.NewGuid().ToString("N"),
|
|
DogWalkerId = dogWalkerId
|
|
};
|
|
return walk;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gibt eine Liste der Walkintimes eines Benutzers für das Syncing mit der App zurück.
|
|
/// </summary>
|
|
/// <param name="dogWalkerId">Id des DogWalkers</param>
|
|
/// <param name="lastUpdate">Letztes Update</param>
|
|
/// <returns>Liste der öffentlichen Anfragen</returns>
|
|
public async Task<List<WalkingTime>> 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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gibt eine Liste der Walkintimes eines Benutzers zurück.
|
|
/// </summary>
|
|
/// <param name="dogWalkerId">Id des DogWalkers</param>
|
|
/// <returns>Liste der öffentlichen Anfragen</returns>
|
|
public async Task<List<WalkingTime>> 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);
|
|
}
|
|
}
|
|
}
|