/// <summary> /// Handle /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async override Task <bool> Handle(RegisterTemperatureMeditionRequest request, CancellationToken cancellationToken) { Empleado empleado = await repositoryEmpleado .GetBy(p => p.Id == request.IdEmployee) .Include(p => p.IdFichaMedicaNavigation) .SingleOrDefaultAsync() .ConfigureAwait(false); if (empleado == null) { throw new MultiMessageValidationException(new ErrorMessage() { Code = "NOT_FOUND", Message = string.Format(ValidatorsMessages.NOT_FOUND, ValidatorFields.Empleado) }); } if (empleado.IdFichaMedica == null) { throw new MultiMessageValidationException(new ErrorMessage() { Code = "NOT_FOUND", Message = string.Format(ValidatorsMessages.NOT_FOUND, ValidatorFields.FichaMedica) }); } ParametroMedico paramTempe = await repositoryParametroMedico.GetAll().FirstOrDefaultAsync(c => c.Nombre == ParametroMedico.ParameterTypes.TemperaturaAlta.ToString()).ConfigureAwait(false); SeguimientoMedico seguimiento = new SeguimientoMedico() { IdFichaMedica = empleado.IdFichaMedica.Value, Comentarios = "Temperature Medition", Activo = true, FechaSeguimiento = request.MeditionDateTime.HasValue ? request.MeditionDateTime.Value : DateTimeOffset.Now }; seguimiento.ValoracionParametroMedico = new List <ValoracionParametroMedico>() { new ValoracionParametroMedico() { Valor = request.IsTemperatureOverThreshold, IdParametroMedico = paramTempe.Id, } }; List <SeguimientoMedico> oldSeguimentos = await repositorySeguimientos.GetAll().Where(c => c.IdFichaMedica == empleado.IdFichaMedica.Value && c.ValoracionParametroMedico.Select(d => d.IdParametroMedico).Any(e => e == paramTempe.Id)).ToListAsync().ConfigureAwait(false); foreach (var item in oldSeguimentos) { item.Activo = false; repositorySeguimientos.Update(item); } repositorySeguimientos.Add(seguimiento); await this.repositorySeguimientos.SaveChangesAsync().ConfigureAwait(false); return(true); }
/// <summary> /// Handle /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async override Task <bool> Handle(RegisterTemperatureMeditionSecurityRequest request, CancellationToken cancellationToken) { idEmpleado = request.IdEmployee; Empleado empleado = await ValidacionEmpleado(request.IdEmployee).ConfigureAwait(false); ParametroMedico paramTempe = await repositoryParametroMedico.GetAll().FirstOrDefaultAsync(c => c.Nombre == ParametroMedico.ParameterTypes.TemperaturaAlta.ToString()).ConfigureAwait(false); SeguimientoMedico seguimiento = new SeguimientoMedico() { IdFichaMedica = empleado.IdFichaMedica.Value, Comentarios = "Security Scan Temperature Medition", Activo = true, FechaSeguimiento = request.MeditionDateTime.HasValue ? request.MeditionDateTime.Value : DateTimeOffset.Now }; seguimiento.ValoracionParametroMedico = new List <ValoracionParametroMedico>() { new ValoracionParametroMedico() { Valor = request.IsTemperatureOverThreshold, IdParametroMedicoNavigation = paramTempe, } }; List <SeguimientoMedico> oldSeguimentos = await repositorySeguimientos.GetBy(c => c.IdFichaMedica == empleado.IdFichaMedica.Value && c.ValoracionParametroMedico.Select(d => d.IdParametroMedico).Any(e => e == paramTempe.Id)) .ToListAsync().ConfigureAwait(false); foreach (var item in oldSeguimentos) { item.Activo = false; } repositorySeguimientos.UpdateRange(oldSeguimentos); repositorySeguimientos.Add(seguimiento); await this.repositorySeguimientos.SaveChangesAsync().ConfigureAwait(false); // creamos un nuevo pasaporte en base a la nueva info proporcionada var estados = await repositoryEstados.GetAll() .Include(c => c.IdTipoEstadoNavigation) .Include(c => c.IdColorEstadoNavigation) .ToDictionaryAsync(e => e.Nombre); //------------------------------------------------------------------------------------------- Pasaporte currentPassport = await GetLastPassportAsync(empleado.Id).ConfigureAwait(false); List <ResultadoTestPcr> pcrList = await GetAllResultadoPcrAsync(empleado.IdFichaMedica.Value).ConfigureAwait(false); ValoracionParametroMedico lastAnalitIgG = await GetLastAnalisticIgG(empleado.IdFichaMedica.Value).ConfigureAwait(false); ValoracionParametroMedico lastAnalitIgM = await GetLastAnalisticIgM(empleado.IdFichaMedica.Value).ConfigureAwait(false); ResultadoTestMedico lastTestRapido = await GetLastTestRapidoAsync(empleado.IdFichaMedica.Value).ConfigureAwait(false); ValoracionParametroMedico lastFiebre = seguimiento.ValoracionParametroMedico.FirstOrDefault(); var ultimosResul = await GetLastResultadoEncuestaAsync(empleado.IdFichaMedica.Value).ConfigureAwait(false); createPassportService.CreateWithStatedCalculated(empleado, request.MeditionDateTime ?? DateTimeOffset.UtcNow, estados, currentPassport?.IdEstadoPasaporteNavigation, pcrList, lastAnalitIgG, lastAnalitIgM, lastTestRapido, lastFiebre, ultimosResul.Fiebre, ultimosResul.Otros, ultimosResul.Contacto); //------------------------------------------------------------------------------------------- repositoryEmpleado.Update(empleado); await repositoryEmpleado.SaveChangesAsync().ConfigureAwait(false); return(true); }