public async Task <IHttpActionResult> Save([FromBody] RespuestaFormModel formModel) { GenericResult itemResult = null; try { if (await _authorizationService.AuthorizeAsync(User)) { if (ModelState.IsValid) { var respuesta = _respuestaService.Get(formModel.Id) ?? new Respuesta(); respuesta.Valor = formModel.Valor; respuesta.Detalle = formModel.Detalle; respuesta.FechaRespuesta = formModel.FechaRespuesta; if (respuesta.Id == Guid.Empty) { respuesta.CreadoPor = User.Identity.Name; respuesta.CreadoEn = DateTime.Now; } respuesta.ActualizadoPor = User.Identity.Name; respuesta.ActualizadoEn = DateTime.Now; var estandar = _estandarService.Get(formModel.EstandarId); respuesta.Estandar = estandar; var evaluacion = _evaluacionService.Get(formModel.EvaluacionId); respuesta.Evaluacion = evaluacion; var confirmation = _respuestaService.SaveOrUpdate(respuesta); if (confirmation.WasSuccessful) { itemResult = GenericResult.Ok(confirmation.Message); var item = confirmation.Value as Respuesta; itemResult.ReturnValue = new { Id = item.Id }; } else { itemResult = GenericResult.Failure(confirmation.Message); } } } else { var codeResult = new CodeResultStatus(401); return(Ok(codeResult)); } } catch (Exception exception) { itemResult = GenericResult.Failure(exception.Message); } return(Ok(itemResult)); }
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())); } }