Files
gpw_next/GPW.CORE.Smart10/Service/TimbraturesServiceServer.cs
Samuele Locatelli 4304617181 OK compilazione!
2026-05-14 09:10:27 +02:00

87 lines
2.9 KiB
C#

using GPW.CORE.Data.Mappings;
using GPW.CORE.Dto;
using GPW.CORE.Smart10.Data;
namespace GPW.CORE.Smart10.Client.Services
{
/// <summary>
/// Implementazione server-side del servizio per la gestione delle timbrature.
/// Utilizzata durante il prerendering per evitare chiamate HTTP verso se stessi.
/// </summary>
public class TimbraturesServiceServer : ITimbraturesService
{
private readonly CoreSmartDataService _dataService;
public TimbraturesServiceServer(CoreSmartDataService dataService)
{
_dataService = dataService;
}
/// <inheritdoc />
public async Task<List<TimbraturaDto>> GetDayAsync(DateTime dateRif, int idxDip)
{
var models = await _dataService.TimbratureDay(dateRif, idxDip);
return models.Select(MapToDto).ToList();
}
/// <inheritdoc />
public async Task<List<TimbraturaDto>> GetRichiesteAsync()
{
var models = await _dataService.TimbratureRichieste();
return models.Select(MapToDto).ToList();
}
/// <inheritdoc />
public async Task<bool> PostInsRichiestaAsync(TimbraturaDto item)
{
var model = MapToModel(item);
return await _dataService.TimbratureInsRichiesta(model);
}
/// <inheritdoc />
public async Task<bool> PostUpdateAsync(TimbraturaDto item)
{
var model = MapToModel(item);
return await _dataService.TimbratureUpdate(model);
}
/// <inheritdoc />
public async Task<bool> DeleteByUidAsync(string uid)
{
// Per l'eliminazione via UID, usiamo la logica esistente nel data service
// che lavora con i modelli del DB.
var dbRec = await _dataService.TimbratureByUidAsync(uid);
if (dbRec != null)
{
return await _dataService.TimbratureDelete(dbRec);
}
return false;
}
/// <inheritdoc />
public async Task<List<DailyDataDto>> GetDailyDetailsAsync(int idxDip, DateTime dtInizio, DateTime dtFine)
{
var models = await _dataService.DailyDetails(idxDip, dtInizio, dtFine);
return models.Select(r => r.ToDto()).ToList();
}
private TimbraturaDto MapToDto(GPW.CORE.Data.DbModels.TimbratureModel model) => new TimbraturaDto
{
DataOra = model.DataOra,
IdxDipendente = model.IdxDipendente,
Entrata = model.Entrata,
CodTipoTimb = model.CodTipoTimb,
Approv = model.Approv
};
private GPW.CORE.Data.DbModels.TimbratureModel MapToModel(TimbraturaDto dto) => new GPW.CORE.Data.DbModels.TimbratureModel
{
DataOra = dto.DataOra,
IdxDipendente = dto.IdxDipendente,
Entrata = dto.Entrata,
CodTipoTimb = dto.CodTipoTimb,
Approv = dto.Approv
};
}
}