public ResponseModel ValidatePreInscripcion(PreInscripcionQueryFilter preInscripcionQueryFilter)
 {
     try
     {
         PreInscripcionValidator validator = new PreInscripcionValidator();
         var validationResult = validator.Validate(preInscripcionQueryFilter);
         return(MainValidator.IterationValidationResult(validationResult));
     }
     catch (Exception err)
     {
         throw new Exception(err.Message);
     }
 }
Exemplo n.º 2
0
        public async Task <IActionResult> AddPreInscripcion([FromBody] PreInscripcionQueryFilter preInscripcionQueryFilter)
        {
            try
            {
                var preInscripcion = await _preInscripcionService.InsPreInscripcion(preInscripcionQueryFilter);

                return(StatusCode((int)preInscripcion.StatusCode, preInscripcion));
            }
            catch (Exception err)
            {
                _logger.LogError(err, "Error inesperado");

                var responsePost = new ResponsePost()
                {
                    Messages = new Message[] { new Message()
                                               {
                                                   Type = TypeMessage.error.ToString(), Description = err.Message
                                               } },
                };
                return(StatusCode(500, responsePost));
            }
        }
        public async Task <ResponsePost> InsPreInscripcion(PreInscripcionQueryFilter preInscripcionQueryFilter)
        {
            #region PreInscripcion Validator
            var responseModel = _preInscripcionRepositoryVal.ValidatePreInscripcion(preInscripcionQueryFilter);
            if (!responseModel.IsValid)
            {
                return(new ResponsePost()
                {
                    Messages = responseModel.ValidationMessages.ToArray(),
                    StatusCode = HttpStatusCode.BadRequest
                });
            }
            #endregion

            #region Reglas de Negocio
            if (preInscripcionQueryFilter.Autorizaciones != null)
            {
                var autorizacionesDuplicadas = preInscripcionQueryFilter.Autorizaciones.GroupBy(autorizacion => autorizacion.Nombre).Where(autorizacion => autorizacion.Count() > 1).Count();
                if (autorizacionesDuplicadas > 0)
                {
                    return(new ResponsePost()
                    {
                        Messages = new Message[] { new Message()
                                                   {
                                                       Type = TypeMessage.warning.ToString(), Description = "Los nombres de las personas autorizadas están duplicados."
                                                   } },
                        StatusCode = HttpStatusCode.BadRequest
                    });
                }
            }
            if (preInscripcionQueryFilter.Hermanos != null)
            {
                var hermanosDuplicados = preInscripcionQueryFilter.Hermanos.GroupBy(hermano => hermano.NumeroDocumento).Where(hermano => hermano.Count() > 1).Count();
                if (hermanosDuplicados > 0)
                {
                    return(new ResponsePost()
                    {
                        Messages = new Message[] { new Message()
                                                   {
                                                       Type = TypeMessage.warning.ToString(), Description = "Los documentos de identidad de los hermanos están duplicados."
                                                   } },
                        StatusCode = HttpStatusCode.BadRequest
                    });
                }
            }
            if (preInscripcionQueryFilter.DatosPersonales.PrimerApellido == null && preInscripcionQueryFilter.DatosPersonales.SegundoApellido == null)
            {
                return(new ResponsePost()
                {
                    Messages = new Message[] { new Message()
                                               {
                                                   Type = TypeMessage.warning.ToString(), Description = "El registro de al menos un apellido es obligatorio."
                                               } },
                    StatusCode = HttpStatusCode.BadRequest
                });
            }
            #endregion

            var idPreInscripcion = (int)await _preInscripcionRepository.GetValorSecuenciaPreInscripcion();

            preInscripcionQueryFilter.DatosPersonales.IdPreInscripcion = idPreInscripcion;
            await _preInscripcionRepository.InsDatosPersonales(preInscripcionQueryFilter.DatosPersonales);

            preInscripcionQueryFilter.DatosColegio.IdPreInscripcion = idPreInscripcion;
            await _preInscripcionRepository.InsDatosColegio(preInscripcionQueryFilter.DatosColegio);

            preInscripcionQueryFilter.ViveCon.IdPreInscripcion = idPreInscripcion;
            await _preInscripcionRepository.InsViveCon(preInscripcionQueryFilter.ViveCon);

            preInscripcionQueryFilter.Discapacidades.IdPreInscripcion = idPreInscripcion;
            await _preInscripcionRepository.InsPreDiscapacidad(preInscripcionQueryFilter.Discapacidades);

            preInscripcionQueryFilter.InformacionGeneral.IdPreInscripcion  = idPreInscripcion;
            preInscripcionQueryFilter.InformacionGeneral.EstadoTransaccion = (int)EstadoPreInscripcion.enEspera;
            var preInscripcionInsert = await _preInscripcionRepository.InsInformacionGeneral(preInscripcionQueryFilter.InformacionGeneral);

            if (preInscripcionQueryFilter.Discapacidades.TrastornosAprendizajeDetalle != null)
            {
                foreach (var trastornoAprendizaje in preInscripcionQueryFilter.Discapacidades.TrastornosAprendizajeDetalle)
                {
                    trastornoAprendizaje.IdPreInscripcion = idPreInscripcion;
                    trastornoAprendizaje.Dominio          = TiposDominio.TIPO_TRAS_APRENDIZAJE.ToString();
                    await _preInscripcionRepository.InsPreDiscapacidadDetalle(trastornoAprendizaje);
                }
            }
            if (preInscripcionQueryFilter.Discapacidades.TrastornosDetalle != null)
            {
                foreach (var trastorno in preInscripcionQueryFilter.Discapacidades.TrastornosDetalle)
                {
                    trastorno.IdPreInscripcion = idPreInscripcion;
                    trastorno.Dominio          = TiposDominio.TIPO_TRASTORNO.ToString();
                    await _preInscripcionRepository.InsPreDiscapacidadDetalle(trastorno);
                }
            }
            if (preInscripcionQueryFilter.Discapacidades.DiscapacidadesDetalle != null)
            {
                foreach (var discapacidad in preInscripcionQueryFilter.Discapacidades.DiscapacidadesDetalle)
                {
                    discapacidad.IdPreInscripcion = idPreInscripcion;
                    discapacidad.Dominio          = TiposDominio.TIPO_DISCAPACIDAD.ToString();
                    await _preInscripcionRepository.InsPreDiscapacidadDetalle(discapacidad);
                }
            }
            if (preInscripcionQueryFilter.Autorizaciones != null)
            {
                foreach (var autorizacion in preInscripcionQueryFilter.Autorizaciones)
                {
                    autorizacion.IdPreInscripcion = idPreInscripcion;
                    await _preInscripcionRepository.InsPreAutorizacion(autorizacion);
                }
            }
            if (preInscripcionQueryFilter.DatosPadre != null)
            {
                preInscripcionQueryFilter.DatosPadre.IdPreInscripcion = idPreInscripcion;
                preInscripcionQueryFilter.DatosPadre.Tipo             = (int)TipoPadre.padre;
                await _preInscripcionRepository.InsDatosPadre(preInscripcionQueryFilter.DatosPadre);
            }
            if (preInscripcionQueryFilter.DatosMadre != null)
            {
                preInscripcionQueryFilter.DatosMadre.IdPreInscripcion = idPreInscripcion;
                preInscripcionQueryFilter.DatosMadre.Tipo             = (int)TipoPadre.madre;
                await _preInscripcionRepository.InsDatosPadre(preInscripcionQueryFilter.DatosMadre);
            }

            if (preInscripcionQueryFilter.Hermanos != null)
            {
                foreach (var hermano in preInscripcionQueryFilter.Hermanos)
                {
                    hermano.IdPreInscripcion = idPreInscripcion;
                    hermano.TieneHermanos    = (int)TieneHermano.si;
                    await _preInscripcionRepository.InsPreHermanos(hermano);
                }
            }
            if (preInscripcionInsert.AffectedRows > 0)
            {
                return(new ResponsePost()
                {
                    Response = preInscripcionInsert,
                    StatusCode = HttpStatusCode.OK
                });
            }
            else
            {
                return(new ResponsePost()
                {
                    Response = preInscripcionInsert,
                    StatusCode = HttpStatusCode.NoContent
                });
            }
        }