99 lines
3.5 KiB
C#
99 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using gehGassi.Core.Interfaces;
|
|
using gehGassi.Domain.Common;
|
|
using gehGassi.Domain.Walks;
|
|
|
|
namespace gehGassi.Core.Services
|
|
{
|
|
/// <summary>
|
|
/// Service der die Verwaltung von Walk-Beschwerden ermöglicht
|
|
/// </summary>
|
|
public class WalkComplaintService : ServiceBase<WalkComplaint>, IWalkComplaintService
|
|
{
|
|
private readonly IRepository<WalkComplaintWithNames> _namesRepository;
|
|
|
|
/// <summary>
|
|
/// Erstellt eine Instanz
|
|
/// </summary>
|
|
/// <param name="unitOfWork">Instanz eines IUnitOfWork</param>
|
|
public WalkComplaintService(IUnitOfWork unitOfWork) : base(unitOfWork)
|
|
{
|
|
_namesRepository = unitOfWork.GetRepository<WalkComplaintWithNames>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Erstellen einer Walk-Beschwerde
|
|
/// </summary>
|
|
/// <returns>Walk</returns>
|
|
public WalkComplaint Create()
|
|
{
|
|
var item = new WalkComplaint()
|
|
{
|
|
Id = Guid.NewGuid().ToString("N"),
|
|
Created = DateTimeOffset.UtcNow
|
|
};
|
|
return item;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gibt eine gefilterte Liste von Walk-Beschwerden mit Namen zurück in einer gewählten Sprache
|
|
/// </summary>
|
|
/// <param name="filter">Filterbegriff der in bestimmten Feldern gesucht wird</param>
|
|
/// <param name="includeDeleted">Sollen gelöschte inkludiert werden?</param>
|
|
/// <returns>Liste betroffener Walk-Beschwerden</returns>
|
|
public IQueryable<WalkComplaintWithNames> FilterWithNames(string filter, bool includeDeleted)
|
|
{
|
|
var baseQuery = _namesRepository.QueryStoredProcedure("SELECT * FROM tv_WalkComplaintsWithNames()", c => c.DogOwnerName.Contains(filter) || c.DogWalkerName.Contains(filter) || c.UserName.Contains(filter));
|
|
|
|
if (!includeDeleted)
|
|
baseQuery = baseQuery.Where(c => c.Deleted == false);
|
|
|
|
return baseQuery;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gibt eine Walk-Beschwerden mit Namen aufgelöst zurück
|
|
/// </summary>
|
|
/// <param name="id">Id der Beschwerde</param>
|
|
/// <returns>Walk-Beschwerden mit Namen aufgelöst</returns>
|
|
public async Task<WalkComplaintWithNames> GetWithNamesAsync(string id)
|
|
{
|
|
return await _namesRepository.FirstOrDefaultAsync(c => c.Id == id).ConfigureAwait(false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gibt eine Walk-Beschwerden mit Namen aufgelöst zurück
|
|
/// </summary>
|
|
/// <param name="walkId">Id des Walks</param>
|
|
/// <returns>Walk-Beschwerden mit Namen aufgelöst</returns>
|
|
public async Task<WalkComplaintWithNames> GetWithNamesByWalkAsync(string walkId)
|
|
{
|
|
return await _namesRepository.FirstOrDefaultAsync(c => c.WalkId == walkId).ConfigureAwait(false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gibt eine Walk-Beschwerden zurück
|
|
/// </summary>
|
|
/// <param name="walkId">Id des Walks</param>
|
|
/// <returns>Walk-Beschwerden</returns>
|
|
public async Task<WalkComplaint> GetByWalkAsync(string walkId)
|
|
{
|
|
return await Repository.FirstOrDefaultAsync(c => c.WalkId == walkId).ConfigureAwait(false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gibt die Anzahl der Walk-Beschwerden mit einem bestimmten Status zurück
|
|
/// </summary>
|
|
/// <param name="status">Gewünschter Status</param>
|
|
/// <returns>Anzahl Beschwerden im Status</returns>
|
|
public async Task<int> CountAsync(WalkComplaintStatus status)
|
|
{
|
|
return await Repository.CountAsync(c => c.Status == status).ConfigureAwait(false);
|
|
}
|
|
}
|
|
}
|