Ejemplo n.º 1
0
        public ActionConfirmation CreateRespuestasByEvaluacion(Guid evaluacionId)
        {
            var evaluacion = Get(evaluacionId);

            if (evaluacion == null)
            {
                return(ActionConfirmation.CreateFailure("item no existe"));
            }

            try
            {
                var responsesToCreate = new List <Estandar>();

                var groups = _estandarService.GetGruposList();
                foreach (var grupoEstandar in groups)
                {
                    var headers = _estandarService.GetByGrupo(grupoEstandar.Id);
                    foreach (var header in headers)
                    {
                        var estandares = _estandarService.GetByParent(header.Id);
                        foreach (var estandar in estandares)
                        {
                            responsesToCreate.Add(estandar);

                            var picklist = _estandarService.GetPicklist(estandar.Id);
                            responsesToCreate.AddRange(picklist);

                            var subEstandares = _estandarService.GetByParent(estandar.Id);
                            foreach (var subEstandar in subEstandares)
                            {
                                responsesToCreate.Add(subEstandar);

                                var subpicklist = _estandarService.GetPicklist(subEstandar.Id);
                                responsesToCreate.AddRange(subpicklist);

                                var childEstandares = _estandarService.GetByParent(subEstandar.Id);
                                foreach (var childEstandar in childEstandares)
                                {
                                    responsesToCreate.Add(childEstandar);

                                    var childpicklist = _estandarService.GetPicklist(childEstandar.Id);
                                    responsesToCreate.AddRange(childpicklist);

                                    var subchildEstandares = _estandarService.GetByParent(childEstandar.Id);
                                    foreach (var subchildEstandar in subchildEstandares)
                                    {
                                        responsesToCreate.Add(subchildEstandar);

                                        var subchildpicklist = _estandarService.GetPicklist(subchildEstandar.Id);
                                        responsesToCreate.AddRange(subchildpicklist);
                                    }
                                }
                            }
                        }
                    }
                }

                // Create Responses
                var respCreated = new List <Respuesta>();
                if (responsesToCreate.Any())
                {
                    foreach (var estandar in responsesToCreate)
                    {
                        var respuesta = new Respuesta
                        {
                            Detalle        = "",
                            FechaRespuesta = DateTime.Now,
                            CreadoPor      = evaluacion.CreadoPor,
                            CreadoEn       = DateTime.Now,
                            ActualizadoPor = evaluacion.ActualizadoPor,
                            ActualizadoEn  = DateTime.Now,
                            Estandar       = estandar,
                            Evaluacion     = evaluacion,
                            Valor          = (short)ValorRespuesta.Nulo
                        };


                        var respConfirmation = _respuestaService.SaveOrUpdate(respuesta);
                        if (respConfirmation.WasSuccessful)
                        {
                            if (estandar.TipoEstandar == (short)TipoEstandar.Estandar)
                            {
                                var dbResponse = _respuestaService.Get(respuesta.Id);
                                var comment    = new RespuestaComentario
                                {
                                    Detalle        = "",
                                    Valor          = "",
                                    CreadoPor      = evaluacion.CreadoPor,
                                    CreadoEn       = DateTime.Now,
                                    ActualizadoPor = evaluacion.ActualizadoPor,
                                    ActualizadoEn  = DateTime.Now,
                                    Respuesta      = dbResponse
                                };

                                var commentConfirm = _respuestaService.SaveOrUpdateComentario(comment);
                            }

                            respCreated.Add(respuesta);
                        }
                    }
                }

                return(ActionConfirmation.CreateSuccess($"respuestas creadas ({respCreated.Count})"));
            }
            catch (Exception exception)
            {
                _eventLogService.AddException(exception.Message,
                                              exception.StackTrace, EventCategory.GuardarObjeto.ToString(), exception, evaluacion.ActualizadoPor, EventSource.Sistema);

                return(ActionConfirmation.CreateFailure(exception.ToString()));
            }
        }