/// <summary> /// Constructor /// </summary> public GetPassportStatesResponse(EstadoPasaporte ep, string idioma) { Id = ep.Id; Name = ep.EstadoPasaporteIdioma.FirstOrDefault(c => c.Idioma == idioma)?.Nombre ?? ep.Nombre; Color = ep.IdColorEstadoNavigation?.Nombre; Exp = ep.EstadoId == EstadoPasaporte.ExpiredEstadoId; }
/// <summary> /// Handle /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public override async Task <bool> Handle(UpdatePassportStateNameRequest request, CancellationToken cancellationToken) { EstadoPasaporte estado = await repository.GetAll() .Include(c => c.EstadoPasaporteIdioma) .FirstOrDefaultAsync(c => c.Id == request.IdState).ConfigureAwait(false); if (estado == null) { throw new MultiMessageValidationException(new ErrorMessage() { Code = "NOT_FOUND", Message = string.Format(ValidatorsMessages.NOT_FOUND, ValidatorFields.PassportState) }); } foreach (var item in estado.EstadoPasaporteIdioma) { if (item.Idioma == IdiomaTypes.es.ToString()) { item.Nombre = request.SpanishName; } else if (item.Idioma == IdiomaTypes.en.ToString()) { item.Nombre = request.EnglishName; } } repository.Update(estado); await repository.SaveChangesAsync().ConfigureAwait(false); return(true); }
/// <summary> /// Crea un pasaporte para un empleado dado /// </summary> /// <param name="empleado"></param> public void CreateInitState(Empleado empleado, DateTimeOffset localDateOfRegistry, List <EstadoPasaporte> estados) { if (!empleado.Pasaporte.Any()) { EstadoPasaporte iniState = estados.FirstOrDefault(c => c.Nombre == "EstadoInicial"); CreateFromChoosenState(empleado, localDateOfRegistry, iniState, false); } }
/// <summary> /// Constructor /// </summary> public GetStateMatrixResponse(EstadoPasaporte ep) { IdState = ep.Id; Key = ep.Nombre; Color = ep.IdColorEstadoNavigation?.Nombre; IdColor = ep.IdColorEstado; SpanishName = ep.EstadoPasaporteIdioma.FirstOrDefault(c => c.Idioma == IdiomaTypes.es.ToString())?.Nombre ?? string.Empty; EnglishName = ep.EstadoPasaporteIdioma.FirstOrDefault(c => c.Idioma == IdiomaTypes.en.ToString())?.Nombre ?? string.Empty; DiasValidez = ep.DiasValidez; Pcrant = ep.Pcrant; Pcrult = ep.Pcrult; TestInmuneIgG = ep.TestInmuneIgG; TestInmuneIgM = ep.TestInmuneIgM; Comment = ep.Comment; }
/// <summary> /// Handle /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public override async Task <bool> Handle(UpdatePassportStateColorRequest request, CancellationToken cancellationToken) { EstadoPasaporte estado = await repository.GetAll().FirstOrDefaultAsync(c => c.Id == request.IdState).ConfigureAwait(false); if (estado == null) { throw new MultiMessageValidationException(new ErrorMessage() { Code = "NOT_FOUND", Message = string.Format(ValidatorsMessages.NOT_FOUND, ValidatorFields.PassportState) }); } estado.IdColorEstado = request.IdColor; repository.Update(estado); await repository.SaveChangesAsync().ConfigureAwait(false); return(true); }
/// <summary> /// Crea un nuevo pasaporte para el empleadoa partir de su información actual e histórica. /// </summary> /// <param name="empleado">Empleado.</param> /// <param name="localDateOfRegistry">Fecha.</param> /// <param name="estados">Estados</param> /// <param name="currentEstadoPasaporte">Estado actual del pasaporte</param> /// <param name="pcrList">Listado de resultados PCR</param> /// <param name="lastAnalitIgG">Último resultado de a´nalítica IgG</param> /// <param name="lastTestRapido">Último test rápido</param> /// <param name="lastFiebre">Última valoración de fiebre</param> /// <param name="utiDeclFiebre">Última declaració de fiebre</param> /// <param name="utiDeclOtros">Última declaración de otros síntomas</param> /// <param name="utiDeclContato">Última declaración de contacto</param> public void CreateWithStatedCalculated(Empleado empleado, DateTimeOffset localDateOfRegistry, Dictionary <string, EstadoPasaporte> estados, EstadoPasaporte currentEstadoPasaporte, List <ResultadoTestPcr> pcrList, ValoracionParametroMedico lastAnalitIgG, ValoracionParametroMedico lastAnalitIgM, ResultadoTestMedico lastTestRapido, ValoracionParametroMedico lastFiebre, ResultadoEncuestaSintomas utiDeclFiebre, ResultadoEncuestaSintomas utiDeclOtros, ResultadoEncuestaSintomas utiDeclContato) { StateMatrizData matriz = new StateMatrizData(pcrList, lastAnalitIgG, lastAnalitIgM, lastTestRapido, lastFiebre, utiDeclFiebre, utiDeclOtros, utiDeclContato); EstadoPasaporte newEstadoPasaporte = matriz.Calculate(estados); // lanzo evento OnCalculateNewStateEvent(new CalculateNewStateEventArgs() { Matrix = matriz }); /// En una transición calculada no se puede ir a mejor según las prioridades de estado if ((currentEstadoPasaporte?.IdColorEstadoNavigation?.Prioridad ?? 9999) < newEstadoPasaporte.IdColorEstadoNavigation.Prioridad) { // Mejora el color ---> viejo estado CreateFromChoosenState(empleado, localDateOfRegistry, currentEstadoPasaporte, false); OnAddOldPassportEventt(new EventArgs()); return; } if ((currentEstadoPasaporte?.IdTipoEstadoNavigation?.Prioridad ?? 9999) < newEstadoPasaporte.IdTipoEstadoNavigation.Prioridad) { // Mejora el tipo de estado ---> viejo estado CreateFromChoosenState(empleado, localDateOfRegistry, currentEstadoPasaporte, false); OnAddOldPassportEventt(new EventArgs()); return; } // Empeora el color -> nuevo estado // Se mantiene el color, empeora tipo de estado -> nuevo estado // Se mantiene el color, se mantiene le tipo de estado -> nuevo estado CreateFromChoosenState(empleado, localDateOfRegistry, newEstadoPasaporte, false); OnAddNewPassportEvent(new EventArgs()); }
private void CreatePassport(RegisterGenerationManualRequest request, Empleado empleado, EstadoPasaporte oldState, EstadoPasaporte newState) { if ((oldState?.IdColorEstadoNavigation?.Prioridad ?? 9999) < newState.IdColorEstadoNavigation.Prioridad) { // Mejora el color ---> viejo estado createPassportService.CreateFromChoosenState(empleado, request.RegistrationDateTime.HasValue ? request.RegistrationDateTime.Value : DateTimeOffset.Now, oldState, true); return; } if ((oldState?.IdTipoEstadoNavigation?.Prioridad ?? 9999) < newState.IdTipoEstadoNavigation.Prioridad) { // Mejora el tipo de estado ---> viejo estado createPassportService.CreateFromChoosenState(empleado, request.RegistrationDateTime.HasValue ? request.RegistrationDateTime.Value : DateTimeOffset.Now, oldState, true); return; } createPassportService.CreateFromChoosenState(empleado, request.RegistrationDateTime.HasValue ? request.RegistrationDateTime.Value : DateTimeOffset.Now, newState, true); }
/// <summary> /// Creacion de un pasaporte a partir de un estado. Si se necesita usar una lógica diferente, crear otro método. /// Se debe hacer include de Pasaporte, hay que marcarlos como inactivos. /// </summary> /// <param name="empleado"></param> /// <param name="localDateOfRegistry"></param> /// <param name="idPassportState"></param> public void CreateFromChoosenState(Empleado empleado, DateTimeOffset localDateOfRegistry, EstadoPasaporte passportState, bool isManual) { Pasaporte pasaporte = new Pasaporte() { FechaCreacion = localDateOfRegistry, Activo = true, IdEstadoPasaporte = passportState.Id, IsManual = isManual }; int?diasValidez = passportState.DiasValidez; if (diasValidez != null) { pasaporte.FechaExpiracion = new DateTimeOffset(localDateOfRegistry.Year, localDateOfRegistry.Month, localDateOfRegistry.Day, 00, 00, 00, localDateOfRegistry.Offset).AddDays(diasValidez.Value); } foreach (var p in empleado.Pasaporte) { p.Activo = false; } empleado.Pasaporte.Add(pasaporte); }