using GPW.CORE.Data.Mappings;
using GPW.CORE.Dto;
using GPW.CORE.Smart10.Data;
namespace GPW.CORE.Smart10.Client.Services
{
///
/// Implementazione server-side del servizio per la gestione delle timbrature.
/// Utilizzata durante il prerendering per evitare chiamate HTTP verso se stessi.
///
public class TimbraturesServiceServer : ITimbraturesService
{
private readonly CoreSmartDataService _dataService;
public TimbraturesServiceServer(CoreSmartDataService dataService)
{
_dataService = dataService;
}
///
public async Task> GetDayAsync(DateTime dateRif, int idxDip)
{
var models = await _dataService.TimbratureDay(dateRif, idxDip);
return models.Select(MapToDto).ToList();
}
///
public async Task> GetRichiesteAsync()
{
var models = await _dataService.TimbratureRichieste();
return models.Select(MapToDto).ToList();
}
///
public async Task PostInsRichiestaAsync(TimbraturaDto item)
{
var model = MapToModel(item);
return await _dataService.TimbratureInsRichiesta(model);
}
///
public async Task PostUpdateAsync(TimbraturaDto item)
{
var model = MapToModel(item);
return await _dataService.TimbratureUpdate(model);
}
///
public async Task 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;
}
///
public async Task> 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
};
}
}