/// <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;
 }
Пример #2
0
            /// <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);
     }
 }
Пример #4
0
 /// <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);
        }